From 119f4d7eee0d5c4920a63a0758c973dc7149b34f Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Mon, 8 Sep 2025 11:10:52 -0400 Subject: [PATCH 01/12] Refactor top-level branch with early error return --- src/protocol/mod.rs | 198 ++++++++++++++++++++++---------------------- 1 file changed, 99 insertions(+), 99 deletions(-) diff --git a/src/protocol/mod.rs b/src/protocol/mod.rs index 67069bb..c1d014b 100644 --- a/src/protocol/mod.rs +++ b/src/protocol/mod.rs @@ -599,7 +599,7 @@ impl WebSocketContext { /// Try to decode one message frame. May return None. fn read_message_frame(&mut self, stream: &mut impl Read) -> Result> { - if let Some(frame) = self + let frame = match self .frame .read_frame( stream, @@ -609,108 +609,108 @@ impl WebSocketContext { ) .check_connection_reset(self.state)? { - if !self.state.can_read() { - return Err(Error::Protocol(ProtocolError::ReceivedAfterClosing)); - } - // MUST be 0 unless an extension is negotiated that defines meanings - // for non-zero values. If a nonzero value is received and none of - // the negotiated extensions defines the meaning of such a nonzero - // value, the receiving endpoint MUST _Fail the WebSocket - // Connection_. - { - let hdr = frame.header(); - if hdr.rsv1 || hdr.rsv2 || hdr.rsv3 { - return Err(Error::Protocol(ProtocolError::NonZeroReservedBits)); - } - } - - if self.role == Role::Client && frame.is_masked() { - // A client MUST close a connection if it detects a masked frame. (RFC 6455) - return Err(Error::Protocol(ProtocolError::MaskedFrameFromServer)); - } - - match frame.header().opcode { - OpCode::Control(ctl) => { - match ctl { - // All control frames MUST have a payload length of 125 bytes or less - // and MUST NOT be fragmented. (RFC 6455) - _ if !frame.header().is_final => { - Err(Error::Protocol(ProtocolError::FragmentedControlFrame)) - } - _ if frame.payload().len() > 125 => { - Err(Error::Protocol(ProtocolError::ControlFrameTooBig)) - } - OpCtl::Close => Ok(self.do_close(frame.into_close()?).map(Message::Close)), - OpCtl::Reserved(i) => { - Err(Error::Protocol(ProtocolError::UnknownControlFrameType(i))) - } - OpCtl::Ping => { - let data = frame.into_payload(); - // No ping processing after we sent a close frame. - if self.state.is_active() { - self.set_additional(Frame::pong(data.clone())); - } - Ok(Some(Message::Ping(data))) - } - OpCtl::Pong => Ok(Some(Message::Pong(frame.into_payload()))), + None => { + // Connection closed by peer + return match replace(&mut self.state, WebSocketState::Terminated) { + WebSocketState::ClosedByPeer | WebSocketState::CloseAcknowledged => { + Err(Error::ConnectionClosed) } - } + _ => Err(Error::Protocol(ProtocolError::ResetWithoutClosingHandshake)), + }; + } + Some(frame) => frame, + }; - OpCode::Data(data) => { - let fin = frame.header().is_final; - match data { - OpData::Continue => { - if let Some(ref mut msg) = self.incomplete { - msg.extend(frame.into_payload(), self.config.max_message_size)?; - } else { - return Err(Error::Protocol( - ProtocolError::UnexpectedContinueFrame, - )); - } - if fin { - Ok(Some(self.incomplete.take().unwrap().complete()?)) - } else { - Ok(None) - } - } - c if self.incomplete.is_some() => { - Err(Error::Protocol(ProtocolError::ExpectedFragment(c))) - } - OpData::Text if fin => { - check_max_size(frame.payload().len(), self.config.max_message_size)?; - Ok(Some(Message::Text(frame.into_text()?))) - } - OpData::Binary if fin => { - check_max_size(frame.payload().len(), self.config.max_message_size)?; - Ok(Some(Message::Binary(frame.into_payload()))) - } - OpData::Text | OpData::Binary => { - let message_type = match data { - OpData::Text => IncompleteMessageType::Text, - OpData::Binary => IncompleteMessageType::Binary, - _ => panic!("Bug: message is not text nor binary"), - }; - let mut incomplete = IncompleteMessage::new(message_type); - incomplete - .extend(frame.into_payload(), self.config.max_message_size)?; - self.incomplete = Some(incomplete); - Ok(None) - } - OpData::Reserved(i) => { - Err(Error::Protocol(ProtocolError::UnknownDataFrameType(i))) - } - } - } - } // match opcode - } else { - // Connection closed by peer - match replace(&mut self.state, WebSocketState::Terminated) { - WebSocketState::ClosedByPeer | WebSocketState::CloseAcknowledged => { - Err(Error::ConnectionClosed) - } - _ => Err(Error::Protocol(ProtocolError::ResetWithoutClosingHandshake)), + if !self.state.can_read() { + return Err(Error::Protocol(ProtocolError::ReceivedAfterClosing)); + } + // MUST be 0 unless an extension is negotiated that defines meanings + // for non-zero values. If a nonzero value is received and none of + // the negotiated extensions defines the meaning of such a nonzero + // value, the receiving endpoint MUST _Fail the WebSocket + // Connection_. + { + let hdr = frame.header(); + if hdr.rsv1 || hdr.rsv2 || hdr.rsv3 { + return Err(Error::Protocol(ProtocolError::NonZeroReservedBits)); } } + + if self.role == Role::Client && frame.is_masked() { + // A client MUST close a connection if it detects a masked frame. (RFC 6455) + return Err(Error::Protocol(ProtocolError::MaskedFrameFromServer)); + } + + match frame.header().opcode { + OpCode::Control(ctl) => { + match ctl { + // All control frames MUST have a payload length of 125 bytes or less + // and MUST NOT be fragmented. (RFC 6455) + _ if !frame.header().is_final => { + Err(Error::Protocol(ProtocolError::FragmentedControlFrame)) + } + _ if frame.payload().len() > 125 => { + Err(Error::Protocol(ProtocolError::ControlFrameTooBig)) + } + OpCtl::Close => Ok(self.do_close(frame.into_close()?).map(Message::Close)), + OpCtl::Reserved(i) => { + Err(Error::Protocol(ProtocolError::UnknownControlFrameType(i))) + } + OpCtl::Ping => { + let data = frame.into_payload(); + // No ping processing after we sent a close frame. + if self.state.is_active() { + self.set_additional(Frame::pong(data.clone())); + } + Ok(Some(Message::Ping(data))) + } + OpCtl::Pong => Ok(Some(Message::Pong(frame.into_payload()))), + } + } + + OpCode::Data(data) => { + let fin = frame.header().is_final; + match data { + OpData::Continue => { + if let Some(ref mut msg) = self.incomplete { + msg.extend(frame.into_payload(), self.config.max_message_size)?; + } else { + return Err(Error::Protocol(ProtocolError::UnexpectedContinueFrame)); + } + if fin { + Ok(Some(self.incomplete.take().unwrap().complete()?)) + } else { + Ok(None) + } + } + c if self.incomplete.is_some() => { + Err(Error::Protocol(ProtocolError::ExpectedFragment(c))) + } + OpData::Text if fin => { + check_max_size(frame.payload().len(), self.config.max_message_size)?; + Ok(Some(Message::Text(frame.into_text()?))) + } + OpData::Binary if fin => { + check_max_size(frame.payload().len(), self.config.max_message_size)?; + Ok(Some(Message::Binary(frame.into_payload()))) + } + OpData::Text | OpData::Binary => { + let message_type = match data { + OpData::Text => IncompleteMessageType::Text, + OpData::Binary => IncompleteMessageType::Binary, + _ => panic!("Bug: message is not text nor binary"), + }; + let mut incomplete = IncompleteMessage::new(message_type); + incomplete.extend(frame.into_payload(), self.config.max_message_size)?; + self.incomplete = Some(incomplete); + Ok(None) + } + OpData::Reserved(i) => { + Err(Error::Protocol(ProtocolError::UnknownDataFrameType(i))) + } + } + } + } // match opcode } /// Received a close frame. Tells if we need to return a close frame to the user. From 6d7a74435032c18a755f2fea6801b20e894f7da9 Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Tue, 9 Sep 2025 10:21:10 -0400 Subject: [PATCH 02/12] Replace `if let Some(...)` with `.ok_or(...)?` --- src/protocol/mod.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/protocol/mod.rs b/src/protocol/mod.rs index c1d014b..6d4c98f 100644 --- a/src/protocol/mod.rs +++ b/src/protocol/mod.rs @@ -672,11 +672,11 @@ impl WebSocketContext { let fin = frame.header().is_final; match data { OpData::Continue => { - if let Some(ref mut msg) = self.incomplete { - msg.extend(frame.into_payload(), self.config.max_message_size)?; - } else { - return Err(Error::Protocol(ProtocolError::UnexpectedContinueFrame)); - } + let msg = self + .incomplete + .as_mut() + .ok_or(Error::Protocol(ProtocolError::UnexpectedContinueFrame))?; + msg.extend(frame.into_payload(), self.config.max_message_size)?; if fin { Ok(Some(self.incomplete.take().unwrap().complete()?)) } else { From 08724e6f61a5ce2a81d05287fa515539f289713d Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Wed, 10 Sep 2025 16:30:14 -0400 Subject: [PATCH 03/12] Add Sec-WebSocket-Extension header Add types for the Sec-WebSocket-Extensions header, as described by RFC 6455 Section 11.3.2, and the constituent parts. Add parsing and serialization routines. Based on work by Benjamin Swart . --- Cargo.toml | 2 + src/extensions/headers/mod.rs | 57 +++ .../headers/sec_websocket_extensions.rs | 376 ++++++++++++++++++ src/extensions/mod.rs | 4 + src/lib.rs | 1 + 5 files changed, 440 insertions(+) create mode 100644 src/extensions/headers/mod.rs create mode 100644 src/extensions/headers/sec_websocket_extensions.rs create mode 100644 src/extensions/mod.rs diff --git a/Cargo.toml b/Cargo.toml index 4877901..3fb004a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,6 +20,7 @@ all-features = true [features] default = ["handshake"] handshake = ["data-encoding", "http", "httparse", "sha1"] +headers = ["http", "dep:headers"] url = ["dep:url"] native-tls = ["native-tls-crate"] native-tls-vendored = ["native-tls", "native-tls-crate/vendored"] @@ -30,6 +31,7 @@ __rustls-tls = ["rustls", "rustls-pki-types"] [dependencies] data-encoding = { version = "2", optional = true } bytes = "1.9.0" +headers = { version = "0.4.0", optional = true } http = { version = "1.0", optional = true } httparse = { version = "1.3.4", optional = true } log = "0.4.8" diff --git a/src/extensions/headers/mod.rs b/src/extensions/headers/mod.rs new file mode 100644 index 0000000..da07ce0 --- /dev/null +++ b/src/extensions/headers/mod.rs @@ -0,0 +1,57 @@ +//! HTTP Request and response header handling. +use headers::Error; +use http::HeaderValue; + +mod sec_websocket_extensions; +#[allow(unused)] +pub(crate) use sec_websocket_extensions::{ + SecWebsocketExtensions, WebsocketExtensionParam, WebsocketProtocolExtension, +}; + +/// Reads a comma-delimited raw header into a Vec. +fn from_comma_delimited<'i, I, T, E>(values: &mut I) -> Result +where + I: Iterator, + T: ::std::str::FromStr, + E: ::std::iter::FromIterator, +{ + from_delimited(&mut values.flat_map(|header_value| header_value.to_str()), ',') +} + +/// Reads a single-character-delimited raw header into a Vec. +fn from_delimited<'i, I, T, E>(values: &mut I, delimiter: char) -> Result +where + I: Iterator, + T: ::std::str::FromStr, + E: ::std::iter::FromIterator, +{ + values + .flat_map(|string| { + let mut in_quotes = false; + string + .split(move |c| { + #[allow(clippy::collapsible_else_if)] + if in_quotes { + if c == '"' { + in_quotes = false; + } + false // dont split + } else { + if c == delimiter { + true // split + } else { + if c == '"' { + in_quotes = true; + } + false // dont split + } + } + }) + .filter_map(|x| match x.trim() { + "" => None, + y => Some(y), + }) + .map(|x| x.parse().map_err(|_| Error::invalid())) + }) + .collect() +} diff --git a/src/extensions/headers/sec_websocket_extensions.rs b/src/extensions/headers/sec_websocket_extensions.rs new file mode 100644 index 0000000..35c74c6 --- /dev/null +++ b/src/extensions/headers/sec_websocket_extensions.rs @@ -0,0 +1,376 @@ +use std::{borrow::Cow, fmt::Debug, iter::FromIterator, str::FromStr}; + +use bytes::BytesMut; +use http::HeaderValue; + +use super::{from_comma_delimited, from_delimited}; + +/// The `Sec-Websocket-Extensions` header. +/// +/// This header is used in the Websocket handshake, sent by the client to the +/// server and then from the server to the client. It is a proposed and +/// agreed-upon list of websocket protocol extensions to use. +#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)] +pub struct SecWebsocketExtensions(Vec); + +/// An extension listed in a [`SecWebsocketExtensions`] header. +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +pub struct WebsocketProtocolExtension { + name: Cow<'static, str>, + params: Vec, +} + +/// Named parameter for an extension in a `Sec-Websocket-Extensions` header. +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +pub struct WebsocketExtensionParam { + name: Cow<'static, str>, + value: Option, +} + +impl SecWebsocketExtensions { + /// Constructs a new header with the provided extensions. + pub fn new(extensions: impl IntoIterator) -> Self { + Self(extensions.into_iter().collect()) + } + + /// Returns an iterator over the extensions in this header. + pub fn iter(&self) -> <&Self as IntoIterator>::IntoIter { + self.into_iter() + } + + /// Returns the number of extensions in this header. + #[inline] + pub fn len(&self) -> usize { + self.0.len() + } + + /// Returns a [`HeaderValue`] with the encoded contents of this header. + pub fn header_value(&self) -> HeaderValue { + let extensions = CommaDelimited(self.0.as_slice()); + let mut buffer = BytesMut::with_capacity(extensions.encoded_len()); + + extensions.write_with(&mut |slice| buffer.extend_from_slice(slice)); + + HeaderValue::from_maybe_shared(buffer).expect("valid construction") + } +} + +impl WebsocketProtocolExtension { + /// Constructs a new extension directive with the given name and parameters. + pub fn new( + name: impl Into>, + params: impl IntoIterator, + ) -> Self { + Self { name: name.into(), params: params.into_iter().collect() } + } + + /// The name of this extension directive. + pub fn name(&self) -> &str { + &self.name + } + + /// Returns an iterator over the parameters for this extension directive. + pub fn params(&self) -> impl Iterator { + self.params.iter() + } +} + +impl WebsocketExtensionParam { + /// Constructs a new parameter with the given name and optional value. + #[inline] + pub fn new(name: impl Into>, value: Option) -> Self { + Self { name: name.into(), value } + } + + /// The name of the parameter. + #[inline] + pub fn name(&self) -> &str { + &self.name + } + + /// The parameter value, if there is one. + #[inline] + pub fn value(&self) -> Option<&str> { + self.value.as_deref() + } +} + +impl headers::Header for SecWebsocketExtensions { + fn name() -> &'static ::http::header::HeaderName { + &::http::header::SEC_WEBSOCKET_EXTENSIONS + } + + fn decode<'i, I>(values: &mut I) -> Result + where + I: Iterator, + { + from_comma_delimited(values).map(SecWebsocketExtensions) + } + fn encode>(&self, values: &mut E) { + values.extend(std::iter::once(self.header_value())) + } +} + +impl From for SecWebsocketExtensions { + fn from(value: WebsocketProtocolExtension) -> Self { + Self(vec![value]) + } +} + +impl FromIterator for SecWebsocketExtensions { + fn from_iter>(iter: T) -> Self { + Self(iter.into_iter().collect()) + } +} + +impl IntoIterator for SecWebsocketExtensions { + type Item = WebsocketProtocolExtension; + + type IntoIter = std::vec::IntoIter; + + fn into_iter(self) -> Self::IntoIter { + self.0.into_iter() + } +} + +impl<'a> IntoIterator for &'a SecWebsocketExtensions { + type Item = &'a WebsocketProtocolExtension; + + type IntoIter = std::slice::Iter<'a, WebsocketProtocolExtension>; + + fn into_iter(self) -> Self::IntoIter { + self.0.iter() + } +} + +impl FromStr for WebsocketProtocolExtension { + type Err = headers::Error; + + fn from_str(s: &str) -> Result { + let (name, tail) = s.split_once(';').map(|(n, t)| (n, Some(t))).unwrap_or((s, None)); + + let params = from_delimited(&mut tail.into_iter(), ';')?; + + Ok(Self { name: name.trim().to_owned().into(), params }) + } +} + +impl std::fmt::Display for WebsocketProtocolExtension { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let Self { name, params } = self; + + write!(f, "{name}")?; + for param in params { + write!(f, "; {param}")?; + } + + Ok(()) + } +} + +impl FromStr for WebsocketExtensionParam { + type Err = (); + + fn from_str(s: &str) -> Result { + let (name, value) = s.split_once('=').map(|(n, t)| (n, Some(t))).unwrap_or((s, None)); + + let value = value.map(|value| value.trim().to_owned()); + + Ok(Self { name: name.trim().to_owned().into(), value }) + } +} + +impl std::fmt::Display for WebsocketExtensionParam { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let Self { name, value } = self; + + write!(f, "{name}")?; + if let Some(value) = value { + write!(f, "={value}")?; + } + Ok(()) + } +} + +trait WriteTo { + fn encoded_len(&self) -> usize { + let mut size = 0; + self.write_with(&mut |slice| size += slice.len()); + size + } + + fn write_with(&self, write: &mut (impl FnMut(&[u8]) + ?Sized)); +} + +impl WriteTo for WebsocketProtocolExtension { + fn encoded_len(&self) -> usize { + let Self { name, params } = self; + + let params_len: usize = params.iter().map(|p| p.encoded_len() + 2).sum(); + + name.len() + params_len + } + + fn write_with(&self, write: &mut (impl FnMut(&[u8]) + ?Sized)) { + let Self { name, params } = self; + write(name.as_bytes()); + + for param in params { + write(b"; "); + param.write_with(write); + } + } +} + +impl WriteTo for WebsocketExtensionParam { + fn write_with(&self, write: &mut (impl FnMut(&[u8]) + ?Sized)) { + let Self { name, value } = self; + write(name.as_bytes()); + + if let Some(value) = value { + write(b"="); + write(value.as_bytes()); + } + } +} + +#[derive(Debug)] +struct CommaDelimited(T); + +impl CommaDelimited { + const SEPARATOR: &[u8] = b", "; +} + +impl WriteTo for CommaDelimited<&[T]> { + fn encoded_len(&self) -> usize { + let all_encoded_len: usize = self.0.iter().map(T::encoded_len).sum(); + let all_separators_len = self.0.len().saturating_sub(1) * Self::SEPARATOR.len(); + all_encoded_len + all_separators_len + } + + fn write_with(&self, write: &mut (impl FnMut(&[u8]) + ?Sized)) { + let mut is_first = true; + for item in self.0 { + let was_first = std::mem::replace(&mut is_first, false); + if !was_first { + write(Self::SEPARATOR); + } + item.write_with(write); + } + } +} + +impl WriteTo for CommaDelimited<[T; N]> { + fn encoded_len(&self) -> usize { + CommaDelimited(self.0.as_slice()).encoded_len() + } + + fn write_with(&self, write: &mut (impl FnMut(&[u8]) + ?Sized)) { + CommaDelimited(self.0.as_slice()).write_with(write); + } +} + +#[cfg(test)] +mod tests { + use headers::{Header, HeaderMapExt as _}; + + use super::*; + + fn test_decode(values: &[&str]) -> Option { + let mut map = ::http::HeaderMap::new(); + for val in values { + map.append(T::name(), val.parse().unwrap()); + } + map.typed_get() + } + + #[cfg(test)] + fn test_encode(header: T) -> ::http::HeaderMap { + let mut map = ::http::HeaderMap::new(); + map.typed_insert(header); + map + } + + #[test] + fn parse_separate_headers() { + // From https://tools.ietf.org/html/rfc6455#section-9.1 + let extensions = + test_decode::(&["foo", "bar; baz=2"]).expect("valid"); + + assert_eq!( + extensions, + SecWebsocketExtensions(vec![ + WebsocketProtocolExtension { name: "foo".into(), params: vec![] }, + WebsocketProtocolExtension { + name: "bar".into(), + params: vec![WebsocketExtensionParam { + name: "baz".into(), + value: Some("2".to_owned()) + }], + } + ]) + ); + } + + #[test] + fn round_trip_complex() { + let extensions = test_decode::(&[ + "deflate-stream", + "mux; max-channels=4; flow-control, deflate-stream", + "private-extension", + ]) + .expect("valid"); + + let headers = test_encode(extensions); + assert_eq!( + headers["sec-websocket-extensions"], + "deflate-stream, mux; max-channels=4; flow-control, deflate-stream, private-extension" + ); + } + + #[test] + fn write_to_exact_encoded_len() { + trait WriteToDyn: Debug { + fn encoded_len(&self) -> usize; + fn write_with(&self, write: &mut dyn FnMut(&[u8])); + } + + impl WriteToDyn for W { + fn encoded_len(&self) -> usize { + WriteTo::encoded_len(self) + } + + fn write_with(&self, write: &mut dyn FnMut(&[u8])) { + WriteTo::write_with(self, write); + } + } + + // This isn't a required property for correctness but if the length + // precomputation is wrong we'll over- or under-allocate during + // conversion. + let cases: &[Box] = &[ + Box::new(CommaDelimited([ + WebsocketProtocolExtension::from_str("extension-name").unwrap(), + WebsocketProtocolExtension::from_str("with-params; a=5; b=8").unwrap(), + ])), + Box::new(CommaDelimited::<[WebsocketProtocolExtension; 0]>([])), + Box::new(CommaDelimited([ + WebsocketProtocolExtension::from_str("duplicate-name").unwrap(), + WebsocketProtocolExtension::from_str("duplicate-name").unwrap(), + WebsocketProtocolExtension::from_str("duplicate-name").unwrap(), + ])), + Box::new(WebsocketProtocolExtension::new( + "name", + ["foo=123".parse().unwrap(), "bar".parse().unwrap(), "baz=four".parse().unwrap()], + )), + ]; + + for case in cases { + let mut value = Vec::new(); + let expected_len = case.encoded_len(); + case.write_with(&mut |slice| value.extend_from_slice(slice)); + + assert_eq!(value.len(), expected_len, "for {case:?}"); + } + } +} diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs new file mode 100644 index 0000000..f609ffe --- /dev/null +++ b/src/extensions/mod.rs @@ -0,0 +1,4 @@ +//! WebSocket extensions. + +#[cfg(feature = "headers")] +pub(crate) mod headers; diff --git a/src/lib.rs b/src/lib.rs index be169d4..68795ae 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,6 +22,7 @@ pub mod buffer; #[cfg(feature = "handshake")] pub mod client; pub mod error; +pub mod extensions; #[cfg(feature = "handshake")] pub mod handshake; pub mod protocol; From 7761a8ce56caa387d305fab689b1cf76fc840f14 Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Wed, 27 Aug 2025 14:15:29 -0400 Subject: [PATCH 04/12] Parse and negotiate permessage-deflate websocket extension Add parsing and client/server parameter negotiation for the permessage-deflate extension from the Sec-WebSocket-Extensions header according to RFC 7692. Based on work by Benjamin Swart . --- Cargo.toml | 5 +- src/extensions/compression/deflate/config.rs | 1034 ++++++++++++++++++ src/extensions/compression/deflate/mod.rs | 9 + src/extensions/compression/mod.rs | 6 + src/extensions/mod.rs | 3 + 5 files changed, 1056 insertions(+), 1 deletion(-) create mode 100644 src/extensions/compression/deflate/config.rs create mode 100644 src/extensions/compression/deflate/mod.rs create mode 100644 src/extensions/compression/mod.rs diff --git a/Cargo.toml b/Cargo.toml index 3fb004a..0e13e04 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,6 +27,7 @@ native-tls-vendored = ["native-tls", "native-tls-crate/vendored"] rustls-tls-native-roots = ["__rustls-tls", "rustls-native-certs"] rustls-tls-webpki-roots = ["__rustls-tls", "webpki-roots"] __rustls-tls = ["rustls", "rustls-pki-types"] +deflate = ["headers"] [dependencies] data-encoding = { version = "2", optional = true } @@ -65,6 +66,8 @@ optional = true version = "0.26" [dev-dependencies] +http = "1.0" +httparse = "1.3.4" criterion = "0.6" env_logger = "0.11" input_buffer = "0.5.0" @@ -113,4 +116,4 @@ required-features = ["handshake"] [[example]] name = "srv_accept_unmasked_frames" -required-features = ["handshake"] +required-features = ["handshake"] \ No newline at end of file diff --git a/src/extensions/compression/deflate/config.rs b/src/extensions/compression/deflate/config.rs new file mode 100644 index 0000000..fd394f3 --- /dev/null +++ b/src/extensions/compression/deflate/config.rs @@ -0,0 +1,1034 @@ +use std::{num::NonZeroU8, str::FromStr}; + +use log::*; +use thiserror::Error; + +use crate::extensions::headers::{WebsocketExtensionParam, WebsocketProtocolExtension}; +use crate::protocol::Role; + +/// Name of the extension as it appears in the Sec-WebSocket-Extensions header. +/// +/// Defined by [RFC 7692 Section 7](https://tools.ietf.org/html/rfc7692#section-7) +const PER_MESSAGE_DEFLATE: &str = "permessage-deflate"; + +/// Extension option that determines whether the server should use the LZ77 +/// sliding window from a sent frame for the subsequent frame. +/// +/// Defined by [RFC 7692 Section 7.1.1.1](https://tools.ietf.org/html/rfc7692#section-7.1.1.1) +const SERVER_NO_CONTEXT_TAKEOVER: &str = "server_no_context_takeover"; + +/// Extension option that determines whether the client should use the LZ77 +/// sliding window from a sent frame for the subsequent frame. +/// +/// Defined by [RFC 7692 Section 7.1.1.2](https://tools.ietf.org/html/rfc7692#section-7.1.1.2) +const CLIENT_NO_CONTEXT_TAKEOVER: &str = "client_no_context_takeover"; + +/// Extension option that determines the server's max LZ77 sliding window size +/// when compressing outgoing frames. +/// +/// Defined by [RFC 7692 Section 7.1.2.1](https://tools.ietf.org/html/rfc7692#section-7.1.2.1) +const SERVER_MAX_WINDOW_BITS: &str = "server_max_window_bits"; + +/// Extension option that determines the client's max LZ77 sliding window size +/// when compressing outgoing frames. +/// +/// Defined by [RFC 7692 Section 7.1.2.2](https://tools.ietf.org/html/rfc7692#section-7.1.2.2) +const CLIENT_MAX_WINDOW_BITS: &str = "client_max_window_bits"; + +/// Allowed range of values for a [`SERVER_MAX_WINDOW_BITS`] or [`CLIENT_MAX_WINDOW_BITS`] parameter. +/// +/// Defined by RFC 7692 Sections 7.1.2.1 and 7.1.2.2. +const ALLOWED_WINDOW_BITS: std::ops::RangeInclusive = + unsafe { NonZeroU8::new_unchecked(8)..=NonZeroU8::new_unchecked(15) }; + +/// The supported range of window bit sizes. +/// +/// This subset of [`ALLOWED_WINDOW_BITS`] is the range of sizes that this +/// implementation can support. +pub const SUPPORTED_WINDOW_BITS: std::ops::RangeInclusive = + unsafe { NonZeroU8::new_unchecked(9) }..=*ALLOWED_WINDOW_BITS.end(); + +/// Errors from `permessage-deflate` extension negotiation. +#[derive(Copy, Clone, Debug, Error)] +#[cfg_attr(test, derive(PartialEq))] +pub enum NegotiationError { + /// Invalid `server_max_window_bits` value in a negotiation response. + #[error("Invalid {SERVER_MAX_WINDOW_BITS} value in a negotiation response: {0}")] + InvalidServerMaxWindowBitsValue(u8), + /// Missing `server_max_window_bits` value in a negotiation response. + #[error("Missing {SERVER_MAX_WINDOW_BITS} value in a negotiation response")] + MissingServerMaxWindowBitsValue, + /// Missing `server_no_context_takeover` value in a negotiation response. + #[error("Missing {SERVER_NO_CONTEXT_TAKEOVER} value in a negotiation response")] + MissingServerNoContextTakeover, + /// The `server_max_window_bits` value in a negotiation response is not in [`SUPPORTED_WINDOW_BITS`]. + #[error("Unsupported {SERVER_MAX_WINDOW_BITS} value")] + UnsupportedServerMaxWindowBitsValue(u8), + /// The `client_max_window_bits` value in a negotiation response is not in [`SUPPORTED_WINDOW_BITS`]. + #[error("Unsupported {CLIENT_MAX_WINDOW_BITS} value")] + UnsupportedClientMaxWindowBitsValue(u8), +} + +/// Errors from parsing a single parameter in a `permessage-deflate` extension +/// directive. +#[derive(Debug, Error)] +#[cfg_attr(test, derive(PartialEq))] +pub enum ParameterError { + /// Unknown parameter in a negotiation response. + #[error("Unknown parameter in a negotiation response: {0}")] + UnknownParameter(String), + /// Duplicate parameter in a negotiation response. + #[error("Duplicate parameter in a negotiation response: {0}")] + DuplicateParameter(String), + /// Parameter has an unexpected or invalid value. + #[error("Invalid value {value} for parameter {name}")] + InvalidParameterValue { name: &'static str, value: String }, +} + +/// Contents of a `permessage-deflate` Per-Message Compression Extension. +/// +/// This represents the contents of a valid `permessage-deflate` directive found +/// in a `Sec-WebSocket-Extensions` header. Instances of this type can be +/// produced by parsing a sequence of [`WebsocketExtensionParam`]s with +/// [`PermessageDeflateConfig::parse_params`] or with the [`Default`] +/// implementation. Consuming code can assume the fields here are valid +/// according to [RFC 7692 Section 7]. +/// +/// [RFC 7692 Section 7]: https://tools.ietf.org/html/rfc7692#section-7 +#[derive(Clone, Copy, Debug, Default, PartialEq)] +pub struct PermessageDeflateConfig { + server_no_context_takeover: bool, + client_no_context_takeover: bool, + /// The `server_max_window_bits` parameter as described by [RFC 7692 Section 7.1.2.1]. + /// + /// In a legal extension directive, if this parameter is present, it must + /// have a value. A `None` value indicates the parameter is not present, + /// while `Some(b)` indicates it is present with value `b`, where `b` is in + /// the range [`ALLOWED_WINDOW_BITS`]. + /// + /// [RFC 7692 Section 7.1.2.1]: https://tools.ietf.org/html/rfc7692#section-7.1.2.1 + server_max_window_bits: Option, + /// The `client_max_window_bits` parameter as described by [RFC 7692 Section 7.1.2.2]. + /// + /// In a legal extension directive, if this parameter is present, it is not + /// required to have a value. A `None` value indicates the parameter is not + /// present, `Some(None)` indicates the parameter is present without a + /// value, and `Some(Some(b))` indicates it is present with value `b`, where + /// `b` is in the range [`ALLOWED_WINDOW_BITS`]. + /// + /// [RFC 7692 Section 7.1.2.2]: https://tools.ietf.org/html/rfc7692#section-7.1.2.2 + client_max_window_bits: Option>, +} + +/// Client/server configuration for `permessage-deflate` support. +/// +/// This holds configuration values for a client or server for the +/// `permessage-deflate` extension defined in [RFC 7692 Section 7]. This can be +/// used to produce a negotiation offer or response to one as a +/// [`PermessageDeflateConfig`] that is transmitted to the peer as a +/// [`WebsocketExtensionParam`]. +/// +/// Clients and servers can use the fields and methods on this type to reduce +/// the maximum usage per connection by reducing the size or lifetime of the +/// context windows used during compression or decompression. +/// +/// [RFC 7692 Section 7]: https://tools.ietf.org/html/rfc7692#section-7 +#[derive(Clone, Copy, Debug, PartialEq)] +pub struct DeflateConfig { + /// If set, indicates that server compression of a subsequent message won't + /// reuse the context window of the previous one. + pub server_no_context_takeover: bool, + /// If set, indicates that client compression of a subsequent message won't + /// reuse the context window of the previous one. + pub client_no_context_takeover: bool, + /// Guaranteed to be in the range [`SUPPORTED_WINDOW_BITS`]. + server_max_window_bits: NonZeroU8, + /// Guaranteed to be in the range [`SUPPORTED_WINDOW_BITS`]. + client_max_window_bits: NonZeroU8, +} + +/// Error type returned by [`DeflateConfig::set_max_window_bits`]. +#[derive(Copy, Clone, Debug, Error)] +#[error("this implementation supports max window bits in {SUPPORTED_WINDOW_BITS:?}")] +pub struct DeflateInvalidMaxWindowBits; + +impl DeflateConfig { + /// Constructs a new [`DeflateConfig`] with default parameters. + pub fn new() -> Self { + Self { + server_no_context_takeover: false, + client_no_context_takeover: false, + server_max_window_bits: *SUPPORTED_WINDOW_BITS.end(), + client_max_window_bits: *SUPPORTED_WINDOW_BITS.end(), + } + } + + #[allow(missing_docs)] + #[inline] + pub fn server_max_window_bits(&self) -> NonZeroU8 { + self.server_max_window_bits + } + + #[allow(missing_docs)] + #[inline] + pub fn client_max_window_bits(&self) -> NonZeroU8 { + self.client_max_window_bits + } + + /// Limits the maximum number of window bits used by a peer during compression. + /// + /// Sets the size of the sliding window that compressed streams sent by the + /// given role will use. The `bits` value is the base-2 logarithm of the + /// window size, and must be in the range [`SUPPORTED_WINDOW_BITS`]. If not, + /// an error is returned. + #[inline] + pub fn set_max_window_bits( + mut self, + role: Role, + bits: u8, + ) -> Result { + let which = match role { + Role::Server => &mut self.server_max_window_bits, + Role::Client => &mut self.client_max_window_bits, + }; + + let bits = NonZeroU8::new(bits) + .filter(|bits| SUPPORTED_WINDOW_BITS.contains(bits)) + .ok_or(DeflateInvalidMaxWindowBits)?; + + *which = bits; + Ok(self) + } + + /// Sets [`server_no_context_takeover`] or [`client_no_context_takeover`]. + /// + /// The fields are public; this is just a convenience for builder-style usage. + /// + /// [`server_no_context_takeover`]: DeflateConfig::server_no_context_takeover + /// [`client_no_context_takeover`]: DeflateConfig::client_no_context_takeover + #[inline] + pub fn set_no_context_takeover(mut self, role: Role, no_context_takeover: bool) -> Self { + let which = match role { + Role::Server => &mut self.server_no_context_takeover, + Role::Client => &mut self.client_no_context_takeover, + }; + *which = no_context_takeover; + self + } + + /// Produces a [`PermessageDeflateConfig`] to send as a client offer to a server. + /// + /// The returned value can be serialized as a [`WebsocketProtocolExtension`] + /// for inclusion in a [`headers::SecWebsocketExtensions`] header. + pub fn as_offer(&self) -> PermessageDeflateConfig { + let Self { + server_no_context_takeover, + client_no_context_takeover, + server_max_window_bits, + client_max_window_bits, + } = *self; + + // From RFC 7692 Section 7.1.2.1: + // + // A client MAY include the "server_max_window_bits" extension + // parameter in an extension negotiation offer. + // + // ... + + // By including this parameter in an extension negotiation offer, a + // client limits the LZ77 sliding window size that the server will use + // to compress messages. If the peer server uses a small LZ77 sliding + // window to compress messages, the client can reduce the memory + // needed for the LZ77 sliding window. + // + // A server declines an extension negotiation offer with this + // parameter if the server doesn't support it. + // + // If the client doesn't need the server to use a smaller window size + // than the protocol max, then don't include the parameter since not all + // servers will recognize it, and including it might result in the + // server rejecting the offer. + let server_max_window_bits = (server_max_window_bits != *ALLOWED_WINDOW_BITS.end()) + .then_some(server_max_window_bits); + + PermessageDeflateConfig { + server_no_context_takeover, + client_no_context_takeover, + server_max_window_bits, + client_max_window_bits: Some( + (client_max_window_bits != *ALLOWED_WINDOW_BITS.end()) + .then_some(client_max_window_bits), + ), + } + } + + /// Receives a negotiation offer from the client and computes the agreed-upon parameters. + /// + /// This should be called on the [`DeflateConfig`] representing the server's + /// initial configuration with the offered parameters from the client as the + /// argument. If this method returns `Some`, the resulting `DeflateConfig` + /// may be used as the "agreed parameters" for the connection, and the + /// resulting [`PermessageDeflateConfig`] should be transmitted to the + /// client as the response to the offer. + /// + /// Note that this method may need to be called multiple times. Per [RFC 7692 Section 5]: + /// + /// A client may also offer multiple PMCE choices to the server by + /// including multiple elements in the "Sec-WebSocket-Extensions" header, + /// one for each PMCE offered. This set of elements MAY include multiple + /// PMCEs with the same extension name to offer the possibility to use the + /// same algorithm with different configuration parameters. The order of + /// elements is important as it specifies the client's preference. An + /// element preceding another element has higher preference. It is + /// recommended that a server accepts PMCEs with higher preference if the + /// server supports them. + /// + /// [RFC 7692 Section 5]: https://tools.ietf.org/html/rfc7692#section-5 + pub(crate) fn accept_offer( + &self, + client: PermessageDeflateConfig, + ) -> Option<(DeflateConfig, PermessageDeflateConfig)> { + // RFC 7692 Section 7: + + // A server MUST decline an extension negotiation offer for this + // extension if any of the following conditions are met: + // - The negotiation offer contains an extension parameter not defined for use in an offer. + // - The negotiation offer contains an extension parameter with an invalid value. + // - The negotiation offer contains multiple extension parameters with the same name. + // - The server doesn't support the offered configuration. + let Self { + server_no_context_takeover, + client_no_context_takeover, + server_max_window_bits, + client_max_window_bits, + } = *self; + + // From RFC 7692 Section 7.1.1.1: + // + // A server accepts an extension negotiation offer that includes the + // "server_no_context_takeover" extension parameter by including the + // "server_no_context_takeover" extension parameter in the corresponding + // extension negotiation response to send back to the client. The + // "server_no_context_takeover" extension parameter in an extension + // negotiation response has no value. + // + // ... + // + // A server MAY include the "server_no_context_takeover" extension + // parameter in an extension negotiation response even if the extension + // negotiation offer being accepted by the extension negotiation + // response didn't include the "server_no_context_takeover" extension + // parameter. + let server_no_context_takeover = + server_no_context_takeover || client.server_no_context_takeover; + + // From RFC 7692 Section 7.1.1.2: + // + // A server MAY include the "client_no_context_takeover" extension + // parameter in an extension negotiation response. If the received + // extension negotiation offer includes the + // "client_no_context_takeover" extension parameter, the server may + // either ignore the parameter or use the parameter to avoid taking + // over the LZ77 sliding window unnecessarily by including the + // "client_no_context_takeover" extension parameter in the + // corresponding extension negotiation response to the offer. + let client_no_context_takeover = + client_no_context_takeover || client.client_no_context_takeover; + + // From RFC 7692 Section 7.1.2.1: + // A server accepts an extension negotiation offer with this parameter + // by including the "server_max_window_bits" extension parameter in + // the extension negotiation response to send back to the client with + // the same or smaller value as the offer. + // + // A server MAY include the "server_max_window_bits" extension + // parameter in an extension negotiation response even if the + // extension negotiation offer being accepted by the response didn't + // include the "server_max_window_bits" extension parameter. + let (server_max_window_bits, response_server_max_window_bits) = match client + .server_max_window_bits + { + None => (server_max_window_bits, None), + Some(requested_max) => { + // Decline the offer if the client is requesting a window that + // is smaller than we can support. + if !SUPPORTED_WINDOW_BITS.contains(&requested_max) { + debug!("declining offer: {SERVER_MAX_WINDOW_BITS} is smaller than can be supported"); + return None; + } + // It's fine if the client indicated support for a larger window + // that we can provide; we just downgrade that to our max. + let bits = requested_max.min(server_max_window_bits); + (bits, Some(bits)) + } + }; + + let client_max_window_bits = match client.client_max_window_bits { + None => { + // From RFC 7692 Section 7.1.2.2: + // + // If a received extension negotiation offer doesn't have the + // "client_max_window_bits" extension parameter, the + // corresponding extension negotiation response to the offer + // MUST NOT include the "client_max_window_bits" extension + // parameter. + + if client_max_window_bits != *ALLOWED_WINDOW_BITS.end() { + // The server is configured to allocate a limited size + // window for each client stream, and the client didn't + // indicate that it supports the parameter. Per the RFC, + // the server can't include the extension parameter. We + // make the choice that it's more important to respect + // the server configuration and so decline the offer. + debug!("declining offer without {CLIENT_MAX_WINDOW_BITS} (locally limited to {client_max_window_bits})"); + return None; + } + client_max_window_bits + } + Some(None) => { + // The client supports the parameter so we can use our configured value. + client_max_window_bits + } + Some(Some(client_max)) if !SUPPORTED_WINDOW_BITS.contains(&client_max) => { + // We can't support a window this small. + debug!("declining offer: {CLIENT_MAX_WINDOW_BITS} is not in the supported range"); + return None; + } + Some(Some(client_max)) => client_max.min(client_max_window_bits), + }; + + let connection_config = DeflateConfig { + server_no_context_takeover, + client_no_context_takeover, + server_max_window_bits, + client_max_window_bits, + }; + + let omit_if_max = |value| (value != *ALLOWED_WINDOW_BITS.end()).then_some(value); + + let offer_response = PermessageDeflateConfig { + server_no_context_takeover, + client_no_context_takeover, + + server_max_window_bits: response_server_max_window_bits, + client_max_window_bits: omit_if_max(client_max_window_bits).map(Some), + }; + + Some((connection_config, offer_response)) + } + + /// Receives a response from the server and checks it against the requested context. + /// + /// This should be called on the [`DeflateConfig`] representing the client's + /// configuration, with the response from the server as the argument. An + /// `Ok` result will indicate the set of options the client should use for + /// the remainder of the connection. + pub(crate) fn accept_response( + self, + server: PermessageDeflateConfig, + ) -> Result { + let Self { + server_no_context_takeover, + client_no_context_takeover, + server_max_window_bits, + client_max_window_bits, + } = self; + + let server_no_context_takeover = + if server_no_context_takeover && !server.server_no_context_takeover { + // The client requested no server takeover but the server didn't + // agree to that. + return Err(NegotiationError::MissingServerNoContextTakeover); + } else { + server.server_no_context_takeover + }; + + // Per RFC 7.1.1.2: + // + // By including the "client_no_context_takeover" extension parameter + // in an extension negotiation response, a server prevents the peer + // client from using context takeover. + let client_no_context_takeover = + client_no_context_takeover || server.client_no_context_takeover; + + let server_max_window_bits = { + // Per RFC 7.1.2.1: + // + // A server accepts an extension negotiation offer with this + // parameter by including the "server_max_window_bits" extension + // parameter in the extension negotiation response to send back to + // the client with the same or smaller value as the offer. + // + // An accepted offer should include the same or smaller value + // than the one requested, if any. + let default_server_max_bits = || { + (server_max_window_bits == *ALLOWED_WINDOW_BITS.end()) + .then_some(server_max_window_bits) + }; + let received = server + .server_max_window_bits + .or_else(default_server_max_bits) + .ok_or(NegotiationError::MissingServerMaxWindowBitsValue)?; + + if received > server_max_window_bits { + return Err(NegotiationError::InvalidServerMaxWindowBitsValue(received.get())); + } + + if !SUPPORTED_WINDOW_BITS.contains(&received) { + return Err(NegotiationError::UnsupportedServerMaxWindowBitsValue(received.get())); + } + + received + }; + + let client_max_window_bits = match server.client_max_window_bits { + None => { + // From RFC 7692 Section 7.1.2.2: + // + // If a received extension negotiation offer has the + // "client_max_window_bits" extension parameter, the server + // MAY include the "client_max_window_bits" extension + // parameter in the corresponding extension negotiation + // response to the offer. + // + // ... + // + // Absence of this extension parameter in an extension + // negotiation response indicates that the server can receive + // messages compressed using an LZ77 sliding window of up to + // 32,768 bytes. + client_max_window_bits + } + Some(None) => { + // From RFC 7692 Section 7.1.2.2: + // + // If the "client_max_window_bits" extension parameter in a + // received extension negotiation offer has a value, the + // server may either ignore this value or use this value to + // avoid allocating an unnecessarily big LZ77 sliding window + // by including the "client_max_window_bits" extension + // parameter in the corresponding extension negotiation + // response to the offer with a value equal to or smaller than + // the received value. + // + // It's not completely clear whether the RFC allows the server + // to send the parameter without a value, but in the spirit of + // Postel's law, interpret this as the server not constraining + // the client. + client_max_window_bits + } + Some(Some(received)) => { + // From RFC 7692 Section 7.1.2.2: + // + // By including this extension parameter in an extension + // negotiation response, a server limits the LZ77 sliding window + // size that the client uses to compress messages. This reduces + // the amount of memory for the decompression context that the + // server has to reserve for the connection. + if !SUPPORTED_WINDOW_BITS.contains(&received) { + return Err(NegotiationError::UnsupportedClientMaxWindowBitsValue( + received.get(), + )); + } + + if received > client_max_window_bits { + // The server sent us a larger value back than the one we sent. + return Err(NegotiationError::UnsupportedClientMaxWindowBitsValue( + received.get(), + )); + } + + client_max_window_bits.min(received) + } + }; + + // Enforce field invariants. + debug_assert!(SUPPORTED_WINDOW_BITS.contains(&server_max_window_bits)); + debug_assert!(SUPPORTED_WINDOW_BITS.contains(&client_max_window_bits)); + + Ok(Self { + server_no_context_takeover, + client_no_context_takeover, + server_max_window_bits, + client_max_window_bits, + }) + } +} + +impl PermessageDeflateConfig { + /// Generate the corresponding [`WebsocketProtocolExtension`] value. + fn as_extension(&self) -> WebsocketProtocolExtension { + let Self { + server_no_context_takeover, + client_no_context_takeover, + server_max_window_bits, + client_max_window_bits, + } = self; + + let context_takeovers = [ + server_no_context_takeover.then_some(SERVER_NO_CONTEXT_TAKEOVER), + client_no_context_takeover.then_some(CLIENT_NO_CONTEXT_TAKEOVER), + ] + .into_iter() + .flatten(); + + let max_window_bits = [ + server_max_window_bits.map(|bits| (SERVER_MAX_WINDOW_BITS, Some(bits.to_string()))), + client_max_window_bits + .map(|bits| (CLIENT_MAX_WINDOW_BITS, bits.as_ref().map(ToString::to_string))), + ] + .into_iter() + .flatten(); + + WebsocketProtocolExtension::new( + PER_MESSAGE_DEFLATE, + context_takeovers + .zip(std::iter::repeat(None)) + .chain(max_window_bits) + .map(|(name, value)| WebsocketExtensionParam::new(name, value)), + ) + } + + /// Parses the extension parameter list for a `Sec-WebSocket-Extensions` header. + fn parse_params<'p>( + params: impl IntoIterator, + ) -> Result { + let mut this = Self { + server_no_context_takeover: false, + client_no_context_takeover: false, + server_max_window_bits: None, + client_max_window_bits: None, + }; + + fn apply<'a>( + this: &mut PermessageDeflateConfig, + param: ParamName, + value: Option<&'a str>, + ) -> Result<(), Option<&'a str>> { + match param { + ParamName::NoContextTakeover(role) => { + if value.is_some() { + return Err(value); + } + *match role { + Role::Server => &mut this.server_no_context_takeover, + Role::Client => &mut this.client_no_context_takeover, + } = true; + Ok(()) + } + + ParamName::MaxWindowBits(role) => { + let bits = value + .map(|bits| { + // This is more lenient than the RFC allows in that + // it will successfully parse an input with leading + // zeros. This is in line with Postel's Law ("be + // conservative in what you send, be liberal in what + // you accept") and won't affect handling for an + // RFC-compliant peer. + bits.parse() + .ok() + .filter(|bits| ALLOWED_WINDOW_BITS.contains(bits)) + .ok_or(value) + }) + .transpose()?; + match role { + Role::Server => { + // Per RFC 7692 Section 7.1.2.1: + // + // A client MAY include the + // "server_max_window_bits" extension parameter in + // an extension negotiation offer. This parameter + // has a decimal integer value without leading + // zeroes between 8 to 15, inclusive... + this.server_max_window_bits = Some(bits.ok_or(value)?); + } + Role::Client => { + // Per RFC 7692 Section 7.1.2.2: + // + // A client MAY include the + // "client_max_window_bits" extension parameter + // in an extension negotiation offer. This + // parameter has no value or a decimal integer + // value without leading zeroes between 8 to 15 + // inclusive... + this.client_max_window_bits = Some(bits) + } + }; + Ok(()) + } + } + } + + // Set of seen parameters represented as a bit mask. + let mut seen_params = 0u8; + + for extension_param in params { + let (name, value) = (extension_param.name(), extension_param.value()); + let param: ParamName = name.parse()?; + + let seen_flag = 1 << param.ordinal(); + if seen_params & seen_flag != 0 { + return Err(ParameterError::DuplicateParameter(name.to_string())); + } + + apply(&mut this, param, value).map_err(|value| { + ParameterError::InvalidParameterValue { + name: param.name(), + value: value.unwrap_or_default().to_string(), + } + })?; + + seen_params |= seen_flag; + } + + Ok(this) + } +} + +impl Default for DeflateConfig { + fn default() -> Self { + Self::new() + } +} + +#[derive(Copy, Clone)] +enum ParamName { + NoContextTakeover(Role), + MaxWindowBits(Role), +} + +impl FromStr for ParamName { + type Err = ParameterError; + + fn from_str(s: &str) -> Result { + Ok(match s { + CLIENT_MAX_WINDOW_BITS => Self::MaxWindowBits(Role::Client), + SERVER_MAX_WINDOW_BITS => Self::MaxWindowBits(Role::Server), + CLIENT_NO_CONTEXT_TAKEOVER => Self::NoContextTakeover(Role::Client), + SERVER_NO_CONTEXT_TAKEOVER => Self::NoContextTakeover(Role::Server), + name => return Err(ParameterError::UnknownParameter(name.to_string())), + }) + } +} + +impl ParamName { + fn ordinal(&self) -> u8 { + match self { + Self::NoContextTakeover(role) => *role as u8, + Self::MaxWindowBits(role) => 2 + *role as u8, + } + } + + fn name(&self) -> &'static str { + match self { + ParamName::NoContextTakeover(Role::Server) => SERVER_NO_CONTEXT_TAKEOVER, + ParamName::NoContextTakeover(Role::Client) => CLIENT_NO_CONTEXT_TAKEOVER, + ParamName::MaxWindowBits(Role::Server) => SERVER_MAX_WINDOW_BITS, + ParamName::MaxWindowBits(Role::Client) => CLIENT_MAX_WINDOW_BITS, + } + } +} + +#[cfg(test)] +mod test { + use crate::extensions::headers::SecWebsocketExtensions; + use headers::Header; + use http::HeaderValue; + + use super::*; + + #[test] + fn deflate_config_parse_params_valid() { + assert_eq!( + PermessageDeflateConfig::parse_params([]), + Ok(PermessageDeflateConfig::default()) + ); + assert_eq!( + PermessageDeflateConfig::parse_params( + WebsocketProtocolExtension::from_str( + "permessage-deflate; client_max_window_bits=12; server_no_context_takeover" + ) + .unwrap() + .params() + ), + Ok(PermessageDeflateConfig { + client_max_window_bits: Some(Some(12.try_into().unwrap())), + server_no_context_takeover: true, + ..Default::default() + }) + ); + } + + #[test] + fn deflate_rejects_unknown_parameters() { + assert_eq!( + PermessageDeflateConfig::parse_params([&WebsocketExtensionParam::new("unknown", None)]), + Err(ParameterError::UnknownParameter("unknown".to_owned())) + ); + assert_eq!( + PermessageDeflateConfig::parse_params([ + &WebsocketExtensionParam::new("client_max_window_bits", Some("13".to_string())), + &WebsocketExtensionParam::new("after-valid", None) + ]), + Err(ParameterError::UnknownParameter("after-valid".to_owned())) + ) + } + + #[test] + fn deflate_rejects_duplicate_parameters() { + assert_eq!( + PermessageDeflateConfig::parse_params( + WebsocketProtocolExtension::from_str( + "permessage-deflate; client_max_window_bits=12; server_no_context_takeover; client_max_window_bits=12" + ).unwrap().params()), + Err(ParameterError::DuplicateParameter("client_max_window_bits".to_owned())), + ); + } + + #[test] + fn deflate_config_minimal_client_offer() { + let client_config = DeflateConfig::new(); + + let mut headers = Vec::with_capacity(1); + SecWebsocketExtensions::new([client_config.as_offer().as_extension()]).encode(&mut headers); + + assert_eq!( + headers, + &[HeaderValue::from_static("permessage-deflate; client_max_window_bits")] + ) + } + + #[test] + fn deflate_server_respects_offer_server_no_context_takeover() { + let server_cfg = DeflateConfig::default(); + + let client_offer = + PermessageDeflateConfig { server_no_context_takeover: true, ..Default::default() }; + + assert_eq!( + server_cfg.accept_offer(client_offer), + Some(( + DeflateConfig { server_no_context_takeover: true, ..server_cfg }, + PermessageDeflateConfig { server_no_context_takeover: true, ..Default::default() } + )) + ); + } + + #[test] + fn rejects_unsupported_client_max_window_bits_offer() { + let server_config = DeflateConfig::new(); + + // With the default value, the client should be able to say it will use + // a smaller window size than the default. + const SMALLER_WINDOW: NonZeroU8 = unsafe { NonZeroU8::new_unchecked(12) }; + assert_eq!( + server_config.accept_offer(PermessageDeflateConfig { + client_max_window_bits: Some(Some(SMALLER_WINDOW)), + ..Default::default() + }), + Some(( + DeflateConfig { client_max_window_bits: SMALLER_WINDOW, ..server_config }, + PermessageDeflateConfig { + client_max_window_bits: Some(Some(SMALLER_WINDOW)), + ..Default::default() + } + )) + ); + } + + #[test] + fn interop() { + // These are all mutually compatible, though they might result in + // negotiated parameters that are not the default. + const MODIFIERS: &[fn(DeflateConfig) -> DeflateConfig] = &[ + |config| config.set_no_context_takeover(Role::Client, true), + |config| config.set_no_context_takeover(Role::Server, true), + |config| config.set_max_window_bits(Role::Client, 12).unwrap(), + |config| config.set_max_window_bits(Role::Server, 10).unwrap(), + ]; + + fn make_config(selector: u8) -> DeflateConfig { + MODIFIERS + .iter() + .enumerate() + .filter(|(i, _)| (selector & (1 << i) != 0)) + .fold(DeflateConfig::new(), |config, (_, modifier)| modifier(config)) + } + + for client_selector in 0..(1 << MODIFIERS.len()) { + let client_config = make_config(client_selector); + for server_selector in 0..(1 << MODIFIERS.len()) { + let server_config = make_config(server_selector); + + let offer = client_config.as_offer(); + let (_config, response) = server_config.accept_offer(offer).unzip(); + + let response = response.unwrap_or_else(|| { + panic!("client: {client_config:?}, server: {server_config:?}, offer: {offer:?}") + }); + + let _accepted = client_config.accept_response(response).unwrap_or_else(|e| + panic!("client: {client_config:?}, server: {server_config:?}, offer: {offer:?}, response: {response:?}; error: {e}")); + } + } + } + + #[test] + fn rejects_unsupported_client_max_window_bits_response() { + let client_config = DeflateConfig::new(); + + assert_eq!(client_config.client_max_window_bits().get(), 15); + // With the default value, the should be able to say it will use + // a smaller window size than the default. + const SMALLER_WINDOW: NonZeroU8 = unsafe { NonZeroU8::new_unchecked(12) }; + let server_response = PermessageDeflateConfig { + server_max_window_bits: Some(*ALLOWED_WINDOW_BITS.end()), + client_max_window_bits: Some(Some(SMALLER_WINDOW)), + ..Default::default() + }; + + assert_eq!( + client_config.accept_response(server_response), + Ok(DeflateConfig { client_max_window_bits: SMALLER_WINDOW, ..Default::default() }) + ); + + // With a smaller allowed maximum window size, the same response will be rejected. + let client_config = + client_config.set_max_window_bits(Role::Client, SMALLER_WINDOW.get() - 1).unwrap(); + assert_eq!( + client_config.accept_response(server_response), + Err(NegotiationError::UnsupportedClientMaxWindowBitsValue(SMALLER_WINDOW.get())) + ); + } + + mod rfc_7692_section_7_1_3_examples { + use headers::HeaderMap; + + use super::*; + + #[track_caller] + fn parse_extensions(raw: &[u8]) -> SecWebsocketExtensions { + let headers: HeaderMap = { + let mut hbuffer = [httparse::EMPTY_HEADER; 20]; + + match httparse::parse_headers(raw, &mut hbuffer).unwrap() { + httparse::Status::Partial => panic!("preallocated buffer is too small"), + httparse::Status::Complete((_size, hdr)) => hdr + .iter() + .map(|h| { + ( + http::HeaderName::from_bytes(h.name.as_bytes()).unwrap(), + HeaderValue::from_bytes(h.value).unwrap(), + ) + }) + .collect(), + } + }; + SecWebsocketExtensions::decode( + &mut headers.get_all(SecWebsocketExtensions::name()).iter(), + ) + .unwrap() + } + + #[track_caller] + fn parse_deflates( + extensions: &SecWebsocketExtensions, + ) -> impl Iterator + '_ { + extensions + .iter() + .filter_map(|extension| { + (extension.name() == PER_MESSAGE_DEFLATE).then_some(extension.params()) + }) + .map(|params| PermessageDeflateConfig::parse_params(params).unwrap()) + } + + #[test] + fn simplest() { + // From RFC 7692 Section 7.1.3: + // The simplest "Sec-WebSocket-Extensions" header in a client's + // opening handshake to offer use of the "permessage-deflate" + // extension looks like this: + let client_headers = parse_extensions( + b"\ + Sec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + ); + let client_offers = parse_deflates(&client_headers); + + // ... + // + // Since the "client_max_window_bits" extension parameter is not + // included in this extension negotiation offer, the server must + // not accept the offer with an extension negotiation response + // that includes the "client_max_window_bits" extension + // parameter. The simplest "Sec- WebSocket-Extensions" header in + // a server's opening handshake to accept use of the + // "permessage-deflate" extension is the same + let server_config = DeflateConfig::default(); + let (_server_config, accepted_offer) = + client_offers.filter_map(|offer| server_config.accept_offer(offer)).next().unwrap(); + + assert_eq!(SecWebsocketExtensions::new([accepted_offer.as_extension()]), client_headers) + } + + #[test] + fn client_multiple_offers() { + // From RFC 7692 Section 7.1.3: + // + // The following extension negotiation offer sent by a client is + // asking the server to use an LZ77 sliding window with a size of + // 1,024 bytes or less and declaring that the client supports the + // "client_max_window_bits" extension parameter in an extension + // negotiation response. + // + // ... + // + // This extension negotiation offer might be rejected by the + // server because the server doesn't support the + // "server_max_window_bits" extension parameter in an extension + // negotiation offer. This is fine if the client cannot receive + // messages compressed using a larger sliding window size, but if + // the client just prefers using a small window but wants to fall + // back to the "permessage-deflate" without the + // "server_max_window_bits" extension parameter, the client can + // make an offer with the fallback option like this: + let client_headers = parse_extensions( + b"Sec-WebSocket-Extensions: \ + permessage-deflate; \ + client_max_window_bits; server_max_window_bits=10, \ + permessage-deflate; \ + client_max_window_bits\r\n\r\n", + ); + + let client_offers = parse_deflates(&client_headers); + + let server_config = DeflateConfig::default(); + let accepted_offers = client_offers + .filter_map(|offer| server_config.accept_offer(offer)) + .map(|(_server_config, accepted)| { + SecWebsocketExtensions::new([accepted.as_extension()]) + }) + .collect::>(); + // ... + // + // The server can accept "permessage-deflate" by picking any + // supported one from the listed offers. To accept the first + // option, for example, the server may send back a response as + // follows: + assert_eq!( + accepted_offers, + [ + parse_extensions( + b"Sec-WebSocket-Extensions: \ + permessage-deflate; server_max_window_bits=10\r\n\r\n" + ), + // ... + // + // To accept the second option, for example, the server may send + // back a response as follows: + parse_extensions(b"Sec-WebSocket-Extensions: permessage-deflate\r\n\r\n") + ] + ); + } + } +} diff --git a/src/extensions/compression/deflate/mod.rs b/src/extensions/compression/deflate/mod.rs new file mode 100644 index 0000000..c873681 --- /dev/null +++ b/src/extensions/compression/deflate/mod.rs @@ -0,0 +1,9 @@ +//! Implements "permessage-deflate" PMCE defined in [RFC 7692 Section 7] +//! +//! [RFC 7692 Section 7]: https://tools.ietf.org/html/rfc7692#section-7 +#![allow(dead_code)] + +mod config; +pub use config::{ + DeflateConfig, NegotiationError as DeflateNegotiationError, PermessageDeflateConfig, +}; diff --git a/src/extensions/compression/mod.rs b/src/extensions/compression/mod.rs new file mode 100644 index 0000000..0780d3c --- /dev/null +++ b/src/extensions/compression/mod.rs @@ -0,0 +1,6 @@ +//! [Per-Message Compression Extensions][rfc7692] +//! +//! [rfc7692]: https://tools.ietf.org/html/rfc7692 + +#[cfg(feature = "deflate")] +pub mod deflate; diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs index f609ffe..c319251 100644 --- a/src/extensions/mod.rs +++ b/src/extensions/mod.rs @@ -1,4 +1,7 @@ //! WebSocket extensions. +// Only `permessage-deflate` is supported at the moment. + +pub mod compression; #[cfg(feature = "headers")] pub(crate) mod headers; From 5e8332b02aaf38a932864959a6512351f7724cb9 Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Wed, 27 Aug 2025 17:07:52 -0400 Subject: [PATCH 05/12] Implement deflate compression and decompression Add a DeflateContext that can be used to compress and decompress the payloads of a single connection. Delegate to the flate2 library for the actual algorithm. Based on work by Benjamin Swart --- Cargo.toml | 12 +- src/extensions/compression/deflate/config.rs | 9 + src/extensions/compression/deflate/mod.rs | 407 +++++++++++++++++++ 3 files changed, 427 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 0e13e04..340c48a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ native-tls-vendored = ["native-tls", "native-tls-crate/vendored"] rustls-tls-native-roots = ["__rustls-tls", "rustls-native-certs"] rustls-tls-webpki-roots = ["__rustls-tls", "webpki-roots"] __rustls-tls = ["rustls", "rustls-pki-types"] -deflate = ["headers"] +deflate = ["headers", "flate2"] [dependencies] data-encoding = { version = "2", optional = true } @@ -42,6 +42,16 @@ thiserror = "2.0.7" url = { version = "2.1.0", optional = true } utf-8 = "0.7.5" +[dependencies.flate2] +optional = true +version = "1.0.27" +default-features = false +# We need some zlib-compatible backend from flate2 to support setting the +# context window size. Enabling the "zlib" feature is enough, and, per the +# flate2 documentation, if other crates in the build graph enable the "zlib-ng" +# or "zlib-ng-compat" features, those will take precedence. +features = ["zlib"] + [dependencies.native-tls-crate] optional = true package = "native-tls" diff --git a/src/extensions/compression/deflate/config.rs b/src/extensions/compression/deflate/config.rs index fd394f3..6948830 100644 --- a/src/extensions/compression/deflate/config.rs +++ b/src/extensions/compression/deflate/config.rs @@ -1,5 +1,6 @@ use std::{num::NonZeroU8, str::FromStr}; +use flate2::Compression; use log::*; use thiserror::Error; @@ -135,6 +136,8 @@ pub struct PermessageDeflateConfig { /// [RFC 7692 Section 7]: https://tools.ietf.org/html/rfc7692#section-7 #[derive(Clone, Copy, Debug, PartialEq)] pub struct DeflateConfig { + /// How hard to try to compress outgoing data. + pub compression: Compression, /// If set, indicates that server compression of a subsequent message won't /// reuse the context window of the previous one. pub server_no_context_takeover: bool, @@ -156,6 +159,7 @@ impl DeflateConfig { /// Constructs a new [`DeflateConfig`] with default parameters. pub fn new() -> Self { Self { + compression: Compression::default(), server_no_context_takeover: false, client_no_context_takeover: false, server_max_window_bits: *SUPPORTED_WINDOW_BITS.end(), @@ -226,6 +230,7 @@ impl DeflateConfig { client_no_context_takeover, server_max_window_bits, client_max_window_bits, + compression: _, } = *self; // From RFC 7692 Section 7.1.2.1: @@ -301,6 +306,7 @@ impl DeflateConfig { client_no_context_takeover, server_max_window_bits, client_max_window_bits, + compression, } = *self; // From RFC 7692 Section 7.1.1.1: @@ -398,6 +404,7 @@ impl DeflateConfig { }; let connection_config = DeflateConfig { + compression, server_no_context_takeover, client_no_context_takeover, server_max_window_bits, @@ -432,6 +439,7 @@ impl DeflateConfig { client_no_context_takeover, server_max_window_bits, client_max_window_bits, + compression, } = self; let server_no_context_takeover = @@ -547,6 +555,7 @@ impl DeflateConfig { debug_assert!(SUPPORTED_WINDOW_BITS.contains(&client_max_window_bits)); Ok(Self { + compression, server_no_context_takeover, client_no_context_takeover, server_max_window_bits, diff --git a/src/extensions/compression/deflate/mod.rs b/src/extensions/compression/deflate/mod.rs index c873681..6ea7d67 100644 --- a/src/extensions/compression/deflate/mod.rs +++ b/src/extensions/compression/deflate/mod.rs @@ -2,8 +2,415 @@ //! //! [RFC 7692 Section 7]: https://tools.ietf.org/html/rfc7692#section-7 #![allow(dead_code)] +use std::{io::Write, num::NonZeroU8}; + +use bytes::Bytes; +use flate2::{ + write::{ZlibDecoder, ZlibEncoder}, + Compress, Decompress, +}; +use thiserror::Error; + +use crate::protocol::Role; mod config; pub use config::{ DeflateConfig, NegotiationError as DeflateNegotiationError, PermessageDeflateConfig, }; + +#[derive(Debug)] +/// Manages per message compression using DEFLATE. +pub struct DeflateContext { + compress: DeflateCompress, + decompress: DeflateDecompress, +} + +/// Errors from `permessage-deflate` extension. +#[derive(Debug, Error)] +pub enum DeflateError { + /// Compress failed + #[error("Failed to compress")] + Compress(#[source] std::io::Error), + /// Decompress failed + #[error("Failed to decompress")] + Decompress(#[source] std::io::Error), + + /// Extension negotiation failed. + #[error("Extension negotiation failed")] + Negotiation(#[source] DeflateNegotiationError), +} + +#[derive(Debug)] +struct DeflateCompress { + own_context_takeover: bool, + compressor: ZlibEncoder>, +} + +#[derive(Debug)] +struct DeflateDecompress { + decompressor: ZlibDecoder>, + peer_context_takeover: bool, + peer_window_bits: NonZeroU8, +} + +impl DeflateContext { + fn new(role: Role, config: DeflateConfig) -> Self { + let DeflateConfig { + server_no_context_takeover, + client_no_context_takeover, + compression, + .. + } = config; + + // Per RFC 7692 Section 7: + // + // These parameters enable two methods (no_context_takeover and + // max_window_bits) of constraining memory usage that may be + // applied independently to either direction of WebSocket traffic. + // The extension parameters with the "client_" prefix are used by + // the client to configure its compressor and by the server to + // configure its decompressor. The extension parameters with the + // "server_" prefix are used by the server to configure its + // compressor and by the client to configure its decompressor. All + // four parameters are defined for both a client's extension + // negotiation offer and a server's extension negotiation response. + // + // Here `role` is for our own end of the connection, as opposed to the + // peer end. + let (own_no_context_takeover, peer_no_context_takeover) = match role { + Role::Client => (client_no_context_takeover, server_no_context_takeover), + Role::Server => (server_no_context_takeover, client_no_context_takeover), + }; + + // Both ends of the connection act as both compressor and decompressor. + // We compress with the window size for our role and decompress with the + // size for the opposite role. + let (compressor_window_bits, decompressor_window_bits) = match role { + Role::Client => (config.client_max_window_bits(), config.server_max_window_bits()), + Role::Server => (config.server_max_window_bits(), config.client_max_window_bits()), + }; + + DeflateContext { + compress: DeflateCompress { + own_context_takeover: !own_no_context_takeover, + compressor: ZlibEncoder::new_with_compress( + Vec::new(), + Compress::new_with_window_bits( + compression, + false, + compressor_window_bits.get(), + ), + ), + }, + decompress: DeflateDecompress { + peer_context_takeover: !peer_no_context_takeover, + decompressor: ZlibDecoder::new_with_decompress( + Vec::new(), + Decompress::new_with_window_bits(false, decompressor_window_bits.get()), + ), + peer_window_bits: decompressor_window_bits, + }, + } + } + + /// Compress the payload of an outgoing message. + pub(crate) fn compress(&mut self, data: &[u8]) -> Result { + self.compress.compress(data).map_err(DeflateError::Compress) + } + + /// Decompress the payload in a received frame. + /// + /// The `is_final` argument should only be set when calling with the contents of the last frame in a message. + pub(crate) fn decompress( + &mut self, + data: &[u8], + is_final: bool, + ) -> Result { + self.decompress.decompress(data, is_final).map_err(DeflateError::Decompress) + } +} + +const ELIDED_TRAILER_BLOCK_CONTENTS: &[u8] = &[0x00, 0x00, 0xff, 0xff]; + +impl DeflateCompress { + /// Compress the contents of an entire message. + /// + /// This is asymmetric with [`DeflateDecompress::decompress`] in that it + /// operates on the contents of an entire message, not the comprising frames. + fn compress(&mut self, data: &[u8]) -> Result { + // Make sure the backing buffer doesn't start out empty. This isn't + // necessary for correctness. + self.compressor.get_mut().reserve(data.len()); + + // Per RFC 7692 Section 7.2.1: + // + // An endpoint uses the following algorithm to compress a message. + // + // 1. Compress all the octets of the payload of the message using + // DEFLATE. + // + + self.compressor.write_all(data)?; + self.compressor.flush()?; + + // 2. If the resulting data does not end with an empty DEFLATE + // block with no compression (the "BTYPE" bits are set to 00), + // append an empty DEFLATE block with no compression to the tail + // end. + if !self.compressor.get_ref().ends_with(ELIDED_TRAILER_BLOCK_CONTENTS) { + self.compressor.flush()?; + } + + // 3. Remove 4 octets (that are 0x00 0x00 0xff 0xff) from the tail + // end. After this step, the last octet of the compressed data + // contains (possibly part of) the DEFLATE header bits with the + // "BTYPE" bits set to 00. + + let mut output = std::mem::take(self.compressor.get_mut()); + debug_assert!(output.ends_with(ELIDED_TRAILER_BLOCK_CONTENTS), "output is {output:02x?}"); + output.truncate(output.len() - ELIDED_TRAILER_BLOCK_CONTENTS.len()); + + if !self.own_context_takeover { + // Reset if the next frame isn't supposed to be starting with the + // same compression window. + self.compressor.reset(Vec::new())?; + } + + Ok(Bytes::from(output)) + } +} + +impl DeflateDecompress { + /// Decompress the contents of a single frame. + /// + /// The `is_final` argument must be `true` if and only if the frame is the + /// last one in a message. + fn decompress(&mut self, data: &[u8], is_final: bool) -> Result { + // From RFC 7692 Section 7.2.2: + // + // An endpoint uses the following algorithm to decompress a message. + // + // 1. Append 4 octets of 0x00 0x00 0xff 0xff to the tail end of the + // payload of the message. + // + // 2. Decompress the resulting data using DEFLATE. + + self.decompressor.get_mut().reserve( + // Optimistically assume a 50% compression ratio of the input. + 2 * data.len(), + ); + + // Decompress the input received over the wire. That might not be all of + // the logical input to DEFLATE so don't try to sync. + self.decompressor.write_all(data)?; + + let mut output = None; + if is_final { + // Decompress the final block that is part of the logical input to + // DEFLATE but is elided from the message payloads. + self.decompressor.write_all(ELIDED_TRAILER_BLOCK_CONTENTS)?; + self.decompressor.flush()?; + + if !self.peer_context_takeover { + // This wholesale replacement shouldn't be needed but + // `ZlibDecoder::finish` assumes that the new input will have a + // zlib header, which isn't the case here, and doesn't have a + // way to override it. + let decompressor = std::mem::replace( + &mut self.decompressor, + ZlibDecoder::new_with_decompress( + Vec::new(), + Decompress::new_with_window_bits(false, self.peer_window_bits.get()), + ), + ); + output = Some(decompressor.finish()?); + } + } + let output = output.unwrap_or_else(|| std::mem::take(self.decompressor.get_mut())); + + Ok(Bytes::from(output)) + } +} + +#[cfg(test)] +mod test { + use rand::{RngCore, SeedableRng as _}; + + use super::*; + + #[test] + fn interop() { + let mut data = vec![0; 2048]; + rand::rngs::SmallRng::seed_from_u64(1023).fill_bytes(&mut data); + + let configs = [ + DeflateConfig::default(), + DeflateConfig::default().set_no_context_takeover(Role::Client, true), + DeflateConfig::default() + .set_no_context_takeover(Role::Client, true) + .set_max_window_bits(Role::Client, 10) + .unwrap(), + DeflateConfig::default().set_max_window_bits(Role::Client, 10).unwrap(), + ]; + + let frame_sizes = [16, 64, data.len()]; + + for config in configs { + for frame_size in frame_sizes { + let mut client = DeflateContext::new(Role::Client, config); + let mut server = DeflateContext::new(Role::Server, config); + + let mut send_and_receive = |data| { + let compressed = client.compress(data).unwrap(); + + let mut decompressed = Vec::::new(); + + let mut it = compressed.chunks(frame_size).peekable(); + while let Some(frame) = it.next() { + decompressed.extend_from_slice( + &server.decompress(frame, it.peek().is_none()).unwrap(), + ); + } + decompressed + }; + + let decompressed = send_and_receive(&data); + assert_eq!(data, decompressed); + + // Make sure we haven't broken compression or decompression for + // the *next* message. + let decompressed = send_and_receive(b"second message"); + assert_eq!(decompressed, b"second message"); + } + } + } + + #[test] + fn large_message_compression() { + let mut data = vec![0; 1 << 19]; + rand::rngs::SmallRng::seed_from_u64(1023).fill_bytes(&mut data); + + let mut context = DeflateContext::new(Role::Client, DeflateConfig::default()); + + let compressed = context.compress(&data).unwrap(); + + assert_eq!(&context.decompress(&compressed, true).unwrap(), &data); + } + + mod rfc_7692_section_7_2_3_examples { + use super::*; + + #[test] + fn one_block() { + // From RFC 7692 Section 7.2.3.1: + // + // Suppose that an endpoint sends a text message "Hello". If the + // endpoint uses one compressed DEFLATE block (compressed with fixed + // Huffman code and the "BFINAL" bit not set) to compress the message, + // the endpoint obtains the compressed data to use for the message + // payload as follows. + // + // The endpoint compresses "Hello" into one compressed DEFLATE block and + // flushes the resulting data into a byte array using an empty DEFLATE + // block with no compression: + // + // 0xf2 0x48 0xcd 0xc9 0xc9 0x07 0x00 0x00 0x00 0xff 0xff + // + // By stripping 0x00 0x00 0xff 0xff from the tail end, the endpoint gets + // the data to use for the message payload: + // + const EXPECTED_COMPRESSED_PAYLOAD: &[u8] = &[0xf2, 0x48, 0xcd, 0xc9, 0xc9, 0x07, 0x00]; + + let mut context = DeflateContext::new(Role::Server, DeflateConfig::default()); + let compressed = context.compress(b"Hello").unwrap(); + assert_eq!(&compressed[..], EXPECTED_COMPRESSED_PAYLOAD); + // + // ... + // + // Suppose that the endpoint sends the compressed message with + // fragmentation. The endpoint splits the compressed data into + // fragments and builds frames for each fragment. For example, if the + // fragments are 3 and 4 octets, + // + const FRAGMENTED_FRAMES: &[&[u8]] = &[ + // the first frame is: + &[0x41, 0x03, 0xf2, 0x48, 0xcd], + // and the second frame is: + &[0x80, 0x04, 0xc9, 0xc9, 0x07, 0x00], + ]; + // + // Note that the RSV1 bit is set only on the first frame. + + let frame_payloads = + FRAGMENTED_FRAMES.iter().map(|frame| &frame[2..]).collect::>(); + + let decompressed = frame_payloads + .iter() + .enumerate() + .map(|(index, payload)| { + context.decompress(payload, index == frame_payloads.len() - 1) + }) + .collect::, _>>() + .unwrap() + .concat(); + + assert_eq!(decompressed, b"Hello"); + } + + #[test] + fn sharing_sliding_window() { + const ROLE: Role = Role::Client; + + // From RFC 7692 Section 7.2.3.2: + // + // Suppose that a client has sent a message "Hello" as a compressed + // message and will send the same message "Hello" again as a compressed + // message. + // + const FIRST_PAYLOAD: &[u8] = &[0xf2, 0x48, 0xcd, 0xc9, 0xc9, 0x07, 0x00]; + // + // The above is the payload of the first message that the client has + // sent. If the "agreed parameters" contain the + // "client_no_context_takeover" extension parameter, the client + // compresses the payload of the next message into the same bytes (if + // the client uses the same "BTYPE" value and "BFINAL" value). So, the + // payload of the second message will be: + // + const SECOND_PAYLOAD: &[u8] = &[0xf2, 0x48, 0xcd, 0xc9, 0xc9, 0x07, 0x00]; + + let mut context = DeflateContext::new( + ROLE, + DeflateConfig::default().set_no_context_takeover(ROLE, true), + ); + assert_eq!(&context.compress(b"Hello").unwrap()[..], FIRST_PAYLOAD); + assert_eq!(&context.compress(b"Hello").unwrap()[..], SECOND_PAYLOAD); + + // + // If the "agreed parameters" did not contain the + // "client_no_context_takeover" extension parameter, the client can + // compress the payload of the next message into fewer bytes by + // referencing the history in the LZ77 sliding window. So, the payload + // of the second message will be: + // + const NEW_SECOND_PAYLOAD: &[u8] = &[0xf2, 0x00, 0x11, 0x00, 0x00]; + + let mut context = DeflateContext::new(ROLE, DeflateConfig::default()); + assert_eq!(&context.compress(b"Hello").unwrap()[..], FIRST_PAYLOAD); + assert_eq!(&context.compress(b"Hello").unwrap()[..], NEW_SECOND_PAYLOAD); + } + + #[test] + fn two_deflate_blocks() { + // From RFC 7692 Section 7.2.3.5: + // + // Two or more DEFLATE blocks may be used in one message. + + const TWO_BLOCKS: &[u8] = + &[0xf2, 0x48, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xca, 0xc9, 0xc9, 0x07, 0x00]; + + let mut context = DeflateContext::new(Role::Client, DeflateConfig::new()); + + assert_eq!(&context.decompress(TWO_BLOCKS, true).unwrap()[..], b"Hello"); + } + } +} From de8e2b15ff18e7ed04ffd4bcf56f683cd96b1306 Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Tue, 26 Aug 2025 12:42:52 -0400 Subject: [PATCH 06/12] Refactor DeflateError so it can be Clonable This will let us include it in the ProtocolError hierarchy. --- src/extensions/compression/deflate/mod.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/extensions/compression/deflate/mod.rs b/src/extensions/compression/deflate/mod.rs index 6ea7d67..71678e6 100644 --- a/src/extensions/compression/deflate/mod.rs +++ b/src/extensions/compression/deflate/mod.rs @@ -26,18 +26,14 @@ pub struct DeflateContext { } /// Errors from `permessage-deflate` extension. -#[derive(Debug, Error)] +#[derive(Copy, Clone, Debug, Error, PartialEq, Eq)] pub enum DeflateError { /// Compress failed #[error("Failed to compress")] - Compress(#[source] std::io::Error), + Compress, /// Decompress failed #[error("Failed to decompress")] - Decompress(#[source] std::io::Error), - - /// Extension negotiation failed. - #[error("Extension negotiation failed")] - Negotiation(#[source] DeflateNegotiationError), + Decompress, } #[derive(Debug)] @@ -115,7 +111,10 @@ impl DeflateContext { /// Compress the payload of an outgoing message. pub(crate) fn compress(&mut self, data: &[u8]) -> Result { - self.compress.compress(data).map_err(DeflateError::Compress) + self.compress.compress(data).map_err(|e| { + log::debug!("compression failed: {e}"); + DeflateError::Compress + }) } /// Decompress the payload in a received frame. @@ -126,7 +125,10 @@ impl DeflateContext { data: &[u8], is_final: bool, ) -> Result { - self.decompress.decompress(data, is_final).map_err(DeflateError::Decompress) + self.decompress.decompress(data, is_final).map_err(|e| { + log::debug!("decompression failed: {e}"); + DeflateError::Decompress + }) } } From ed9357b7ca8d1d7aa76198609f4206c59ba5dbf9 Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Mon, 25 Aug 2025 14:05:37 -0400 Subject: [PATCH 07/12] Add Extensions and PerMessageCompressionContext Add types representing the configuration for, and then actual in-use subset of, websocket protocol extensions for a connection. Currently only permessage-deflate is supported, but having an enum is zero-cost when it has only zero or one variants, and an empty struct takes up no space. This also lets us reduce the amount of code that needs to be annotated with `#[cfg(feature = "deflate")]` since calling code can always assume that the PerMessageCompressionContext type exists even if its method impls are sometimes no-ops. Based on work by Benjamin Swart --- Cargo.toml | 2 +- src/extensions/compression/deflate/config.rs | 18 +- src/extensions/compression/deflate/mod.rs | 12 +- src/extensions/compression/mod.rs | 57 +++ src/extensions/mod.rs | 415 ++++++++++++++++++- src/protocol/mod.rs | 7 + 6 files changed, 504 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 340c48a..e5b03ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ all-features = true [features] default = ["handshake"] -handshake = ["data-encoding", "http", "httparse", "sha1"] +handshake = ["data-encoding", "headers", "httparse", "sha1"] headers = ["http", "dep:headers"] url = ["dep:url"] native-tls = ["native-tls-crate"] diff --git a/src/extensions/compression/deflate/config.rs b/src/extensions/compression/deflate/config.rs index 6948830..b94008d 100644 --- a/src/extensions/compression/deflate/config.rs +++ b/src/extensions/compression/deflate/config.rs @@ -10,7 +10,7 @@ use crate::protocol::Role; /// Name of the extension as it appears in the Sec-WebSocket-Extensions header. /// /// Defined by [RFC 7692 Section 7](https://tools.ietf.org/html/rfc7692#section-7) -const PER_MESSAGE_DEFLATE: &str = "permessage-deflate"; +pub const PER_MESSAGE_DEFLATE: &str = "permessage-deflate"; /// Extension option that determines whether the server should use the LZ77 /// sliding window from a sent frame for the subsequent frame. @@ -74,7 +74,7 @@ pub enum NegotiationError { /// directive. #[derive(Debug, Error)] #[cfg_attr(test, derive(PartialEq))] -pub enum ParameterError { +pub(crate) enum ParameterError { /// Unknown parameter in a negotiation response. #[error("Unknown parameter in a negotiation response: {0}")] UnknownParameter(String), @@ -599,7 +599,7 @@ impl PermessageDeflateConfig { } /// Parses the extension parameter list for a `Sec-WebSocket-Extensions` header. - fn parse_params<'p>( + pub(crate) fn parse_params<'p>( params: impl IntoIterator, ) -> Result { let mut this = Self { @@ -701,6 +701,18 @@ impl Default for DeflateConfig { } } +impl From<&PermessageDeflateConfig> for WebsocketProtocolExtension { + fn from(value: &PermessageDeflateConfig) -> Self { + value.as_extension() + } +} + +impl From for WebsocketProtocolExtension { + fn from(value: PermessageDeflateConfig) -> Self { + value.as_extension() + } +} + #[derive(Copy, Clone)] enum ParamName { NoContextTakeover(Role), diff --git a/src/extensions/compression/deflate/mod.rs b/src/extensions/compression/deflate/mod.rs index 71678e6..8f864e8 100644 --- a/src/extensions/compression/deflate/mod.rs +++ b/src/extensions/compression/deflate/mod.rs @@ -1,7 +1,6 @@ //! Implements "permessage-deflate" PMCE defined in [RFC 7692 Section 7] //! //! [RFC 7692 Section 7]: https://tools.ietf.org/html/rfc7692#section-7 -#![allow(dead_code)] use std::{io::Write, num::NonZeroU8}; use bytes::Bytes; @@ -14,8 +13,11 @@ use thiserror::Error; use crate::protocol::Role; mod config; +#[cfg_attr(not(feature = "handshake"), allow(unused_imports))] +pub(crate) use config::ParameterError as DeflateParameterError; pub use config::{ DeflateConfig, NegotiationError as DeflateNegotiationError, PermessageDeflateConfig, + PER_MESSAGE_DEFLATE as EXTENSION_NAME, }; #[derive(Debug)] @@ -50,7 +52,7 @@ struct DeflateDecompress { } impl DeflateContext { - fn new(role: Role, config: DeflateConfig) -> Self { + pub(crate) fn new(role: Role, config: DeflateConfig) -> Self { let DeflateConfig { server_no_context_takeover, client_no_context_takeover, @@ -234,6 +236,12 @@ impl DeflateDecompress { } } +impl From for super::PerMessageCompressionContext { + fn from(value: DeflateContext) -> Self { + Self::Deflate(value) + } +} + #[cfg(test)] mod test { use rand::{RngCore, SeedableRng as _}; diff --git a/src/extensions/compression/mod.rs b/src/extensions/compression/mod.rs index 0780d3c..69053f0 100644 --- a/src/extensions/compression/mod.rs +++ b/src/extensions/compression/mod.rs @@ -2,5 +2,62 @@ //! //! [rfc7692]: https://tools.ietf.org/html/rfc7692 +use bytes::Bytes; +use thiserror::Error; + #[cfg(feature = "deflate")] pub mod deflate; + +/// Active context for performing per-message compression. +#[derive(Debug)] +#[cfg_attr(not(feature = "deflate"), allow(missing_copy_implementations))] // This is only trivially copyable if compression is disabled. +pub enum PerMessageCompressionContext { + /// Context for compressing/decompressing with `permessage-deflate`. + #[cfg(feature = "deflate")] + Deflate(deflate::DeflateContext), +} + +/// Error encountered while compressing or decompressing. +#[derive(Copy, Clone, Debug, Error, PartialEq, Eq)] +pub enum CompressionError { + /// Error encountered while deflating or inflating + #[error("Deflate error: {0}")] + #[cfg(feature = "deflate")] + Deflate(deflate::DeflateError), +} + +impl PerMessageCompressionContext { + #[inline] + pub(crate) fn compressor<'s>( + &'s mut self, + ) -> impl FnMut(&Bytes) -> Result + 's { + move |payload: &Bytes| match self { + #[cfg(feature = "deflate")] + Self::Deflate(deflate_config) => { + deflate_config.compress(payload).map_err(CompressionError::Deflate) + } + #[cfg(not(feature = "deflate"))] + _ => { + let _ = payload; + unreachable!("*PerMessageCompressionContext is uninhabited") + } + } + } + + #[inline] + pub(crate) fn decompressor<'s>( + &'s mut self, + ) -> impl FnMut(&Bytes, bool) -> Result + 's { + move |payload, is_final| match self { + #[cfg(feature = "deflate")] + Self::Deflate(deflate_config) => { + deflate_config.decompress(payload, is_final).map_err(CompressionError::Deflate) + } + #[cfg(not(feature = "deflate"))] + _ => { + let _ = (payload, is_final); + unreachable!("*PerMessageCompressionContext is uninhabited") + } + } + } +} diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs index c319251..5d4e249 100644 --- a/src/extensions/mod.rs +++ b/src/extensions/mod.rs @@ -1,7 +1,420 @@ //! WebSocket extensions. // Only `permessage-deflate` is supported at the moment. +#![allow(dead_code)] + +use bytes::Bytes; +use thiserror::Error; + +use crate::extensions::compression::{CompressionError, PerMessageCompressionContext}; +#[cfg(feature = "handshake")] +use crate::extensions::headers::{SecWebsocketExtensions, WebsocketProtocolExtension}; +use crate::protocol::Role; pub mod compression; - #[cfg(feature = "headers")] pub(crate) mod headers; + +/// Container for configured extensions for a connection. +#[derive(Debug, Default)] +#[allow(missing_copy_implementations)] +pub struct Extensions { + /// The Per-Message Compression extension configured for the connection, if + /// any. + per_message_compression: Option, +} + +/// Configuration for extensions for a connection. +#[derive(Copy, Clone, Default, Debug)] +#[non_exhaustive] +pub struct ExtensionsConfig { + /// Configuration for the `permessage-deflate` PMCE as specified by [RFC 7692]. + /// + /// [RFC 7692]: https://tools.ietf.org/html/rfc7692 + #[cfg(feature = "deflate")] + pub permessage_deflate: Option, +} + +/// Error encountered while handling extensions. +#[derive(Debug, Error, PartialEq, Eq, Clone)] +pub enum ExtensionsError { + /// The header included an invalid extension. + #[error("Extension header had invalid extension: {0}")] + InvalidExtension(Box), + /// The negotiation response included an extension more than once. + #[error("Extension negotiation response had conflicting extension: {0}")] + ExtensionConflict(Box), + /// The header included an unparsable extension. + #[error("Extension negotiation response had malformed extension: {0}")] + MalformedExtension(&'static str), +} + +#[cfg(feature = "handshake")] +impl ExtensionsConfig { + pub(crate) fn generate_offers(&self) -> impl Iterator { + let Self { + #[cfg(feature = "deflate")] + permessage_deflate, + } = self; + + #[allow(unused_mut, unused_assignments)] + let mut permessage_compression_offer = None; + + #[cfg(feature = "deflate")] + { + permessage_compression_offer = permessage_deflate.as_ref().map(|p| p.as_offer().into()); + } + + permessage_compression_offer.into_iter() + } + + /// Checks that the given extensions are compatible with the given config + /// (if any). + /// + /// Receives a [`SecWebsocketExtensions`] header in a handshake response and + /// evaluates it against the given local configuration. Returns a new + /// `Extensions` that can be used for the connection for the completed + /// handshake. + pub(crate) fn verify_agreed_on( + &self, + agreed: SecWebsocketExtensions, + ) -> Result { + #[cfg_attr(not(feature = "deflate"), allow(unused_mut))] + let mut per_message_compression = None; + + for extension in agreed.iter() { + match extension.name() { + #[cfg(feature = "deflate")] + compression::deflate::EXTENSION_NAME => { + use compression::deflate::{ + DeflateContext, DeflateParameterError, PermessageDeflateConfig, + EXTENSION_NAME, + }; + + // Already had PMCE configured + if per_message_compression.is_some() { + return Err(ExtensionsError::ExtensionConflict(EXTENSION_NAME.into())); + } + + let deflate = self + .permessage_deflate + .ok_or_else(|| ExtensionsError::InvalidExtension(EXTENSION_NAME.into()))?; + + let extension: PermessageDeflateConfig = PermessageDeflateConfig::parse_params( + extension.params(), + ) + .map_err(|_: DeflateParameterError| { + ExtensionsError::MalformedExtension(EXTENSION_NAME) + })?; + + let deflate_config = deflate.accept_response(extension).map_err(|e| { + ExtensionsError::InvalidExtension(format!("{EXTENSION_NAME}: {e}").into()) + })?; + + per_message_compression = + Some(DeflateContext::new(Role::Client, deflate_config).into()); + } + name => return Err(ExtensionsError::InvalidExtension(name.into())), + } + } + + Ok(Extensions { per_message_compression }) + } + + /// Checks whether the given extension headers are compatible with the given + /// config (if any). + /// + /// Recieves a [`SecWebsocketExtensions`] header in a handshake request and + /// evaluates it against the given local configuration. Returns a + /// `SecWebsocketExtensions` header to be sent in the handshake response to + /// the client, and a `Extensions` value to be used for the connection, once + /// it is established. + pub(crate) fn accept_offers( + &self, + extensions: &SecWebsocketExtensions, + ) -> Result<(Extensions, Option), ExtensionsError> { + #[cfg_attr(not(feature = "deflate"), allow(unused_mut))] + let mut per_message_compression = None; + + for extension in extensions.iter() { + // Only one extension is currently supported. If that changes, + // this will need to be updated to apply the extensions in the correct order. + match extension.name() { + #[cfg(feature = "deflate")] + compression::deflate::EXTENSION_NAME => { + use compression::deflate::{ + DeflateContext, PermessageDeflateConfig, EXTENSION_NAME, + }; + + let deflate = match self.permessage_deflate { + Some(deflate) => deflate, + None => continue, + }; + + let extension = match PermessageDeflateConfig::parse_params(extension.params()) + { + Ok(extension) => extension, + Err(e) => { + // Per RFC 7692 Section 7: + // + // A server MUST decline an extension negotiation + // offer for this extension if any of the following + // conditions are met: + // + // o The negotiation offer contains an extension + // parameter not defined for use in an offer. + // + // Declining instead of rejecting the request + // outright allows clients that conform to a + // (currently hypothetical) RFC that supersedes RFC + // 7692 to fall back to requesting to the behavior + // specified in the latter. + log::debug!("{EXTENSION_NAME} extension: {e}"); + continue; + } + }; + // Per RFC 7692 Section 5: + // + // A client may also offer multiple PMCE choices to the server + // by including multiple elements in the + // "Sec-WebSocket-Extensions" header, one for each PMCE + // offered. This set of elements MAY include multiple PMCEs + // with the same extension name to offer the possibility to + // use the same algorithm with different configuration + // parameters. The order of elements is important as it + // specifies the client's preference. An element preceding + // another element has higher preference. It is recommended + // that a server accepts PMCEs with higher preference if the + // server supports them. + // + // Follow the RFC recommendation by not overwriting a PMCE that + // is already configured. + if per_message_compression.is_some() { + continue; + } + + if let Some((config, response)) = deflate.accept_offer(extension) { + per_message_compression = Some(( + DeflateContext::new(Role::Server, config).into(), + response.into(), + )); + } + } + // Ignore any unknown extensions in the offer. + _ => {} + } + } + + let (per_message_compression, response) = match per_message_compression { + Some((a, b)) => (Some(a), Some(b)), + None => (None, None), + }; + + Ok(( + Extensions { per_message_compression }, + response.map(|response| SecWebsocketExtensions::new(std::iter::once(response))), + )) + } +} + +impl ExtensionsConfig { + /// Bypasses negotiation of extension parameters and enables those that have + /// been configured. + /// + /// Returns an [`Extensions`] that has all the extensions enabled that this + /// [`ExtensionsConfig`] was configured with. + pub(crate) fn into_unnegotiated_context(self, role: Role) -> Extensions { + // This can only be infallible while only one per-message compression + // extension is supported. If more are added there will need to be some + // resolution strategy for picking which one takes precedence. + let Self { + #[cfg(feature = "deflate")] + permessage_deflate, + } = self; + + #[cfg_attr(feature = "deflate", allow(unused_assignments))] + #[cfg_attr(not(feature = "deflate"), allow(unused_mut))] + let mut per_message_compression = None; + #[cfg(feature = "deflate")] + { + per_message_compression = permessage_deflate + .map(|deflate| compression::deflate::DeflateContext::new(role, deflate).into()); + } + let _ = role; + + Extensions { per_message_compression } + } +} + +impl Extensions { + /// Returns a function that, if present, compresses a message payload. + /// + /// The returned value will only be `Some` if a per-message compression + /// extension, as specified by [RFC 7692], was configured for the connection + /// state to which this `Extensions` applies. + /// + /// [RFC 7692]: https://tools.ietf.org/html/rfc7692 + #[inline] + pub(crate) fn per_message_compressor<'s>( + &'s mut self, + ) -> Option Result + 's> { + let Self { per_message_compression } = self; + + per_message_compression.as_mut().map(PerMessageCompressionContext::compressor) + } + + /// Returns a function that, if present, decompresses a frame payload. + /// + /// The returned value will only be `Some` if a per-message compression + /// extension, as specified by [RFC 7692], was configured for the connection + /// state to which this `Extensions` applies. The closure takes as arguments + /// the frame payload, in bytes, and `true` if the frame is the final one + /// for a message, otherwise false. + /// + /// [RFC 7692]: https://tools.ietf.org/html/rfc7692 + #[inline] + pub(crate) fn per_message_decompressor<'s>( + &'s mut self, + ) -> Option Result + 's> { + let Self { per_message_compression } = self; + per_message_compression.as_mut().map(PerMessageCompressionContext::decompressor) + } +} + +#[cfg(feature = "handshake")] +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn accept_offers_ignores_unknown_extensions() { + let (Extensions { per_message_compression }, response) = ExtensionsConfig::default() + .accept_offers(&SecWebsocketExtensions::new([ + "unknown-1".parse().unwrap(), + "other-unknown; a=5; b=3".parse().unwrap(), + ])) + .unwrap(); + + assert!(matches!(per_message_compression, None)); + assert_eq!(response, None); + } + + #[test] + fn accept_offers_with_deflate_disabled() { + let extensions = ExtensionsConfig::default(); + + // With or without #[cfg(feature = "deflate")], the extension should be ignored. + let (Extensions { per_message_compression }, response) = + extensions.accept_offers(&SecWebsocketExtensions::new([])).unwrap(); + + assert!(matches!(per_message_compression, None)); + assert_eq!(response, None); + } + + #[cfg(feature = "deflate")] + #[test] + fn accept_offers_with_deflate_enabled() { + let extensions = ExtensionsConfig { permessage_deflate: Some(Default::default()) }; + + { + // If the client doesn't offer permessage-deflate support, the response + // shouldn't include it. + let (Extensions { per_message_compression }, response) = + extensions.accept_offers(&SecWebsocketExtensions::new([])).unwrap(); + assert!(matches!(per_message_compression, None)); + assert_eq!(response, None); + } + + { + // If the client does offer support, the response should include it. + let (Extensions { per_message_compression }, response) = extensions + .accept_offers(&SecWebsocketExtensions::new([ + WebsocketProtocolExtension::new(compression::deflate::EXTENSION_NAME, []), + WebsocketProtocolExtension::new("some-other-extension", []), + ])) + .unwrap(); + + assert!(matches!(per_message_compression, Some(_))); + assert_eq!( + response, + Some(SecWebsocketExtensions::new([WebsocketProtocolExtension::new( + compression::deflate::EXTENSION_NAME, + [] + )])) + ); + } + } + + #[cfg(feature = "deflate")] + #[test] + fn accept_offers_picks_first_acceptable_offer() { + use compression::deflate::*; + let extensions = ExtensionsConfig { + permessage_deflate: Some( + DeflateConfig::new().set_max_window_bits(Role::Client, 11).unwrap(), + ), + }; + + let (Extensions { per_message_compression }, response) = extensions + .accept_offers(&SecWebsocketExtensions::new([ + // These two offers are declined because they doesn't indicate + // support for client_max_window_bits, which the server is + // configured to require. + "permessage-deflate".parse().unwrap(), + "permessage-deflate; server_max_window_bits=12".parse().unwrap(), + // This offer would be acceptable but it has a parameter that the server doesn't recognize. + "permessage-deflate; client_max_window_bits=11; parameter-from-the-future=3" + .parse() + .unwrap(), + // This offer is accepted. + "permessage-deflate; client_no_context_takeover; client_max_window_bits=11" + .parse() + .unwrap(), + // This offer is ignored since an earlier one was accepted. + "permessage-deflate; client_max_window_bits=10".parse().unwrap(), + ])) + .unwrap(); + + assert!(matches!(per_message_compression, Some(PerMessageCompressionContext::Deflate(_)))); + assert_eq!( + response, + Some(SecWebsocketExtensions::new([DeflateConfig::new() + .set_no_context_takeover(Role::Client, true) + .set_max_window_bits(Role::Client, 11) + .unwrap() + .as_offer() + .into()])) + ) + } + + #[cfg(feature = "deflate")] + #[test] + fn verify_agreed_on_deflate_then_garbage() { + let extensions = ExtensionsConfig { permessage_deflate: Some(Default::default()) }; + + let result = extensions.verify_agreed_on(SecWebsocketExtensions::new([ + WebsocketProtocolExtension::new(compression::deflate::EXTENSION_NAME, []), + WebsocketProtocolExtension::new("unrecognized", []), + ])); + + assert_eq!(result.unwrap_err(), ExtensionsError::InvalidExtension("unrecognized".into())); + } + + #[cfg(feature = "deflate")] + #[test] + fn verify_agreed_on_deflate_multiple_times() { + let extensions = ExtensionsConfig { permessage_deflate: Some(Default::default()) }; + + let result = extensions.verify_agreed_on(SecWebsocketExtensions::new([ + WebsocketProtocolExtension::new(compression::deflate::EXTENSION_NAME, []), + WebsocketProtocolExtension::new( + compression::deflate::EXTENSION_NAME, + ["client_no_context_takeover".parse().unwrap()], + ), + ])); + + assert_eq!( + result.unwrap_err(), + ExtensionsError::ExtensionConflict(compression::deflate::EXTENSION_NAME.into()) + ); + } +} diff --git a/src/protocol/mod.rs b/src/protocol/mod.rs index 6d4c98f..bfbfea3 100644 --- a/src/protocol/mod.rs +++ b/src/protocol/mod.rs @@ -15,6 +15,7 @@ use self::{ }; use crate::{ error::{CapacityError, Error, ProtocolError, Result}, + extensions::ExtensionsConfig, protocol::frame::Utf8Bytes, }; use log::*; @@ -90,6 +91,11 @@ pub struct WebSocketConfig { /// some popular libraries that are sending unmasked frames, ignoring the RFC. /// By default this option is set to `false`, i.e. according to RFC 6455. pub accept_unmasked_frames: bool, + /// Configuration for optional extensions to the base websocket protocol. + /// + /// Some extensions may require optional features to be enabled at build + /// time to be supported. + pub extensions: ExtensionsConfig, } impl Default for WebSocketConfig { @@ -101,6 +107,7 @@ impl Default for WebSocketConfig { max_message_size: Some(64 << 20), max_frame_size: Some(16 << 20), accept_unmasked_frames: false, + extensions: ExtensionsConfig::default(), } } } From 8a7ef29ef7c58661efe9518aebbd1d632dd83916 Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Wed, 27 Aug 2025 11:31:51 -0400 Subject: [PATCH 08/12] Wire up permessage-deflate to protocol handling Make the necessary changes to the websocket protocol implementation to use the PMCE compressor and decompressor when the connection has one enabled. This doesn't wire up the negotiation during handshaking, just enables usage for an already-established connection. Based on work by Benjamin Swart --- autobahn/client/index.html | 5923 +++++++++++++++++ autobahn/client/index.json | 3623 ++++++++++ autobahn/client/tungstenite_case_10_1_1.html | 510 ++ autobahn/client/tungstenite_case_10_1_1.json | 1287 ++++ autobahn/client/tungstenite_case_12_1_1.html | 324 + autobahn/client/tungstenite_case_12_1_1.json | 171 + autobahn/client/tungstenite_case_12_1_10.html | 586 ++ autobahn/client/tungstenite_case_12_1_10.json | 433 ++ autobahn/client/tungstenite_case_12_1_11.html | 662 ++ autobahn/client/tungstenite_case_12_1_11.json | 509 ++ autobahn/client/tungstenite_case_12_1_12.html | 818 +++ autobahn/client/tungstenite_case_12_1_12.json | 665 ++ autobahn/client/tungstenite_case_12_1_13.html | 900 +++ autobahn/client/tungstenite_case_12_1_13.json | 747 +++ autobahn/client/tungstenite_case_12_1_14.html | 540 ++ autobahn/client/tungstenite_case_12_1_14.json | 387 ++ autobahn/client/tungstenite_case_12_1_15.html | 587 ++ autobahn/client/tungstenite_case_12_1_15.json | 434 ++ autobahn/client/tungstenite_case_12_1_16.html | 588 ++ autobahn/client/tungstenite_case_12_1_16.json | 435 ++ autobahn/client/tungstenite_case_12_1_17.html | 588 ++ autobahn/client/tungstenite_case_12_1_17.json | 435 ++ autobahn/client/tungstenite_case_12_1_18.html | 586 ++ autobahn/client/tungstenite_case_12_1_18.json | 433 ++ autobahn/client/tungstenite_case_12_1_2.html | 328 + autobahn/client/tungstenite_case_12_1_2.json | 175 + autobahn/client/tungstenite_case_12_1_3.html | 358 + autobahn/client/tungstenite_case_12_1_3.json | 205 + autobahn/client/tungstenite_case_12_1_4.html | 426 ++ autobahn/client/tungstenite_case_12_1_4.json | 273 + autobahn/client/tungstenite_case_12_1_5.html | 538 ++ autobahn/client/tungstenite_case_12_1_5.json | 385 ++ autobahn/client/tungstenite_case_12_1_6.html | 660 ++ autobahn/client/tungstenite_case_12_1_6.json | 507 ++ autobahn/client/tungstenite_case_12_1_7.html | 856 +++ autobahn/client/tungstenite_case_12_1_7.json | 703 ++ autobahn/client/tungstenite_case_12_1_8.html | 1018 +++ autobahn/client/tungstenite_case_12_1_8.json | 865 +++ autobahn/client/tungstenite_case_12_1_9.html | 540 ++ autobahn/client/tungstenite_case_12_1_9.json | 387 ++ autobahn/client/tungstenite_case_12_2_1.html | 324 + autobahn/client/tungstenite_case_12_2_1.json | 171 + autobahn/client/tungstenite_case_12_2_10.html | 1931 ++++++ autobahn/client/tungstenite_case_12_2_10.json | 1778 +++++ autobahn/client/tungstenite_case_12_2_11.html | 1006 +++ autobahn/client/tungstenite_case_12_2_11.json | 853 +++ autobahn/client/tungstenite_case_12_2_12.html | 1143 ++++ autobahn/client/tungstenite_case_12_2_12.json | 990 +++ autobahn/client/tungstenite_case_12_2_13.html | 1251 ++++ autobahn/client/tungstenite_case_12_2_13.json | 1098 +++ autobahn/client/tungstenite_case_12_2_14.html | 1286 ++++ autobahn/client/tungstenite_case_12_2_14.json | 1133 ++++ autobahn/client/tungstenite_case_12_2_15.html | 1376 ++++ autobahn/client/tungstenite_case_12_2_15.json | 1223 ++++ autobahn/client/tungstenite_case_12_2_16.html | 1719 +++++ autobahn/client/tungstenite_case_12_2_16.json | 1566 +++++ autobahn/client/tungstenite_case_12_2_17.html | 1907 ++++++ autobahn/client/tungstenite_case_12_2_17.json | 1754 +++++ autobahn/client/tungstenite_case_12_2_18.html | 1933 ++++++ autobahn/client/tungstenite_case_12_2_18.json | 1780 +++++ autobahn/client/tungstenite_case_12_2_2.html | 344 + autobahn/client/tungstenite_case_12_2_2.json | 191 + autobahn/client/tungstenite_case_12_2_3.html | 410 ++ autobahn/client/tungstenite_case_12_2_3.json | 257 + autobahn/client/tungstenite_case_12_2_4.html | 596 ++ autobahn/client/tungstenite_case_12_2_4.json | 443 ++ autobahn/client/tungstenite_case_12_2_5.html | 970 +++ autobahn/client/tungstenite_case_12_2_5.json | 817 +++ autobahn/client/tungstenite_case_12_2_6.html | 1224 ++++ autobahn/client/tungstenite_case_12_2_6.json | 1071 +++ autobahn/client/tungstenite_case_12_2_7.html | 1488 +++++ autobahn/client/tungstenite_case_12_2_7.json | 1335 ++++ autobahn/client/tungstenite_case_12_2_8.html | 1701 +++++ autobahn/client/tungstenite_case_12_2_8.json | 1548 +++++ autobahn/client/tungstenite_case_12_2_9.html | 1771 +++++ autobahn/client/tungstenite_case_12_2_9.json | 1618 +++++ autobahn/client/tungstenite_case_12_3_1.html | 328 + autobahn/client/tungstenite_case_12_3_1.json | 175 + autobahn/client/tungstenite_case_12_3_10.html | 1731 +++++ autobahn/client/tungstenite_case_12_3_10.json | 1578 +++++ autobahn/client/tungstenite_case_12_3_11.html | 952 +++ autobahn/client/tungstenite_case_12_3_11.json | 799 +++ autobahn/client/tungstenite_case_12_3_12.html | 1101 +++ autobahn/client/tungstenite_case_12_3_12.json | 948 +++ autobahn/client/tungstenite_case_12_3_13.html | 1157 ++++ autobahn/client/tungstenite_case_12_3_13.json | 1004 +++ autobahn/client/tungstenite_case_12_3_14.html | 1247 ++++ autobahn/client/tungstenite_case_12_3_14.json | 1094 +++ autobahn/client/tungstenite_case_12_3_15.html | 1262 ++++ autobahn/client/tungstenite_case_12_3_15.json | 1109 +++ autobahn/client/tungstenite_case_12_3_16.html | 1605 +++++ autobahn/client/tungstenite_case_12_3_16.json | 1452 ++++ autobahn/client/tungstenite_case_12_3_17.html | 1733 +++++ autobahn/client/tungstenite_case_12_3_17.json | 1580 +++++ autobahn/client/tungstenite_case_12_3_18.html | 1733 +++++ autobahn/client/tungstenite_case_12_3_18.json | 1580 +++++ autobahn/client/tungstenite_case_12_3_2.html | 394 ++ autobahn/client/tungstenite_case_12_3_2.json | 241 + autobahn/client/tungstenite_case_12_3_3.html | 472 ++ autobahn/client/tungstenite_case_12_3_3.json | 319 + autobahn/client/tungstenite_case_12_3_4.html | 616 ++ autobahn/client/tungstenite_case_12_3_4.json | 463 ++ autobahn/client/tungstenite_case_12_3_5.html | 922 +++ autobahn/client/tungstenite_case_12_3_5.json | 769 +++ autobahn/client/tungstenite_case_12_3_6.html | 1122 ++++ autobahn/client/tungstenite_case_12_3_6.json | 969 +++ autobahn/client/tungstenite_case_12_3_7.html | 1402 ++++ autobahn/client/tungstenite_case_12_3_7.json | 1249 ++++ autobahn/client/tungstenite_case_12_3_8.html | 1520 +++++ autobahn/client/tungstenite_case_12_3_8.json | 1367 ++++ autobahn/client/tungstenite_case_12_3_9.html | 1685 +++++ autobahn/client/tungstenite_case_12_3_9.json | 1532 +++++ autobahn/client/tungstenite_case_12_4_1.html | 328 + autobahn/client/tungstenite_case_12_4_1.json | 175 + autobahn/client/tungstenite_case_12_4_10.html | 1430 ++++ autobahn/client/tungstenite_case_12_4_10.json | 1277 ++++ autobahn/client/tungstenite_case_12_4_11.html | 981 +++ autobahn/client/tungstenite_case_12_4_11.json | 828 +++ autobahn/client/tungstenite_case_12_4_12.html | 1087 +++ autobahn/client/tungstenite_case_12_4_12.json | 934 +++ autobahn/client/tungstenite_case_12_4_13.html | 1234 ++++ autobahn/client/tungstenite_case_12_4_13.json | 1081 +++ autobahn/client/tungstenite_case_12_4_14.html | 1129 ++++ autobahn/client/tungstenite_case_12_4_14.json | 976 +++ autobahn/client/tungstenite_case_12_4_15.html | 1114 ++++ autobahn/client/tungstenite_case_12_4_15.json | 961 +++ autobahn/client/tungstenite_case_12_4_16.html | 1364 ++++ autobahn/client/tungstenite_case_12_4_16.json | 1211 ++++ autobahn/client/tungstenite_case_12_4_17.html | 1432 ++++ autobahn/client/tungstenite_case_12_4_17.json | 1279 ++++ autobahn/client/tungstenite_case_12_4_18.html | 1430 ++++ autobahn/client/tungstenite_case_12_4_18.json | 1277 ++++ autobahn/client/tungstenite_case_12_4_2.html | 398 ++ autobahn/client/tungstenite_case_12_4_2.json | 245 + autobahn/client/tungstenite_case_12_4_3.html | 464 ++ autobahn/client/tungstenite_case_12_4_3.json | 311 + autobahn/client/tungstenite_case_12_4_4.html | 615 ++ autobahn/client/tungstenite_case_12_4_4.json | 462 ++ autobahn/client/tungstenite_case_12_4_5.html | 878 +++ autobahn/client/tungstenite_case_12_4_5.json | 725 ++ autobahn/client/tungstenite_case_12_4_6.html | 1185 ++++ autobahn/client/tungstenite_case_12_4_6.json | 1032 +++ autobahn/client/tungstenite_case_12_4_7.html | 1390 ++++ autobahn/client/tungstenite_case_12_4_7.json | 1237 ++++ autobahn/client/tungstenite_case_12_4_8.html | 1668 +++++ autobahn/client/tungstenite_case_12_4_8.json | 1515 +++++ autobahn/client/tungstenite_case_12_4_9.html | 1470 ++++ autobahn/client/tungstenite_case_12_4_9.json | 1317 ++++ autobahn/client/tungstenite_case_12_5_1.html | 330 + autobahn/client/tungstenite_case_12_5_1.json | 177 + autobahn/client/tungstenite_case_12_5_10.html | 2068 ++++++ autobahn/client/tungstenite_case_12_5_10.json | 1915 ++++++ autobahn/client/tungstenite_case_12_5_11.html | 1241 ++++ autobahn/client/tungstenite_case_12_5_11.json | 1088 +++ autobahn/client/tungstenite_case_12_5_12.html | 1336 ++++ autobahn/client/tungstenite_case_12_5_12.json | 1183 ++++ autobahn/client/tungstenite_case_12_5_13.html | 1391 ++++ autobahn/client/tungstenite_case_12_5_13.json | 1238 ++++ autobahn/client/tungstenite_case_12_5_14.html | 1408 ++++ autobahn/client/tungstenite_case_12_5_14.json | 1255 ++++ autobahn/client/tungstenite_case_12_5_15.html | 1437 ++++ autobahn/client/tungstenite_case_12_5_15.json | 1284 ++++ autobahn/client/tungstenite_case_12_5_16.html | 1813 +++++ autobahn/client/tungstenite_case_12_5_16.json | 1660 +++++ autobahn/client/tungstenite_case_12_5_17.html | 2005 ++++++ autobahn/client/tungstenite_case_12_5_17.json | 1852 ++++++ autobahn/client/tungstenite_case_12_5_18.html | 2074 ++++++ autobahn/client/tungstenite_case_12_5_18.json | 1921 ++++++ autobahn/client/tungstenite_case_12_5_2.html | 390 ++ autobahn/client/tungstenite_case_12_5_2.json | 237 + autobahn/client/tungstenite_case_12_5_3.html | 500 ++ autobahn/client/tungstenite_case_12_5_3.json | 347 + autobahn/client/tungstenite_case_12_5_4.html | 998 +++ autobahn/client/tungstenite_case_12_5_4.json | 845 +++ autobahn/client/tungstenite_case_12_5_5.html | 1382 ++++ autobahn/client/tungstenite_case_12_5_5.json | 1229 ++++ autobahn/client/tungstenite_case_12_5_6.html | 1686 +++++ autobahn/client/tungstenite_case_12_5_6.json | 1533 +++++ autobahn/client/tungstenite_case_12_5_7.html | 1871 ++++++ autobahn/client/tungstenite_case_12_5_7.json | 1718 +++++ autobahn/client/tungstenite_case_12_5_8.html | 1985 ++++++ autobahn/client/tungstenite_case_12_5_8.json | 1832 +++++ autobahn/client/tungstenite_case_12_5_9.html | 2019 ++++++ autobahn/client/tungstenite_case_12_5_9.json | 1866 ++++++ autobahn/client/tungstenite_case_13_1_1.html | 324 + autobahn/client/tungstenite_case_13_1_1.json | 171 + autobahn/client/tungstenite_case_13_1_10.html | 586 ++ autobahn/client/tungstenite_case_13_1_10.json | 433 ++ autobahn/client/tungstenite_case_13_1_11.html | 662 ++ autobahn/client/tungstenite_case_13_1_11.json | 509 ++ autobahn/client/tungstenite_case_13_1_12.html | 818 +++ autobahn/client/tungstenite_case_13_1_12.json | 665 ++ autobahn/client/tungstenite_case_13_1_13.html | 900 +++ autobahn/client/tungstenite_case_13_1_13.json | 747 +++ autobahn/client/tungstenite_case_13_1_14.html | 540 ++ autobahn/client/tungstenite_case_13_1_14.json | 387 ++ autobahn/client/tungstenite_case_13_1_15.html | 587 ++ autobahn/client/tungstenite_case_13_1_15.json | 434 ++ autobahn/client/tungstenite_case_13_1_16.html | 588 ++ autobahn/client/tungstenite_case_13_1_16.json | 435 ++ autobahn/client/tungstenite_case_13_1_17.html | 588 ++ autobahn/client/tungstenite_case_13_1_17.json | 435 ++ autobahn/client/tungstenite_case_13_1_18.html | 586 ++ autobahn/client/tungstenite_case_13_1_18.json | 433 ++ autobahn/client/tungstenite_case_13_1_2.html | 328 + autobahn/client/tungstenite_case_13_1_2.json | 175 + autobahn/client/tungstenite_case_13_1_3.html | 358 + autobahn/client/tungstenite_case_13_1_3.json | 205 + autobahn/client/tungstenite_case_13_1_4.html | 426 ++ autobahn/client/tungstenite_case_13_1_4.json | 273 + autobahn/client/tungstenite_case_13_1_5.html | 538 ++ autobahn/client/tungstenite_case_13_1_5.json | 385 ++ autobahn/client/tungstenite_case_13_1_6.html | 660 ++ autobahn/client/tungstenite_case_13_1_6.json | 507 ++ autobahn/client/tungstenite_case_13_1_7.html | 856 +++ autobahn/client/tungstenite_case_13_1_7.json | 703 ++ autobahn/client/tungstenite_case_13_1_8.html | 1018 +++ autobahn/client/tungstenite_case_13_1_8.json | 865 +++ autobahn/client/tungstenite_case_13_1_9.html | 540 ++ autobahn/client/tungstenite_case_13_1_9.json | 387 ++ autobahn/client/tungstenite_case_13_2_1.html | 320 + autobahn/client/tungstenite_case_13_2_1.json | 167 + autobahn/client/tungstenite_case_13_2_10.html | 607 ++ autobahn/client/tungstenite_case_13_2_10.json | 454 ++ autobahn/client/tungstenite_case_13_2_11.html | 662 ++ autobahn/client/tungstenite_case_13_2_11.json | 509 ++ autobahn/client/tungstenite_case_13_2_12.html | 813 +++ autobahn/client/tungstenite_case_13_2_12.json | 660 ++ autobahn/client/tungstenite_case_13_2_13.html | 910 +++ autobahn/client/tungstenite_case_13_2_13.json | 757 +++ autobahn/client/tungstenite_case_13_2_14.html | 589 ++ autobahn/client/tungstenite_case_13_2_14.json | 436 ++ autobahn/client/tungstenite_case_13_2_15.html | 608 ++ autobahn/client/tungstenite_case_13_2_15.json | 455 ++ autobahn/client/tungstenite_case_13_2_16.html | 609 ++ autobahn/client/tungstenite_case_13_2_16.json | 456 ++ autobahn/client/tungstenite_case_13_2_17.html | 609 ++ autobahn/client/tungstenite_case_13_2_17.json | 456 ++ autobahn/client/tungstenite_case_13_2_18.html | 607 ++ autobahn/client/tungstenite_case_13_2_18.json | 454 ++ autobahn/client/tungstenite_case_13_2_2.html | 342 + autobahn/client/tungstenite_case_13_2_2.json | 189 + autobahn/client/tungstenite_case_13_2_3.html | 361 + autobahn/client/tungstenite_case_13_2_3.json | 208 + autobahn/client/tungstenite_case_13_2_4.html | 414 ++ autobahn/client/tungstenite_case_13_2_4.json | 261 + autobahn/client/tungstenite_case_13_2_5.html | 536 ++ autobahn/client/tungstenite_case_13_2_5.json | 383 ++ autobahn/client/tungstenite_case_13_2_6.html | 660 ++ autobahn/client/tungstenite_case_13_2_6.json | 507 ++ autobahn/client/tungstenite_case_13_2_7.html | 850 +++ autobahn/client/tungstenite_case_13_2_7.json | 697 ++ autobahn/client/tungstenite_case_13_2_8.html | 1027 +++ autobahn/client/tungstenite_case_13_2_8.json | 874 +++ autobahn/client/tungstenite_case_13_2_9.html | 588 ++ autobahn/client/tungstenite_case_13_2_9.json | 435 ++ autobahn/client/tungstenite_case_13_3_1.html | 325 + autobahn/client/tungstenite_case_13_3_1.json | 172 + autobahn/client/tungstenite_case_13_3_10.html | 720 ++ autobahn/client/tungstenite_case_13_3_10.json | 567 ++ autobahn/client/tungstenite_case_13_3_11.html | 672 ++ autobahn/client/tungstenite_case_13_3_11.json | 519 ++ autobahn/client/tungstenite_case_13_3_12.html | 823 +++ autobahn/client/tungstenite_case_13_3_12.json | 670 ++ autobahn/client/tungstenite_case_13_3_13.html | 904 +++ autobahn/client/tungstenite_case_13_3_13.json | 751 +++ autobahn/client/tungstenite_case_13_3_14.html | 693 ++ autobahn/client/tungstenite_case_13_3_14.json | 540 ++ autobahn/client/tungstenite_case_13_3_15.html | 721 ++ autobahn/client/tungstenite_case_13_3_15.json | 568 ++ autobahn/client/tungstenite_case_13_3_16.html | 722 ++ autobahn/client/tungstenite_case_13_3_16.json | 569 ++ autobahn/client/tungstenite_case_13_3_17.html | 722 ++ autobahn/client/tungstenite_case_13_3_17.json | 569 ++ autobahn/client/tungstenite_case_13_3_18.html | 720 ++ autobahn/client/tungstenite_case_13_3_18.json | 567 ++ autobahn/client/tungstenite_case_13_3_2.html | 330 + autobahn/client/tungstenite_case_13_3_2.json | 177 + autobahn/client/tungstenite_case_13_3_3.html | 360 + autobahn/client/tungstenite_case_13_3_3.json | 207 + autobahn/client/tungstenite_case_13_3_4.html | 427 ++ autobahn/client/tungstenite_case_13_3_4.json | 274 + autobahn/client/tungstenite_case_13_3_5.html | 547 ++ autobahn/client/tungstenite_case_13_3_5.json | 394 ++ autobahn/client/tungstenite_case_13_3_6.html | 670 ++ autobahn/client/tungstenite_case_13_3_6.json | 517 ++ autobahn/client/tungstenite_case_13_3_7.html | 860 +++ autobahn/client/tungstenite_case_13_3_7.json | 707 ++ autobahn/client/tungstenite_case_13_3_8.html | 1021 +++ autobahn/client/tungstenite_case_13_3_8.json | 868 +++ autobahn/client/tungstenite_case_13_3_9.html | 692 ++ autobahn/client/tungstenite_case_13_3_9.json | 539 ++ autobahn/client/tungstenite_case_13_4_1.html | 324 + autobahn/client/tungstenite_case_13_4_1.json | 171 + autobahn/client/tungstenite_case_13_4_10.html | 586 ++ autobahn/client/tungstenite_case_13_4_10.json | 433 ++ autobahn/client/tungstenite_case_13_4_11.html | 662 ++ autobahn/client/tungstenite_case_13_4_11.json | 509 ++ autobahn/client/tungstenite_case_13_4_12.html | 819 +++ autobahn/client/tungstenite_case_13_4_12.json | 666 ++ autobahn/client/tungstenite_case_13_4_13.html | 901 +++ autobahn/client/tungstenite_case_13_4_13.json | 748 +++ autobahn/client/tungstenite_case_13_4_14.html | 541 ++ autobahn/client/tungstenite_case_13_4_14.json | 388 ++ autobahn/client/tungstenite_case_13_4_15.html | 587 ++ autobahn/client/tungstenite_case_13_4_15.json | 434 ++ autobahn/client/tungstenite_case_13_4_16.html | 588 ++ autobahn/client/tungstenite_case_13_4_16.json | 435 ++ autobahn/client/tungstenite_case_13_4_17.html | 588 ++ autobahn/client/tungstenite_case_13_4_17.json | 435 ++ autobahn/client/tungstenite_case_13_4_18.html | 586 ++ autobahn/client/tungstenite_case_13_4_18.json | 433 ++ autobahn/client/tungstenite_case_13_4_2.html | 328 + autobahn/client/tungstenite_case_13_4_2.json | 175 + autobahn/client/tungstenite_case_13_4_3.html | 358 + autobahn/client/tungstenite_case_13_4_3.json | 205 + autobahn/client/tungstenite_case_13_4_4.html | 426 ++ autobahn/client/tungstenite_case_13_4_4.json | 273 + autobahn/client/tungstenite_case_13_4_5.html | 539 ++ autobahn/client/tungstenite_case_13_4_5.json | 386 ++ autobahn/client/tungstenite_case_13_4_6.html | 660 ++ autobahn/client/tungstenite_case_13_4_6.json | 507 ++ autobahn/client/tungstenite_case_13_4_7.html | 856 +++ autobahn/client/tungstenite_case_13_4_7.json | 703 ++ autobahn/client/tungstenite_case_13_4_8.html | 1018 +++ autobahn/client/tungstenite_case_13_4_8.json | 865 +++ autobahn/client/tungstenite_case_13_4_9.html | 540 ++ autobahn/client/tungstenite_case_13_4_9.json | 387 ++ autobahn/client/tungstenite_case_13_5_1.html | 320 + autobahn/client/tungstenite_case_13_5_1.json | 167 + autobahn/client/tungstenite_case_13_5_10.html | 735 ++ autobahn/client/tungstenite_case_13_5_10.json | 582 ++ autobahn/client/tungstenite_case_13_5_11.html | 656 ++ autobahn/client/tungstenite_case_13_5_11.json | 503 ++ autobahn/client/tungstenite_case_13_5_12.html | 813 +++ autobahn/client/tungstenite_case_13_5_12.json | 660 ++ autobahn/client/tungstenite_case_13_5_13.html | 903 +++ autobahn/client/tungstenite_case_13_5_13.json | 750 +++ autobahn/client/tungstenite_case_13_5_14.html | 701 ++ autobahn/client/tungstenite_case_13_5_14.json | 548 ++ autobahn/client/tungstenite_case_13_5_15.html | 736 ++ autobahn/client/tungstenite_case_13_5_15.json | 583 ++ autobahn/client/tungstenite_case_13_5_16.html | 737 ++ autobahn/client/tungstenite_case_13_5_16.json | 584 ++ autobahn/client/tungstenite_case_13_5_17.html | 737 ++ autobahn/client/tungstenite_case_13_5_17.json | 584 ++ autobahn/client/tungstenite_case_13_5_18.html | 735 ++ autobahn/client/tungstenite_case_13_5_18.json | 582 ++ autobahn/client/tungstenite_case_13_5_2.html | 342 + autobahn/client/tungstenite_case_13_5_2.json | 189 + autobahn/client/tungstenite_case_13_5_3.html | 361 + autobahn/client/tungstenite_case_13_5_3.json | 208 + autobahn/client/tungstenite_case_13_5_4.html | 423 ++ autobahn/client/tungstenite_case_13_5_4.json | 270 + autobahn/client/tungstenite_case_13_5_5.html | 535 ++ autobahn/client/tungstenite_case_13_5_5.json | 382 ++ autobahn/client/tungstenite_case_13_5_6.html | 653 ++ autobahn/client/tungstenite_case_13_5_6.json | 500 ++ autobahn/client/tungstenite_case_13_5_7.html | 850 +++ autobahn/client/tungstenite_case_13_5_7.json | 697 ++ autobahn/client/tungstenite_case_13_5_8.html | 1020 +++ autobahn/client/tungstenite_case_13_5_8.json | 867 +++ autobahn/client/tungstenite_case_13_5_9.html | 700 ++ autobahn/client/tungstenite_case_13_5_9.json | 547 ++ autobahn/client/tungstenite_case_13_6_1.html | 320 + autobahn/client/tungstenite_case_13_6_1.json | 167 + autobahn/client/tungstenite_case_13_6_10.html | 607 ++ autobahn/client/tungstenite_case_13_6_10.json | 454 ++ autobahn/client/tungstenite_case_13_6_11.html | 662 ++ autobahn/client/tungstenite_case_13_6_11.json | 509 ++ autobahn/client/tungstenite_case_13_6_12.html | 813 +++ autobahn/client/tungstenite_case_13_6_12.json | 660 ++ autobahn/client/tungstenite_case_13_6_13.html | 910 +++ autobahn/client/tungstenite_case_13_6_13.json | 757 +++ autobahn/client/tungstenite_case_13_6_14.html | 589 ++ autobahn/client/tungstenite_case_13_6_14.json | 436 ++ autobahn/client/tungstenite_case_13_6_15.html | 608 ++ autobahn/client/tungstenite_case_13_6_15.json | 455 ++ autobahn/client/tungstenite_case_13_6_16.html | 609 ++ autobahn/client/tungstenite_case_13_6_16.json | 456 ++ autobahn/client/tungstenite_case_13_6_17.html | 609 ++ autobahn/client/tungstenite_case_13_6_17.json | 456 ++ autobahn/client/tungstenite_case_13_6_18.html | 607 ++ autobahn/client/tungstenite_case_13_6_18.json | 454 ++ autobahn/client/tungstenite_case_13_6_2.html | 342 + autobahn/client/tungstenite_case_13_6_2.json | 189 + autobahn/client/tungstenite_case_13_6_3.html | 361 + autobahn/client/tungstenite_case_13_6_3.json | 208 + autobahn/client/tungstenite_case_13_6_4.html | 414 ++ autobahn/client/tungstenite_case_13_6_4.json | 261 + autobahn/client/tungstenite_case_13_6_5.html | 536 ++ autobahn/client/tungstenite_case_13_6_5.json | 383 ++ autobahn/client/tungstenite_case_13_6_6.html | 659 ++ autobahn/client/tungstenite_case_13_6_6.json | 506 ++ autobahn/client/tungstenite_case_13_6_7.html | 850 +++ autobahn/client/tungstenite_case_13_6_7.json | 697 ++ autobahn/client/tungstenite_case_13_6_8.html | 1027 +++ autobahn/client/tungstenite_case_13_6_8.json | 874 +++ autobahn/client/tungstenite_case_13_6_9.html | 588 ++ autobahn/client/tungstenite_case_13_6_9.json | 435 ++ autobahn/client/tungstenite_case_13_7_1.html | 320 + autobahn/client/tungstenite_case_13_7_1.json | 167 + autobahn/client/tungstenite_case_13_7_10.html | 735 ++ autobahn/client/tungstenite_case_13_7_10.json | 582 ++ autobahn/client/tungstenite_case_13_7_11.html | 656 ++ autobahn/client/tungstenite_case_13_7_11.json | 503 ++ autobahn/client/tungstenite_case_13_7_12.html | 813 +++ autobahn/client/tungstenite_case_13_7_12.json | 660 ++ autobahn/client/tungstenite_case_13_7_13.html | 903 +++ autobahn/client/tungstenite_case_13_7_13.json | 750 +++ autobahn/client/tungstenite_case_13_7_14.html | 701 ++ autobahn/client/tungstenite_case_13_7_14.json | 548 ++ autobahn/client/tungstenite_case_13_7_15.html | 736 ++ autobahn/client/tungstenite_case_13_7_15.json | 583 ++ autobahn/client/tungstenite_case_13_7_16.html | 737 ++ autobahn/client/tungstenite_case_13_7_16.json | 584 ++ autobahn/client/tungstenite_case_13_7_17.html | 737 ++ autobahn/client/tungstenite_case_13_7_17.json | 584 ++ autobahn/client/tungstenite_case_13_7_18.html | 735 ++ autobahn/client/tungstenite_case_13_7_18.json | 582 ++ autobahn/client/tungstenite_case_13_7_2.html | 342 + autobahn/client/tungstenite_case_13_7_2.json | 189 + autobahn/client/tungstenite_case_13_7_3.html | 361 + autobahn/client/tungstenite_case_13_7_3.json | 208 + autobahn/client/tungstenite_case_13_7_4.html | 423 ++ autobahn/client/tungstenite_case_13_7_4.json | 270 + autobahn/client/tungstenite_case_13_7_5.html | 535 ++ autobahn/client/tungstenite_case_13_7_5.json | 382 ++ autobahn/client/tungstenite_case_13_7_6.html | 653 ++ autobahn/client/tungstenite_case_13_7_6.json | 500 ++ autobahn/client/tungstenite_case_13_7_7.html | 850 +++ autobahn/client/tungstenite_case_13_7_7.json | 697 ++ autobahn/client/tungstenite_case_13_7_8.html | 1020 +++ autobahn/client/tungstenite_case_13_7_8.json | 867 +++ autobahn/client/tungstenite_case_13_7_9.html | 700 ++ autobahn/client/tungstenite_case_13_7_9.json | 547 ++ autobahn/client/tungstenite_case_1_1_1.html | 301 + autobahn/client/tungstenite_case_1_1_1.json | 177 + autobahn/client/tungstenite_case_1_1_2.html | 305 + autobahn/client/tungstenite_case_1_1_2.json | 177 + autobahn/client/tungstenite_case_1_1_3.html | 305 + autobahn/client/tungstenite_case_1_1_3.json | 177 + autobahn/client/tungstenite_case_1_1_4.html | 305 + autobahn/client/tungstenite_case_1_1_4.json | 177 + autobahn/client/tungstenite_case_1_1_5.html | 305 + autobahn/client/tungstenite_case_1_1_5.json | 177 + autobahn/client/tungstenite_case_1_1_6.html | 308 + autobahn/client/tungstenite_case_1_1_6.json | 185 + autobahn/client/tungstenite_case_1_1_7.html | 308 + autobahn/client/tungstenite_case_1_1_7.json | 185 + autobahn/client/tungstenite_case_1_1_8.html | 439 ++ autobahn/client/tungstenite_case_1_1_8.json | 706 ++ autobahn/client/tungstenite_case_1_2_1.html | 301 + autobahn/client/tungstenite_case_1_2_1.json | 177 + autobahn/client/tungstenite_case_1_2_2.html | 307 + autobahn/client/tungstenite_case_1_2_2.json | 177 + autobahn/client/tungstenite_case_1_2_3.html | 307 + autobahn/client/tungstenite_case_1_2_3.json | 177 + autobahn/client/tungstenite_case_1_2_4.html | 307 + autobahn/client/tungstenite_case_1_2_4.json | 177 + autobahn/client/tungstenite_case_1_2_5.html | 307 + autobahn/client/tungstenite_case_1_2_5.json | 177 + autobahn/client/tungstenite_case_1_2_6.html | 310 + autobahn/client/tungstenite_case_1_2_6.json | 185 + autobahn/client/tungstenite_case_1_2_7.html | 310 + autobahn/client/tungstenite_case_1_2_7.json | 185 + autobahn/client/tungstenite_case_1_2_8.html | 441 ++ autobahn/client/tungstenite_case_1_2_8.json | 706 ++ autobahn/client/tungstenite_case_2_1.html | 301 + autobahn/client/tungstenite_case_2_1.json | 175 + autobahn/client/tungstenite_case_2_10.html | 349 + autobahn/client/tungstenite_case_2_10.json | 553 ++ autobahn/client/tungstenite_case_2_11.html | 457 ++ autobahn/client/tungstenite_case_2_11.json | 1416 ++++ autobahn/client/tungstenite_case_2_2.html | 303 + autobahn/client/tungstenite_case_2_2.json | 175 + autobahn/client/tungstenite_case_2_3.html | 303 + autobahn/client/tungstenite_case_2_3.json | 175 + autobahn/client/tungstenite_case_2_4.html | 307 + autobahn/client/tungstenite_case_2_4.json | 175 + autobahn/client/tungstenite_case_2_5.html | 290 + autobahn/client/tungstenite_case_2_5.json | 98 + autobahn/client/tungstenite_case_2_6.html | 432 ++ autobahn/client/tungstenite_case_2_6.json | 1183 ++++ autobahn/client/tungstenite_case_2_7.html | 297 + autobahn/client/tungstenite_case_2_7.json | 144 + autobahn/client/tungstenite_case_2_8.html | 298 + autobahn/client/tungstenite_case_2_8.json | 144 + autobahn/client/tungstenite_case_2_9.html | 308 + autobahn/client/tungstenite_case_2_9.json | 199 + autobahn/client/tungstenite_case_3_1.html | 288 + autobahn/client/tungstenite_case_3_1.json | 98 + autobahn/client/tungstenite_case_3_2.html | 300 + autobahn/client/tungstenite_case_3_2.json | 179 + autobahn/client/tungstenite_case_3_3.html | 300 + autobahn/client/tungstenite_case_3_3.json | 179 + autobahn/client/tungstenite_case_3_4.html | 327 + autobahn/client/tungstenite_case_3_4.json | 402 ++ autobahn/client/tungstenite_case_3_5.html | 288 + autobahn/client/tungstenite_case_3_5.json | 98 + autobahn/client/tungstenite_case_3_6.html | 288 + autobahn/client/tungstenite_case_3_6.json | 98 + autobahn/client/tungstenite_case_3_7.html | 287 + autobahn/client/tungstenite_case_3_7.json | 98 + autobahn/client/tungstenite_case_4_1_1.html | 287 + autobahn/client/tungstenite_case_4_1_1.json | 98 + autobahn/client/tungstenite_case_4_1_2.html | 288 + autobahn/client/tungstenite_case_4_1_2.json | 98 + autobahn/client/tungstenite_case_4_1_3.html | 300 + autobahn/client/tungstenite_case_4_1_3.json | 180 + autobahn/client/tungstenite_case_4_1_4.html | 301 + autobahn/client/tungstenite_case_4_1_4.json | 180 + autobahn/client/tungstenite_case_4_1_5.html | 315 + autobahn/client/tungstenite_case_4_1_5.json | 299 + autobahn/client/tungstenite_case_4_2_1.html | 287 + autobahn/client/tungstenite_case_4_2_1.json | 98 + autobahn/client/tungstenite_case_4_2_2.html | 288 + autobahn/client/tungstenite_case_4_2_2.json | 98 + autobahn/client/tungstenite_case_4_2_3.html | 300 + autobahn/client/tungstenite_case_4_2_3.json | 180 + autobahn/client/tungstenite_case_4_2_4.html | 301 + autobahn/client/tungstenite_case_4_2_4.json | 180 + autobahn/client/tungstenite_case_4_2_5.html | 316 + autobahn/client/tungstenite_case_4_2_5.json | 307 + autobahn/client/tungstenite_case_5_1.html | 292 + autobahn/client/tungstenite_case_5_1.json | 121 + autobahn/client/tungstenite_case_5_10.html | 293 + autobahn/client/tungstenite_case_5_10.json | 122 + autobahn/client/tungstenite_case_5_11.html | 318 + autobahn/client/tungstenite_case_5_11.json | 329 + autobahn/client/tungstenite_case_5_12.html | 293 + autobahn/client/tungstenite_case_5_12.json | 122 + autobahn/client/tungstenite_case_5_13.html | 293 + autobahn/client/tungstenite_case_5_13.json | 122 + autobahn/client/tungstenite_case_5_14.html | 318 + autobahn/client/tungstenite_case_5_14.json | 329 + autobahn/client/tungstenite_case_5_15.html | 303 + autobahn/client/tungstenite_case_5_15.json | 200 + autobahn/client/tungstenite_case_5_16.html | 304 + autobahn/client/tungstenite_case_5_16.json | 209 + autobahn/client/tungstenite_case_5_17.html | 304 + autobahn/client/tungstenite_case_5_17.json | 209 + autobahn/client/tungstenite_case_5_18.html | 291 + autobahn/client/tungstenite_case_5_18.json | 120 + autobahn/client/tungstenite_case_5_19.html | 338 + autobahn/client/tungstenite_case_5_19.json | 369 + autobahn/client/tungstenite_case_5_2.html | 292 + autobahn/client/tungstenite_case_5_2.json | 121 + autobahn/client/tungstenite_case_5_20.html | 337 + autobahn/client/tungstenite_case_5_20.json | 376 ++ autobahn/client/tungstenite_case_5_3.html | 307 + autobahn/client/tungstenite_case_5_3.json | 200 + autobahn/client/tungstenite_case_5_4.html | 307 + autobahn/client/tungstenite_case_5_4.json | 200 + autobahn/client/tungstenite_case_5_5.html | 327 + autobahn/client/tungstenite_case_5_5.json | 360 + autobahn/client/tungstenite_case_5_6.html | 315 + autobahn/client/tungstenite_case_5_6.json | 245 + autobahn/client/tungstenite_case_5_7.html | 315 + autobahn/client/tungstenite_case_5_7.json | 245 + autobahn/client/tungstenite_case_5_8.html | 349 + autobahn/client/tungstenite_case_5_8.json | 516 ++ autobahn/client/tungstenite_case_5_9.html | 293 + autobahn/client/tungstenite_case_5_9.json | 122 + autobahn/client/tungstenite_case_6_10_1.html | 288 + autobahn/client/tungstenite_case_6_10_1.json | 99 + autobahn/client/tungstenite_case_6_10_2.html | 288 + autobahn/client/tungstenite_case_6_10_2.json | 99 + autobahn/client/tungstenite_case_6_10_3.html | 288 + autobahn/client/tungstenite_case_6_10_3.json | 99 + autobahn/client/tungstenite_case_6_11_1.html | 303 + autobahn/client/tungstenite_case_6_11_1.json | 177 + autobahn/client/tungstenite_case_6_11_2.html | 303 + autobahn/client/tungstenite_case_6_11_2.json | 177 + autobahn/client/tungstenite_case_6_11_3.html | 303 + autobahn/client/tungstenite_case_6_11_3.json | 177 + autobahn/client/tungstenite_case_6_11_4.html | 303 + autobahn/client/tungstenite_case_6_11_4.json | 177 + autobahn/client/tungstenite_case_6_11_5.html | 288 + autobahn/client/tungstenite_case_6_11_5.json | 99 + autobahn/client/tungstenite_case_6_12_1.html | 288 + autobahn/client/tungstenite_case_6_12_1.json | 99 + autobahn/client/tungstenite_case_6_12_2.html | 288 + autobahn/client/tungstenite_case_6_12_2.json | 99 + autobahn/client/tungstenite_case_6_12_3.html | 288 + autobahn/client/tungstenite_case_6_12_3.json | 99 + autobahn/client/tungstenite_case_6_12_4.html | 288 + autobahn/client/tungstenite_case_6_12_4.json | 99 + autobahn/client/tungstenite_case_6_12_5.html | 288 + autobahn/client/tungstenite_case_6_12_5.json | 99 + autobahn/client/tungstenite_case_6_12_6.html | 288 + autobahn/client/tungstenite_case_6_12_6.json | 99 + autobahn/client/tungstenite_case_6_12_7.html | 288 + autobahn/client/tungstenite_case_6_12_7.json | 99 + autobahn/client/tungstenite_case_6_12_8.html | 290 + autobahn/client/tungstenite_case_6_12_8.json | 99 + autobahn/client/tungstenite_case_6_13_1.html | 290 + autobahn/client/tungstenite_case_6_13_1.json | 99 + autobahn/client/tungstenite_case_6_13_2.html | 288 + autobahn/client/tungstenite_case_6_13_2.json | 99 + autobahn/client/tungstenite_case_6_13_3.html | 288 + autobahn/client/tungstenite_case_6_13_3.json | 99 + autobahn/client/tungstenite_case_6_13_4.html | 288 + autobahn/client/tungstenite_case_6_13_4.json | 99 + autobahn/client/tungstenite_case_6_13_5.html | 288 + autobahn/client/tungstenite_case_6_13_5.json | 99 + autobahn/client/tungstenite_case_6_14_1.html | 288 + autobahn/client/tungstenite_case_6_14_1.json | 99 + autobahn/client/tungstenite_case_6_14_10.html | 288 + autobahn/client/tungstenite_case_6_14_10.json | 99 + autobahn/client/tungstenite_case_6_14_2.html | 288 + autobahn/client/tungstenite_case_6_14_2.json | 99 + autobahn/client/tungstenite_case_6_14_3.html | 288 + autobahn/client/tungstenite_case_6_14_3.json | 99 + autobahn/client/tungstenite_case_6_14_4.html | 288 + autobahn/client/tungstenite_case_6_14_4.json | 99 + autobahn/client/tungstenite_case_6_14_5.html | 288 + autobahn/client/tungstenite_case_6_14_5.json | 99 + autobahn/client/tungstenite_case_6_14_6.html | 288 + autobahn/client/tungstenite_case_6_14_6.json | 99 + autobahn/client/tungstenite_case_6_14_7.html | 288 + autobahn/client/tungstenite_case_6_14_7.json | 99 + autobahn/client/tungstenite_case_6_14_8.html | 288 + autobahn/client/tungstenite_case_6_14_8.json | 99 + autobahn/client/tungstenite_case_6_14_9.html | 288 + autobahn/client/tungstenite_case_6_14_9.json | 99 + autobahn/client/tungstenite_case_6_15_1.html | 288 + autobahn/client/tungstenite_case_6_15_1.json | 99 + autobahn/client/tungstenite_case_6_16_1.html | 288 + autobahn/client/tungstenite_case_6_16_1.json | 99 + autobahn/client/tungstenite_case_6_16_2.html | 288 + autobahn/client/tungstenite_case_6_16_2.json | 99 + autobahn/client/tungstenite_case_6_16_3.html | 288 + autobahn/client/tungstenite_case_6_16_3.json | 99 + autobahn/client/tungstenite_case_6_17_1.html | 288 + autobahn/client/tungstenite_case_6_17_1.json | 99 + autobahn/client/tungstenite_case_6_17_2.html | 288 + autobahn/client/tungstenite_case_6_17_2.json | 99 + autobahn/client/tungstenite_case_6_17_3.html | 288 + autobahn/client/tungstenite_case_6_17_3.json | 99 + autobahn/client/tungstenite_case_6_17_4.html | 288 + autobahn/client/tungstenite_case_6_17_4.json | 99 + autobahn/client/tungstenite_case_6_17_5.html | 288 + autobahn/client/tungstenite_case_6_17_5.json | 99 + autobahn/client/tungstenite_case_6_18_1.html | 288 + autobahn/client/tungstenite_case_6_18_1.json | 99 + autobahn/client/tungstenite_case_6_18_2.html | 288 + autobahn/client/tungstenite_case_6_18_2.json | 99 + autobahn/client/tungstenite_case_6_18_3.html | 288 + autobahn/client/tungstenite_case_6_18_3.json | 99 + autobahn/client/tungstenite_case_6_18_4.html | 288 + autobahn/client/tungstenite_case_6_18_4.json | 99 + autobahn/client/tungstenite_case_6_18_5.html | 288 + autobahn/client/tungstenite_case_6_18_5.json | 99 + autobahn/client/tungstenite_case_6_19_1.html | 288 + autobahn/client/tungstenite_case_6_19_1.json | 99 + autobahn/client/tungstenite_case_6_19_2.html | 288 + autobahn/client/tungstenite_case_6_19_2.json | 99 + autobahn/client/tungstenite_case_6_19_3.html | 288 + autobahn/client/tungstenite_case_6_19_3.json | 99 + autobahn/client/tungstenite_case_6_19_4.html | 288 + autobahn/client/tungstenite_case_6_19_4.json | 99 + autobahn/client/tungstenite_case_6_19_5.html | 288 + autobahn/client/tungstenite_case_6_19_5.json | 99 + autobahn/client/tungstenite_case_6_1_1.html | 301 + autobahn/client/tungstenite_case_6_1_1.json | 177 + autobahn/client/tungstenite_case_6_1_2.html | 306 + autobahn/client/tungstenite_case_6_1_2.json | 222 + autobahn/client/tungstenite_case_6_1_3.html | 309 + autobahn/client/tungstenite_case_6_1_3.json | 223 + autobahn/client/tungstenite_case_6_20_1.html | 288 + autobahn/client/tungstenite_case_6_20_1.json | 99 + autobahn/client/tungstenite_case_6_20_2.html | 288 + autobahn/client/tungstenite_case_6_20_2.json | 99 + autobahn/client/tungstenite_case_6_20_3.html | 288 + autobahn/client/tungstenite_case_6_20_3.json | 99 + autobahn/client/tungstenite_case_6_20_4.html | 288 + autobahn/client/tungstenite_case_6_20_4.json | 99 + autobahn/client/tungstenite_case_6_20_5.html | 288 + autobahn/client/tungstenite_case_6_20_5.json | 99 + autobahn/client/tungstenite_case_6_20_6.html | 288 + autobahn/client/tungstenite_case_6_20_6.json | 99 + autobahn/client/tungstenite_case_6_20_7.html | 288 + autobahn/client/tungstenite_case_6_20_7.json | 99 + autobahn/client/tungstenite_case_6_21_1.html | 288 + autobahn/client/tungstenite_case_6_21_1.json | 99 + autobahn/client/tungstenite_case_6_21_2.html | 288 + autobahn/client/tungstenite_case_6_21_2.json | 99 + autobahn/client/tungstenite_case_6_21_3.html | 288 + autobahn/client/tungstenite_case_6_21_3.json | 99 + autobahn/client/tungstenite_case_6_21_4.html | 288 + autobahn/client/tungstenite_case_6_21_4.json | 99 + autobahn/client/tungstenite_case_6_21_5.html | 288 + autobahn/client/tungstenite_case_6_21_5.json | 99 + autobahn/client/tungstenite_case_6_21_6.html | 288 + autobahn/client/tungstenite_case_6_21_6.json | 99 + autobahn/client/tungstenite_case_6_21_7.html | 288 + autobahn/client/tungstenite_case_6_21_7.json | 99 + autobahn/client/tungstenite_case_6_21_8.html | 288 + autobahn/client/tungstenite_case_6_21_8.json | 99 + autobahn/client/tungstenite_case_6_22_1.html | 303 + autobahn/client/tungstenite_case_6_22_1.json | 177 + autobahn/client/tungstenite_case_6_22_10.html | 303 + autobahn/client/tungstenite_case_6_22_10.json | 177 + autobahn/client/tungstenite_case_6_22_11.html | 303 + autobahn/client/tungstenite_case_6_22_11.json | 177 + autobahn/client/tungstenite_case_6_22_12.html | 303 + autobahn/client/tungstenite_case_6_22_12.json | 177 + autobahn/client/tungstenite_case_6_22_13.html | 303 + autobahn/client/tungstenite_case_6_22_13.json | 177 + autobahn/client/tungstenite_case_6_22_14.html | 303 + autobahn/client/tungstenite_case_6_22_14.json | 177 + autobahn/client/tungstenite_case_6_22_15.html | 303 + autobahn/client/tungstenite_case_6_22_15.json | 177 + autobahn/client/tungstenite_case_6_22_16.html | 303 + autobahn/client/tungstenite_case_6_22_16.json | 177 + autobahn/client/tungstenite_case_6_22_17.html | 303 + autobahn/client/tungstenite_case_6_22_17.json | 177 + autobahn/client/tungstenite_case_6_22_18.html | 303 + autobahn/client/tungstenite_case_6_22_18.json | 177 + autobahn/client/tungstenite_case_6_22_19.html | 303 + autobahn/client/tungstenite_case_6_22_19.json | 177 + autobahn/client/tungstenite_case_6_22_2.html | 303 + autobahn/client/tungstenite_case_6_22_2.json | 177 + autobahn/client/tungstenite_case_6_22_20.html | 303 + autobahn/client/tungstenite_case_6_22_20.json | 177 + autobahn/client/tungstenite_case_6_22_21.html | 303 + autobahn/client/tungstenite_case_6_22_21.json | 177 + autobahn/client/tungstenite_case_6_22_22.html | 303 + autobahn/client/tungstenite_case_6_22_22.json | 177 + autobahn/client/tungstenite_case_6_22_23.html | 303 + autobahn/client/tungstenite_case_6_22_23.json | 177 + autobahn/client/tungstenite_case_6_22_24.html | 303 + autobahn/client/tungstenite_case_6_22_24.json | 177 + autobahn/client/tungstenite_case_6_22_25.html | 303 + autobahn/client/tungstenite_case_6_22_25.json | 177 + autobahn/client/tungstenite_case_6_22_26.html | 303 + autobahn/client/tungstenite_case_6_22_26.json | 177 + autobahn/client/tungstenite_case_6_22_27.html | 303 + autobahn/client/tungstenite_case_6_22_27.json | 177 + autobahn/client/tungstenite_case_6_22_28.html | 303 + autobahn/client/tungstenite_case_6_22_28.json | 177 + autobahn/client/tungstenite_case_6_22_29.html | 303 + autobahn/client/tungstenite_case_6_22_29.json | 177 + autobahn/client/tungstenite_case_6_22_3.html | 303 + autobahn/client/tungstenite_case_6_22_3.json | 177 + autobahn/client/tungstenite_case_6_22_30.html | 303 + autobahn/client/tungstenite_case_6_22_30.json | 177 + autobahn/client/tungstenite_case_6_22_31.html | 303 + autobahn/client/tungstenite_case_6_22_31.json | 177 + autobahn/client/tungstenite_case_6_22_32.html | 303 + autobahn/client/tungstenite_case_6_22_32.json | 177 + autobahn/client/tungstenite_case_6_22_33.html | 303 + autobahn/client/tungstenite_case_6_22_33.json | 177 + autobahn/client/tungstenite_case_6_22_34.html | 303 + autobahn/client/tungstenite_case_6_22_34.json | 177 + autobahn/client/tungstenite_case_6_22_4.html | 303 + autobahn/client/tungstenite_case_6_22_4.json | 177 + autobahn/client/tungstenite_case_6_22_5.html | 303 + autobahn/client/tungstenite_case_6_22_5.json | 177 + autobahn/client/tungstenite_case_6_22_6.html | 303 + autobahn/client/tungstenite_case_6_22_6.json | 177 + autobahn/client/tungstenite_case_6_22_7.html | 303 + autobahn/client/tungstenite_case_6_22_7.json | 177 + autobahn/client/tungstenite_case_6_22_8.html | 303 + autobahn/client/tungstenite_case_6_22_8.json | 177 + autobahn/client/tungstenite_case_6_22_9.html | 303 + autobahn/client/tungstenite_case_6_22_9.json | 177 + autobahn/client/tungstenite_case_6_23_1.html | 303 + autobahn/client/tungstenite_case_6_23_1.json | 177 + autobahn/client/tungstenite_case_6_23_2.html | 303 + autobahn/client/tungstenite_case_6_23_2.json | 177 + autobahn/client/tungstenite_case_6_23_3.html | 303 + autobahn/client/tungstenite_case_6_23_3.json | 177 + autobahn/client/tungstenite_case_6_23_4.html | 303 + autobahn/client/tungstenite_case_6_23_4.json | 177 + autobahn/client/tungstenite_case_6_23_5.html | 303 + autobahn/client/tungstenite_case_6_23_5.json | 177 + autobahn/client/tungstenite_case_6_23_6.html | 303 + autobahn/client/tungstenite_case_6_23_6.json | 177 + autobahn/client/tungstenite_case_6_23_7.html | 303 + autobahn/client/tungstenite_case_6_23_7.json | 177 + autobahn/client/tungstenite_case_6_2_1.html | 303 + autobahn/client/tungstenite_case_6_2_1.json | 177 + autobahn/client/tungstenite_case_6_2_2.html | 308 + autobahn/client/tungstenite_case_6_2_2.json | 201 + autobahn/client/tungstenite_case_6_2_3.html | 391 ++ autobahn/client/tungstenite_case_6_2_3.json | 817 +++ autobahn/client/tungstenite_case_6_2_4.html | 337 + autobahn/client/tungstenite_case_6_2_4.json | 421 ++ autobahn/client/tungstenite_case_6_3_1.html | 288 + autobahn/client/tungstenite_case_6_3_1.json | 99 + autobahn/client/tungstenite_case_6_3_2.html | 349 + autobahn/client/tungstenite_case_6_3_2.json | 541 ++ autobahn/client/tungstenite_case_6_4_1.html | 302 + autobahn/client/tungstenite_case_6_4_1.json | 153 + autobahn/client/tungstenite_case_6_4_2.html | 300 + autobahn/client/tungstenite_case_6_4_2.json | 153 + autobahn/client/tungstenite_case_6_4_3.html | 303 + autobahn/client/tungstenite_case_6_4_3.json | 176 + autobahn/client/tungstenite_case_6_4_4.html | 303 + autobahn/client/tungstenite_case_6_4_4.json | 176 + autobahn/client/tungstenite_case_6_5_1.html | 303 + autobahn/client/tungstenite_case_6_5_1.json | 177 + autobahn/client/tungstenite_case_6_5_2.html | 303 + autobahn/client/tungstenite_case_6_5_2.json | 177 + autobahn/client/tungstenite_case_6_5_3.html | 303 + autobahn/client/tungstenite_case_6_5_3.json | 177 + autobahn/client/tungstenite_case_6_5_4.html | 303 + autobahn/client/tungstenite_case_6_5_4.json | 177 + autobahn/client/tungstenite_case_6_5_5.html | 303 + autobahn/client/tungstenite_case_6_5_5.json | 177 + autobahn/client/tungstenite_case_6_6_1.html | 288 + autobahn/client/tungstenite_case_6_6_1.json | 99 + autobahn/client/tungstenite_case_6_6_10.html | 288 + autobahn/client/tungstenite_case_6_6_10.json | 99 + autobahn/client/tungstenite_case_6_6_11.html | 303 + autobahn/client/tungstenite_case_6_6_11.json | 177 + autobahn/client/tungstenite_case_6_6_2.html | 301 + autobahn/client/tungstenite_case_6_6_2.json | 175 + autobahn/client/tungstenite_case_6_6_3.html | 288 + autobahn/client/tungstenite_case_6_6_3.json | 99 + autobahn/client/tungstenite_case_6_6_4.html | 288 + autobahn/client/tungstenite_case_6_6_4.json | 99 + autobahn/client/tungstenite_case_6_6_5.html | 303 + autobahn/client/tungstenite_case_6_6_5.json | 177 + autobahn/client/tungstenite_case_6_6_6.html | 288 + autobahn/client/tungstenite_case_6_6_6.json | 99 + autobahn/client/tungstenite_case_6_6_7.html | 303 + autobahn/client/tungstenite_case_6_6_7.json | 177 + autobahn/client/tungstenite_case_6_6_8.html | 288 + autobahn/client/tungstenite_case_6_6_8.json | 99 + autobahn/client/tungstenite_case_6_6_9.html | 303 + autobahn/client/tungstenite_case_6_6_9.json | 177 + autobahn/client/tungstenite_case_6_7_1.html | 303 + autobahn/client/tungstenite_case_6_7_1.json | 177 + autobahn/client/tungstenite_case_6_7_2.html | 301 + autobahn/client/tungstenite_case_6_7_2.json | 175 + autobahn/client/tungstenite_case_6_7_3.html | 303 + autobahn/client/tungstenite_case_6_7_3.json | 177 + autobahn/client/tungstenite_case_6_7_4.html | 303 + autobahn/client/tungstenite_case_6_7_4.json | 177 + autobahn/client/tungstenite_case_6_8_1.html | 288 + autobahn/client/tungstenite_case_6_8_1.json | 99 + autobahn/client/tungstenite_case_6_8_2.html | 288 + autobahn/client/tungstenite_case_6_8_2.json | 99 + autobahn/client/tungstenite_case_6_9_1.html | 303 + autobahn/client/tungstenite_case_6_9_1.json | 177 + autobahn/client/tungstenite_case_6_9_2.html | 301 + autobahn/client/tungstenite_case_6_9_2.json | 175 + autobahn/client/tungstenite_case_6_9_3.html | 303 + autobahn/client/tungstenite_case_6_9_3.json | 177 + autobahn/client/tungstenite_case_6_9_4.html | 303 + autobahn/client/tungstenite_case_6_9_4.json | 177 + autobahn/client/tungstenite_case_7_13_1.html | 293 + autobahn/client/tungstenite_case_7_13_1.json | 122 + autobahn/client/tungstenite_case_7_13_2.html | 293 + autobahn/client/tungstenite_case_7_13_2.json | 122 + autobahn/client/tungstenite_case_7_1_1.html | 303 + autobahn/client/tungstenite_case_7_1_1.json | 177 + autobahn/client/tungstenite_case_7_1_2.html | 296 + autobahn/client/tungstenite_case_7_1_2.json | 143 + autobahn/client/tungstenite_case_7_1_3.html | 297 + autobahn/client/tungstenite_case_7_1_3.json | 144 + autobahn/client/tungstenite_case_7_1_4.html | 298 + autobahn/client/tungstenite_case_7_1_4.json | 144 + autobahn/client/tungstenite_case_7_1_5.html | 302 + autobahn/client/tungstenite_case_7_1_5.json | 167 + autobahn/client/tungstenite_case_7_1_6.html | 324 + autobahn/client/tungstenite_case_7_1_6.json | 265 + autobahn/client/tungstenite_case_7_3_1.html | 291 + autobahn/client/tungstenite_case_7_3_1.json | 120 + autobahn/client/tungstenite_case_7_3_2.html | 288 + autobahn/client/tungstenite_case_7_3_2.json | 98 + autobahn/client/tungstenite_case_7_3_3.html | 293 + autobahn/client/tungstenite_case_7_3_3.json | 120 + autobahn/client/tungstenite_case_7_3_4.html | 293 + autobahn/client/tungstenite_case_7_3_4.json | 120 + autobahn/client/tungstenite_case_7_3_5.html | 297 + autobahn/client/tungstenite_case_7_3_5.json | 120 + autobahn/client/tungstenite_case_7_3_6.html | 290 + autobahn/client/tungstenite_case_7_3_6.json | 98 + autobahn/client/tungstenite_case_7_5_1.html | 288 + autobahn/client/tungstenite_case_7_5_1.json | 99 + autobahn/client/tungstenite_case_7_7_1.html | 293 + autobahn/client/tungstenite_case_7_7_1.json | 121 + autobahn/client/tungstenite_case_7_7_10.html | 293 + autobahn/client/tungstenite_case_7_7_10.json | 121 + autobahn/client/tungstenite_case_7_7_11.html | 293 + autobahn/client/tungstenite_case_7_7_11.json | 121 + autobahn/client/tungstenite_case_7_7_12.html | 293 + autobahn/client/tungstenite_case_7_7_12.json | 121 + autobahn/client/tungstenite_case_7_7_13.html | 293 + autobahn/client/tungstenite_case_7_7_13.json | 121 + autobahn/client/tungstenite_case_7_7_2.html | 293 + autobahn/client/tungstenite_case_7_7_2.json | 121 + autobahn/client/tungstenite_case_7_7_3.html | 293 + autobahn/client/tungstenite_case_7_7_3.json | 121 + autobahn/client/tungstenite_case_7_7_4.html | 293 + autobahn/client/tungstenite_case_7_7_4.json | 121 + autobahn/client/tungstenite_case_7_7_5.html | 293 + autobahn/client/tungstenite_case_7_7_5.json | 121 + autobahn/client/tungstenite_case_7_7_6.html | 293 + autobahn/client/tungstenite_case_7_7_6.json | 121 + autobahn/client/tungstenite_case_7_7_7.html | 293 + autobahn/client/tungstenite_case_7_7_7.json | 121 + autobahn/client/tungstenite_case_7_7_8.html | 293 + autobahn/client/tungstenite_case_7_7_8.json | 121 + autobahn/client/tungstenite_case_7_7_9.html | 293 + autobahn/client/tungstenite_case_7_7_9.json | 121 + autobahn/client/tungstenite_case_7_9_1.html | 293 + autobahn/client/tungstenite_case_7_9_1.json | 120 + autobahn/client/tungstenite_case_7_9_2.html | 293 + autobahn/client/tungstenite_case_7_9_2.json | 120 + autobahn/client/tungstenite_case_7_9_3.html | 293 + autobahn/client/tungstenite_case_7_9_3.json | 120 + autobahn/client/tungstenite_case_7_9_4.html | 293 + autobahn/client/tungstenite_case_7_9_4.json | 120 + autobahn/client/tungstenite_case_7_9_5.html | 293 + autobahn/client/tungstenite_case_7_9_5.json | 120 + autobahn/client/tungstenite_case_7_9_6.html | 293 + autobahn/client/tungstenite_case_7_9_6.json | 120 + autobahn/client/tungstenite_case_7_9_7.html | 293 + autobahn/client/tungstenite_case_7_9_7.json | 120 + autobahn/client/tungstenite_case_7_9_8.html | 293 + autobahn/client/tungstenite_case_7_9_8.json | 120 + autobahn/client/tungstenite_case_7_9_9.html | 293 + autobahn/client/tungstenite_case_7_9_9.json | 120 + autobahn/client/tungstenite_case_9_1_1.html | 298 + autobahn/client/tungstenite_case_9_1_1.json | 123 + autobahn/client/tungstenite_case_9_1_2.html | 300 + autobahn/client/tungstenite_case_9_1_2.json | 125 + autobahn/client/tungstenite_case_9_1_3.html | 300 + autobahn/client/tungstenite_case_9_1_3.json | 125 + autobahn/client/tungstenite_case_9_1_4.html | 300 + autobahn/client/tungstenite_case_9_1_4.json | 125 + autobahn/client/tungstenite_case_9_1_5.html | 300 + autobahn/client/tungstenite_case_9_1_5.json | 125 + autobahn/client/tungstenite_case_9_1_6.html | 300 + autobahn/client/tungstenite_case_9_1_6.json | 125 + autobahn/client/tungstenite_case_9_2_1.html | 298 + autobahn/client/tungstenite_case_9_2_1.json | 123 + autobahn/client/tungstenite_case_9_2_2.html | 300 + autobahn/client/tungstenite_case_9_2_2.json | 125 + autobahn/client/tungstenite_case_9_2_3.html | 300 + autobahn/client/tungstenite_case_9_2_3.json | 125 + autobahn/client/tungstenite_case_9_2_4.html | 300 + autobahn/client/tungstenite_case_9_2_4.json | 125 + autobahn/client/tungstenite_case_9_2_5.html | 300 + autobahn/client/tungstenite_case_9_2_5.json | 125 + autobahn/client/tungstenite_case_9_2_6.html | 298 + autobahn/client/tungstenite_case_9_2_6.json | 123 + autobahn/client/tungstenite_case_9_3_1.html | 301 + autobahn/client/tungstenite_case_9_3_1.json | 126 + autobahn/client/tungstenite_case_9_3_2.html | 302 + autobahn/client/tungstenite_case_9_3_2.json | 127 + autobahn/client/tungstenite_case_9_3_3.html | 302 + autobahn/client/tungstenite_case_9_3_3.json | 127 + autobahn/client/tungstenite_case_9_3_4.html | 302 + autobahn/client/tungstenite_case_9_3_4.json | 127 + autobahn/client/tungstenite_case_9_3_5.html | 302 + autobahn/client/tungstenite_case_9_3_5.json | 127 + autobahn/client/tungstenite_case_9_3_6.html | 302 + autobahn/client/tungstenite_case_9_3_6.json | 127 + autobahn/client/tungstenite_case_9_3_7.html | 302 + autobahn/client/tungstenite_case_9_3_7.json | 127 + autobahn/client/tungstenite_case_9_3_8.html | 302 + autobahn/client/tungstenite_case_9_3_8.json | 127 + autobahn/client/tungstenite_case_9_3_9.html | 300 + autobahn/client/tungstenite_case_9_3_9.json | 125 + autobahn/client/tungstenite_case_9_4_1.html | 302 + autobahn/client/tungstenite_case_9_4_1.json | 127 + autobahn/client/tungstenite_case_9_4_2.html | 302 + autobahn/client/tungstenite_case_9_4_2.json | 127 + autobahn/client/tungstenite_case_9_4_3.html | 302 + autobahn/client/tungstenite_case_9_4_3.json | 127 + autobahn/client/tungstenite_case_9_4_4.html | 302 + autobahn/client/tungstenite_case_9_4_4.json | 127 + autobahn/client/tungstenite_case_9_4_5.html | 302 + autobahn/client/tungstenite_case_9_4_5.json | 127 + autobahn/client/tungstenite_case_9_4_6.html | 302 + autobahn/client/tungstenite_case_9_4_6.json | 127 + autobahn/client/tungstenite_case_9_4_7.html | 302 + autobahn/client/tungstenite_case_9_4_7.json | 127 + autobahn/client/tungstenite_case_9_4_8.html | 302 + autobahn/client/tungstenite_case_9_4_8.json | 127 + autobahn/client/tungstenite_case_9_4_9.html | 300 + autobahn/client/tungstenite_case_9_4_9.json | 125 + autobahn/client/tungstenite_case_9_5_1.html | 301 + autobahn/client/tungstenite_case_9_5_1.json | 126 + autobahn/client/tungstenite_case_9_5_2.html | 301 + autobahn/client/tungstenite_case_9_5_2.json | 126 + autobahn/client/tungstenite_case_9_5_3.html | 301 + autobahn/client/tungstenite_case_9_5_3.json | 126 + autobahn/client/tungstenite_case_9_5_4.html | 301 + autobahn/client/tungstenite_case_9_5_4.json | 126 + autobahn/client/tungstenite_case_9_5_5.html | 301 + autobahn/client/tungstenite_case_9_5_5.json | 126 + autobahn/client/tungstenite_case_9_5_6.html | 301 + autobahn/client/tungstenite_case_9_5_6.json | 126 + autobahn/client/tungstenite_case_9_6_1.html | 301 + autobahn/client/tungstenite_case_9_6_1.json | 126 + autobahn/client/tungstenite_case_9_6_2.html | 301 + autobahn/client/tungstenite_case_9_6_2.json | 126 + autobahn/client/tungstenite_case_9_6_3.html | 301 + autobahn/client/tungstenite_case_9_6_3.json | 126 + autobahn/client/tungstenite_case_9_6_4.html | 301 + autobahn/client/tungstenite_case_9_6_4.json | 126 + autobahn/client/tungstenite_case_9_6_5.html | 301 + autobahn/client/tungstenite_case_9_6_5.json | 126 + autobahn/client/tungstenite_case_9_6_6.html | 301 + autobahn/client/tungstenite_case_9_6_6.json | 126 + autobahn/client/tungstenite_case_9_7_1.html | 299 + autobahn/client/tungstenite_case_9_7_1.json | 130 + autobahn/client/tungstenite_case_9_7_2.html | 299 + autobahn/client/tungstenite_case_9_7_2.json | 130 + autobahn/client/tungstenite_case_9_7_3.html | 299 + autobahn/client/tungstenite_case_9_7_3.json | 130 + autobahn/client/tungstenite_case_9_7_4.html | 299 + autobahn/client/tungstenite_case_9_7_4.json | 130 + autobahn/client/tungstenite_case_9_7_5.html | 299 + autobahn/client/tungstenite_case_9_7_5.json | 130 + autobahn/client/tungstenite_case_9_7_6.html | 299 + autobahn/client/tungstenite_case_9_7_6.json | 130 + autobahn/client/tungstenite_case_9_8_1.html | 299 + autobahn/client/tungstenite_case_9_8_1.json | 130 + autobahn/client/tungstenite_case_9_8_2.html | 299 + autobahn/client/tungstenite_case_9_8_2.json | 130 + autobahn/client/tungstenite_case_9_8_3.html | 299 + autobahn/client/tungstenite_case_9_8_3.json | 130 + autobahn/client/tungstenite_case_9_8_4.html | 299 + autobahn/client/tungstenite_case_9_8_4.json | 130 + autobahn/client/tungstenite_case_9_8_5.html | 299 + autobahn/client/tungstenite_case_9_8_5.json | 130 + autobahn/client/tungstenite_case_9_8_6.html | 299 + autobahn/client/tungstenite_case_9_8_6.json | 130 + src/error.rs | 14 +- src/protocol/frame/frame.rs | 26 + src/protocol/message.rs | 25 + src/protocol/mod.rs | 245 +- 1040 files changed, 477097 insertions(+), 26 deletions(-) create mode 100644 autobahn/client/index.html create mode 100644 autobahn/client/index.json create mode 100644 autobahn/client/tungstenite_case_10_1_1.html create mode 100644 autobahn/client/tungstenite_case_10_1_1.json create mode 100644 autobahn/client/tungstenite_case_12_1_1.html create mode 100644 autobahn/client/tungstenite_case_12_1_1.json create mode 100644 autobahn/client/tungstenite_case_12_1_10.html create mode 100644 autobahn/client/tungstenite_case_12_1_10.json create mode 100644 autobahn/client/tungstenite_case_12_1_11.html create mode 100644 autobahn/client/tungstenite_case_12_1_11.json create mode 100644 autobahn/client/tungstenite_case_12_1_12.html create mode 100644 autobahn/client/tungstenite_case_12_1_12.json create mode 100644 autobahn/client/tungstenite_case_12_1_13.html create mode 100644 autobahn/client/tungstenite_case_12_1_13.json create mode 100644 autobahn/client/tungstenite_case_12_1_14.html create mode 100644 autobahn/client/tungstenite_case_12_1_14.json create mode 100644 autobahn/client/tungstenite_case_12_1_15.html create mode 100644 autobahn/client/tungstenite_case_12_1_15.json create mode 100644 autobahn/client/tungstenite_case_12_1_16.html create mode 100644 autobahn/client/tungstenite_case_12_1_16.json create mode 100644 autobahn/client/tungstenite_case_12_1_17.html create mode 100644 autobahn/client/tungstenite_case_12_1_17.json create mode 100644 autobahn/client/tungstenite_case_12_1_18.html create mode 100644 autobahn/client/tungstenite_case_12_1_18.json create mode 100644 autobahn/client/tungstenite_case_12_1_2.html create mode 100644 autobahn/client/tungstenite_case_12_1_2.json create mode 100644 autobahn/client/tungstenite_case_12_1_3.html create mode 100644 autobahn/client/tungstenite_case_12_1_3.json create mode 100644 autobahn/client/tungstenite_case_12_1_4.html create mode 100644 autobahn/client/tungstenite_case_12_1_4.json create mode 100644 autobahn/client/tungstenite_case_12_1_5.html create mode 100644 autobahn/client/tungstenite_case_12_1_5.json create mode 100644 autobahn/client/tungstenite_case_12_1_6.html create mode 100644 autobahn/client/tungstenite_case_12_1_6.json create mode 100644 autobahn/client/tungstenite_case_12_1_7.html create mode 100644 autobahn/client/tungstenite_case_12_1_7.json create mode 100644 autobahn/client/tungstenite_case_12_1_8.html create mode 100644 autobahn/client/tungstenite_case_12_1_8.json create mode 100644 autobahn/client/tungstenite_case_12_1_9.html create mode 100644 autobahn/client/tungstenite_case_12_1_9.json create mode 100644 autobahn/client/tungstenite_case_12_2_1.html create mode 100644 autobahn/client/tungstenite_case_12_2_1.json create mode 100644 autobahn/client/tungstenite_case_12_2_10.html create mode 100644 autobahn/client/tungstenite_case_12_2_10.json create mode 100644 autobahn/client/tungstenite_case_12_2_11.html create mode 100644 autobahn/client/tungstenite_case_12_2_11.json create mode 100644 autobahn/client/tungstenite_case_12_2_12.html create mode 100644 autobahn/client/tungstenite_case_12_2_12.json create mode 100644 autobahn/client/tungstenite_case_12_2_13.html create mode 100644 autobahn/client/tungstenite_case_12_2_13.json create mode 100644 autobahn/client/tungstenite_case_12_2_14.html create mode 100644 autobahn/client/tungstenite_case_12_2_14.json create mode 100644 autobahn/client/tungstenite_case_12_2_15.html create mode 100644 autobahn/client/tungstenite_case_12_2_15.json create mode 100644 autobahn/client/tungstenite_case_12_2_16.html create mode 100644 autobahn/client/tungstenite_case_12_2_16.json create mode 100644 autobahn/client/tungstenite_case_12_2_17.html create mode 100644 autobahn/client/tungstenite_case_12_2_17.json create mode 100644 autobahn/client/tungstenite_case_12_2_18.html create mode 100644 autobahn/client/tungstenite_case_12_2_18.json create mode 100644 autobahn/client/tungstenite_case_12_2_2.html create mode 100644 autobahn/client/tungstenite_case_12_2_2.json create mode 100644 autobahn/client/tungstenite_case_12_2_3.html create mode 100644 autobahn/client/tungstenite_case_12_2_3.json create mode 100644 autobahn/client/tungstenite_case_12_2_4.html create mode 100644 autobahn/client/tungstenite_case_12_2_4.json create mode 100644 autobahn/client/tungstenite_case_12_2_5.html create mode 100644 autobahn/client/tungstenite_case_12_2_5.json create mode 100644 autobahn/client/tungstenite_case_12_2_6.html create mode 100644 autobahn/client/tungstenite_case_12_2_6.json create mode 100644 autobahn/client/tungstenite_case_12_2_7.html create mode 100644 autobahn/client/tungstenite_case_12_2_7.json create mode 100644 autobahn/client/tungstenite_case_12_2_8.html create mode 100644 autobahn/client/tungstenite_case_12_2_8.json create mode 100644 autobahn/client/tungstenite_case_12_2_9.html create mode 100644 autobahn/client/tungstenite_case_12_2_9.json create mode 100644 autobahn/client/tungstenite_case_12_3_1.html create mode 100644 autobahn/client/tungstenite_case_12_3_1.json create mode 100644 autobahn/client/tungstenite_case_12_3_10.html create mode 100644 autobahn/client/tungstenite_case_12_3_10.json create mode 100644 autobahn/client/tungstenite_case_12_3_11.html create mode 100644 autobahn/client/tungstenite_case_12_3_11.json create mode 100644 autobahn/client/tungstenite_case_12_3_12.html create mode 100644 autobahn/client/tungstenite_case_12_3_12.json create mode 100644 autobahn/client/tungstenite_case_12_3_13.html create mode 100644 autobahn/client/tungstenite_case_12_3_13.json create mode 100644 autobahn/client/tungstenite_case_12_3_14.html create mode 100644 autobahn/client/tungstenite_case_12_3_14.json create mode 100644 autobahn/client/tungstenite_case_12_3_15.html create mode 100644 autobahn/client/tungstenite_case_12_3_15.json create mode 100644 autobahn/client/tungstenite_case_12_3_16.html create mode 100644 autobahn/client/tungstenite_case_12_3_16.json create mode 100644 autobahn/client/tungstenite_case_12_3_17.html create mode 100644 autobahn/client/tungstenite_case_12_3_17.json create mode 100644 autobahn/client/tungstenite_case_12_3_18.html create mode 100644 autobahn/client/tungstenite_case_12_3_18.json create mode 100644 autobahn/client/tungstenite_case_12_3_2.html create mode 100644 autobahn/client/tungstenite_case_12_3_2.json create mode 100644 autobahn/client/tungstenite_case_12_3_3.html create mode 100644 autobahn/client/tungstenite_case_12_3_3.json create mode 100644 autobahn/client/tungstenite_case_12_3_4.html create mode 100644 autobahn/client/tungstenite_case_12_3_4.json create mode 100644 autobahn/client/tungstenite_case_12_3_5.html create mode 100644 autobahn/client/tungstenite_case_12_3_5.json create mode 100644 autobahn/client/tungstenite_case_12_3_6.html create mode 100644 autobahn/client/tungstenite_case_12_3_6.json create mode 100644 autobahn/client/tungstenite_case_12_3_7.html create mode 100644 autobahn/client/tungstenite_case_12_3_7.json create mode 100644 autobahn/client/tungstenite_case_12_3_8.html create mode 100644 autobahn/client/tungstenite_case_12_3_8.json create mode 100644 autobahn/client/tungstenite_case_12_3_9.html create mode 100644 autobahn/client/tungstenite_case_12_3_9.json create mode 100644 autobahn/client/tungstenite_case_12_4_1.html create mode 100644 autobahn/client/tungstenite_case_12_4_1.json create mode 100644 autobahn/client/tungstenite_case_12_4_10.html create mode 100644 autobahn/client/tungstenite_case_12_4_10.json create mode 100644 autobahn/client/tungstenite_case_12_4_11.html create mode 100644 autobahn/client/tungstenite_case_12_4_11.json create mode 100644 autobahn/client/tungstenite_case_12_4_12.html create mode 100644 autobahn/client/tungstenite_case_12_4_12.json create mode 100644 autobahn/client/tungstenite_case_12_4_13.html create mode 100644 autobahn/client/tungstenite_case_12_4_13.json create mode 100644 autobahn/client/tungstenite_case_12_4_14.html create mode 100644 autobahn/client/tungstenite_case_12_4_14.json create mode 100644 autobahn/client/tungstenite_case_12_4_15.html create mode 100644 autobahn/client/tungstenite_case_12_4_15.json create mode 100644 autobahn/client/tungstenite_case_12_4_16.html create mode 100644 autobahn/client/tungstenite_case_12_4_16.json create mode 100644 autobahn/client/tungstenite_case_12_4_17.html create mode 100644 autobahn/client/tungstenite_case_12_4_17.json create mode 100644 autobahn/client/tungstenite_case_12_4_18.html create mode 100644 autobahn/client/tungstenite_case_12_4_18.json create mode 100644 autobahn/client/tungstenite_case_12_4_2.html create mode 100644 autobahn/client/tungstenite_case_12_4_2.json create mode 100644 autobahn/client/tungstenite_case_12_4_3.html create mode 100644 autobahn/client/tungstenite_case_12_4_3.json create mode 100644 autobahn/client/tungstenite_case_12_4_4.html create mode 100644 autobahn/client/tungstenite_case_12_4_4.json create mode 100644 autobahn/client/tungstenite_case_12_4_5.html create mode 100644 autobahn/client/tungstenite_case_12_4_5.json create mode 100644 autobahn/client/tungstenite_case_12_4_6.html create mode 100644 autobahn/client/tungstenite_case_12_4_6.json create mode 100644 autobahn/client/tungstenite_case_12_4_7.html create mode 100644 autobahn/client/tungstenite_case_12_4_7.json create mode 100644 autobahn/client/tungstenite_case_12_4_8.html create mode 100644 autobahn/client/tungstenite_case_12_4_8.json create mode 100644 autobahn/client/tungstenite_case_12_4_9.html create mode 100644 autobahn/client/tungstenite_case_12_4_9.json create mode 100644 autobahn/client/tungstenite_case_12_5_1.html create mode 100644 autobahn/client/tungstenite_case_12_5_1.json create mode 100644 autobahn/client/tungstenite_case_12_5_10.html create mode 100644 autobahn/client/tungstenite_case_12_5_10.json create mode 100644 autobahn/client/tungstenite_case_12_5_11.html create mode 100644 autobahn/client/tungstenite_case_12_5_11.json create mode 100644 autobahn/client/tungstenite_case_12_5_12.html create mode 100644 autobahn/client/tungstenite_case_12_5_12.json create mode 100644 autobahn/client/tungstenite_case_12_5_13.html create mode 100644 autobahn/client/tungstenite_case_12_5_13.json create mode 100644 autobahn/client/tungstenite_case_12_5_14.html create mode 100644 autobahn/client/tungstenite_case_12_5_14.json create mode 100644 autobahn/client/tungstenite_case_12_5_15.html create mode 100644 autobahn/client/tungstenite_case_12_5_15.json create mode 100644 autobahn/client/tungstenite_case_12_5_16.html create mode 100644 autobahn/client/tungstenite_case_12_5_16.json create mode 100644 autobahn/client/tungstenite_case_12_5_17.html create mode 100644 autobahn/client/tungstenite_case_12_5_17.json create mode 100644 autobahn/client/tungstenite_case_12_5_18.html create mode 100644 autobahn/client/tungstenite_case_12_5_18.json create mode 100644 autobahn/client/tungstenite_case_12_5_2.html create mode 100644 autobahn/client/tungstenite_case_12_5_2.json create mode 100644 autobahn/client/tungstenite_case_12_5_3.html create mode 100644 autobahn/client/tungstenite_case_12_5_3.json create mode 100644 autobahn/client/tungstenite_case_12_5_4.html create mode 100644 autobahn/client/tungstenite_case_12_5_4.json create mode 100644 autobahn/client/tungstenite_case_12_5_5.html create mode 100644 autobahn/client/tungstenite_case_12_5_5.json create mode 100644 autobahn/client/tungstenite_case_12_5_6.html create mode 100644 autobahn/client/tungstenite_case_12_5_6.json create mode 100644 autobahn/client/tungstenite_case_12_5_7.html create mode 100644 autobahn/client/tungstenite_case_12_5_7.json create mode 100644 autobahn/client/tungstenite_case_12_5_8.html create mode 100644 autobahn/client/tungstenite_case_12_5_8.json create mode 100644 autobahn/client/tungstenite_case_12_5_9.html create mode 100644 autobahn/client/tungstenite_case_12_5_9.json create mode 100644 autobahn/client/tungstenite_case_13_1_1.html create mode 100644 autobahn/client/tungstenite_case_13_1_1.json create mode 100644 autobahn/client/tungstenite_case_13_1_10.html create mode 100644 autobahn/client/tungstenite_case_13_1_10.json create mode 100644 autobahn/client/tungstenite_case_13_1_11.html create mode 100644 autobahn/client/tungstenite_case_13_1_11.json create mode 100644 autobahn/client/tungstenite_case_13_1_12.html create mode 100644 autobahn/client/tungstenite_case_13_1_12.json create mode 100644 autobahn/client/tungstenite_case_13_1_13.html create mode 100644 autobahn/client/tungstenite_case_13_1_13.json create mode 100644 autobahn/client/tungstenite_case_13_1_14.html create mode 100644 autobahn/client/tungstenite_case_13_1_14.json create mode 100644 autobahn/client/tungstenite_case_13_1_15.html create mode 100644 autobahn/client/tungstenite_case_13_1_15.json create mode 100644 autobahn/client/tungstenite_case_13_1_16.html create mode 100644 autobahn/client/tungstenite_case_13_1_16.json create mode 100644 autobahn/client/tungstenite_case_13_1_17.html create mode 100644 autobahn/client/tungstenite_case_13_1_17.json create mode 100644 autobahn/client/tungstenite_case_13_1_18.html create mode 100644 autobahn/client/tungstenite_case_13_1_18.json create mode 100644 autobahn/client/tungstenite_case_13_1_2.html create mode 100644 autobahn/client/tungstenite_case_13_1_2.json create mode 100644 autobahn/client/tungstenite_case_13_1_3.html create mode 100644 autobahn/client/tungstenite_case_13_1_3.json create mode 100644 autobahn/client/tungstenite_case_13_1_4.html create mode 100644 autobahn/client/tungstenite_case_13_1_4.json create mode 100644 autobahn/client/tungstenite_case_13_1_5.html create mode 100644 autobahn/client/tungstenite_case_13_1_5.json create mode 100644 autobahn/client/tungstenite_case_13_1_6.html create mode 100644 autobahn/client/tungstenite_case_13_1_6.json create mode 100644 autobahn/client/tungstenite_case_13_1_7.html create mode 100644 autobahn/client/tungstenite_case_13_1_7.json create mode 100644 autobahn/client/tungstenite_case_13_1_8.html create mode 100644 autobahn/client/tungstenite_case_13_1_8.json create mode 100644 autobahn/client/tungstenite_case_13_1_9.html create mode 100644 autobahn/client/tungstenite_case_13_1_9.json create mode 100644 autobahn/client/tungstenite_case_13_2_1.html create mode 100644 autobahn/client/tungstenite_case_13_2_1.json create mode 100644 autobahn/client/tungstenite_case_13_2_10.html create mode 100644 autobahn/client/tungstenite_case_13_2_10.json create mode 100644 autobahn/client/tungstenite_case_13_2_11.html create mode 100644 autobahn/client/tungstenite_case_13_2_11.json create mode 100644 autobahn/client/tungstenite_case_13_2_12.html create mode 100644 autobahn/client/tungstenite_case_13_2_12.json create mode 100644 autobahn/client/tungstenite_case_13_2_13.html create mode 100644 autobahn/client/tungstenite_case_13_2_13.json create mode 100644 autobahn/client/tungstenite_case_13_2_14.html create mode 100644 autobahn/client/tungstenite_case_13_2_14.json create mode 100644 autobahn/client/tungstenite_case_13_2_15.html create mode 100644 autobahn/client/tungstenite_case_13_2_15.json create mode 100644 autobahn/client/tungstenite_case_13_2_16.html create mode 100644 autobahn/client/tungstenite_case_13_2_16.json create mode 100644 autobahn/client/tungstenite_case_13_2_17.html create mode 100644 autobahn/client/tungstenite_case_13_2_17.json create mode 100644 autobahn/client/tungstenite_case_13_2_18.html create mode 100644 autobahn/client/tungstenite_case_13_2_18.json create mode 100644 autobahn/client/tungstenite_case_13_2_2.html create mode 100644 autobahn/client/tungstenite_case_13_2_2.json create mode 100644 autobahn/client/tungstenite_case_13_2_3.html create mode 100644 autobahn/client/tungstenite_case_13_2_3.json create mode 100644 autobahn/client/tungstenite_case_13_2_4.html create mode 100644 autobahn/client/tungstenite_case_13_2_4.json create mode 100644 autobahn/client/tungstenite_case_13_2_5.html create mode 100644 autobahn/client/tungstenite_case_13_2_5.json create mode 100644 autobahn/client/tungstenite_case_13_2_6.html create mode 100644 autobahn/client/tungstenite_case_13_2_6.json create mode 100644 autobahn/client/tungstenite_case_13_2_7.html create mode 100644 autobahn/client/tungstenite_case_13_2_7.json create mode 100644 autobahn/client/tungstenite_case_13_2_8.html create mode 100644 autobahn/client/tungstenite_case_13_2_8.json create mode 100644 autobahn/client/tungstenite_case_13_2_9.html create mode 100644 autobahn/client/tungstenite_case_13_2_9.json create mode 100644 autobahn/client/tungstenite_case_13_3_1.html create mode 100644 autobahn/client/tungstenite_case_13_3_1.json create mode 100644 autobahn/client/tungstenite_case_13_3_10.html create mode 100644 autobahn/client/tungstenite_case_13_3_10.json create mode 100644 autobahn/client/tungstenite_case_13_3_11.html create mode 100644 autobahn/client/tungstenite_case_13_3_11.json create mode 100644 autobahn/client/tungstenite_case_13_3_12.html create mode 100644 autobahn/client/tungstenite_case_13_3_12.json create mode 100644 autobahn/client/tungstenite_case_13_3_13.html create mode 100644 autobahn/client/tungstenite_case_13_3_13.json create mode 100644 autobahn/client/tungstenite_case_13_3_14.html create mode 100644 autobahn/client/tungstenite_case_13_3_14.json create mode 100644 autobahn/client/tungstenite_case_13_3_15.html create mode 100644 autobahn/client/tungstenite_case_13_3_15.json create mode 100644 autobahn/client/tungstenite_case_13_3_16.html create mode 100644 autobahn/client/tungstenite_case_13_3_16.json create mode 100644 autobahn/client/tungstenite_case_13_3_17.html create mode 100644 autobahn/client/tungstenite_case_13_3_17.json create mode 100644 autobahn/client/tungstenite_case_13_3_18.html create mode 100644 autobahn/client/tungstenite_case_13_3_18.json create mode 100644 autobahn/client/tungstenite_case_13_3_2.html create mode 100644 autobahn/client/tungstenite_case_13_3_2.json create mode 100644 autobahn/client/tungstenite_case_13_3_3.html create mode 100644 autobahn/client/tungstenite_case_13_3_3.json create mode 100644 autobahn/client/tungstenite_case_13_3_4.html create mode 100644 autobahn/client/tungstenite_case_13_3_4.json create mode 100644 autobahn/client/tungstenite_case_13_3_5.html create mode 100644 autobahn/client/tungstenite_case_13_3_5.json create mode 100644 autobahn/client/tungstenite_case_13_3_6.html create mode 100644 autobahn/client/tungstenite_case_13_3_6.json create mode 100644 autobahn/client/tungstenite_case_13_3_7.html create mode 100644 autobahn/client/tungstenite_case_13_3_7.json create mode 100644 autobahn/client/tungstenite_case_13_3_8.html create mode 100644 autobahn/client/tungstenite_case_13_3_8.json create mode 100644 autobahn/client/tungstenite_case_13_3_9.html create mode 100644 autobahn/client/tungstenite_case_13_3_9.json create mode 100644 autobahn/client/tungstenite_case_13_4_1.html create mode 100644 autobahn/client/tungstenite_case_13_4_1.json create mode 100644 autobahn/client/tungstenite_case_13_4_10.html create mode 100644 autobahn/client/tungstenite_case_13_4_10.json create mode 100644 autobahn/client/tungstenite_case_13_4_11.html create mode 100644 autobahn/client/tungstenite_case_13_4_11.json create mode 100644 autobahn/client/tungstenite_case_13_4_12.html create mode 100644 autobahn/client/tungstenite_case_13_4_12.json create mode 100644 autobahn/client/tungstenite_case_13_4_13.html create mode 100644 autobahn/client/tungstenite_case_13_4_13.json create mode 100644 autobahn/client/tungstenite_case_13_4_14.html create mode 100644 autobahn/client/tungstenite_case_13_4_14.json create mode 100644 autobahn/client/tungstenite_case_13_4_15.html create mode 100644 autobahn/client/tungstenite_case_13_4_15.json create mode 100644 autobahn/client/tungstenite_case_13_4_16.html create mode 100644 autobahn/client/tungstenite_case_13_4_16.json create mode 100644 autobahn/client/tungstenite_case_13_4_17.html create mode 100644 autobahn/client/tungstenite_case_13_4_17.json create mode 100644 autobahn/client/tungstenite_case_13_4_18.html create mode 100644 autobahn/client/tungstenite_case_13_4_18.json create mode 100644 autobahn/client/tungstenite_case_13_4_2.html create mode 100644 autobahn/client/tungstenite_case_13_4_2.json create mode 100644 autobahn/client/tungstenite_case_13_4_3.html create mode 100644 autobahn/client/tungstenite_case_13_4_3.json create mode 100644 autobahn/client/tungstenite_case_13_4_4.html create mode 100644 autobahn/client/tungstenite_case_13_4_4.json create mode 100644 autobahn/client/tungstenite_case_13_4_5.html create mode 100644 autobahn/client/tungstenite_case_13_4_5.json create mode 100644 autobahn/client/tungstenite_case_13_4_6.html create mode 100644 autobahn/client/tungstenite_case_13_4_6.json create mode 100644 autobahn/client/tungstenite_case_13_4_7.html create mode 100644 autobahn/client/tungstenite_case_13_4_7.json create mode 100644 autobahn/client/tungstenite_case_13_4_8.html create mode 100644 autobahn/client/tungstenite_case_13_4_8.json create mode 100644 autobahn/client/tungstenite_case_13_4_9.html create mode 100644 autobahn/client/tungstenite_case_13_4_9.json create mode 100644 autobahn/client/tungstenite_case_13_5_1.html create mode 100644 autobahn/client/tungstenite_case_13_5_1.json create mode 100644 autobahn/client/tungstenite_case_13_5_10.html create mode 100644 autobahn/client/tungstenite_case_13_5_10.json create mode 100644 autobahn/client/tungstenite_case_13_5_11.html create mode 100644 autobahn/client/tungstenite_case_13_5_11.json create mode 100644 autobahn/client/tungstenite_case_13_5_12.html create mode 100644 autobahn/client/tungstenite_case_13_5_12.json create mode 100644 autobahn/client/tungstenite_case_13_5_13.html create mode 100644 autobahn/client/tungstenite_case_13_5_13.json create mode 100644 autobahn/client/tungstenite_case_13_5_14.html create mode 100644 autobahn/client/tungstenite_case_13_5_14.json create mode 100644 autobahn/client/tungstenite_case_13_5_15.html create mode 100644 autobahn/client/tungstenite_case_13_5_15.json create mode 100644 autobahn/client/tungstenite_case_13_5_16.html create mode 100644 autobahn/client/tungstenite_case_13_5_16.json create mode 100644 autobahn/client/tungstenite_case_13_5_17.html create mode 100644 autobahn/client/tungstenite_case_13_5_17.json create mode 100644 autobahn/client/tungstenite_case_13_5_18.html create mode 100644 autobahn/client/tungstenite_case_13_5_18.json create mode 100644 autobahn/client/tungstenite_case_13_5_2.html create mode 100644 autobahn/client/tungstenite_case_13_5_2.json create mode 100644 autobahn/client/tungstenite_case_13_5_3.html create mode 100644 autobahn/client/tungstenite_case_13_5_3.json create mode 100644 autobahn/client/tungstenite_case_13_5_4.html create mode 100644 autobahn/client/tungstenite_case_13_5_4.json create mode 100644 autobahn/client/tungstenite_case_13_5_5.html create mode 100644 autobahn/client/tungstenite_case_13_5_5.json create mode 100644 autobahn/client/tungstenite_case_13_5_6.html create mode 100644 autobahn/client/tungstenite_case_13_5_6.json create mode 100644 autobahn/client/tungstenite_case_13_5_7.html create mode 100644 autobahn/client/tungstenite_case_13_5_7.json create mode 100644 autobahn/client/tungstenite_case_13_5_8.html create mode 100644 autobahn/client/tungstenite_case_13_5_8.json create mode 100644 autobahn/client/tungstenite_case_13_5_9.html create mode 100644 autobahn/client/tungstenite_case_13_5_9.json create mode 100644 autobahn/client/tungstenite_case_13_6_1.html create mode 100644 autobahn/client/tungstenite_case_13_6_1.json create mode 100644 autobahn/client/tungstenite_case_13_6_10.html create mode 100644 autobahn/client/tungstenite_case_13_6_10.json create mode 100644 autobahn/client/tungstenite_case_13_6_11.html create mode 100644 autobahn/client/tungstenite_case_13_6_11.json create mode 100644 autobahn/client/tungstenite_case_13_6_12.html create mode 100644 autobahn/client/tungstenite_case_13_6_12.json create mode 100644 autobahn/client/tungstenite_case_13_6_13.html create mode 100644 autobahn/client/tungstenite_case_13_6_13.json create mode 100644 autobahn/client/tungstenite_case_13_6_14.html create mode 100644 autobahn/client/tungstenite_case_13_6_14.json create mode 100644 autobahn/client/tungstenite_case_13_6_15.html create mode 100644 autobahn/client/tungstenite_case_13_6_15.json create mode 100644 autobahn/client/tungstenite_case_13_6_16.html create mode 100644 autobahn/client/tungstenite_case_13_6_16.json create mode 100644 autobahn/client/tungstenite_case_13_6_17.html create mode 100644 autobahn/client/tungstenite_case_13_6_17.json create mode 100644 autobahn/client/tungstenite_case_13_6_18.html create mode 100644 autobahn/client/tungstenite_case_13_6_18.json create mode 100644 autobahn/client/tungstenite_case_13_6_2.html create mode 100644 autobahn/client/tungstenite_case_13_6_2.json create mode 100644 autobahn/client/tungstenite_case_13_6_3.html create mode 100644 autobahn/client/tungstenite_case_13_6_3.json create mode 100644 autobahn/client/tungstenite_case_13_6_4.html create mode 100644 autobahn/client/tungstenite_case_13_6_4.json create mode 100644 autobahn/client/tungstenite_case_13_6_5.html create mode 100644 autobahn/client/tungstenite_case_13_6_5.json create mode 100644 autobahn/client/tungstenite_case_13_6_6.html create mode 100644 autobahn/client/tungstenite_case_13_6_6.json create mode 100644 autobahn/client/tungstenite_case_13_6_7.html create mode 100644 autobahn/client/tungstenite_case_13_6_7.json create mode 100644 autobahn/client/tungstenite_case_13_6_8.html create mode 100644 autobahn/client/tungstenite_case_13_6_8.json create mode 100644 autobahn/client/tungstenite_case_13_6_9.html create mode 100644 autobahn/client/tungstenite_case_13_6_9.json create mode 100644 autobahn/client/tungstenite_case_13_7_1.html create mode 100644 autobahn/client/tungstenite_case_13_7_1.json create mode 100644 autobahn/client/tungstenite_case_13_7_10.html create mode 100644 autobahn/client/tungstenite_case_13_7_10.json create mode 100644 autobahn/client/tungstenite_case_13_7_11.html create mode 100644 autobahn/client/tungstenite_case_13_7_11.json create mode 100644 autobahn/client/tungstenite_case_13_7_12.html create mode 100644 autobahn/client/tungstenite_case_13_7_12.json create mode 100644 autobahn/client/tungstenite_case_13_7_13.html create mode 100644 autobahn/client/tungstenite_case_13_7_13.json create mode 100644 autobahn/client/tungstenite_case_13_7_14.html create mode 100644 autobahn/client/tungstenite_case_13_7_14.json create mode 100644 autobahn/client/tungstenite_case_13_7_15.html create mode 100644 autobahn/client/tungstenite_case_13_7_15.json create mode 100644 autobahn/client/tungstenite_case_13_7_16.html create mode 100644 autobahn/client/tungstenite_case_13_7_16.json create mode 100644 autobahn/client/tungstenite_case_13_7_17.html create mode 100644 autobahn/client/tungstenite_case_13_7_17.json create mode 100644 autobahn/client/tungstenite_case_13_7_18.html create mode 100644 autobahn/client/tungstenite_case_13_7_18.json create mode 100644 autobahn/client/tungstenite_case_13_7_2.html create mode 100644 autobahn/client/tungstenite_case_13_7_2.json create mode 100644 autobahn/client/tungstenite_case_13_7_3.html create mode 100644 autobahn/client/tungstenite_case_13_7_3.json create mode 100644 autobahn/client/tungstenite_case_13_7_4.html create mode 100644 autobahn/client/tungstenite_case_13_7_4.json create mode 100644 autobahn/client/tungstenite_case_13_7_5.html create mode 100644 autobahn/client/tungstenite_case_13_7_5.json create mode 100644 autobahn/client/tungstenite_case_13_7_6.html create mode 100644 autobahn/client/tungstenite_case_13_7_6.json create mode 100644 autobahn/client/tungstenite_case_13_7_7.html create mode 100644 autobahn/client/tungstenite_case_13_7_7.json create mode 100644 autobahn/client/tungstenite_case_13_7_8.html create mode 100644 autobahn/client/tungstenite_case_13_7_8.json create mode 100644 autobahn/client/tungstenite_case_13_7_9.html create mode 100644 autobahn/client/tungstenite_case_13_7_9.json create mode 100644 autobahn/client/tungstenite_case_1_1_1.html create mode 100644 autobahn/client/tungstenite_case_1_1_1.json create mode 100644 autobahn/client/tungstenite_case_1_1_2.html create mode 100644 autobahn/client/tungstenite_case_1_1_2.json create mode 100644 autobahn/client/tungstenite_case_1_1_3.html create mode 100644 autobahn/client/tungstenite_case_1_1_3.json create mode 100644 autobahn/client/tungstenite_case_1_1_4.html create mode 100644 autobahn/client/tungstenite_case_1_1_4.json create mode 100644 autobahn/client/tungstenite_case_1_1_5.html create mode 100644 autobahn/client/tungstenite_case_1_1_5.json create mode 100644 autobahn/client/tungstenite_case_1_1_6.html create mode 100644 autobahn/client/tungstenite_case_1_1_6.json create mode 100644 autobahn/client/tungstenite_case_1_1_7.html create mode 100644 autobahn/client/tungstenite_case_1_1_7.json create mode 100644 autobahn/client/tungstenite_case_1_1_8.html create mode 100644 autobahn/client/tungstenite_case_1_1_8.json create mode 100644 autobahn/client/tungstenite_case_1_2_1.html create mode 100644 autobahn/client/tungstenite_case_1_2_1.json create mode 100644 autobahn/client/tungstenite_case_1_2_2.html create mode 100644 autobahn/client/tungstenite_case_1_2_2.json create mode 100644 autobahn/client/tungstenite_case_1_2_3.html create mode 100644 autobahn/client/tungstenite_case_1_2_3.json create mode 100644 autobahn/client/tungstenite_case_1_2_4.html create mode 100644 autobahn/client/tungstenite_case_1_2_4.json create mode 100644 autobahn/client/tungstenite_case_1_2_5.html create mode 100644 autobahn/client/tungstenite_case_1_2_5.json create mode 100644 autobahn/client/tungstenite_case_1_2_6.html create mode 100644 autobahn/client/tungstenite_case_1_2_6.json create mode 100644 autobahn/client/tungstenite_case_1_2_7.html create mode 100644 autobahn/client/tungstenite_case_1_2_7.json create mode 100644 autobahn/client/tungstenite_case_1_2_8.html create mode 100644 autobahn/client/tungstenite_case_1_2_8.json create mode 100644 autobahn/client/tungstenite_case_2_1.html create mode 100644 autobahn/client/tungstenite_case_2_1.json create mode 100644 autobahn/client/tungstenite_case_2_10.html create mode 100644 autobahn/client/tungstenite_case_2_10.json create mode 100644 autobahn/client/tungstenite_case_2_11.html create mode 100644 autobahn/client/tungstenite_case_2_11.json create mode 100644 autobahn/client/tungstenite_case_2_2.html create mode 100644 autobahn/client/tungstenite_case_2_2.json create mode 100644 autobahn/client/tungstenite_case_2_3.html create mode 100644 autobahn/client/tungstenite_case_2_3.json create mode 100644 autobahn/client/tungstenite_case_2_4.html create mode 100644 autobahn/client/tungstenite_case_2_4.json create mode 100644 autobahn/client/tungstenite_case_2_5.html create mode 100644 autobahn/client/tungstenite_case_2_5.json create mode 100644 autobahn/client/tungstenite_case_2_6.html create mode 100644 autobahn/client/tungstenite_case_2_6.json create mode 100644 autobahn/client/tungstenite_case_2_7.html create mode 100644 autobahn/client/tungstenite_case_2_7.json create mode 100644 autobahn/client/tungstenite_case_2_8.html create mode 100644 autobahn/client/tungstenite_case_2_8.json create mode 100644 autobahn/client/tungstenite_case_2_9.html create mode 100644 autobahn/client/tungstenite_case_2_9.json create mode 100644 autobahn/client/tungstenite_case_3_1.html create mode 100644 autobahn/client/tungstenite_case_3_1.json create mode 100644 autobahn/client/tungstenite_case_3_2.html create mode 100644 autobahn/client/tungstenite_case_3_2.json create mode 100644 autobahn/client/tungstenite_case_3_3.html create mode 100644 autobahn/client/tungstenite_case_3_3.json create mode 100644 autobahn/client/tungstenite_case_3_4.html create mode 100644 autobahn/client/tungstenite_case_3_4.json create mode 100644 autobahn/client/tungstenite_case_3_5.html create mode 100644 autobahn/client/tungstenite_case_3_5.json create mode 100644 autobahn/client/tungstenite_case_3_6.html create mode 100644 autobahn/client/tungstenite_case_3_6.json create mode 100644 autobahn/client/tungstenite_case_3_7.html create mode 100644 autobahn/client/tungstenite_case_3_7.json create mode 100644 autobahn/client/tungstenite_case_4_1_1.html create mode 100644 autobahn/client/tungstenite_case_4_1_1.json create mode 100644 autobahn/client/tungstenite_case_4_1_2.html create mode 100644 autobahn/client/tungstenite_case_4_1_2.json create mode 100644 autobahn/client/tungstenite_case_4_1_3.html create mode 100644 autobahn/client/tungstenite_case_4_1_3.json create mode 100644 autobahn/client/tungstenite_case_4_1_4.html create mode 100644 autobahn/client/tungstenite_case_4_1_4.json create mode 100644 autobahn/client/tungstenite_case_4_1_5.html create mode 100644 autobahn/client/tungstenite_case_4_1_5.json create mode 100644 autobahn/client/tungstenite_case_4_2_1.html create mode 100644 autobahn/client/tungstenite_case_4_2_1.json create mode 100644 autobahn/client/tungstenite_case_4_2_2.html create mode 100644 autobahn/client/tungstenite_case_4_2_2.json create mode 100644 autobahn/client/tungstenite_case_4_2_3.html create mode 100644 autobahn/client/tungstenite_case_4_2_3.json create mode 100644 autobahn/client/tungstenite_case_4_2_4.html create mode 100644 autobahn/client/tungstenite_case_4_2_4.json create mode 100644 autobahn/client/tungstenite_case_4_2_5.html create mode 100644 autobahn/client/tungstenite_case_4_2_5.json create mode 100644 autobahn/client/tungstenite_case_5_1.html create mode 100644 autobahn/client/tungstenite_case_5_1.json create mode 100644 autobahn/client/tungstenite_case_5_10.html create mode 100644 autobahn/client/tungstenite_case_5_10.json create mode 100644 autobahn/client/tungstenite_case_5_11.html create mode 100644 autobahn/client/tungstenite_case_5_11.json create mode 100644 autobahn/client/tungstenite_case_5_12.html create mode 100644 autobahn/client/tungstenite_case_5_12.json create mode 100644 autobahn/client/tungstenite_case_5_13.html create mode 100644 autobahn/client/tungstenite_case_5_13.json create mode 100644 autobahn/client/tungstenite_case_5_14.html create mode 100644 autobahn/client/tungstenite_case_5_14.json create mode 100644 autobahn/client/tungstenite_case_5_15.html create mode 100644 autobahn/client/tungstenite_case_5_15.json create mode 100644 autobahn/client/tungstenite_case_5_16.html create mode 100644 autobahn/client/tungstenite_case_5_16.json create mode 100644 autobahn/client/tungstenite_case_5_17.html create mode 100644 autobahn/client/tungstenite_case_5_17.json create mode 100644 autobahn/client/tungstenite_case_5_18.html create mode 100644 autobahn/client/tungstenite_case_5_18.json create mode 100644 autobahn/client/tungstenite_case_5_19.html create mode 100644 autobahn/client/tungstenite_case_5_19.json create mode 100644 autobahn/client/tungstenite_case_5_2.html create mode 100644 autobahn/client/tungstenite_case_5_2.json create mode 100644 autobahn/client/tungstenite_case_5_20.html create mode 100644 autobahn/client/tungstenite_case_5_20.json create mode 100644 autobahn/client/tungstenite_case_5_3.html create mode 100644 autobahn/client/tungstenite_case_5_3.json create mode 100644 autobahn/client/tungstenite_case_5_4.html create mode 100644 autobahn/client/tungstenite_case_5_4.json create mode 100644 autobahn/client/tungstenite_case_5_5.html create mode 100644 autobahn/client/tungstenite_case_5_5.json create mode 100644 autobahn/client/tungstenite_case_5_6.html create mode 100644 autobahn/client/tungstenite_case_5_6.json create mode 100644 autobahn/client/tungstenite_case_5_7.html create mode 100644 autobahn/client/tungstenite_case_5_7.json create mode 100644 autobahn/client/tungstenite_case_5_8.html create mode 100644 autobahn/client/tungstenite_case_5_8.json create mode 100644 autobahn/client/tungstenite_case_5_9.html create mode 100644 autobahn/client/tungstenite_case_5_9.json create mode 100644 autobahn/client/tungstenite_case_6_10_1.html create mode 100644 autobahn/client/tungstenite_case_6_10_1.json create mode 100644 autobahn/client/tungstenite_case_6_10_2.html create mode 100644 autobahn/client/tungstenite_case_6_10_2.json create mode 100644 autobahn/client/tungstenite_case_6_10_3.html create mode 100644 autobahn/client/tungstenite_case_6_10_3.json create mode 100644 autobahn/client/tungstenite_case_6_11_1.html create mode 100644 autobahn/client/tungstenite_case_6_11_1.json create mode 100644 autobahn/client/tungstenite_case_6_11_2.html create mode 100644 autobahn/client/tungstenite_case_6_11_2.json create mode 100644 autobahn/client/tungstenite_case_6_11_3.html create mode 100644 autobahn/client/tungstenite_case_6_11_3.json create mode 100644 autobahn/client/tungstenite_case_6_11_4.html create mode 100644 autobahn/client/tungstenite_case_6_11_4.json create mode 100644 autobahn/client/tungstenite_case_6_11_5.html create mode 100644 autobahn/client/tungstenite_case_6_11_5.json create mode 100644 autobahn/client/tungstenite_case_6_12_1.html create mode 100644 autobahn/client/tungstenite_case_6_12_1.json create mode 100644 autobahn/client/tungstenite_case_6_12_2.html create mode 100644 autobahn/client/tungstenite_case_6_12_2.json create mode 100644 autobahn/client/tungstenite_case_6_12_3.html create mode 100644 autobahn/client/tungstenite_case_6_12_3.json create mode 100644 autobahn/client/tungstenite_case_6_12_4.html create mode 100644 autobahn/client/tungstenite_case_6_12_4.json create mode 100644 autobahn/client/tungstenite_case_6_12_5.html create mode 100644 autobahn/client/tungstenite_case_6_12_5.json create mode 100644 autobahn/client/tungstenite_case_6_12_6.html create mode 100644 autobahn/client/tungstenite_case_6_12_6.json create mode 100644 autobahn/client/tungstenite_case_6_12_7.html create mode 100644 autobahn/client/tungstenite_case_6_12_7.json create mode 100644 autobahn/client/tungstenite_case_6_12_8.html create mode 100644 autobahn/client/tungstenite_case_6_12_8.json create mode 100644 autobahn/client/tungstenite_case_6_13_1.html create mode 100644 autobahn/client/tungstenite_case_6_13_1.json create mode 100644 autobahn/client/tungstenite_case_6_13_2.html create mode 100644 autobahn/client/tungstenite_case_6_13_2.json create mode 100644 autobahn/client/tungstenite_case_6_13_3.html create mode 100644 autobahn/client/tungstenite_case_6_13_3.json create mode 100644 autobahn/client/tungstenite_case_6_13_4.html create mode 100644 autobahn/client/tungstenite_case_6_13_4.json create mode 100644 autobahn/client/tungstenite_case_6_13_5.html create mode 100644 autobahn/client/tungstenite_case_6_13_5.json create mode 100644 autobahn/client/tungstenite_case_6_14_1.html create mode 100644 autobahn/client/tungstenite_case_6_14_1.json create mode 100644 autobahn/client/tungstenite_case_6_14_10.html create mode 100644 autobahn/client/tungstenite_case_6_14_10.json create mode 100644 autobahn/client/tungstenite_case_6_14_2.html create mode 100644 autobahn/client/tungstenite_case_6_14_2.json create mode 100644 autobahn/client/tungstenite_case_6_14_3.html create mode 100644 autobahn/client/tungstenite_case_6_14_3.json create mode 100644 autobahn/client/tungstenite_case_6_14_4.html create mode 100644 autobahn/client/tungstenite_case_6_14_4.json create mode 100644 autobahn/client/tungstenite_case_6_14_5.html create mode 100644 autobahn/client/tungstenite_case_6_14_5.json create mode 100644 autobahn/client/tungstenite_case_6_14_6.html create mode 100644 autobahn/client/tungstenite_case_6_14_6.json create mode 100644 autobahn/client/tungstenite_case_6_14_7.html create mode 100644 autobahn/client/tungstenite_case_6_14_7.json create mode 100644 autobahn/client/tungstenite_case_6_14_8.html create mode 100644 autobahn/client/tungstenite_case_6_14_8.json create mode 100644 autobahn/client/tungstenite_case_6_14_9.html create mode 100644 autobahn/client/tungstenite_case_6_14_9.json create mode 100644 autobahn/client/tungstenite_case_6_15_1.html create mode 100644 autobahn/client/tungstenite_case_6_15_1.json create mode 100644 autobahn/client/tungstenite_case_6_16_1.html create mode 100644 autobahn/client/tungstenite_case_6_16_1.json create mode 100644 autobahn/client/tungstenite_case_6_16_2.html create mode 100644 autobahn/client/tungstenite_case_6_16_2.json create mode 100644 autobahn/client/tungstenite_case_6_16_3.html create mode 100644 autobahn/client/tungstenite_case_6_16_3.json create mode 100644 autobahn/client/tungstenite_case_6_17_1.html create mode 100644 autobahn/client/tungstenite_case_6_17_1.json create mode 100644 autobahn/client/tungstenite_case_6_17_2.html create mode 100644 autobahn/client/tungstenite_case_6_17_2.json create mode 100644 autobahn/client/tungstenite_case_6_17_3.html create mode 100644 autobahn/client/tungstenite_case_6_17_3.json create mode 100644 autobahn/client/tungstenite_case_6_17_4.html create mode 100644 autobahn/client/tungstenite_case_6_17_4.json create mode 100644 autobahn/client/tungstenite_case_6_17_5.html create mode 100644 autobahn/client/tungstenite_case_6_17_5.json create mode 100644 autobahn/client/tungstenite_case_6_18_1.html create mode 100644 autobahn/client/tungstenite_case_6_18_1.json create mode 100644 autobahn/client/tungstenite_case_6_18_2.html create mode 100644 autobahn/client/tungstenite_case_6_18_2.json create mode 100644 autobahn/client/tungstenite_case_6_18_3.html create mode 100644 autobahn/client/tungstenite_case_6_18_3.json create mode 100644 autobahn/client/tungstenite_case_6_18_4.html create mode 100644 autobahn/client/tungstenite_case_6_18_4.json create mode 100644 autobahn/client/tungstenite_case_6_18_5.html create mode 100644 autobahn/client/tungstenite_case_6_18_5.json create mode 100644 autobahn/client/tungstenite_case_6_19_1.html create mode 100644 autobahn/client/tungstenite_case_6_19_1.json create mode 100644 autobahn/client/tungstenite_case_6_19_2.html create mode 100644 autobahn/client/tungstenite_case_6_19_2.json create mode 100644 autobahn/client/tungstenite_case_6_19_3.html create mode 100644 autobahn/client/tungstenite_case_6_19_3.json create mode 100644 autobahn/client/tungstenite_case_6_19_4.html create mode 100644 autobahn/client/tungstenite_case_6_19_4.json create mode 100644 autobahn/client/tungstenite_case_6_19_5.html create mode 100644 autobahn/client/tungstenite_case_6_19_5.json create mode 100644 autobahn/client/tungstenite_case_6_1_1.html create mode 100644 autobahn/client/tungstenite_case_6_1_1.json create mode 100644 autobahn/client/tungstenite_case_6_1_2.html create mode 100644 autobahn/client/tungstenite_case_6_1_2.json create mode 100644 autobahn/client/tungstenite_case_6_1_3.html create mode 100644 autobahn/client/tungstenite_case_6_1_3.json create mode 100644 autobahn/client/tungstenite_case_6_20_1.html create mode 100644 autobahn/client/tungstenite_case_6_20_1.json create mode 100644 autobahn/client/tungstenite_case_6_20_2.html create mode 100644 autobahn/client/tungstenite_case_6_20_2.json create mode 100644 autobahn/client/tungstenite_case_6_20_3.html create mode 100644 autobahn/client/tungstenite_case_6_20_3.json create mode 100644 autobahn/client/tungstenite_case_6_20_4.html create mode 100644 autobahn/client/tungstenite_case_6_20_4.json create mode 100644 autobahn/client/tungstenite_case_6_20_5.html create mode 100644 autobahn/client/tungstenite_case_6_20_5.json create mode 100644 autobahn/client/tungstenite_case_6_20_6.html create mode 100644 autobahn/client/tungstenite_case_6_20_6.json create mode 100644 autobahn/client/tungstenite_case_6_20_7.html create mode 100644 autobahn/client/tungstenite_case_6_20_7.json create mode 100644 autobahn/client/tungstenite_case_6_21_1.html create mode 100644 autobahn/client/tungstenite_case_6_21_1.json create mode 100644 autobahn/client/tungstenite_case_6_21_2.html create mode 100644 autobahn/client/tungstenite_case_6_21_2.json create mode 100644 autobahn/client/tungstenite_case_6_21_3.html create mode 100644 autobahn/client/tungstenite_case_6_21_3.json create mode 100644 autobahn/client/tungstenite_case_6_21_4.html create mode 100644 autobahn/client/tungstenite_case_6_21_4.json create mode 100644 autobahn/client/tungstenite_case_6_21_5.html create mode 100644 autobahn/client/tungstenite_case_6_21_5.json create mode 100644 autobahn/client/tungstenite_case_6_21_6.html create mode 100644 autobahn/client/tungstenite_case_6_21_6.json create mode 100644 autobahn/client/tungstenite_case_6_21_7.html create mode 100644 autobahn/client/tungstenite_case_6_21_7.json create mode 100644 autobahn/client/tungstenite_case_6_21_8.html create mode 100644 autobahn/client/tungstenite_case_6_21_8.json create mode 100644 autobahn/client/tungstenite_case_6_22_1.html create mode 100644 autobahn/client/tungstenite_case_6_22_1.json create mode 100644 autobahn/client/tungstenite_case_6_22_10.html create mode 100644 autobahn/client/tungstenite_case_6_22_10.json create mode 100644 autobahn/client/tungstenite_case_6_22_11.html create mode 100644 autobahn/client/tungstenite_case_6_22_11.json create mode 100644 autobahn/client/tungstenite_case_6_22_12.html create mode 100644 autobahn/client/tungstenite_case_6_22_12.json create mode 100644 autobahn/client/tungstenite_case_6_22_13.html create mode 100644 autobahn/client/tungstenite_case_6_22_13.json create mode 100644 autobahn/client/tungstenite_case_6_22_14.html create mode 100644 autobahn/client/tungstenite_case_6_22_14.json create mode 100644 autobahn/client/tungstenite_case_6_22_15.html create mode 100644 autobahn/client/tungstenite_case_6_22_15.json create mode 100644 autobahn/client/tungstenite_case_6_22_16.html create mode 100644 autobahn/client/tungstenite_case_6_22_16.json create mode 100644 autobahn/client/tungstenite_case_6_22_17.html create mode 100644 autobahn/client/tungstenite_case_6_22_17.json create mode 100644 autobahn/client/tungstenite_case_6_22_18.html create mode 100644 autobahn/client/tungstenite_case_6_22_18.json create mode 100644 autobahn/client/tungstenite_case_6_22_19.html create mode 100644 autobahn/client/tungstenite_case_6_22_19.json create mode 100644 autobahn/client/tungstenite_case_6_22_2.html create mode 100644 autobahn/client/tungstenite_case_6_22_2.json create mode 100644 autobahn/client/tungstenite_case_6_22_20.html create mode 100644 autobahn/client/tungstenite_case_6_22_20.json create mode 100644 autobahn/client/tungstenite_case_6_22_21.html create mode 100644 autobahn/client/tungstenite_case_6_22_21.json create mode 100644 autobahn/client/tungstenite_case_6_22_22.html create mode 100644 autobahn/client/tungstenite_case_6_22_22.json create mode 100644 autobahn/client/tungstenite_case_6_22_23.html create mode 100644 autobahn/client/tungstenite_case_6_22_23.json create mode 100644 autobahn/client/tungstenite_case_6_22_24.html create mode 100644 autobahn/client/tungstenite_case_6_22_24.json create mode 100644 autobahn/client/tungstenite_case_6_22_25.html create mode 100644 autobahn/client/tungstenite_case_6_22_25.json create mode 100644 autobahn/client/tungstenite_case_6_22_26.html create mode 100644 autobahn/client/tungstenite_case_6_22_26.json create mode 100644 autobahn/client/tungstenite_case_6_22_27.html create mode 100644 autobahn/client/tungstenite_case_6_22_27.json create mode 100644 autobahn/client/tungstenite_case_6_22_28.html create mode 100644 autobahn/client/tungstenite_case_6_22_28.json create mode 100644 autobahn/client/tungstenite_case_6_22_29.html create mode 100644 autobahn/client/tungstenite_case_6_22_29.json create mode 100644 autobahn/client/tungstenite_case_6_22_3.html create mode 100644 autobahn/client/tungstenite_case_6_22_3.json create mode 100644 autobahn/client/tungstenite_case_6_22_30.html create mode 100644 autobahn/client/tungstenite_case_6_22_30.json create mode 100644 autobahn/client/tungstenite_case_6_22_31.html create mode 100644 autobahn/client/tungstenite_case_6_22_31.json create mode 100644 autobahn/client/tungstenite_case_6_22_32.html create mode 100644 autobahn/client/tungstenite_case_6_22_32.json create mode 100644 autobahn/client/tungstenite_case_6_22_33.html create mode 100644 autobahn/client/tungstenite_case_6_22_33.json create mode 100644 autobahn/client/tungstenite_case_6_22_34.html create mode 100644 autobahn/client/tungstenite_case_6_22_34.json create mode 100644 autobahn/client/tungstenite_case_6_22_4.html create mode 100644 autobahn/client/tungstenite_case_6_22_4.json create mode 100644 autobahn/client/tungstenite_case_6_22_5.html create mode 100644 autobahn/client/tungstenite_case_6_22_5.json create mode 100644 autobahn/client/tungstenite_case_6_22_6.html create mode 100644 autobahn/client/tungstenite_case_6_22_6.json create mode 100644 autobahn/client/tungstenite_case_6_22_7.html create mode 100644 autobahn/client/tungstenite_case_6_22_7.json create mode 100644 autobahn/client/tungstenite_case_6_22_8.html create mode 100644 autobahn/client/tungstenite_case_6_22_8.json create mode 100644 autobahn/client/tungstenite_case_6_22_9.html create mode 100644 autobahn/client/tungstenite_case_6_22_9.json create mode 100644 autobahn/client/tungstenite_case_6_23_1.html create mode 100644 autobahn/client/tungstenite_case_6_23_1.json create mode 100644 autobahn/client/tungstenite_case_6_23_2.html create mode 100644 autobahn/client/tungstenite_case_6_23_2.json create mode 100644 autobahn/client/tungstenite_case_6_23_3.html create mode 100644 autobahn/client/tungstenite_case_6_23_3.json create mode 100644 autobahn/client/tungstenite_case_6_23_4.html create mode 100644 autobahn/client/tungstenite_case_6_23_4.json create mode 100644 autobahn/client/tungstenite_case_6_23_5.html create mode 100644 autobahn/client/tungstenite_case_6_23_5.json create mode 100644 autobahn/client/tungstenite_case_6_23_6.html create mode 100644 autobahn/client/tungstenite_case_6_23_6.json create mode 100644 autobahn/client/tungstenite_case_6_23_7.html create mode 100644 autobahn/client/tungstenite_case_6_23_7.json create mode 100644 autobahn/client/tungstenite_case_6_2_1.html create mode 100644 autobahn/client/tungstenite_case_6_2_1.json create mode 100644 autobahn/client/tungstenite_case_6_2_2.html create mode 100644 autobahn/client/tungstenite_case_6_2_2.json create mode 100644 autobahn/client/tungstenite_case_6_2_3.html create mode 100644 autobahn/client/tungstenite_case_6_2_3.json create mode 100644 autobahn/client/tungstenite_case_6_2_4.html create mode 100644 autobahn/client/tungstenite_case_6_2_4.json create mode 100644 autobahn/client/tungstenite_case_6_3_1.html create mode 100644 autobahn/client/tungstenite_case_6_3_1.json create mode 100644 autobahn/client/tungstenite_case_6_3_2.html create mode 100644 autobahn/client/tungstenite_case_6_3_2.json create mode 100644 autobahn/client/tungstenite_case_6_4_1.html create mode 100644 autobahn/client/tungstenite_case_6_4_1.json create mode 100644 autobahn/client/tungstenite_case_6_4_2.html create mode 100644 autobahn/client/tungstenite_case_6_4_2.json create mode 100644 autobahn/client/tungstenite_case_6_4_3.html create mode 100644 autobahn/client/tungstenite_case_6_4_3.json create mode 100644 autobahn/client/tungstenite_case_6_4_4.html create mode 100644 autobahn/client/tungstenite_case_6_4_4.json create mode 100644 autobahn/client/tungstenite_case_6_5_1.html create mode 100644 autobahn/client/tungstenite_case_6_5_1.json create mode 100644 autobahn/client/tungstenite_case_6_5_2.html create mode 100644 autobahn/client/tungstenite_case_6_5_2.json create mode 100644 autobahn/client/tungstenite_case_6_5_3.html create mode 100644 autobahn/client/tungstenite_case_6_5_3.json create mode 100644 autobahn/client/tungstenite_case_6_5_4.html create mode 100644 autobahn/client/tungstenite_case_6_5_4.json create mode 100644 autobahn/client/tungstenite_case_6_5_5.html create mode 100644 autobahn/client/tungstenite_case_6_5_5.json create mode 100644 autobahn/client/tungstenite_case_6_6_1.html create mode 100644 autobahn/client/tungstenite_case_6_6_1.json create mode 100644 autobahn/client/tungstenite_case_6_6_10.html create mode 100644 autobahn/client/tungstenite_case_6_6_10.json create mode 100644 autobahn/client/tungstenite_case_6_6_11.html create mode 100644 autobahn/client/tungstenite_case_6_6_11.json create mode 100644 autobahn/client/tungstenite_case_6_6_2.html create mode 100644 autobahn/client/tungstenite_case_6_6_2.json create mode 100644 autobahn/client/tungstenite_case_6_6_3.html create mode 100644 autobahn/client/tungstenite_case_6_6_3.json create mode 100644 autobahn/client/tungstenite_case_6_6_4.html create mode 100644 autobahn/client/tungstenite_case_6_6_4.json create mode 100644 autobahn/client/tungstenite_case_6_6_5.html create mode 100644 autobahn/client/tungstenite_case_6_6_5.json create mode 100644 autobahn/client/tungstenite_case_6_6_6.html create mode 100644 autobahn/client/tungstenite_case_6_6_6.json create mode 100644 autobahn/client/tungstenite_case_6_6_7.html create mode 100644 autobahn/client/tungstenite_case_6_6_7.json create mode 100644 autobahn/client/tungstenite_case_6_6_8.html create mode 100644 autobahn/client/tungstenite_case_6_6_8.json create mode 100644 autobahn/client/tungstenite_case_6_6_9.html create mode 100644 autobahn/client/tungstenite_case_6_6_9.json create mode 100644 autobahn/client/tungstenite_case_6_7_1.html create mode 100644 autobahn/client/tungstenite_case_6_7_1.json create mode 100644 autobahn/client/tungstenite_case_6_7_2.html create mode 100644 autobahn/client/tungstenite_case_6_7_2.json create mode 100644 autobahn/client/tungstenite_case_6_7_3.html create mode 100644 autobahn/client/tungstenite_case_6_7_3.json create mode 100644 autobahn/client/tungstenite_case_6_7_4.html create mode 100644 autobahn/client/tungstenite_case_6_7_4.json create mode 100644 autobahn/client/tungstenite_case_6_8_1.html create mode 100644 autobahn/client/tungstenite_case_6_8_1.json create mode 100644 autobahn/client/tungstenite_case_6_8_2.html create mode 100644 autobahn/client/tungstenite_case_6_8_2.json create mode 100644 autobahn/client/tungstenite_case_6_9_1.html create mode 100644 autobahn/client/tungstenite_case_6_9_1.json create mode 100644 autobahn/client/tungstenite_case_6_9_2.html create mode 100644 autobahn/client/tungstenite_case_6_9_2.json create mode 100644 autobahn/client/tungstenite_case_6_9_3.html create mode 100644 autobahn/client/tungstenite_case_6_9_3.json create mode 100644 autobahn/client/tungstenite_case_6_9_4.html create mode 100644 autobahn/client/tungstenite_case_6_9_4.json create mode 100644 autobahn/client/tungstenite_case_7_13_1.html create mode 100644 autobahn/client/tungstenite_case_7_13_1.json create mode 100644 autobahn/client/tungstenite_case_7_13_2.html create mode 100644 autobahn/client/tungstenite_case_7_13_2.json create mode 100644 autobahn/client/tungstenite_case_7_1_1.html create mode 100644 autobahn/client/tungstenite_case_7_1_1.json create mode 100644 autobahn/client/tungstenite_case_7_1_2.html create mode 100644 autobahn/client/tungstenite_case_7_1_2.json create mode 100644 autobahn/client/tungstenite_case_7_1_3.html create mode 100644 autobahn/client/tungstenite_case_7_1_3.json create mode 100644 autobahn/client/tungstenite_case_7_1_4.html create mode 100644 autobahn/client/tungstenite_case_7_1_4.json create mode 100644 autobahn/client/tungstenite_case_7_1_5.html create mode 100644 autobahn/client/tungstenite_case_7_1_5.json create mode 100644 autobahn/client/tungstenite_case_7_1_6.html create mode 100644 autobahn/client/tungstenite_case_7_1_6.json create mode 100644 autobahn/client/tungstenite_case_7_3_1.html create mode 100644 autobahn/client/tungstenite_case_7_3_1.json create mode 100644 autobahn/client/tungstenite_case_7_3_2.html create mode 100644 autobahn/client/tungstenite_case_7_3_2.json create mode 100644 autobahn/client/tungstenite_case_7_3_3.html create mode 100644 autobahn/client/tungstenite_case_7_3_3.json create mode 100644 autobahn/client/tungstenite_case_7_3_4.html create mode 100644 autobahn/client/tungstenite_case_7_3_4.json create mode 100644 autobahn/client/tungstenite_case_7_3_5.html create mode 100644 autobahn/client/tungstenite_case_7_3_5.json create mode 100644 autobahn/client/tungstenite_case_7_3_6.html create mode 100644 autobahn/client/tungstenite_case_7_3_6.json create mode 100644 autobahn/client/tungstenite_case_7_5_1.html create mode 100644 autobahn/client/tungstenite_case_7_5_1.json create mode 100644 autobahn/client/tungstenite_case_7_7_1.html create mode 100644 autobahn/client/tungstenite_case_7_7_1.json create mode 100644 autobahn/client/tungstenite_case_7_7_10.html create mode 100644 autobahn/client/tungstenite_case_7_7_10.json create mode 100644 autobahn/client/tungstenite_case_7_7_11.html create mode 100644 autobahn/client/tungstenite_case_7_7_11.json create mode 100644 autobahn/client/tungstenite_case_7_7_12.html create mode 100644 autobahn/client/tungstenite_case_7_7_12.json create mode 100644 autobahn/client/tungstenite_case_7_7_13.html create mode 100644 autobahn/client/tungstenite_case_7_7_13.json create mode 100644 autobahn/client/tungstenite_case_7_7_2.html create mode 100644 autobahn/client/tungstenite_case_7_7_2.json create mode 100644 autobahn/client/tungstenite_case_7_7_3.html create mode 100644 autobahn/client/tungstenite_case_7_7_3.json create mode 100644 autobahn/client/tungstenite_case_7_7_4.html create mode 100644 autobahn/client/tungstenite_case_7_7_4.json create mode 100644 autobahn/client/tungstenite_case_7_7_5.html create mode 100644 autobahn/client/tungstenite_case_7_7_5.json create mode 100644 autobahn/client/tungstenite_case_7_7_6.html create mode 100644 autobahn/client/tungstenite_case_7_7_6.json create mode 100644 autobahn/client/tungstenite_case_7_7_7.html create mode 100644 autobahn/client/tungstenite_case_7_7_7.json create mode 100644 autobahn/client/tungstenite_case_7_7_8.html create mode 100644 autobahn/client/tungstenite_case_7_7_8.json create mode 100644 autobahn/client/tungstenite_case_7_7_9.html create mode 100644 autobahn/client/tungstenite_case_7_7_9.json create mode 100644 autobahn/client/tungstenite_case_7_9_1.html create mode 100644 autobahn/client/tungstenite_case_7_9_1.json create mode 100644 autobahn/client/tungstenite_case_7_9_2.html create mode 100644 autobahn/client/tungstenite_case_7_9_2.json create mode 100644 autobahn/client/tungstenite_case_7_9_3.html create mode 100644 autobahn/client/tungstenite_case_7_9_3.json create mode 100644 autobahn/client/tungstenite_case_7_9_4.html create mode 100644 autobahn/client/tungstenite_case_7_9_4.json create mode 100644 autobahn/client/tungstenite_case_7_9_5.html create mode 100644 autobahn/client/tungstenite_case_7_9_5.json create mode 100644 autobahn/client/tungstenite_case_7_9_6.html create mode 100644 autobahn/client/tungstenite_case_7_9_6.json create mode 100644 autobahn/client/tungstenite_case_7_9_7.html create mode 100644 autobahn/client/tungstenite_case_7_9_7.json create mode 100644 autobahn/client/tungstenite_case_7_9_8.html create mode 100644 autobahn/client/tungstenite_case_7_9_8.json create mode 100644 autobahn/client/tungstenite_case_7_9_9.html create mode 100644 autobahn/client/tungstenite_case_7_9_9.json create mode 100644 autobahn/client/tungstenite_case_9_1_1.html create mode 100644 autobahn/client/tungstenite_case_9_1_1.json create mode 100644 autobahn/client/tungstenite_case_9_1_2.html create mode 100644 autobahn/client/tungstenite_case_9_1_2.json create mode 100644 autobahn/client/tungstenite_case_9_1_3.html create mode 100644 autobahn/client/tungstenite_case_9_1_3.json create mode 100644 autobahn/client/tungstenite_case_9_1_4.html create mode 100644 autobahn/client/tungstenite_case_9_1_4.json create mode 100644 autobahn/client/tungstenite_case_9_1_5.html create mode 100644 autobahn/client/tungstenite_case_9_1_5.json create mode 100644 autobahn/client/tungstenite_case_9_1_6.html create mode 100644 autobahn/client/tungstenite_case_9_1_6.json create mode 100644 autobahn/client/tungstenite_case_9_2_1.html create mode 100644 autobahn/client/tungstenite_case_9_2_1.json create mode 100644 autobahn/client/tungstenite_case_9_2_2.html create mode 100644 autobahn/client/tungstenite_case_9_2_2.json create mode 100644 autobahn/client/tungstenite_case_9_2_3.html create mode 100644 autobahn/client/tungstenite_case_9_2_3.json create mode 100644 autobahn/client/tungstenite_case_9_2_4.html create mode 100644 autobahn/client/tungstenite_case_9_2_4.json create mode 100644 autobahn/client/tungstenite_case_9_2_5.html create mode 100644 autobahn/client/tungstenite_case_9_2_5.json create mode 100644 autobahn/client/tungstenite_case_9_2_6.html create mode 100644 autobahn/client/tungstenite_case_9_2_6.json create mode 100644 autobahn/client/tungstenite_case_9_3_1.html create mode 100644 autobahn/client/tungstenite_case_9_3_1.json create mode 100644 autobahn/client/tungstenite_case_9_3_2.html create mode 100644 autobahn/client/tungstenite_case_9_3_2.json create mode 100644 autobahn/client/tungstenite_case_9_3_3.html create mode 100644 autobahn/client/tungstenite_case_9_3_3.json create mode 100644 autobahn/client/tungstenite_case_9_3_4.html create mode 100644 autobahn/client/tungstenite_case_9_3_4.json create mode 100644 autobahn/client/tungstenite_case_9_3_5.html create mode 100644 autobahn/client/tungstenite_case_9_3_5.json create mode 100644 autobahn/client/tungstenite_case_9_3_6.html create mode 100644 autobahn/client/tungstenite_case_9_3_6.json create mode 100644 autobahn/client/tungstenite_case_9_3_7.html create mode 100644 autobahn/client/tungstenite_case_9_3_7.json create mode 100644 autobahn/client/tungstenite_case_9_3_8.html create mode 100644 autobahn/client/tungstenite_case_9_3_8.json create mode 100644 autobahn/client/tungstenite_case_9_3_9.html create mode 100644 autobahn/client/tungstenite_case_9_3_9.json create mode 100644 autobahn/client/tungstenite_case_9_4_1.html create mode 100644 autobahn/client/tungstenite_case_9_4_1.json create mode 100644 autobahn/client/tungstenite_case_9_4_2.html create mode 100644 autobahn/client/tungstenite_case_9_4_2.json create mode 100644 autobahn/client/tungstenite_case_9_4_3.html create mode 100644 autobahn/client/tungstenite_case_9_4_3.json create mode 100644 autobahn/client/tungstenite_case_9_4_4.html create mode 100644 autobahn/client/tungstenite_case_9_4_4.json create mode 100644 autobahn/client/tungstenite_case_9_4_5.html create mode 100644 autobahn/client/tungstenite_case_9_4_5.json create mode 100644 autobahn/client/tungstenite_case_9_4_6.html create mode 100644 autobahn/client/tungstenite_case_9_4_6.json create mode 100644 autobahn/client/tungstenite_case_9_4_7.html create mode 100644 autobahn/client/tungstenite_case_9_4_7.json create mode 100644 autobahn/client/tungstenite_case_9_4_8.html create mode 100644 autobahn/client/tungstenite_case_9_4_8.json create mode 100644 autobahn/client/tungstenite_case_9_4_9.html create mode 100644 autobahn/client/tungstenite_case_9_4_9.json create mode 100644 autobahn/client/tungstenite_case_9_5_1.html create mode 100644 autobahn/client/tungstenite_case_9_5_1.json create mode 100644 autobahn/client/tungstenite_case_9_5_2.html create mode 100644 autobahn/client/tungstenite_case_9_5_2.json create mode 100644 autobahn/client/tungstenite_case_9_5_3.html create mode 100644 autobahn/client/tungstenite_case_9_5_3.json create mode 100644 autobahn/client/tungstenite_case_9_5_4.html create mode 100644 autobahn/client/tungstenite_case_9_5_4.json create mode 100644 autobahn/client/tungstenite_case_9_5_5.html create mode 100644 autobahn/client/tungstenite_case_9_5_5.json create mode 100644 autobahn/client/tungstenite_case_9_5_6.html create mode 100644 autobahn/client/tungstenite_case_9_5_6.json create mode 100644 autobahn/client/tungstenite_case_9_6_1.html create mode 100644 autobahn/client/tungstenite_case_9_6_1.json create mode 100644 autobahn/client/tungstenite_case_9_6_2.html create mode 100644 autobahn/client/tungstenite_case_9_6_2.json create mode 100644 autobahn/client/tungstenite_case_9_6_3.html create mode 100644 autobahn/client/tungstenite_case_9_6_3.json create mode 100644 autobahn/client/tungstenite_case_9_6_4.html create mode 100644 autobahn/client/tungstenite_case_9_6_4.json create mode 100644 autobahn/client/tungstenite_case_9_6_5.html create mode 100644 autobahn/client/tungstenite_case_9_6_5.json create mode 100644 autobahn/client/tungstenite_case_9_6_6.html create mode 100644 autobahn/client/tungstenite_case_9_6_6.json create mode 100644 autobahn/client/tungstenite_case_9_7_1.html create mode 100644 autobahn/client/tungstenite_case_9_7_1.json create mode 100644 autobahn/client/tungstenite_case_9_7_2.html create mode 100644 autobahn/client/tungstenite_case_9_7_2.json create mode 100644 autobahn/client/tungstenite_case_9_7_3.html create mode 100644 autobahn/client/tungstenite_case_9_7_3.json create mode 100644 autobahn/client/tungstenite_case_9_7_4.html create mode 100644 autobahn/client/tungstenite_case_9_7_4.json create mode 100644 autobahn/client/tungstenite_case_9_7_5.html create mode 100644 autobahn/client/tungstenite_case_9_7_5.json create mode 100644 autobahn/client/tungstenite_case_9_7_6.html create mode 100644 autobahn/client/tungstenite_case_9_7_6.json create mode 100644 autobahn/client/tungstenite_case_9_8_1.html create mode 100644 autobahn/client/tungstenite_case_9_8_1.json create mode 100644 autobahn/client/tungstenite_case_9_8_2.html create mode 100644 autobahn/client/tungstenite_case_9_8_2.json create mode 100644 autobahn/client/tungstenite_case_9_8_3.html create mode 100644 autobahn/client/tungstenite_case_9_8_3.json create mode 100644 autobahn/client/tungstenite_case_9_8_4.html create mode 100644 autobahn/client/tungstenite_case_9_8_4.json create mode 100644 autobahn/client/tungstenite_case_9_8_5.html create mode 100644 autobahn/client/tungstenite_case_9_8_5.json create mode 100644 autobahn/client/tungstenite_case_9_8_6.html create mode 100644 autobahn/client/tungstenite_case_9_8_6.json diff --git a/autobahn/client/index.html b/autobahn/client/index.html new file mode 100644 index 0000000..5b2549f --- /dev/null +++ b/autobahn/client/index.html @@ -0,0 +1,5923 @@ + + + + + + + + + +
Toggle Details
+ +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Summary report generated on 2025-09-11T20:15:38.103Z (UTC) by Autobahn WebSocket Testsuite v0.8.2/v0.10.9.

+ + + + + + + + + + + + + + + + + + + + + + +
PassTest case was executed and passed successfully.
Non-StrictTest case was executed and passed non-strictly. + A non-strict behavior is one that does not adhere to a SHOULD-behavior as described in the protocol specification or + a well-defined, canonical behavior that appears to be desirable but left open in the protocol specification. + An implementation with non-strict behavior is still conformant to the protocol specification.
FailTest case was executed and failed. An implementation which fails a test case - other + than a performance/limits related one - is non-conforming to a MUST-behavior as described in the protocol specification.
InfoInformational test case which detects certain implementation behavior left unspecified by the spec + but nevertheless potentially interesting to implementors.
MissingTest case is missing, either because it was skipped via the test suite configuration + or deactivated, i.e. because the implementation does not implement the tested feature or breaks during running + the test case.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1 FramingTungstenite
1.1 Text Messages
Case 1.1.1Pass1000
Case 1.1.2Pass1000
Case 1.1.3Pass1000
Case 1.1.4Pass1000
Case 1.1.5Pass1000
Case 1.1.6Pass1000
Case 1.1.7Pass1000
Case 1.1.8Pass1000
1 FramingTungstenite
1.2 Binary Messages
Case 1.2.1Pass1000
Case 1.2.2Pass1000
Case 1.2.3Pass1000
Case 1.2.4Pass1000
Case 1.2.5Pass1000
Case 1.2.6Pass1000
Case 1.2.7Pass1000
Case 1.2.8Pass1000
2 Pings/PongsTungstenite
Case 2.1Pass1000
Case 2.2Pass1000
Case 2.3Pass1000
Case 2.4Pass1000
Case 2.5PassNone
Case 2.6Pass1000
Case 2.7Pass1000
Case 2.8Pass1000
Case 2.9Pass1000
Case 2.10Pass1000
Case 2.11Pass1000
3 Reserved BitsTungstenite
Case 3.1PassNone
Case 3.2PassNone
Case 3.3PassNone
Case 3.4PassNone
Case 3.5PassNone
Case 3.6PassNone
Case 3.7PassNone
4 OpcodesTungstenite
4.1 Non-control Opcodes
Case 4.1.1PassNone
Case 4.1.2PassNone
Case 4.1.3PassNone
Case 4.1.4PassNone
Case 4.1.5PassNone
4 OpcodesTungstenite
4.2 Control Opcodes
Case 4.2.1PassNone
Case 4.2.2PassNone
Case 4.2.3PassNone
Case 4.2.4PassNone
Case 4.2.5PassNone
5 FragmentationTungstenite
Case 5.1PassNone
Case 5.2PassNone
Case 5.3Pass1000
Case 5.4Pass1000
Case 5.5Pass1000
Case 5.6Pass1000
Case 5.7Pass1000
Case 5.8Pass1000
Case 5.9PassNone
Case 5.10PassNone
Case 5.11PassNone
Case 5.12PassNone
Case 5.13PassNone
Case 5.14PassNone
Case 5.15PassNone
Case 5.16PassNone
Case 5.17PassNone
Case 5.18PassNone
Case 5.19Pass1000
Case 5.20Pass1000
6 UTF-8 HandlingTungstenite
6.1 Valid UTF-8 with zero payload fragments
Case 6.1.1Pass1000
Case 6.1.2Pass1000
Case 6.1.3Pass1000
6 UTF-8 HandlingTungstenite
6.2 Valid UTF-8 unfragmented, fragmented on code-points and within code-points
Case 6.2.1Pass1000
Case 6.2.2Pass1000
Case 6.2.3Pass1000
Case 6.2.4Pass1000
6 UTF-8 HandlingTungstenite
6.3 Invalid UTF-8 differently fragmented
Case 6.3.1PassNone
Case 6.3.2PassNone
6 UTF-8 HandlingTungstenite
6.4 Fail-fast on invalid UTF-8
Case 6.4.1PassNone
Case 6.4.2PassNone
Case 6.4.3Non-StrictNone
Case 6.4.4Non-StrictNone
6 UTF-8 HandlingTungstenite
6.5 Some valid UTF-8 sequences
Case 6.5.1Pass1000
Case 6.5.2Pass1000
Case 6.5.3Pass1000
Case 6.5.4Pass1000
Case 6.5.5Pass1000
6 UTF-8 HandlingTungstenite
6.6 All prefixes of a valid UTF-8 string that contains multi-byte code points
Case 6.6.1PassNone
Case 6.6.2Pass1000
Case 6.6.3PassNone
Case 6.6.4PassNone
Case 6.6.5Pass1000
Case 6.6.6PassNone
Case 6.6.7Pass1000
Case 6.6.8PassNone
Case 6.6.9Pass1000
Case 6.6.10PassNone
Case 6.6.11Pass1000
6 UTF-8 HandlingTungstenite
6.7 First possible sequence of a certain length
Case 6.7.1Pass1000
Case 6.7.2Pass1000
Case 6.7.3Pass1000
Case 6.7.4Pass1000
6 UTF-8 HandlingTungstenite
6.8 First possible sequence length 5/6 (invalid codepoints)
Case 6.8.1PassNone
Case 6.8.2PassNone
6 UTF-8 HandlingTungstenite
6.9 Last possible sequence of a certain length
Case 6.9.1Pass1000
Case 6.9.2Pass1000
Case 6.9.3Pass1000
Case 6.9.4Pass1000
6 UTF-8 HandlingTungstenite
6.10 Last possible sequence length 4/5/6 (invalid codepoints)
Case 6.10.1PassNone
Case 6.10.2PassNone
Case 6.10.3PassNone
6 UTF-8 HandlingTungstenite
6.11 Other boundary conditions
Case 6.11.1Pass1000
Case 6.11.2Pass1000
Case 6.11.3Pass1000
Case 6.11.4Pass1000
Case 6.11.5PassNone
6 UTF-8 HandlingTungstenite
6.12 Unexpected continuation bytes
Case 6.12.1PassNone
Case 6.12.2PassNone
Case 6.12.3PassNone
Case 6.12.4PassNone
Case 6.12.5PassNone
Case 6.12.6PassNone
Case 6.12.7PassNone
Case 6.12.8PassNone
6 UTF-8 HandlingTungstenite
6.13 Lonely start characters
Case 6.13.1PassNone
Case 6.13.2PassNone
Case 6.13.3PassNone
Case 6.13.4PassNone
Case 6.13.5PassNone
6 UTF-8 HandlingTungstenite
6.14 Sequences with last continuation byte missing
Case 6.14.1PassNone
Case 6.14.2PassNone
Case 6.14.3PassNone
Case 6.14.4PassNone
Case 6.14.5PassNone
Case 6.14.6PassNone
Case 6.14.7PassNone
Case 6.14.8PassNone
Case 6.14.9PassNone
Case 6.14.10PassNone
6 UTF-8 HandlingTungstenite
6.15 Concatenation of incomplete sequences
Case 6.15.1PassNone
6 UTF-8 HandlingTungstenite
6.16 Impossible bytes
Case 6.16.1PassNone
Case 6.16.2PassNone
Case 6.16.3PassNone
6 UTF-8 HandlingTungstenite
6.17 Examples of an overlong ASCII character
Case 6.17.1PassNone
Case 6.17.2PassNone
Case 6.17.3PassNone
Case 6.17.4PassNone
Case 6.17.5PassNone
6 UTF-8 HandlingTungstenite
6.18 Maximum overlong sequences
Case 6.18.1PassNone
Case 6.18.2PassNone
Case 6.18.3PassNone
Case 6.18.4PassNone
Case 6.18.5PassNone
6 UTF-8 HandlingTungstenite
6.19 Overlong representation of the NUL character
Case 6.19.1PassNone
Case 6.19.2PassNone
Case 6.19.3PassNone
Case 6.19.4PassNone
Case 6.19.5PassNone
6 UTF-8 HandlingTungstenite
6.20 Single UTF-16 surrogates
Case 6.20.1PassNone
Case 6.20.2PassNone
Case 6.20.3PassNone
Case 6.20.4PassNone
Case 6.20.5PassNone
Case 6.20.6PassNone
Case 6.20.7PassNone
6 UTF-8 HandlingTungstenite
6.21 Paired UTF-16 surrogates
Case 6.21.1PassNone
Case 6.21.2PassNone
Case 6.21.3PassNone
Case 6.21.4PassNone
Case 6.21.5PassNone
Case 6.21.6PassNone
Case 6.21.7PassNone
Case 6.21.8PassNone
6 UTF-8 HandlingTungstenite
6.22 Non-character code points (valid UTF-8)
Case 6.22.1Pass1000
Case 6.22.2Pass1000
Case 6.22.3Pass1000
Case 6.22.4Pass1000
Case 6.22.5Pass1000
Case 6.22.6Pass1000
Case 6.22.7Pass1000
Case 6.22.8Pass1000
Case 6.22.9Pass1000
Case 6.22.10Pass1000
Case 6.22.11Pass1000
Case 6.22.12Pass1000
Case 6.22.13Pass1000
Case 6.22.14Pass1000
Case 6.22.15Pass1000
Case 6.22.16Pass1000
Case 6.22.17Pass1000
Case 6.22.18Pass1000
Case 6.22.19Pass1000
Case 6.22.20Pass1000
Case 6.22.21Pass1000
Case 6.22.22Pass1000
Case 6.22.23Pass1000
Case 6.22.24Pass1000
Case 6.22.25Pass1000
Case 6.22.26Pass1000
Case 6.22.27Pass1000
Case 6.22.28Pass1000
Case 6.22.29Pass1000
Case 6.22.30Pass1000
Case 6.22.31Pass1000
Case 6.22.32Pass1000
Case 6.22.33Pass1000
Case 6.22.34Pass1000
6 UTF-8 HandlingTungstenite
6.23 Unicode specials (i.e. replacement char)
Case 6.23.1Pass1000
Case 6.23.2Pass1000
Case 6.23.3Pass1000
Case 6.23.4Pass1000
Case 6.23.5Pass1000
Case 6.23.6Pass1000
Case 6.23.7Pass1000
7 Close HandlingTungstenite
7.1 Basic close behavior (fuzzer initiated)
Case 7.1.1Pass1000
Case 7.1.2Pass1000
Case 7.1.3Pass1000
Case 7.1.4Pass1000
Case 7.1.5Pass1000
Case 7.1.6Info1000
7 Close HandlingTungstenite
7.3 Close frame structure: payload length (fuzzer initiated)
Case 7.3.1PassNone
Case 7.3.2PassNone
Case 7.3.3Pass1000
Case 7.3.4Pass1000
Case 7.3.5Pass1000
Case 7.3.6PassNone
7 Close HandlingTungstenite
7.5 Close frame structure: payload value (fuzzer initiated)
Case 7.5.1PassNone
7 Close HandlingTungstenite
7.7 Close frame structure: valid close codes (fuzzer initiated)
Case 7.7.1Pass1000
Case 7.7.2Pass1001
Case 7.7.3Pass1002
Case 7.7.4Pass1003
Case 7.7.5Pass1007
Case 7.7.6Pass1008
Case 7.7.7Pass1009
Case 7.7.8Pass1010
Case 7.7.9Pass1011
Case 7.7.10Pass3000
Case 7.7.11Pass3999
Case 7.7.12Pass4000
Case 7.7.13Pass4999
7 Close HandlingTungstenite
7.9 Close frame structure: invalid close codes (fuzzer initiated)
Case 7.9.1Pass1002
Case 7.9.2Pass1002
Case 7.9.3Pass1002
Case 7.9.4Pass1002
Case 7.9.5Pass1002
Case 7.9.6Pass1002
Case 7.9.7Pass1002
Case 7.9.8Pass1002
Case 7.9.9Pass1002
7 Close HandlingTungstenite
7.13 Informational close information (fuzzer initiated)
Case 7.13.1Info1002
Case 7.13.2Info1002
9 Limits/PerformanceTungstenite
9.1 Text Message (increasing size)
Case 9.1.1Pass
2 ms
1000
Case 9.1.2Pass
3 ms
1000
Case 9.1.3Pass
44 ms
1000
Case 9.1.4Pass
44 ms
1000
Case 9.1.5Pass
78 ms
1000
Case 9.1.6Pass
132 ms
1000
9 Limits/PerformanceTungstenite
9.2 Binary Message (increasing size)
Case 9.2.1Pass
2 ms
1000
Case 9.2.2Pass
4 ms
1000
Case 9.2.3Pass
6 ms
1000
Case 9.2.4Pass
26 ms
1000
Case 9.2.5Pass
62 ms
1000
Case 9.2.6Pass
96 ms
1000
9 Limits/PerformanceTungstenite
9.3 Fragmented Text Message (fixed size, increasing fragment size)
Case 9.3.1Pass
83 ms
1000
Case 9.3.2Pass
40 ms
1000
Case 9.3.3Pass
26 ms
1000
Case 9.3.4Pass
23 ms
1000
Case 9.3.5Pass
26 ms
1000
Case 9.3.6Pass
25 ms
1000
Case 9.3.7Pass
22 ms
1000
Case 9.3.8Pass
39 ms
1000
Case 9.3.9Pass
23 ms
1000
9 Limits/PerformanceTungstenite
9.4 Fragmented Binary Message (fixed size, increasing fragment size)
Case 9.4.1Pass
45 ms
1000
Case 9.4.2Pass
22 ms
1000
Case 9.4.3Pass
16 ms
1000
Case 9.4.4Pass
34 ms
1000
Case 9.4.5Pass
16 ms
1000
Case 9.4.6Pass
15 ms
1000
Case 9.4.7Pass
16 ms
1000
Case 9.4.8Pass
16 ms
1000
Case 9.4.9Pass
14 ms
1000
9 Limits/PerformanceTungstenite
9.5 Text Message (fixed size, increasing chop size)
Case 9.5.1Pass
246 ms
1000
Case 9.5.2Pass
130 ms
1000
Case 9.5.3Pass
50 ms
1000
Case 9.5.4Pass
29 ms
1000
Case 9.5.5Pass
18 ms
1000
Case 9.5.6Pass
22 ms
1000
9 Limits/PerformanceTungstenite
9.6 Binary Text Message (fixed size, increasing chop size)
Case 9.6.1Pass
189 ms
1000
Case 9.6.2Pass
96 ms
1000
Case 9.6.3Pass
65 ms
1000
Case 9.6.4Pass
42 ms
1000
Case 9.6.5Pass
18 ms
1000
Case 9.6.6Pass
10 ms
1000
9 Limits/PerformanceTungstenite
9.7 Text Message Roundtrip Time (fixed number, increasing size)
Case 9.7.1Pass
99 ms
1000
Case 9.7.2Pass
79 ms
1000
Case 9.7.3Pass
34 ms
1000
Case 9.7.4Pass
82 ms
1000
Case 9.7.5Pass
47 ms
1000
Case 9.7.6Pass
78 ms
1000
9 Limits/PerformanceTungstenite
9.8 Binary Message Roundtrip Time (fixed number, increasing size)
Case 9.8.1Pass
56 ms
1000
Case 9.8.2Pass
49 ms
1000
Case 9.8.3Pass
35 ms
1000
Case 9.8.4Pass
52 ms
1000
Case 9.8.5Pass
42 ms
1000
Case 9.8.6Pass
62 ms
1000
10 MiscTungstenite
10.1 Auto-Fragmentation
Case 10.1.1Pass1000
12 WebSocket Compression (different payloads)Tungstenite
12.1 Large JSON data file (utf8, 194056 bytes)
Case 12.1.1Pass
184 ms [0.292/0.292]
1000
Case 12.1.2Pass
159 ms [0.113/0.113]
1000
Case 12.1.3Pass
116 ms [0.067/0.067]
1000
Case 12.1.4Pass
145 ms [0.057/0.057]
1000
Case 12.1.5Pass
215 ms [0.048/0.048]
1000
Case 12.1.6Pass
258 ms [0.045/0.045]
1000
Case 12.1.7Pass
391 ms [0.044/0.044]
1000
Case 12.1.8Pass
693 ms [0.044/0.044]
1000
Case 12.1.9Pass
1225 ms [0.044/0.044]
1000
Case 12.1.10Pass
2356 ms [0.043/0.043]
1000
Case 12.1.11Pass
337 ms [0.045/0.045]
1000
Case 12.1.12Pass
389 ms [0.044/0.044]
1000
Case 12.1.13Pass
739 ms [0.044/0.044]
1000
Case 12.1.14Pass
1359 ms [0.044/0.044]
1000
Case 12.1.15Pass
2512 ms [0.043/0.043]
1000
Case 12.1.16Pass
2589 ms [0.043/0.043]
1000
Case 12.1.17Pass
2414 ms [0.043/0.043]
1000
Case 12.1.18Pass
2514 ms [0.043/0.043]
1000
12 WebSocket Compression (different payloads)Tungstenite
12.2 Lena Picture, Bitmap 512x512 bw (binary, 263222 bytes)
Case 12.2.1Pass
77 ms [1.103/1.103]
1000
Case 12.2.2Pass
59 ms [0.996/0.996]
1000
Case 12.2.3Pass
128 ms [0.966/0.966]
1000
Case 12.2.4Pass
215 ms [0.909/0.909]
1000
Case 12.2.5Pass
481 ms [0.859/0.859]
1000
Case 12.2.6Pass
860 ms [0.851/0.851]
1000
Case 12.2.7Pass
1546 ms [0.850/0.850]
1000
Case 12.2.8Pass
3184 ms [0.851/0.851]
1000
Case 12.2.9Pass
5788 ms [0.851/0.851]
1000
Case 12.2.10Pass
11095 ms [0.850/0.850]
1000
Case 12.2.11Pass
944 ms [0.851/0.851]
1000
Case 12.2.12Pass
1823 ms [0.850/0.850]
1000
Case 12.2.13Pass
3200 ms [0.851/0.851]
1000
Case 12.2.14Pass
6066 ms [0.851/0.851]
1000
Case 12.2.15Pass
11460 ms [0.850/0.850]
1000
Case 12.2.16Pass
11230 ms [0.850/0.850]
1000
Case 12.2.17Pass
11522 ms [0.850/0.850]
1000
Case 12.2.18Pass
12657 ms [0.850/0.850]
1000
12 WebSocket Compression (different payloads)Tungstenite
12.3 Human readable text, Goethe's Faust I (German) (binary, 222218 bytes)
Case 12.3.1Pass
68 ms [0.727/0.727]
1000
Case 12.3.2Pass
74 ms [0.544/0.544]
1000
Case 12.3.3Pass
124 ms [0.482/0.482]
1000
Case 12.3.4Pass
252 ms [0.422/0.422]
1000
Case 12.3.5Pass
727 ms [0.396/0.396]
1000
Case 12.3.6Pass
1278 ms [0.390/0.390]
1000
Case 12.3.7Pass
2608 ms [0.387/0.387]
1000
Case 12.3.8Pass
4755 ms [0.386/0.386]
1000
Case 12.3.9Pass
9196 ms [0.385/0.385]
1000
Case 12.3.10Pass
16905 ms [0.385/0.385]
1000
Case 12.3.11Pass
1584 ms [0.390/0.390]
1000
Case 12.3.12Pass
2463 ms [0.387/0.387]
1000
Case 12.3.13Pass
4677 ms [0.386/0.386]
1000
Case 12.3.14Pass
8714 ms [0.385/0.385]
1000
Case 12.3.15Pass
17595 ms [0.385/0.385]
1000
Case 12.3.16Pass
15884 ms [0.385/0.385]
1000
Case 12.3.17Pass
17390 ms [0.385/0.385]
1000
Case 12.3.18Pass
18554 ms [0.385/0.385]
1000
12 WebSocket Compression (different payloads)Tungstenite
12.4 Large HTML file (utf8, 263527 bytes)
Case 12.4.1Pass
473 ms [0.413/0.413]
1000
Case 12.4.2Pass
385 ms [0.148/0.148]
1000
Case 12.4.3Pass
368 ms [0.078/0.078]
1000
Case 12.4.4Pass
372 ms [0.066/0.066]
1000
Case 12.4.5Pass
462 ms [0.059/0.059]
1000
Case 12.4.6Pass
590 ms [0.056/0.056]
1000
Case 12.4.7Pass
850 ms [0.055/0.055]
1000
Case 12.4.8Pass
1225 ms [0.054/0.054]
1000
Case 12.4.9Pass
2114 ms [0.055/0.055]
1000
Case 12.4.10Pass
5141 ms [0.055/0.055]
1000
Case 12.4.11Pass
752 ms [0.056/0.056]
1000
Case 12.4.12Pass
772 ms [0.055/0.055]
1000
Case 12.4.13Pass
1672 ms [0.054/0.054]
1000
Case 12.4.14Pass
2473 ms [0.055/0.055]
1000
Case 12.4.15Pass
3504 ms [0.055/0.055]
1000
Case 12.4.16Pass
3850 ms [0.055/0.055]
1000
Case 12.4.17Pass
3768 ms [0.055/0.055]
1000
Case 12.4.18Pass
3728 ms [0.055/0.055]
1000
12 WebSocket Compression (different payloads)Tungstenite
12.5 A larger PDF (binary, 1042328 bytes)
Case 12.5.1Pass
80 ms [1.084/1.084]
1000
Case 12.5.2Pass
69 ms [1.027/1.027]
1000
Case 12.5.3Pass
119 ms [0.973/0.973]
1000
Case 12.5.4Pass
211 ms [0.786/0.786]
1000
Case 12.5.5Pass
495 ms [0.777/0.777]
1000
Case 12.5.6Pass
869 ms [0.768/0.768]
1000
Case 12.5.7Pass
1398 ms [0.763/0.763]
1000
Case 12.5.8Pass
2400 ms [0.761/0.761]
1000
Case 12.5.9Pass
5177 ms [0.759/0.759]
1000
Case 12.5.10Pass
9129 ms [0.759/0.759]
1000
Case 12.5.11Pass
822 ms [0.768/0.768]
1000
Case 12.5.12Pass
1817 ms [0.763/0.763]
1000
Case 12.5.13Pass
3390 ms [0.761/0.761]
1000
Case 12.5.14Pass
6537 ms [0.759/0.759]
1000
Case 12.5.15Pass
11355 ms [0.759/0.759]
1000
Case 12.5.16Pass
10374 ms [0.759/0.759]
1000
Case 12.5.17Pass
8742 ms [0.759/0.759]
1000
Case 12.5.18Pass
9223 ms [0.759/0.759]
1000
13 WebSocket Compression (different parameters)Tungstenite
13.1 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]
Case 13.1.1Pass
172 ms [0.292/0.292]
1000
Case 13.1.2Pass
171 ms [0.113/0.113]
1000
Case 13.1.3Pass
141 ms [0.067/0.067]
1000
Case 13.1.4Pass
181 ms [0.057/0.057]
1000
Case 13.1.5Pass
246 ms [0.048/0.048]
1000
Case 13.1.6Pass
309 ms [0.045/0.045]
1000
Case 13.1.7Pass
745 ms [0.044/0.044]
1000
Case 13.1.8Pass
1210 ms [0.044/0.044]
1000
Case 13.1.9Pass
1470 ms [0.044/0.044]
1000
Case 13.1.10Pass
2721 ms [0.043/0.043]
1000
Case 13.1.11Pass
316 ms [0.045/0.045]
1000
Case 13.1.12Pass
514 ms [0.044/0.044]
1000
Case 13.1.13Pass
919 ms [0.044/0.044]
1000
Case 13.1.14Pass
1819 ms [0.044/0.044]
1000
Case 13.1.15Pass
3503 ms [0.043/0.043]
1000
Case 13.1.16Pass
2624 ms [0.043/0.043]
1000
Case 13.1.17Pass
2958 ms [0.043/0.043]
1000
Case 13.1.18Pass
3629 ms [0.043/0.043]
1000
13 WebSocket Compression (different parameters)Tungstenite
13.2 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]
Case 13.2.1Pass
174 ms [0.985/0.292]
1000
Case 13.2.2Pass
142 ms [0.748/0.113]
1000
Case 13.2.3Pass
160 ms [0.521/0.067]
1000
Case 13.2.4Pass
179 ms [0.170/0.057]
1000
Case 13.2.5Pass
232 ms [0.075/0.048]
1000
Case 13.2.6Pass
335 ms [0.059/0.045]
1000
Case 13.2.7Pass
520 ms [0.051/0.044]
1000
Case 13.2.8Pass
787 ms [0.047/0.044]
1000
Case 13.2.9Pass
1557 ms [0.045/0.044]
1000
Case 13.2.10Pass
2781 ms [0.044/0.043]
1000
Case 13.2.11Pass
550 ms [0.059/0.045]
1000
Case 13.2.12Pass
647 ms [0.051/0.044]
1000
Case 13.2.13Pass
1124 ms [0.047/0.044]
1000
Case 13.2.14Pass
1785 ms [0.045/0.044]
1000
Case 13.2.15Pass
3578 ms [0.044/0.043]
1000
Case 13.2.16Pass
3128 ms [0.044/0.043]
1000
Case 13.2.17Pass
3289 ms [0.044/0.043]
1000
Case 13.2.18Pass
2795 ms [0.044/0.043]
1000
13 WebSocket Compression (different parameters)Tungstenite
13.3 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]
Case 13.3.1Pass
133 ms [0.304/0.292]
1000
Case 13.3.2Pass
140 ms [0.125/0.113]
1000
Case 13.3.3Pass
184 ms [0.075/0.067]
1000
Case 13.3.4Pass
193 ms [0.060/0.057]
1000
Case 13.3.5Pass
347 ms [0.043/0.048]
1000
Case 13.3.6Pass
553 ms [0.040/0.045]
1000
Case 13.3.7Pass
987 ms [0.038/0.044]
1000
Case 13.3.8Pass
1845 ms [0.038/0.044]
1000
Case 13.3.9Pass
3698 ms [0.037/0.044]
1000
Case 13.3.10Pass
6551 ms [0.037/0.043]
1000
Case 13.3.11Pass
593 ms [0.040/0.045]
1000
Case 13.3.12Pass
1061 ms [0.038/0.044]
1000
Case 13.3.13Pass
1942 ms [0.038/0.044]
1000
Case 13.3.14Pass
3545 ms [0.037/0.044]
1000
Case 13.3.15Pass
6541 ms [0.037/0.043]
1000
Case 13.3.16Pass
6409 ms [0.037/0.043]
1000
Case 13.3.17Pass
6544 ms [0.037/0.043]
1000
Case 13.3.18Pass
6566 ms [0.037/0.043]
1000
13 WebSocket Compression (different parameters)Tungstenite
13.4 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]
Case 13.4.1Pass
157 ms [0.292/0.292]
1000
Case 13.4.2Pass
146 ms [0.113/0.113]
1000
Case 13.4.3Pass
164 ms [0.067/0.067]
1000
Case 13.4.4Pass
190 ms [0.057/0.057]
1000
Case 13.4.5Pass
294 ms [0.048/0.048]
1000
Case 13.4.6Pass
393 ms [0.045/0.045]
1000
Case 13.4.7Pass
619 ms [0.044/0.044]
1000
Case 13.4.8Pass
977 ms [0.044/0.044]
1000
Case 13.4.9Pass
1717 ms [0.044/0.044]
1000
Case 13.4.10Pass
3152 ms [0.043/0.043]
1000
Case 13.4.11Pass
361 ms [0.045/0.045]
1000
Case 13.4.12Pass
621 ms [0.044/0.044]
1000
Case 13.4.13Pass
1130 ms [0.044/0.044]
1000
Case 13.4.14Pass
2005 ms [0.044/0.044]
1000
Case 13.4.15Pass
3447 ms [0.043/0.043]
1000
Case 13.4.16Pass
3487 ms [0.043/0.043]
1000
Case 13.4.17Pass
3036 ms [0.043/0.043]
1000
Case 13.4.18Pass
2654 ms [0.043/0.043]
1000
13 WebSocket Compression (different parameters)Tungstenite
13.5 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]
Case 13.5.1Pass
187 ms [0.985/0.292]
1000
Case 13.5.2Pass
180 ms [0.748/0.113]
1000
Case 13.5.3Pass
168 ms [0.521/0.067]
1000
Case 13.5.4Pass
294 ms [0.170/0.057]
1000
Case 13.5.5Pass
503 ms [0.073/0.048]
1000
Case 13.5.6Pass
813 ms [0.056/0.045]
1000
Case 13.5.7Pass
1280 ms [0.047/0.044]
1000
Case 13.5.8Pass
2638 ms [0.042/0.044]
1000
Case 13.5.9Pass
4586 ms [0.039/0.044]
1000
Case 13.5.10Pass
7735 ms [0.038/0.043]
1000
Case 13.5.11Pass
760 ms [0.056/0.045]
1000
Case 13.5.12Pass
1098 ms [0.047/0.044]
1000
Case 13.5.13Pass
2143 ms [0.042/0.044]
1000
Case 13.5.14Pass
4595 ms [0.039/0.044]
1000
Case 13.5.15Pass
7443 ms [0.038/0.043]
1000
Case 13.5.16Pass
6203 ms [0.038/0.043]
1000
Case 13.5.17Pass
6721 ms [0.038/0.043]
1000
Case 13.5.18Pass
7174 ms [0.038/0.043]
1000
13 WebSocket Compression (different parameters)Tungstenite
13.6 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]
Case 13.6.1Pass
133 ms [0.985/0.292]
1000
Case 13.6.2Pass
138 ms [0.748/0.113]
1000
Case 13.6.3Pass
185 ms [0.521/0.067]
1000
Case 13.6.4Pass
208 ms [0.170/0.057]
1000
Case 13.6.5Pass
306 ms [0.075/0.048]
1000
Case 13.6.6Pass
446 ms [0.059/0.045]
1000
Case 13.6.7Pass
563 ms [0.051/0.044]
1000
Case 13.6.8Pass
1088 ms [0.047/0.044]
1000
Case 13.6.9Pass
1940 ms [0.045/0.044]
1000
Case 13.6.10Pass
2972 ms [0.044/0.043]
1000
Case 13.6.11Pass
934 ms [0.059/0.045]
1000
Case 13.6.12Pass
1080 ms [0.051/0.044]
1000
Case 13.6.13Pass
1631 ms [0.047/0.044]
1000
Case 13.6.14Pass
2490 ms [0.045/0.044]
1000
Case 13.6.15Pass
3386 ms [0.044/0.043]
1000
Case 13.6.16Pass
3301 ms [0.044/0.043]
1000
Case 13.6.17Pass
3161 ms [0.044/0.043]
1000
Case 13.6.18Pass
2840 ms [0.044/0.043]
1000
13 WebSocket Compression (different parameters)Tungstenite
13.7 Large JSON data file (utf8, 194056 bytes) - client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)] / server accept (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]
Case 13.7.1Pass
170 ms [0.985/0.292]
1000
Case 13.7.2Pass
196 ms [0.748/0.113]
1000
Case 13.7.3Pass
206 ms [0.521/0.067]
1000
Case 13.7.4Pass
267 ms [0.170/0.057]
1000
Case 13.7.5Pass
508 ms [0.073/0.048]
1000
Case 13.7.6Pass
756 ms [0.056/0.045]
1000
Case 13.7.7Pass
1293 ms [0.047/0.044]
1000
Case 13.7.8Pass
2466 ms [0.042/0.044]
1000
Case 13.7.9Pass
3774 ms [0.039/0.044]
1000
Case 13.7.10Pass
7383 ms [0.038/0.043]
1000
Case 13.7.11Pass
749 ms [0.056/0.045]
1000
Case 13.7.12Pass
1360 ms [0.047/0.044]
1000
Case 13.7.13Pass
2370 ms [0.042/0.044]
1000
Case 13.7.14Pass
4010 ms [0.039/0.044]
1000
Case 13.7.15Pass
7205 ms [0.038/0.043]
1000
Case 13.7.16Pass
6813 ms [0.038/0.043]
1000
Case 13.7.17Pass
6182 ms [0.038/0.043]
1000
Case 13.7.18Pass
6561 ms [0.038/0.043]
1000
+

+
+
+ +

Case 1.1.1

+ Up +

Case Description

Send text message with payload 0.

+

Case Expectation

Receive echo'ed text message (with empty payload). Clean close with normal code.

+
+ +

Case 1.1.2

+ Up +

Case Description

Send text message message with payload of length 125.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.3

+ Up +

Case Description

Send text message message with payload of length 126.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.4

+ Up +

Case Description

Send text message message with payload of length 127.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.5

+ Up +

Case Description

Send text message message with payload of length 128.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.6

+ Up +

Case Description

Send text message message with payload of length 65535.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.7

+ Up +

Case Description

Send text message message with payload of length 65536.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.1.8

+ Up +

Case Description

Send text message message with payload of length 65536. Sent out data in chops of 997 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.1

+ Up +

Case Description

Send binary message with payload 0.

+

Case Expectation

Receive echo'ed binary message (with empty payload). Clean close with normal code.

+
+ +

Case 1.2.2

+ Up +

Case Description

Send binary message message with payload of length 125.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.3

+ Up +

Case Description

Send binary message message with payload of length 126.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.4

+ Up +

Case Description

Send binary message message with payload of length 127.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.5

+ Up +

Case Description

Send binary message message with payload of length 128.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.6

+ Up +

Case Description

Send binary message message with payload of length 65535.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.7

+ Up +

Case Description

Send binary message message with payload of length 65536.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 1.2.8

+ Up +

Case Description

Send binary message message with payload of length 65536. Sent out data in chops of 997 octets.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+
+ +

Case 2.1

+ Up +

Case Description

Send ping without payload.

+

Case Expectation

Pong (with empty payload) is sent in reply to Ping. Clean close with normal code.

+
+ +

Case 2.2

+ Up +

Case Description

Send ping with small text payload.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+
+ +

Case 2.3

+ Up +

Case Description

Send ping with small binary (non UTF-8) payload.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+
+ +

Case 2.4

+ Up +

Case Description

Send ping with binary payload of 125 octets.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+
+ +

Case 2.5

+ Up +

Case Description

Send ping with binary payload of 126 octets.

+

Case Expectation

Connection is failed immediately (1002/Protocol Error), since control frames are only allowed to have payload up to and including 125 octets..

+
+ +

Case 2.6

+ Up +

Case Description

Send ping with binary payload of 125 octets, send in octet-wise chops.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Implementations must be TCP clean. Clean close with normal code.

+
+ +

Case 2.7

+ Up +

Case Description

Send unsolicited pong without payload. Verify nothing is received. Clean close with normal code.

+

Case Expectation

Nothing.

+
+ +

Case 2.8

+ Up +

Case Description

Send unsolicited pong with payload. Verify nothing is received. Clean close with normal code.

+

Case Expectation

Nothing.

+
+ +

Case 2.9

+ Up +

Case Description

Send unsolicited pong with payload. Send ping with payload. Verify pong for ping is received.

+

Case Expectation

Nothing in reply to own Pong, but Pong with payload echo'ed in reply to Ping. Clean close with normal code.

+
+ +

Case 2.10

+ Up +

Case Description

Send 10 Pings with payload.

+

Case Expectation

Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.

+
+ +

Case 2.11

+ Up +

Case Description

Send 10 Pings with payload. Send out octets in octet-wise chops.

+

Case Expectation

Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.

+
+ +

Case 3.1

+ Up +

Case Description

Send small text message with RSV = 1.

+

Case Expectation

The connection is failed immediately (1002/protocol error), since RSV must be 0, when no extension defining RSV meaning has been negotiated.

+
+ +

Case 3.2

+ Up +

Case Description

Send small text message, then send again with RSV = 2, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+
+ +

Case 3.3

+ Up +

Case Description

Send small text message, then send again with RSV = 3, then send Ping. Octets are sent in frame-wise chops. Octets are sent in octet-wise chops.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+
+ +

Case 3.4

+ Up +

Case Description

Send small text message, then send again with RSV = 4, then send Ping. Octets are sent in octet-wise chops.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+
+ +

Case 3.5

+ Up +

Case Description

Send small binary message with RSV = 5.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+
+ +

Case 3.6

+ Up +

Case Description

Send Ping with RSV = 6.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+
+ +

Case 3.7

+ Up +

Case Description

Send Close with RSV = 7.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+
+ +

Case 4.1.1

+ Up +

Case Description

Send frame with reserved non-control Opcode = 3.

+

Case Expectation

The connection is failed immediately.

+
+ +

Case 4.1.2

+ Up +

Case Description

Send frame with reserved non-control Opcode = 4 and non-empty payload.

+

Case Expectation

The connection is failed immediately.

+
+ +

Case 4.1.3

+ Up +

Case Description

Send small text message, then send frame with reserved non-control Opcode = 5, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.1.4

+ Up +

Case Description

Send small text message, then send frame with reserved non-control Opcode = 6 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.1.5

+ Up +

Case Description

Send small text message, then send frame with reserved non-control Opcode = 7 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.2.1

+ Up +

Case Description

Send frame with reserved control Opcode = 11.

+

Case Expectation

The connection is failed immediately.

+
+ +

Case 4.2.2

+ Up +

Case Description

Send frame with reserved control Opcode = 12 and non-empty payload.

+

Case Expectation

The connection is failed immediately.

+
+ +

Case 4.2.3

+ Up +

Case Description

Send small text message, then send frame with reserved control Opcode = 13, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.2.4

+ Up +

Case Description

Send small text message, then send frame with reserved control Opcode = 14 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 4.2.5

+ Up +

Case Description

Send small text message, then send frame with reserved control Opcode = 15 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+
+ +

Case 5.1

+ Up +

Case Description

Send Ping fragmented into 2 fragments.

+

Case Expectation

Connection is failed immediately, since control message MUST NOT be fragmented.

+
+ +

Case 5.2

+ Up +

Case Description

Send Pong fragmented into 2 fragments.

+

Case Expectation

Connection is failed immediately, since control message MUST NOT be fragmented.

+
+ +

Case 5.3

+ Up +

Case Description

Send text Message fragmented into 2 fragments.

+

Case Expectation

Message is processed and echo'ed back to us.

+
+ +

Case 5.4

+ Up +

Case Description

Send text Message fragmented into 2 fragments, octets are sent in frame-wise chops.

+

Case Expectation

Message is processed and echo'ed back to us.

+
+ +

Case 5.5

+ Up +

Case Description

Send text Message fragmented into 2 fragments, octets are sent in octet-wise chops.

+

Case Expectation

Message is processed and echo'ed back to us.

+
+ +

Case 5.6

+ Up +

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+
+ +

Case 5.7

+ Up +

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in frame-wise chops.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+
+ +

Case 5.8

+ Up +

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in octet-wise chops.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+
+ +

Case 5.9

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.10

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in per-frame chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.11

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in octet-wise chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.12

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.13

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in per-frame chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.14

+ Up +

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in octet-wise chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.15

+ Up +

Case Description

Send text Message fragmented into 2 fragments, then Continuation Frame with FIN = false where there is nothing to continue, then unfragmented Text Message, all sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.16

+ Up +

Case Description

Repeated 2x: Continuation Frame with FIN = false (where there is nothing to continue), then text Message fragmented into 2 fragments.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.17

+ Up +

Case Description

Repeated 2x: Continuation Frame with FIN = true (where there is nothing to continue), then text Message fragmented into 2 fragments.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+
+ +

Case 5.18

+ Up +

Case Description

Send text Message fragmented into 2 fragments, with both frame opcodes set to text, sent in one chop.

+

Case Expectation

The connection is failed immediately, since all data frames after the initial data frame must have opcode 0.

+
+ +

Case 5.19

+ Up +

Case Description

A fragmented text message is sent in multiple frames. After + sending the first 2 frames of the text message, a Ping is sent. Then we wait 1s, + then we send 2 more text fragments, another Ping and then the final text fragment. + Everything is legal.

+

Case Expectation

The peer immediately answers the first Ping before + it has received the last text message fragment. The peer pong's back the Ping's + payload exactly, and echo's the payload of the fragmented message back to us.

+
+ +

Case 5.20

+ Up +

Case Description

Same as Case 5.19, but send all frames with SYNC = True. + Note, this does not change the octets sent in any way, only how the stream + is chopped up on the wire.

+

Case Expectation

Same as Case 5.19. Implementations must be agnostic to how + octet stream is chopped up on wire (must be TCP clean).

+
+ +

Case 6.1.1

+ Up +

Case Description

Send text message of length 0.

+

Case Expectation

A message is echo'ed back to us (with empty payload).

+
+ +

Case 6.1.2

+ Up +

Case Description

Send fragmented text message, 3 fragments each of length 0.

+

Case Expectation

A message is echo'ed back to us (with empty payload).

+
+ +

Case 6.1.3

+ Up +

Case Description

Send fragmented text message, 3 fragments, first and last of length 0, middle non-empty.

+

Case Expectation

A message is echo'ed back to us (with payload = payload of middle fragment).

+
+ +

Case 6.2.1

+ Up +

Case Description

Send a valid UTF-8 text message in one fragment.

MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.2.2

+ Up +

Case Description

Send a valid UTF-8 text message in two fragments, fragmented on UTF-8 code point boundary.

MESSAGE FRAGMENT 1:
Hello-µ@ßöä
48656c6c6f2dc2b540c39fc3b6c3a4

MESSAGE FRAGMENT 2:
üàá-UTF-8!!
c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.2.3

+ Up +

Case Description

Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.2.4

+ Up +

Case Description

Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
κόσμε
cebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.3.1

+ Up +

Case Description

Send invalid UTF-8 text message unfragmented.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.3.2

+ Up +

Case Description

Send invalid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.4.1

+ Up +

Case Description

Send invalid UTF-8 text message in 3 fragments (frames). +First frame payload is valid, then wait, then 2nd frame which contains the payload making the sequence invalid, then wait, then 3rd frame with rest. +Note that PART1 and PART3 are valid UTF-8 in themselves, PART2 is a 0x110000 encoded as in the UTF-8 integer encoding scheme, but the codepoint is invalid (out of range). +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+

+

Case Expectation

The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+
+ +

Case 6.4.2

+ Up +

Case Description

Same as Case 6.4.1, but in 2nd frame, we send only up to and including the octet making the complete payload invalid. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 = 8080656469746564
+

+

Case Expectation

The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+
+ +

Case 6.4.3

+ Up +

Case Description

Same as Case 6.4.1, but we send message not in 3 frames, but in 3 chops of the same message frame. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+

+

Case Expectation

The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+
+ +

Case 6.4.4

+ Up +

Case Description

Same as Case 6.4.2, but we send message not in 3 frames, but in 3 chops of the same message frame. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 =
+

+

Case Expectation

The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+
+ +

Case 6.5.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6f24776f726c64

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.5.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fc2a2776f726c64

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.5.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fe282ac776f726c64

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.5.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6ff0a4ada2776f726c64

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.5.5

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xceba

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bd

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.5

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.7

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.8

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83ce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.9

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebc

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.6.10

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.6.11

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.7.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x00

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.7.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xc280

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.7.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xe0a080

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.7.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0908080

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.8.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf888808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.8.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8480808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.9.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x7f

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.9.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xdfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.9.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.9.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.10.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.10.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.10.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.11.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xed9fbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.11.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xee8080

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.11.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.11.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.11.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf4908080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.7

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.12.8

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf020f120f220f320f420f520f620

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf820f920fa20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.13.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xdf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.7

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xefbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.8

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.9

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.14.10

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.15.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.16.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfe

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.16.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xff

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.16.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfefeffff

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.17.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc1bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe09fbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08fbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf887bfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.18.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc83bfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe08080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf0808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf880808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.19.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8080808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbe80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.20.7

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.1

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.2

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.3

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.4

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.5

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.6

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.7

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.21.8

+ Up +

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+
+ +

Case 6.22.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.5

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.6

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.7

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.8

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.9

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.10

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.11

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.12

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.13

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.14

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.15

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.16

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.17

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.18

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.19

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.20

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.21

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.22

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.23

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.24

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.25

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.26

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.27

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.28

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.29

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.30

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.31

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.32

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.33

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.22.34

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.1

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfb9

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.2

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfba

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.3

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbb

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.4

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbc

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.5

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.6

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 6.23.7

+ Up +

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+
+ +

Case 7.1.1

+ Up +

Case Description

Send a message followed by a close frame

+

Case Expectation

Echoed message followed by clean close with normal code.

+
+ +

Case 7.1.2

+ Up +

Case Description

Send two close frames

+

Case Expectation

Clean close with normal code. Second close frame ignored.

+
+ +

Case 7.1.3

+ Up +

Case Description

Send a ping after close message

+

Case Expectation

Clean close with normal code, no pong.

+
+ +

Case 7.1.4

+ Up +

Case Description

Send text message after sending a close frame.

+

Case Expectation

Clean close with normal code. Text message ignored.

+
+ +

Case 7.1.5

+ Up +

Case Description

Send message fragment1 followed by close then fragment

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.1.6

+ Up +

Case Description

Send 256K message followed by close then a ping

+

Case Expectation

Case outcome depends on implementation defined close behavior. Message and close frame are sent back to back. If the close frame is processed before the text message write is complete (as can happen in asynchronous processing models) the close frame is processed first and the text message may not be received or may only be partially recieved.

+
+ +

Case 7.3.1

+ Up +

Case Description

Send a close frame with payload length 0 (no close code, no close reason)

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.3.2

+ Up +

Case Description

Send a close frame with payload length 1

+

Case Expectation

Clean close with protocol error or drop TCP.

+
+ +

Case 7.3.3

+ Up +

Case Description

Send a close frame with payload length 2 (regular close with a code)

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.3.4

+ Up +

Case Description

Send a close frame with close code and close reason

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.3.5

+ Up +

Case Description

Send a close frame with close code and close reason of maximum length (123)

+

Case Expectation

Clean close with normal code.

+
+ +

Case 7.3.6

+ Up +

Case Description

Send a close frame with close code and close reason which is too long (124) - total frame payload 126 octets

+

Case Expectation

Clean close with protocol error code or dropped TCP connection.

+
+ +

Case 7.5.1

+ Up +

Case Description

Send a close frame with invalid UTF8 payload

+

Case Expectation

Clean close with protocol error or invalid utf8 code or dropped TCP.

+
+ +

Case 7.7.1

+ Up +

Case Description

Send close with valid close code 1000

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.2

+ Up +

Case Description

Send close with valid close code 1001

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.3

+ Up +

Case Description

Send close with valid close code 1002

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.4

+ Up +

Case Description

Send close with valid close code 1003

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.5

+ Up +

Case Description

Send close with valid close code 1007

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.6

+ Up +

Case Description

Send close with valid close code 1008

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.7

+ Up +

Case Description

Send close with valid close code 1009

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.8

+ Up +

Case Description

Send close with valid close code 1010

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.9

+ Up +

Case Description

Send close with valid close code 1011

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.10

+ Up +

Case Description

Send close with valid close code 3000

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.11

+ Up +

Case Description

Send close with valid close code 3999

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.12

+ Up +

Case Description

Send close with valid close code 4000

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.7.13

+ Up +

Case Description

Send close with valid close code 4999

+

Case Expectation

Clean close with normal or echoed code

+
+ +

Case 7.9.1

+ Up +

Case Description

Send close with invalid close code 0

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.2

+ Up +

Case Description

Send close with invalid close code 999

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.3

+ Up +

Case Description

Send close with invalid close code 1004

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.4

+ Up +

Case Description

Send close with invalid close code 1005

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.5

+ Up +

Case Description

Send close with invalid close code 1006

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.6

+ Up +

Case Description

Send close with invalid close code 1016

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.7

+ Up +

Case Description

Send close with invalid close code 1100

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.8

+ Up +

Case Description

Send close with invalid close code 2000

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.9.9

+ Up +

Case Description

Send close with invalid close code 2999

+

Case Expectation

Clean close with protocol error code or drop TCP

+
+ +

Case 7.13.1

+ Up +

Case Description

Send close with close code 5000

+

Case Expectation

Actual events are undefined by the spec.

+
+ +

Case 7.13.2

+ Up +

Case Description

Send close with close code 65536

+

Case Expectation

Actual events are undefined by the spec.

+
+ +

Case 9.1.1

+ Up +

Case Description

Send text message message with payload of length 64 * 2**10 (64k).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.2

+ Up +

Case Description

Send text message message with payload of length 256 * 2**10 (256k).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.3

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.4

+ Up +

Case Description

Send text message message with payload of length 4 * 2**20 (4M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.5

+ Up +

Case Description

Send text message message with payload of length 8 * 2**20 (8M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.1.6

+ Up +

Case Description

Send text message message with payload of length 16 * 2**20 (16M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.2.1

+ Up +

Case Description

Send binary message message with payload of length 64 * 2**10 (64k).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.2

+ Up +

Case Description

Send binary message message with payload of length 256 * 2**10 (256k).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.3

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.4

+ Up +

Case Description

Send binary message message with payload of length 4 * 2**20 (4M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.5

+ Up +

Case Description

Send binary message message with payload of length 8 * 2**20 (16M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.2.6

+ Up +

Case Description

Send binary message message with payload of length 16 * 2**20 (16M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.3.1

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.2

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.3

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.4

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.5

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.6

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.7

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.8

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.3.9

+ Up +

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (8M). Sent out in fragments of 4M.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.4.1

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.2

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.3

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.4

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.5

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.6

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.7

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.8

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.4.9

+ Up +

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4M.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.5.1

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.2

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.3

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.4

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.5

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.5.6

+ Up +

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.1

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+
+ +

Case 9.6.2

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.3

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.4

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.5

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.6.6

+ Up +

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+
+ +

Case 9.7.1

+ Up +

Case Description

Send 1000 text messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.7.2

+ Up +

Case Description

Send 1000 text messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.7.3

+ Up +

Case Description

Send 1000 text messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.7.4

+ Up +

Case Description

Send 1000 text messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 9.7.5

+ Up +

Case Description

Send 1000 text messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 9.7.6

+ Up +

Case Description

Send 1000 text messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 9.8.1

+ Up +

Case Description

Send 1000 binary messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.8.2

+ Up +

Case Description

Send 1000 binary messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.8.3

+ Up +

Case Description

Send 1000 binary messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 9.8.4

+ Up +

Case Description

Send 1000 binary messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 9.8.5

+ Up +

Case Description

Send 1000 binary messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 9.8.6

+ Up +

Case Description

Send 1000 binary messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 10.1.1

+ Up +

Case Description

Send text message with payload of length 65536 auto-fragmented with autoFragmentSize = 1300.

+

Case Expectation

Receive echo'ed text message (with payload as sent and transmitted frame counts as expected). Clean close with normal code.

+
+ +

Case 12.1.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.1.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.1.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.1.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.1.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.1.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.2.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.2.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.2.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.2.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.2.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.3.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.3.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.3.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.3.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.3.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.4.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.4.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.4.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.4.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.4.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.5.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 12.5.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 12.5.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 12.5.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 12.5.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.1.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.1.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.1.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.1.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.1.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.2.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.2.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.2.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.2.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.2.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.3.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.3.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.3.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.3.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.3.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.4.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.4.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.4.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.4.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.4.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.5.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.5.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.5.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.5.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.5.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.6.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.6.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.6.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.6.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.6.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.1

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.7.2

+ Up +

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+
+ +

Case 13.7.3

+ Up +

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+
+ +

Case 13.7.4

+ Up +

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+
+ +

Case 13.7.5

+ Up +

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.6

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.7

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.8

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.9

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.10

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.11

+ Up +

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.12

+ Up +

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.13

+ Up +

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.14

+ Up +

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.15

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.16

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.17

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+ +

Case 13.7.18

+ Up +

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+
+

+ + diff --git a/autobahn/client/index.json b/autobahn/client/index.json new file mode 100644 index 0000000..8c50af3 --- /dev/null +++ b/autobahn/client/index.json @@ -0,0 +1,3623 @@ +{ + "Tungstenite": { + "1.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_1_1.json" + }, + "1.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_1_2.json" + }, + "1.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_1_3.json" + }, + "1.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_1_4.json" + }, + "1.1.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_1_5.json" + }, + "1.1.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_1_6.json" + }, + "1.1.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_1_7.json" + }, + "1.1.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 5, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_1_8.json" + }, + "1.2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_2_1.json" + }, + "1.2.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_2_2.json" + }, + "1.2.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_2_3.json" + }, + "1.2.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_2_4.json" + }, + "1.2.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_2_5.json" + }, + "1.2.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_2_6.json" + }, + "1.2.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_2_7.json" + }, + "1.2.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 7, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_1_2_8.json" + }, + "10.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_10_1_1.json" + }, + "12.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 184, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_1.json" + }, + "12.1.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2356, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_10.json" + }, + "12.1.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 337, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_11.json" + }, + "12.1.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 389, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_12.json" + }, + "12.1.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 739, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_13.json" + }, + "12.1.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1359, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_14.json" + }, + "12.1.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2512, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_15.json" + }, + "12.1.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2589, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_16.json" + }, + "12.1.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2414, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_17.json" + }, + "12.1.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2514, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_18.json" + }, + "12.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 159, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_2.json" + }, + "12.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 116, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_3.json" + }, + "12.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 145, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_4.json" + }, + "12.1.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 215, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_5.json" + }, + "12.1.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 258, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_6.json" + }, + "12.1.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 391, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_7.json" + }, + "12.1.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 693, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_8.json" + }, + "12.1.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1225, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_1_9.json" + }, + "12.2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 77, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_1.json" + }, + "12.2.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 11095, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_10.json" + }, + "12.2.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 944, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_11.json" + }, + "12.2.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1823, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_12.json" + }, + "12.2.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3200, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_13.json" + }, + "12.2.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6066, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_14.json" + }, + "12.2.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 11460, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_15.json" + }, + "12.2.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 11230, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_16.json" + }, + "12.2.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 11522, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_17.json" + }, + "12.2.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 12657, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_18.json" + }, + "12.2.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 59, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_2.json" + }, + "12.2.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 128, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_3.json" + }, + "12.2.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 215, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_4.json" + }, + "12.2.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 481, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_5.json" + }, + "12.2.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 860, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_6.json" + }, + "12.2.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1546, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_7.json" + }, + "12.2.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3184, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_8.json" + }, + "12.2.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 5788, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_2_9.json" + }, + "12.3.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 68, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_1.json" + }, + "12.3.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 16905, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_10.json" + }, + "12.3.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1584, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_11.json" + }, + "12.3.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2463, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_12.json" + }, + "12.3.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4677, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_13.json" + }, + "12.3.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 8714, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_14.json" + }, + "12.3.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 17595, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_15.json" + }, + "12.3.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 15884, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_16.json" + }, + "12.3.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 17390, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_17.json" + }, + "12.3.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 18554, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_18.json" + }, + "12.3.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 74, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_2.json" + }, + "12.3.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 124, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_3.json" + }, + "12.3.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 252, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_4.json" + }, + "12.3.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 727, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_5.json" + }, + "12.3.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1278, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_6.json" + }, + "12.3.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2608, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_7.json" + }, + "12.3.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4755, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_8.json" + }, + "12.3.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 9196, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_3_9.json" + }, + "12.4.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 473, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_1.json" + }, + "12.4.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 5141, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_10.json" + }, + "12.4.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 752, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_11.json" + }, + "12.4.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 772, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_12.json" + }, + "12.4.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1672, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_13.json" + }, + "12.4.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2473, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_14.json" + }, + "12.4.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3504, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_15.json" + }, + "12.4.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3850, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_16.json" + }, + "12.4.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3768, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_17.json" + }, + "12.4.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3728, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_18.json" + }, + "12.4.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 385, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_2.json" + }, + "12.4.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 368, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_3.json" + }, + "12.4.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 372, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_4.json" + }, + "12.4.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 462, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_5.json" + }, + "12.4.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 590, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_6.json" + }, + "12.4.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 850, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_7.json" + }, + "12.4.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1225, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_8.json" + }, + "12.4.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2114, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_4_9.json" + }, + "12.5.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 80, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_1.json" + }, + "12.5.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 9129, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_10.json" + }, + "12.5.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 822, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_11.json" + }, + "12.5.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1817, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_12.json" + }, + "12.5.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3390, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_13.json" + }, + "12.5.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6537, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_14.json" + }, + "12.5.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 11355, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_15.json" + }, + "12.5.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 10374, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_16.json" + }, + "12.5.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 8742, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_17.json" + }, + "12.5.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 9223, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_18.json" + }, + "12.5.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 69, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_2.json" + }, + "12.5.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 119, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_3.json" + }, + "12.5.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 211, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_4.json" + }, + "12.5.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 495, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_5.json" + }, + "12.5.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 869, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_6.json" + }, + "12.5.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1398, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_7.json" + }, + "12.5.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2400, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_8.json" + }, + "12.5.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 5177, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_12_5_9.json" + }, + "13.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 172, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_1.json" + }, + "13.1.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2721, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_10.json" + }, + "13.1.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 316, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_11.json" + }, + "13.1.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 514, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_12.json" + }, + "13.1.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 919, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_13.json" + }, + "13.1.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1819, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_14.json" + }, + "13.1.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3503, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_15.json" + }, + "13.1.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2624, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_16.json" + }, + "13.1.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2958, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_17.json" + }, + "13.1.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3629, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_18.json" + }, + "13.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 171, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_2.json" + }, + "13.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 141, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_3.json" + }, + "13.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 181, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_4.json" + }, + "13.1.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 246, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_5.json" + }, + "13.1.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 309, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_6.json" + }, + "13.1.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 745, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_7.json" + }, + "13.1.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1210, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_8.json" + }, + "13.1.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1470, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_1_9.json" + }, + "13.2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 174, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_1.json" + }, + "13.2.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2781, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_10.json" + }, + "13.2.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 550, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_11.json" + }, + "13.2.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 647, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_12.json" + }, + "13.2.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1124, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_13.json" + }, + "13.2.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1785, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_14.json" + }, + "13.2.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3578, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_15.json" + }, + "13.2.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3128, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_16.json" + }, + "13.2.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3289, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_17.json" + }, + "13.2.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2795, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_18.json" + }, + "13.2.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 142, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_2.json" + }, + "13.2.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 160, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_3.json" + }, + "13.2.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 179, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_4.json" + }, + "13.2.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 232, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_5.json" + }, + "13.2.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 335, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_6.json" + }, + "13.2.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 520, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_7.json" + }, + "13.2.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 787, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_8.json" + }, + "13.2.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1557, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_2_9.json" + }, + "13.3.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 133, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_1.json" + }, + "13.3.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6551, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_10.json" + }, + "13.3.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 593, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_11.json" + }, + "13.3.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1061, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_12.json" + }, + "13.3.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1942, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_13.json" + }, + "13.3.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3545, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_14.json" + }, + "13.3.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6541, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_15.json" + }, + "13.3.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6409, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_16.json" + }, + "13.3.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6544, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_17.json" + }, + "13.3.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6566, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_18.json" + }, + "13.3.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 140, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_2.json" + }, + "13.3.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 184, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_3.json" + }, + "13.3.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 193, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_4.json" + }, + "13.3.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 347, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_5.json" + }, + "13.3.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 553, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_6.json" + }, + "13.3.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 987, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_7.json" + }, + "13.3.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1845, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_8.json" + }, + "13.3.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3698, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_3_9.json" + }, + "13.4.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 157, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_1.json" + }, + "13.4.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3152, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_10.json" + }, + "13.4.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 361, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_11.json" + }, + "13.4.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 621, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_12.json" + }, + "13.4.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1130, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_13.json" + }, + "13.4.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2005, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_14.json" + }, + "13.4.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3447, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_15.json" + }, + "13.4.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3487, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_16.json" + }, + "13.4.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3036, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_17.json" + }, + "13.4.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2654, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_18.json" + }, + "13.4.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 146, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_2.json" + }, + "13.4.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 164, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_3.json" + }, + "13.4.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 190, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_4.json" + }, + "13.4.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 294, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_5.json" + }, + "13.4.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 393, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_6.json" + }, + "13.4.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 619, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_7.json" + }, + "13.4.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 977, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_8.json" + }, + "13.4.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1717, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_4_9.json" + }, + "13.5.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 187, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_1.json" + }, + "13.5.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 7735, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_10.json" + }, + "13.5.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 760, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_11.json" + }, + "13.5.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1098, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_12.json" + }, + "13.5.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2143, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_13.json" + }, + "13.5.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4595, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_14.json" + }, + "13.5.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 7443, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_15.json" + }, + "13.5.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6203, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_16.json" + }, + "13.5.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6721, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_17.json" + }, + "13.5.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 7174, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_18.json" + }, + "13.5.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 180, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_2.json" + }, + "13.5.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 168, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_3.json" + }, + "13.5.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 294, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_4.json" + }, + "13.5.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 503, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_5.json" + }, + "13.5.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 813, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_6.json" + }, + "13.5.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1280, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_7.json" + }, + "13.5.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2638, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_8.json" + }, + "13.5.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4586, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_5_9.json" + }, + "13.6.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 133, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_1.json" + }, + "13.6.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2972, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_10.json" + }, + "13.6.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 934, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_11.json" + }, + "13.6.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1080, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_12.json" + }, + "13.6.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1631, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_13.json" + }, + "13.6.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2490, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_14.json" + }, + "13.6.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3386, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_15.json" + }, + "13.6.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3301, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_16.json" + }, + "13.6.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3161, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_17.json" + }, + "13.6.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2840, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_18.json" + }, + "13.6.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 138, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_2.json" + }, + "13.6.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 185, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_3.json" + }, + "13.6.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 208, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_4.json" + }, + "13.6.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 306, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_5.json" + }, + "13.6.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 446, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_6.json" + }, + "13.6.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 563, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_7.json" + }, + "13.6.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1088, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_8.json" + }, + "13.6.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1940, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_6_9.json" + }, + "13.7.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 170, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_1.json" + }, + "13.7.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 7383, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_10.json" + }, + "13.7.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 749, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_11.json" + }, + "13.7.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1360, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_12.json" + }, + "13.7.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2370, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_13.json" + }, + "13.7.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4010, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_14.json" + }, + "13.7.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 7205, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_15.json" + }, + "13.7.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6813, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_16.json" + }, + "13.7.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6182, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_17.json" + }, + "13.7.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6561, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_18.json" + }, + "13.7.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 196, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_2.json" + }, + "13.7.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 206, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_3.json" + }, + "13.7.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 267, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_4.json" + }, + "13.7.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 508, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_5.json" + }, + "13.7.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 756, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_6.json" + }, + "13.7.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1293, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_7.json" + }, + "13.7.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2466, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_8.json" + }, + "13.7.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3774, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_13_7_9.json" + }, + "2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_1.json" + }, + "2.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_10.json" + }, + "2.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 11, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_11.json" + }, + "2.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_2.json" + }, + "2.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_3.json" + }, + "2.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_4.json" + }, + "2.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_2_5.json" + }, + "2.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 11, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_6.json" + }, + "2.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_7.json" + }, + "2.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_8.json" + }, + "2.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_2_9.json" + }, + "3.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_3_1.json" + }, + "3.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_3_2.json" + }, + "3.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_3_3.json" + }, + "3.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_3_4.json" + }, + "3.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_3_5.json" + }, + "3.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_3_6.json" + }, + "3.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_3_7.json" + }, + "4.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_1_1.json" + }, + "4.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_1_2.json" + }, + "4.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_1_3.json" + }, + "4.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_1_4.json" + }, + "4.1.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_1_5.json" + }, + "4.2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_2_1.json" + }, + "4.2.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_2_2.json" + }, + "4.2.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_2_3.json" + }, + "4.2.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_2_4.json" + }, + "4.2.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_4_2_5.json" + }, + "5.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_1.json" + }, + "5.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_10.json" + }, + "5.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_11.json" + }, + "5.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_12.json" + }, + "5.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_13.json" + }, + "5.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_14.json" + }, + "5.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_15.json" + }, + "5.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_16.json" + }, + "5.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_17.json" + }, + "5.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_18.json" + }, + "5.19": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1005, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_5_19.json" + }, + "5.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_2.json" + }, + "5.20": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1004, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_5_20.json" + }, + "5.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_5_3.json" + }, + "5.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_5_4.json" + }, + "5.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 5, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_5_5.json" + }, + "5.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_5_6.json" + }, + "5.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_5_7.json" + }, + "5.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 10, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_5_8.json" + }, + "5.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_5_9.json" + }, + "6.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_1_1.json" + }, + "6.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_1_2.json" + }, + "6.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_1_3.json" + }, + "6.10.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_10_1.json" + }, + "6.10.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_10_2.json" + }, + "6.10.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_10_3.json" + }, + "6.11.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_11_1.json" + }, + "6.11.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_11_2.json" + }, + "6.11.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_11_3.json" + }, + "6.11.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_11_4.json" + }, + "6.11.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_11_5.json" + }, + "6.12.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_12_1.json" + }, + "6.12.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_12_2.json" + }, + "6.12.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_12_3.json" + }, + "6.12.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_12_4.json" + }, + "6.12.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_12_5.json" + }, + "6.12.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_12_6.json" + }, + "6.12.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_12_7.json" + }, + "6.12.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_12_8.json" + }, + "6.13.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_13_1.json" + }, + "6.13.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_13_2.json" + }, + "6.13.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_13_3.json" + }, + "6.13.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_13_4.json" + }, + "6.13.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_13_5.json" + }, + "6.14.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_1.json" + }, + "6.14.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_10.json" + }, + "6.14.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_2.json" + }, + "6.14.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_3.json" + }, + "6.14.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_4.json" + }, + "6.14.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_5.json" + }, + "6.14.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_6.json" + }, + "6.14.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_7.json" + }, + "6.14.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_8.json" + }, + "6.14.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_14_9.json" + }, + "6.15.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_15_1.json" + }, + "6.16.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_16_1.json" + }, + "6.16.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_16_2.json" + }, + "6.16.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_16_3.json" + }, + "6.17.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_17_1.json" + }, + "6.17.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 7, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_17_2.json" + }, + "6.17.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_17_3.json" + }, + "6.17.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_17_4.json" + }, + "6.17.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_17_5.json" + }, + "6.18.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_18_1.json" + }, + "6.18.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_18_2.json" + }, + "6.18.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_18_3.json" + }, + "6.18.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_18_4.json" + }, + "6.18.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_18_5.json" + }, + "6.19.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_19_1.json" + }, + "6.19.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_19_2.json" + }, + "6.19.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_19_3.json" + }, + "6.19.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_19_4.json" + }, + "6.19.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_19_5.json" + }, + "6.2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_2_1.json" + }, + "6.2.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_2_2.json" + }, + "6.2.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_2_3.json" + }, + "6.2.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_2_4.json" + }, + "6.20.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_20_1.json" + }, + "6.20.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_20_2.json" + }, + "6.20.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_20_3.json" + }, + "6.20.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_20_4.json" + }, + "6.20.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_20_5.json" + }, + "6.20.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_20_6.json" + }, + "6.20.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_20_7.json" + }, + "6.21.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_21_1.json" + }, + "6.21.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_21_2.json" + }, + "6.21.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_21_3.json" + }, + "6.21.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_21_4.json" + }, + "6.21.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_21_5.json" + }, + "6.21.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_21_6.json" + }, + "6.21.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_21_7.json" + }, + "6.21.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_21_8.json" + }, + "6.22.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_1.json" + }, + "6.22.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_10.json" + }, + "6.22.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_11.json" + }, + "6.22.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_12.json" + }, + "6.22.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_13.json" + }, + "6.22.14": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_14.json" + }, + "6.22.15": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_15.json" + }, + "6.22.16": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_16.json" + }, + "6.22.17": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_17.json" + }, + "6.22.18": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_18.json" + }, + "6.22.19": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_19.json" + }, + "6.22.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_2.json" + }, + "6.22.20": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_20.json" + }, + "6.22.21": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_21.json" + }, + "6.22.22": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_22.json" + }, + "6.22.23": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_23.json" + }, + "6.22.24": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_24.json" + }, + "6.22.25": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_25.json" + }, + "6.22.26": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_26.json" + }, + "6.22.27": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_27.json" + }, + "6.22.28": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_28.json" + }, + "6.22.29": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_29.json" + }, + "6.22.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 5, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_3.json" + }, + "6.22.30": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_30.json" + }, + "6.22.31": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_31.json" + }, + "6.22.32": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_32.json" + }, + "6.22.33": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_33.json" + }, + "6.22.34": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_34.json" + }, + "6.22.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_4.json" + }, + "6.22.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_5.json" + }, + "6.22.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 5, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_6.json" + }, + "6.22.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_7.json" + }, + "6.22.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_8.json" + }, + "6.22.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_22_9.json" + }, + "6.23.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_23_1.json" + }, + "6.23.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_23_2.json" + }, + "6.23.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_23_3.json" + }, + "6.23.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_23_4.json" + }, + "6.23.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_23_5.json" + }, + "6.23.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_23_6.json" + }, + "6.23.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_23_7.json" + }, + "6.3.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_3_1.json" + }, + "6.3.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_3_2.json" + }, + "6.4.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1003, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_4_1.json" + }, + "6.4.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1004, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_4_2.json" + }, + "6.4.3": { + "behavior": "NON-STRICT", + "behaviorClose": "OK", + "duration": 2009, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_4_3.json" + }, + "6.4.4": { + "behavior": "NON-STRICT", + "behaviorClose": "OK", + "duration": 2004, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_4_4.json" + }, + "6.5.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_5_1.json" + }, + "6.5.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_5_2.json" + }, + "6.5.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_5_3.json" + }, + "6.5.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_5_4.json" + }, + "6.5.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_5_5.json" + }, + "6.6.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_6_1.json" + }, + "6.6.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_6_10.json" + }, + "6.6.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_6_11.json" + }, + "6.6.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 7, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_6_2.json" + }, + "6.6.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_6_3.json" + }, + "6.6.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_6_4.json" + }, + "6.6.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_6_5.json" + }, + "6.6.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_6_6.json" + }, + "6.6.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_6_7.json" + }, + "6.6.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_6_8.json" + }, + "6.6.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_6_9.json" + }, + "6.7.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_7_1.json" + }, + "6.7.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_7_2.json" + }, + "6.7.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_7_3.json" + }, + "6.7.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_7_4.json" + }, + "6.8.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_8_1.json" + }, + "6.8.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_6_8_2.json" + }, + "6.9.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_9_1.json" + }, + "6.9.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_9_2.json" + }, + "6.9.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_9_3.json" + }, + "6.9.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_6_9_4.json" + }, + "7.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_1_1.json" + }, + "7.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_1_2.json" + }, + "7.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_1_3.json" + }, + "7.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_1_4.json" + }, + "7.1.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_1_5.json" + }, + "7.1.6": { + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "duration": 9, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_1_6.json" + }, + "7.13.1": { + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_13_1.json" + }, + "7.13.2": { + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_13_2.json" + }, + "7.3.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 5, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_7_3_1.json" + }, + "7.3.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_7_3_2.json" + }, + "7.3.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_3_3.json" + }, + "7.3.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_3_4.json" + }, + "7.3.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_3_5.json" + }, + "7.3.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_7_3_6.json" + }, + "7.5.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": null, + "reportfile": "tungstenite_case_7_5_1.json" + }, + "7.7.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_7_7_1.json" + }, + "7.7.10": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 3000, + "reportfile": "tungstenite_case_7_7_10.json" + }, + "7.7.11": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": 3999, + "reportfile": "tungstenite_case_7_7_11.json" + }, + "7.7.12": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 4000, + "reportfile": "tungstenite_case_7_7_12.json" + }, + "7.7.13": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 4999, + "reportfile": "tungstenite_case_7_7_13.json" + }, + "7.7.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1001, + "reportfile": "tungstenite_case_7_7_2.json" + }, + "7.7.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_7_3.json" + }, + "7.7.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1003, + "reportfile": "tungstenite_case_7_7_4.json" + }, + "7.7.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1007, + "reportfile": "tungstenite_case_7_7_5.json" + }, + "7.7.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1008, + "reportfile": "tungstenite_case_7_7_6.json" + }, + "7.7.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1009, + "reportfile": "tungstenite_case_7_7_7.json" + }, + "7.7.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1010, + "reportfile": "tungstenite_case_7_7_8.json" + }, + "7.7.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1011, + "reportfile": "tungstenite_case_7_7_9.json" + }, + "7.9.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_9_1.json" + }, + "7.9.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_9_2.json" + }, + "7.9.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_9_3.json" + }, + "7.9.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_9_4.json" + }, + "7.9.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_9_5.json" + }, + "7.9.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 0, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_9_6.json" + }, + "7.9.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_9_7.json" + }, + "7.9.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_9_8.json" + }, + "7.9.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 1, + "remoteCloseCode": 1002, + "reportfile": "tungstenite_case_7_9_9.json" + }, + "9.1.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_1_1.json" + }, + "9.1.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 3, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_1_2.json" + }, + "9.1.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_1_3.json" + }, + "9.1.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 44, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_1_4.json" + }, + "9.1.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 78, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_1_5.json" + }, + "9.1.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 132, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_1_6.json" + }, + "9.2.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 2, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_2_1.json" + }, + "9.2.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 4, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_2_2.json" + }, + "9.2.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 6, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_2_3.json" + }, + "9.2.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 26, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_2_4.json" + }, + "9.2.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 62, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_2_5.json" + }, + "9.2.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 96, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_2_6.json" + }, + "9.3.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 83, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_3_1.json" + }, + "9.3.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 40, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_3_2.json" + }, + "9.3.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 26, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_3_3.json" + }, + "9.3.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 23, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_3_4.json" + }, + "9.3.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 26, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_3_5.json" + }, + "9.3.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 25, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_3_6.json" + }, + "9.3.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 22, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_3_7.json" + }, + "9.3.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 39, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_3_8.json" + }, + "9.3.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 23, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_3_9.json" + }, + "9.4.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 45, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_4_1.json" + }, + "9.4.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 22, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_4_2.json" + }, + "9.4.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 16, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_4_3.json" + }, + "9.4.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 34, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_4_4.json" + }, + "9.4.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 16, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_4_5.json" + }, + "9.4.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 15, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_4_6.json" + }, + "9.4.7": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 16, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_4_7.json" + }, + "9.4.8": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 16, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_4_8.json" + }, + "9.4.9": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 14, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_4_9.json" + }, + "9.5.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 246, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_5_1.json" + }, + "9.5.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 130, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_5_2.json" + }, + "9.5.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 50, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_5_3.json" + }, + "9.5.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 29, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_5_4.json" + }, + "9.5.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 18, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_5_5.json" + }, + "9.5.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 22, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_5_6.json" + }, + "9.6.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 189, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_6_1.json" + }, + "9.6.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 96, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_6_2.json" + }, + "9.6.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 65, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_6_3.json" + }, + "9.6.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 42, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_6_4.json" + }, + "9.6.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 18, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_6_5.json" + }, + "9.6.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 10, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_6_6.json" + }, + "9.7.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 99, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_7_1.json" + }, + "9.7.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 79, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_7_2.json" + }, + "9.7.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 34, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_7_3.json" + }, + "9.7.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 82, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_7_4.json" + }, + "9.7.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 47, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_7_5.json" + }, + "9.7.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 78, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_7_6.json" + }, + "9.8.1": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 56, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_8_1.json" + }, + "9.8.2": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 49, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_8_2.json" + }, + "9.8.3": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 35, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_8_3.json" + }, + "9.8.4": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 52, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_8_4.json" + }, + "9.8.5": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 42, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_8_5.json" + }, + "9.8.6": { + "behavior": "OK", + "behaviorClose": "OK", + "duration": 62, + "remoteCloseCode": 1000, + "reportfile": "tungstenite_case_9_8_6.json" + } + } +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_10_1_1.html b/autobahn/client/tungstenite_case_10_1_1.html new file mode 100644 index 0000000..74dd0e6 --- /dev/null +++ b/autobahn/client/tungstenite_case_10_1_1.html @@ -0,0 +1,510 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 10.1.1 : Pass - 2 ms @ 2025-09-11T20:05:55.750Z

+

Case Description

Send text message with payload of length 65536 auto-fragmented with autoFragmentSize = 1300.

+

Case Expectation

Receive echo'ed text message (with payload as sent and transmitted frame counts as expected). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=301&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ZDuaUpgAcizmCb0AkXs6Hg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: yYcf2PhzC09kAl8JjqpOkdaTa+k=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
51070151070
Total465815
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
2061206
5401540
13045065200
Total5365950
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
050
11
81
Total52
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333031266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 017e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
005 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
007 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
008 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
009 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
010 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
011 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
012 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
013 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
014 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
015 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
016 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
017 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
018 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
019 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
020 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
021 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
022 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
023 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
024 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
025 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
026 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
027 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
028 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
029 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
030 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
031 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
032 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
033 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
034 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
035 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
036 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
037 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
038 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
039 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
040 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
041 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
042 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
043 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
044 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
045 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
046 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
047 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
048 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
049 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
050 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
051 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
052 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
053 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
054 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
055 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
056 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
057 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
058 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
059 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
060 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
061 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
062 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
063 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
064 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
065 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
066 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
067 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
068 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
069 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
070 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
071 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
072 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
073 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
074 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
075 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
076 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
077 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
078 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
079 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
080 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
081 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
082 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
083 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
084 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
085 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
086 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
087 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
088 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
089 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
090 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
091 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
092 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
093 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
094 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
095 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
096 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
097 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
098 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
099 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
100 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1300, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
101 TX OCTETS: 007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
102 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=536, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
103 TX OCTETS: 807e02182a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
104 FAIL CONNECTION AFTER 10.000000 sec
+
105 RX OCTETS: 81ff0000000000010000cb586dd9e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3
+
               e17247f3e17247f3e17247f3e172 ...
+
106 RX OCTETS: 47f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3
+
               e17247f3e17247f3e17247f3e172 ...
+
107 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASKED=True, MASK=6362353836646439
+
               **************************************************************** ...
+
108 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
109 TX OCTETS: 880203e8
+
110 RX OCTETS: 8882ce1f840bcdf7
+
111 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6365316638343062
+
               0x03e8
+
112 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_10_1_1.json b/autobahn/client/tungstenite_case_10_1_1.json new file mode 100644 index 0000000..f278236 --- /dev/null +++ b/autobahn/client/tungstenite_case_10_1_1.json @@ -0,0 +1,1287 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 301, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message with payload of length 65536 auto-fragmented with autoFragmentSize = 1300.", + "droppedByMe": true, + "duration": 2, + "expectation": "Receive echo'ed text message (with payload as sent and transmitted frame counts as expected). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=301&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ZDuaUpgAcizmCb0AkXs6Hg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: yYcf2PhzC09kAl8JjqpOkdaTa+k=\r\n\r\n", + "id": "10.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "51070": 1 + }, + "started": "2025-09-11T20:05:55.750Z", + "trafficStats": null, + "txFrameStats": { + "0": 50, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "540": 1, + "1304": 50 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333031266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "017e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 1300, + "**************************************************************** ..." + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 1304, + "007e05142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "TF", + [ + 536, + "**************************************************************** ..." + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 540, + "807e02182a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 10 + ], + [ + "RO", + [ + 14480, + "81ff0000000000010000cb586dd9e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e172 ..." + ] + ], + [ + "RO", + [ + 51070, + "47f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e17247f3e172 ..." + ] + ], + [ + "RF", + [ + 65536, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "cb586dd9" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ce1f840bcdf7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ce1f840b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_1.html b/autobahn/client/tungstenite_case_12_1_1.html new file mode 100644 index 0000000..c60e2a9 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_1.html @@ -0,0 +1,324 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.1 : Pass - 184 ms @ 2025-09-11T20:05:55.767Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=302&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ab7m6FZp9OZN4DPzkfeOYw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: h5H9iQ9sw8Sjcs7TcBGQGxS3VoU=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
107557550
1166726
1237444
131031339
1424336
15460
16232
18118
19357
20120
21121
22122
24248
2571257
Total100210938
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
67554530
766462
837296
9103927
1024240
11444
12224
14114
15345
16116
17117
18118
20240
2521252
Total10026929
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333032266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888247e79648440f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3437653739363438
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_1.json b/autobahn/client/tungstenite_case_12_1_1.json new file mode 100644 index 0000000..3e8bdbe --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_1.json @@ -0,0 +1,171 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 302, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 184, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=302&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ab7m6FZp9OZN4DPzkfeOYw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: h5H9iQ9sw8Sjcs7TcBGQGxS3VoU=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 755, + "11": 66, + "12": 37, + "13": 103, + "14": 24, + "15": 4, + "16": 2, + "18": 1, + "19": 3, + "20": 1, + "21": 1, + "22": 1, + "24": 2, + "257": 1 + }, + "started": "2025-09-11T20:05:55.767Z", + "trafficStats": { + "incomingCompressionRatio": 0.2920625, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 4673, + "incomingOctetsWireLevel": 10673, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 1.2839717526214423, + "outgoingCompressionRatio": 0.2920625, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 4673, + "outgoingOctetsWireLevel": 6673, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.4279905842071474, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 755, + "7": 66, + "8": 37, + "9": 103, + "10": 24, + "11": 4, + "12": 2, + "14": 1, + "15": 3, + "16": 1, + "17": 1, + "18": 1, + "20": 2, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333032266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888247e79648440f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "47e79648" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_10.html b/autobahn/client/tungstenite_case_12_1_10.html new file mode 100644 index 0000000..03d88b1 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_10.html @@ -0,0 +1,586 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.10 : Pass - 2356 ms @ 2025-09-11T20:05:59.165Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=311&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: I0BsrT3FYgB6EShlzfFRVw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: itPaqbC7AsTnCTMD9Uei3JYZRXg=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668354
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333131266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888206c6661e052e
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3036633636363165
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_10.json b/autobahn/client/tungstenite_case_12_1_10.json new file mode 100644 index 0000000..f1a7ed9 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_10.json @@ -0,0 +1,433 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 311, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2356, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=311&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: I0BsrT3FYgB6EShlzfFRVw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: itPaqbC7AsTnCTMD9Uei3JYZRXg=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:05:59.165Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333131266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888206c6661e052e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "06c6661e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_11.html b/autobahn/client/tungstenite_case_12_1_11.html new file mode 100644 index 0000000..754a7ac --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_11.html @@ -0,0 +1,662 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.11 : Pass - 337 ms @ 2025-09-11T20:06:01.523Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=312&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: N6ZHNrCVw0gXMPnvaqYCdw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: jjb2yykXWL/Z0msnejDdB8wAFeY=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
30551525
30661836
3072614
30851540
30961854
310113410
311103110
3123936
3131313
31451570
3151315
3163948
3171317
31851590
31972233
32041280
32161926
322123864
32341292
324123888
325113575
326103260
327134251
328103280
329185922
330165280
331154965
332103320
333216993
334217014
335196365
336134368
337165392
33872366
33972373
340124080
341113751
342103420
34351715
34472408
34541380
34651730
34751735
34831044
3491349
35051750
35151755
35262112
35393177
35493186
35593195
35682848
357103570
35882864
359145026
36093240
361103610
362124344
36393267
36482912
365124380
36682928
367103670
36841472
36962214
37062220
3712742
3722744
373114103
37472618
3752750
376114136
37772639
37883024
37931137
38072660
38183048
38262292
383103830
38462304
38541540
3862772
38772709
3882776
38931167
39031170
39141564
39231176
39331179
39451970
3952790
39641584
39731191
39841592
39931197
40031200
40162406
40241608
40331209
4041404
4051405
40641624
40731221
40831224
4091409
41041640
41183288
41231236
4132826
41472898
41562490
4162832
4171417
4181418
41941676
420125040
42152105
42231266
42331269
4242848
4252850
42672982
42741708
42831284
42931287
43052150
4312862
43331299
43431302
43531305
4361436
4371437
43831314
4401440
4411441
4452890
4461446
44731341
4491449
4511451
45231356
4531453
45431362
45531365
4561456
45794113
45883664
4592918
46073220
461104610
46294158
4632926
46473248
465136045
46662796
46783736
46852340
46983752
47094230
47162826
47283776
4732946
47441896
4751475
4762952
4772954
4781478
4791479
4802960
4811481
4821482
48331449
4841484
4861486
4881488
4912982
4921492
49331479
4941494
4961496
4971497
Total1002377539
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
435215
446264
45290
465230
476282
4811528
4910490
503150
51151
525260
53153
543162
55155
565280
577399
584232
596354
6012720
614244
6212744
6311693
6410640
6513845
6610660
67181206
68161088
69151035
7010700
71211491
72211512
73191387
7413962
75161200
767532
777539
7812936
7911869
8010800
815405
827574
834332
845420
855425
863258
87187
885440
895445
906540
919819
929828
939837
948752
9510950
968768
97141358
989882
9910990
100121200
1019909
1028816
103121236
1048832
105101050
1064424
1076642
1086648
1092218
1102220
111111221
1127784
1132226
114111254
1157805
1168928
1173351
1187826
1198952
1206720
121101210
1226732
1234492
1242248
1257875
1262252
1273381
1303390
1314524
1323396
1333399
1345670
1352270
1364544
1373411
1384552
1393417
1403420
1416846
1424568
1433429
1441144
1451145
1464584
1473441
1483444
1491149
1504600
15181208
1523456
1532306
15471078
1556930
1562312
1571157
1581158
1594636
160121920
1615805
1623486
1633489
1642328
1652330
16671162
1674668
1683504
1693507
1705850
1712342
1733519
1743522
1753525
1761176
1771177
1783534
1801180
1811181
1852370
1861186
1873561
1891189
1911191
1923576
1931193
1943582
1953585
1961196
19791773
19881584
1992398
20071400
201102010
20291818
2032406
20471428
205132665
20661236
20781656
20851040
20981672
21091890
21161266
21281696
2132426
2144856
2151215
2162432
2172434
2181218
2191219
2202440
2211221
2221222
2233669
2241224
2261226
2281228
2312462
2321232
2333699
2341234
2361236
2371237
2521252
2601000260000
Total2002376202
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333132266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88826f8e76136c66
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3666386537363133
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_11.json b/autobahn/client/tungstenite_case_12_1_11.json new file mode 100644 index 0000000..3828fbd --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_11.json @@ -0,0 +1,509 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 312, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 337, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=312&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: N6ZHNrCVw0gXMPnvaqYCdw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: jjb2yykXWL/Z0msnejDdB8wAFeY=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "305": 5, + "306": 6, + "307": 2, + "308": 5, + "309": 6, + "310": 11, + "311": 10, + "312": 3, + "313": 1, + "314": 5, + "315": 1, + "316": 3, + "317": 1, + "318": 5, + "319": 7, + "320": 4, + "321": 6, + "322": 12, + "323": 4, + "324": 12, + "325": 11, + "326": 10, + "327": 13, + "328": 10, + "329": 18, + "330": 16, + "331": 15, + "332": 10, + "333": 21, + "334": 21, + "335": 19, + "336": 13, + "337": 16, + "338": 7, + "339": 7, + "340": 12, + "341": 11, + "342": 10, + "343": 5, + "344": 7, + "345": 4, + "346": 5, + "347": 5, + "348": 3, + "349": 1, + "350": 5, + "351": 5, + "352": 6, + "353": 9, + "354": 9, + "355": 9, + "356": 8, + "357": 10, + "358": 8, + "359": 14, + "360": 9, + "361": 10, + "362": 12, + "363": 9, + "364": 8, + "365": 12, + "366": 8, + "367": 10, + "368": 4, + "369": 6, + "370": 6, + "371": 2, + "372": 2, + "373": 11, + "374": 7, + "375": 2, + "376": 11, + "377": 7, + "378": 8, + "379": 3, + "380": 7, + "381": 8, + "382": 6, + "383": 10, + "384": 6, + "385": 4, + "386": 2, + "387": 7, + "388": 2, + "389": 3, + "390": 3, + "391": 4, + "392": 3, + "393": 3, + "394": 5, + "395": 2, + "396": 4, + "397": 3, + "398": 4, + "399": 3, + "400": 3, + "401": 6, + "402": 4, + "403": 3, + "404": 1, + "405": 1, + "406": 4, + "407": 3, + "408": 3, + "409": 1, + "410": 4, + "411": 8, + "412": 3, + "413": 2, + "414": 7, + "415": 6, + "416": 2, + "417": 1, + "418": 1, + "419": 4, + "420": 12, + "421": 5, + "422": 3, + "423": 3, + "424": 2, + "425": 2, + "426": 7, + "427": 4, + "428": 3, + "429": 3, + "430": 5, + "431": 2, + "433": 3, + "434": 3, + "435": 3, + "436": 1, + "437": 1, + "438": 3, + "440": 1, + "441": 1, + "445": 2, + "446": 1, + "447": 3, + "449": 1, + "451": 1, + "452": 3, + "453": 1, + "454": 3, + "455": 3, + "456": 1, + "457": 9, + "458": 8, + "459": 2, + "460": 7, + "461": 10, + "462": 9, + "463": 2, + "464": 7, + "465": 13, + "466": 6, + "467": 8, + "468": 5, + "469": 8, + "470": 9, + "471": 6, + "472": 8, + "473": 2, + "474": 4, + "475": 1, + "476": 2, + "477": 2, + "478": 1, + "479": 1, + "480": 2, + "481": 1, + "482": 1, + "483": 3, + "484": 1, + "486": 1, + "488": 1, + "491": 2, + "492": 1, + "493": 3, + "494": 1, + "496": 1, + "497": 1 + }, + "started": "2025-09-11T20:06:01.523Z", + "trafficStats": { + "incomingCompressionRatio": 0.045077392578125, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 369274, + "incomingOctetsWireLevel": 377274, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.02166413015809399, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 375946, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.018067884551850388, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "43": 5, + "44": 6, + "45": 2, + "46": 5, + "47": 6, + "48": 11, + "49": 10, + "50": 3, + "51": 1, + "52": 5, + "53": 1, + "54": 3, + "55": 1, + "56": 5, + "57": 7, + "58": 4, + "59": 6, + "60": 12, + "61": 4, + "62": 12, + "63": 11, + "64": 10, + "65": 13, + "66": 10, + "67": 18, + "68": 16, + "69": 15, + "70": 10, + "71": 21, + "72": 21, + "73": 19, + "74": 13, + "75": 16, + "76": 7, + "77": 7, + "78": 12, + "79": 11, + "80": 10, + "81": 5, + "82": 7, + "83": 4, + "84": 5, + "85": 5, + "86": 3, + "87": 1, + "88": 5, + "89": 5, + "90": 6, + "91": 9, + "92": 9, + "93": 9, + "94": 8, + "95": 10, + "96": 8, + "97": 14, + "98": 9, + "99": 10, + "100": 12, + "101": 9, + "102": 8, + "103": 12, + "104": 8, + "105": 10, + "106": 4, + "107": 6, + "108": 6, + "109": 2, + "110": 2, + "111": 11, + "112": 7, + "113": 2, + "114": 11, + "115": 7, + "116": 8, + "117": 3, + "118": 7, + "119": 8, + "120": 6, + "121": 10, + "122": 6, + "123": 4, + "124": 2, + "125": 7, + "126": 2, + "127": 3, + "130": 3, + "131": 4, + "132": 3, + "133": 3, + "134": 5, + "135": 2, + "136": 4, + "137": 3, + "138": 4, + "139": 3, + "140": 3, + "141": 6, + "142": 4, + "143": 3, + "144": 1, + "145": 1, + "146": 4, + "147": 3, + "148": 3, + "149": 1, + "150": 4, + "151": 8, + "152": 3, + "153": 2, + "154": 7, + "155": 6, + "156": 2, + "157": 1, + "158": 1, + "159": 4, + "160": 12, + "161": 5, + "162": 3, + "163": 3, + "164": 2, + "165": 2, + "166": 7, + "167": 4, + "168": 3, + "169": 3, + "170": 5, + "171": 2, + "173": 3, + "174": 3, + "175": 3, + "176": 1, + "177": 1, + "178": 3, + "180": 1, + "181": 1, + "185": 2, + "186": 1, + "187": 3, + "189": 1, + "191": 1, + "192": 3, + "193": 1, + "194": 3, + "195": 3, + "196": 1, + "197": 9, + "198": 8, + "199": 2, + "200": 7, + "201": 10, + "202": 9, + "203": 2, + "204": 7, + "205": 13, + "206": 6, + "207": 8, + "208": 5, + "209": 8, + "210": 9, + "211": 6, + "212": 8, + "213": 2, + "214": 4, + "215": 1, + "216": 2, + "217": 2, + "218": 1, + "219": 1, + "220": 2, + "221": 1, + "222": 1, + "223": 3, + "224": 1, + "226": 1, + "228": 1, + "231": 2, + "232": 1, + "233": 3, + "234": 1, + "236": 1, + "237": 1, + "252": 1, + "260": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333132266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826f8e76136c66" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6f8e7613" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_12.html b/autobahn/client/tungstenite_case_12_1_12.html new file mode 100644 index 0000000..c4c5b09 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_12.html @@ -0,0 +1,818 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.12 : Pass - 389 ms @ 2025-09-11T20:06:01.861Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=313&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: t0ewZkBytKU5Vic/v32vsw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PvQtO9ervpRdZogDQ2+To8I71n4=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
60521210
60631818
6071607
60821216
6091609
6101610
6111611
6121612
6131613
61421228
61531845
61674312
61742468
61863708
619106190
62074340
62153105
62231866
623106230
62453120
6251625
62642504
62774389
62895652
62985032
630116930
63195679
632106320
633159495
63495706
635159525
63674452
63763822
63885104
63985112
64074480
64131923
64253210
64342572
64474508
64553225
64642584
64753235
64853240
64974543
65042600
65121302
6521652
65363918
65431962
65521310
65621312
65742628
65863948
65953295
66085280
66163966
66274634
66321326
66474648
66595985
666117326
667106670
668117348
66985352
67074690
67185368
67274704
67342692
67485392
67564050
67642704
67753385
67842712
67921358
68021360
68142724
6821682
68342732
68442736
68542740
68621372
6871687
68842752
68942756
6901690
69121382
69242768
69321386
69432082
69532085
6961696
69732091
69832094
69953495
70042800
70132103
70242808
70342812
70432112
70521410
70632118
70721414
70864248
70932127
71085680
71121422
7121712
7131713
71432142
71532145
7161716
7171717
71821436
71932157
72021440
72121442
72242888
72321446
72432172
72521450
72653630
72721454
72821456
72953645
73021460
73121462
7321732
7331733
73432202
73632208
7371737
73842952
73921478
74053700
74121482
74332229
74432232
74553725
74732241
74832244
74921498
75021500
7511751
7521752
75375271
7541754
7551755
7561756
7571757
7581758
75943036
76043040
76132283
76253810
76332289
76421528
76621532
76732301
76843072
7691769
7701770
77132313
7731773
7741774
77532325
7761776
77721554
7781778
77932337
7801780
7811781
7821782
7841784
7871787
79021580
79121582
79232376
7931793
79443176
79521590
79621592
7981798
79943196
80154005
80221604
8041804
80521610
80621612
8071807
8081808
80932427
81075670
81164866
81221624
81364878
81443256
81554075
81632448
81721634
81821636
81921638
82043280
82132463
82243288
82332469
82421648
82532475
82754135
82821656
82964974
83154155
83243328
83343332
83443336
83543340
83621672
8371837
83886704
83921678
84021680
84143364
84243368
84321686
84454220
84521690
84675922
84732541
84865088
84921698
8501850
85121702
85221704
8531853
85454270
855108550
85654280
85743428
85854290
85954295
8601860
86154305
86232586
86332589
86443456
86543460
86632598
86776069
86832604
86943476
87065220
87165226
87276104
87332619
87421748
8751875
8761876
87732631
87832634
87921758
88121762
8821882
8831883
88521770
88621772
88821776
89021780
8911891
89221784
8941894
8971897
8981898
9031903
9041904
9081908
9101910
91143644
9121912
9141914
Total1002729547
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
428
5315
616
717
818
10110
13113
16232
17234
18354
19119
20480
21242
22244
24124
254100
275135
28256
30130
31262
32264
33133
34134
353105
367252
376222
38276
396234
404160
415205
423126
43286
44288
45290
464184
473141
484192
493147
502100
513153
535265
542108
556330
575285
584232
594236
604240
614244
622124
63163
648512
652130
662132
674268
684272
692138
705350
712142
727504
733219
746444
752150
76176
772154
782156
79179
805400
8110810
825410
834332
845420
855425
86186
877609
886528
894356
906540
915455
924368
938744
944376
955475
968768
979873
98141372
997693
1008800
101111111
1028816
1038824
1046624
105121260
1065530
1073321
1085540
1098872
1109990
111101110
112131456
11391017
114121368
115151725
116111276
117161872
11891062
1196714
12091080
1218968
1227854
1234492
1246744
1254500
1267882
1275635
1304520
1316786
1326792
1337931
1344536
1352270
1362272
1376822
1384552
1396834
1403420
1414564
1427994
1435715
14481152
1456870
14671022
1472294
14871036
14991341
150111650
151101510
152111672
15381224
15471078
15581240
15671092
1574628
15881264
1596954
1604640
1615805
1624648
1632326
1642328
1654660
1661166
1674668
1684672
1694676
1702340
1711171
1724688
1734692
1741174
1752350
1764704
1772354
1783534
1793537
1801180
1813543
1823546
1835915
1844736
1853555
1864744
1874748
1883564
1892378
1903570
1912382
19261152
1933579
19481552
1952390
1961196
1971197
1983594
1993597
2001200
2011201
2022404
2033609
2042408
2052410
2064824
2072414
2083624
2092418
21051050
2112422
2122424
21351065
2142428
2152430
2161216
2171217
2183654
2203660
2211221
2224888
2232446
22451120
2252450
2273681
2283684
22951145
2313693
2323696
2332466
2342468
2351235
2361236
23771659
2381238
2391239
2401240
2411241
2421242
2434972
2444976
2453735
24651230
2473741
2482496
2502500
2513753
25251260
2531253
2541254
2553765
2571257
2581258
2593777
2602331606060
Total3333733754
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02331
11000
81
Total3332
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333133266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882a9f8e21baa10
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6139663865323162
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_12.json b/autobahn/client/tungstenite_case_12_1_12.json new file mode 100644 index 0000000..23547a4 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_12.json @@ -0,0 +1,665 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 313, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 389, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=313&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: t0ewZkBytKU5Vic/v32vsw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PvQtO9ervpRdZogDQ2+To8I71n4=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "605": 2, + "606": 3, + "607": 1, + "608": 2, + "609": 1, + "610": 1, + "611": 1, + "612": 1, + "613": 1, + "614": 2, + "615": 3, + "616": 7, + "617": 4, + "618": 6, + "619": 10, + "620": 7, + "621": 5, + "622": 3, + "623": 10, + "624": 5, + "625": 1, + "626": 4, + "627": 7, + "628": 9, + "629": 8, + "630": 11, + "631": 9, + "632": 10, + "633": 15, + "634": 9, + "635": 15, + "636": 7, + "637": 6, + "638": 8, + "639": 8, + "640": 7, + "641": 3, + "642": 5, + "643": 4, + "644": 7, + "645": 5, + "646": 4, + "647": 5, + "648": 5, + "649": 7, + "650": 4, + "651": 2, + "652": 1, + "653": 6, + "654": 3, + "655": 2, + "656": 2, + "657": 4, + "658": 6, + "659": 5, + "660": 8, + "661": 6, + "662": 7, + "663": 2, + "664": 7, + "665": 9, + "666": 11, + "667": 10, + "668": 11, + "669": 8, + "670": 7, + "671": 8, + "672": 7, + "673": 4, + "674": 8, + "675": 6, + "676": 4, + "677": 5, + "678": 4, + "679": 2, + "680": 2, + "681": 4, + "682": 1, + "683": 4, + "684": 4, + "685": 4, + "686": 2, + "687": 1, + "688": 4, + "689": 4, + "690": 1, + "691": 2, + "692": 4, + "693": 2, + "694": 3, + "695": 3, + "696": 1, + "697": 3, + "698": 3, + "699": 5, + "700": 4, + "701": 3, + "702": 4, + "703": 4, + "704": 3, + "705": 2, + "706": 3, + "707": 2, + "708": 6, + "709": 3, + "710": 8, + "711": 2, + "712": 1, + "713": 1, + "714": 3, + "715": 3, + "716": 1, + "717": 1, + "718": 2, + "719": 3, + "720": 2, + "721": 2, + "722": 4, + "723": 2, + "724": 3, + "725": 2, + "726": 5, + "727": 2, + "728": 2, + "729": 5, + "730": 2, + "731": 2, + "732": 1, + "733": 1, + "734": 3, + "736": 3, + "737": 1, + "738": 4, + "739": 2, + "740": 5, + "741": 2, + "743": 3, + "744": 3, + "745": 5, + "747": 3, + "748": 3, + "749": 2, + "750": 2, + "751": 1, + "752": 1, + "753": 7, + "754": 1, + "755": 1, + "756": 1, + "757": 1, + "758": 1, + "759": 4, + "760": 4, + "761": 3, + "762": 5, + "763": 3, + "764": 2, + "766": 2, + "767": 3, + "768": 4, + "769": 1, + "770": 1, + "771": 3, + "773": 1, + "774": 1, + "775": 3, + "776": 1, + "777": 2, + "778": 1, + "779": 3, + "780": 1, + "781": 1, + "782": 1, + "784": 1, + "787": 1, + "790": 2, + "791": 2, + "792": 3, + "793": 1, + "794": 4, + "795": 2, + "796": 2, + "798": 1, + "799": 4, + "801": 5, + "802": 2, + "804": 1, + "805": 2, + "806": 2, + "807": 1, + "808": 1, + "809": 3, + "810": 7, + "811": 6, + "812": 2, + "813": 6, + "814": 4, + "815": 5, + "816": 3, + "817": 2, + "818": 2, + "819": 2, + "820": 4, + "821": 3, + "822": 4, + "823": 3, + "824": 2, + "825": 3, + "827": 5, + "828": 2, + "829": 6, + "831": 5, + "832": 4, + "833": 4, + "834": 4, + "835": 4, + "836": 2, + "837": 1, + "838": 8, + "839": 2, + "840": 2, + "841": 4, + "842": 4, + "843": 2, + "844": 5, + "845": 2, + "846": 7, + "847": 3, + "848": 6, + "849": 2, + "850": 1, + "851": 2, + "852": 2, + "853": 1, + "854": 5, + "855": 10, + "856": 5, + "857": 4, + "858": 5, + "859": 5, + "860": 1, + "861": 5, + "862": 3, + "863": 3, + "864": 4, + "865": 4, + "866": 3, + "867": 7, + "868": 3, + "869": 4, + "870": 6, + "871": 6, + "872": 7, + "873": 3, + "874": 2, + "875": 1, + "876": 1, + "877": 3, + "878": 3, + "879": 2, + "881": 2, + "882": 1, + "883": 1, + "885": 2, + "886": 2, + "888": 2, + "890": 2, + "891": 1, + "892": 2, + "894": 1, + "897": 1, + "898": 1, + "903": 1, + "904": 1, + "908": 1, + "910": 1, + "911": 4, + "912": 1, + "914": 1 + }, + "started": "2025-09-11T20:06:01.861Z", + "trafficStats": { + "incomingCompressionRatio": 0.0440235595703125, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 721282, + "incomingOctetsWireLevel": 729282, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.011091362324305888, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 733498, + "outgoingWebSocketFrames": 3331, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016936510269215093, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 2331, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 2, + "5": 3, + "6": 1, + "7": 1, + "8": 1, + "10": 1, + "13": 1, + "16": 2, + "17": 2, + "18": 3, + "19": 1, + "20": 4, + "21": 2, + "22": 2, + "24": 1, + "25": 4, + "27": 5, + "28": 2, + "30": 1, + "31": 2, + "32": 2, + "33": 1, + "34": 1, + "35": 3, + "36": 7, + "37": 6, + "38": 2, + "39": 6, + "40": 4, + "41": 5, + "42": 3, + "43": 2, + "44": 2, + "45": 2, + "46": 4, + "47": 3, + "48": 4, + "49": 3, + "50": 2, + "51": 3, + "53": 5, + "54": 2, + "55": 6, + "57": 5, + "58": 4, + "59": 4, + "60": 4, + "61": 4, + "62": 2, + "63": 1, + "64": 8, + "65": 2, + "66": 2, + "67": 4, + "68": 4, + "69": 2, + "70": 5, + "71": 2, + "72": 7, + "73": 3, + "74": 6, + "75": 2, + "76": 1, + "77": 2, + "78": 2, + "79": 1, + "80": 5, + "81": 10, + "82": 5, + "83": 4, + "84": 5, + "85": 5, + "86": 1, + "87": 7, + "88": 6, + "89": 4, + "90": 6, + "91": 5, + "92": 4, + "93": 8, + "94": 4, + "95": 5, + "96": 8, + "97": 9, + "98": 14, + "99": 7, + "100": 8, + "101": 11, + "102": 8, + "103": 8, + "104": 6, + "105": 12, + "106": 5, + "107": 3, + "108": 5, + "109": 8, + "110": 9, + "111": 10, + "112": 13, + "113": 9, + "114": 12, + "115": 15, + "116": 11, + "117": 16, + "118": 9, + "119": 6, + "120": 9, + "121": 8, + "122": 7, + "123": 4, + "124": 6, + "125": 4, + "126": 7, + "127": 5, + "130": 4, + "131": 6, + "132": 6, + "133": 7, + "134": 4, + "135": 2, + "136": 2, + "137": 6, + "138": 4, + "139": 6, + "140": 3, + "141": 4, + "142": 7, + "143": 5, + "144": 8, + "145": 6, + "146": 7, + "147": 2, + "148": 7, + "149": 9, + "150": 11, + "151": 10, + "152": 11, + "153": 8, + "154": 7, + "155": 8, + "156": 7, + "157": 4, + "158": 8, + "159": 6, + "160": 4, + "161": 5, + "162": 4, + "163": 2, + "164": 2, + "165": 4, + "166": 1, + "167": 4, + "168": 4, + "169": 4, + "170": 2, + "171": 1, + "172": 4, + "173": 4, + "174": 1, + "175": 2, + "176": 4, + "177": 2, + "178": 3, + "179": 3, + "180": 1, + "181": 3, + "182": 3, + "183": 5, + "184": 4, + "185": 3, + "186": 4, + "187": 4, + "188": 3, + "189": 2, + "190": 3, + "191": 2, + "192": 6, + "193": 3, + "194": 8, + "195": 2, + "196": 1, + "197": 1, + "198": 3, + "199": 3, + "200": 1, + "201": 1, + "202": 2, + "203": 3, + "204": 2, + "205": 2, + "206": 4, + "207": 2, + "208": 3, + "209": 2, + "210": 5, + "211": 2, + "212": 2, + "213": 5, + "214": 2, + "215": 2, + "216": 1, + "217": 1, + "218": 3, + "220": 3, + "221": 1, + "222": 4, + "223": 2, + "224": 5, + "225": 2, + "227": 3, + "228": 3, + "229": 5, + "231": 3, + "232": 3, + "233": 2, + "234": 2, + "235": 1, + "236": 1, + "237": 7, + "238": 1, + "239": 1, + "240": 1, + "241": 1, + "242": 1, + "243": 4, + "244": 4, + "245": 3, + "246": 5, + "247": 3, + "248": 2, + "250": 2, + "251": 3, + "252": 5, + "253": 1, + "254": 1, + "255": 3, + "257": 1, + "258": 1, + "259": 3, + "260": 2331 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333133266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a9f8e21baa10" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a9f8e21b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_13.html b/autobahn/client/tungstenite_case_12_1_13.html new file mode 100644 index 0000000..154a21f --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_13.html @@ -0,0 +1,900 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.13 : Pass - 739 ms @ 2025-09-11T20:06:02.251Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=314&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 0KLwpbcMd0wVxm/dLDVI/g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: gnbRbiqSZb9BnSWQ4sDyorrAVQs=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
124011240
124322486
124411244
124511245
124611246
124711247
124811248
124944996
125011250
125222504
125422508
125522510
125611256
125711257
125833774
125911259
126045040
126111261
126233786
126311263
126411264
126533795
126656330
126722534
126833804
126922538
127045080
127145084
127222544
127378911
127456370
127645104
1277810216
127845112
1279911511
128033840
1281911529
128267692
128367698
12841114124
1285810280
1286911574
1287911583
128845152
128945156
1290810320
129156455
129256460
129356465
129422588
129545180
129611296
129733891
129856490
129945196
130033900
130145204
130256510
130356515
130433912
130567830
130667836
130745228
130845232
130911309
131011310
131145244
131222624
131333939
131422628
131533945
131645264
131722634
131811318
132022640
132122642
132211322
132345292
132533975
132611326
132711327
132822656
132922658
133145324
133222664
133311333
133411334
133522670
133622672
133711337
133822676
134034020
134111341
134322686
134434032
134522690
134611346
134722694
134822696
134945396
135022700
135168106
135211352
135311353
135556775
135645424
135722714
135956795
136045440
136211362
136334089
136434092
136522730
136611366
136722734
136811368
137022740
137145484
137211372
137345492
137411374
137622752
137722754
137834134
138111381
138222764
138311383
138411384
138534155
138634158
138711387
138834164
138934167
139011390
139111391
139322786
139534185
139622792
139711397
139822796
139922798
140011400
140122802
140211402
140511405
140622812
140711407
140811408
140911409
141022820
141322826
141411414
141522830
141611416
141768502
141822836
141911419
142034260
142145684
142211422
142311423
142411424
142545700
142622852
142722854
142811428
142922858
143011430
143145724
143322866
143522870
143645744
143811438
143911439
144034320
144122882
144345772
144411444
144522890
144622892
144811448
145045800
145122902
145211452
145322906
145411454
145522910
145622912
145722914
145834374
145922918
146022920
146122922
146311463
146422928
146511465
146611466
146722934
146811468
146934407
147022940
147122942
147222944
147345892
147445896
147568850
147634428
147722954
147822956
147911479
148022960
148134443
148234446
148322966
148422968
148511485
148611486
148734461
148845952
148968934
149034470
149122982
149245968
149334479
149422988
149511495
149634488
149734491
149822996
149934497
150057500
150223004
150434512
150523010
150623012
150723014
150823016
150934527
151023020
151111511
151234536
151323026
151411514
151523030
151757585
151823036
151923038
152011520
152146084
152246088
152334569
152446096
152669156
152823056
152911529
153011530
153234596
153357665
153523070
153634608
153711537
153846152
153946156
154057700
154157705
1542913878
154357715
154469264
1545710815
154669276
154734641
154857740
154911549
155034650
1551710857
155223104
155323106
155434662
155569330
155657780
155769342
155834674
155934677
156069360
156157805
1562812496
1563710941
15641117204
1565710955
1566710962
156723134
156869408
156957845
157057850
157157855
157223144
157334719
157457870
157557875
157634728
157734731
157811578
157911579
158023160
158123162
158211582
158434752
158523170
158634758
158723174
158911589
159023180
159123182
159223184
159323186
159423188
159523190
159611596
159711597
160111601
160811608
161111611
161223224
161523230
161711617
161811618
162111621
162246488
162511625
162723254
162823256
162911629
163069780
163134893
163211632
163323266
163411634
163623272
163811638
164023280
164123282
164311643
164534935
164734941
164823296
165069900
165111651
165223304
165423308
165523310
165623312
165723314
165811658
165923318
166123322
166211662
166323326
166423328
166511665
166823336
Total10021439130
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21020
31133
41560
5840
61060
7642
8540
91199
10330
11555
12896
1310130
148112
1510150
168128
178136
189162
1911209
2014280
2111231
2215330
238184
248192
256150
268208
278216
287196
298232
306180
315155
326192
335165
345170
355175
36272
375185
38276
395195
40280
41141
425210
434172
443132
456270
46292
47294
483144
494196
504200
513153
524208
532106
544216
552110
572114
583174
593177
60160
612122
622124
634252
642128
656390
662132
67167
696414
706420
712142
737511
744296
75175
762152
773231
783234
793237
805400
812162
82182
83183
842168
856510
863258
875435
887616
893267
903270
914364
924368
942188
95195
963288
97197
983294
995495
1003300
1012202
1023306
1036618
1041104
1054420
1062212
1072214
1086648
1094436
1104440
1111111
1124448
1134452
1143342
1154460
1162232
1172234
1193357
1203360
1213363
1223366
1232246
1242248
1262252
1272254
1301130
1312262
1321132
1336798
1342268
1351135
1363408
1374548
1381138
1391139
1401140
1414564
1422284
1432286
1441144
1452290
1461146
1474588
1492298
1512302
1524608
1541154
1551155
1563468
1572314
1594636
1601160
1612322
1622324
1641164
1664664
1672334
1681168
1692338
1701170
1712342
1722344
1732346
1743522
1752350
1762352
1772354
1791179
1802360
1811181
1821182
1832366
1841184
1853555
1862372
1872374
1882376
1894756
1904760
19161146
1923576
1932386
1942388
1951195
1962392
1973591
1983594
1992398
2002400
2011201
2021202
2033609
2044816
20561230
2063618
2072414
2084832
2093627
2102420
2111211
2124848
2133639
2142428
21551075
21661296
2171217
2183654
2191219
2204880
22161326
2223666
2232446
2244896
2253675
2264904
2273681
2284912
2293687
2304920
2313693
2324928
23361398
23451170
2353705
2362472
23771659
23892142
23951195
24071680
2412482
242102420
2434972
2444976
24581960
24661476
24871736
249133237
25041000
251112761
25271764
253102530
254102540
255102550
256164096
257133341
258184644
259143626
26051161330160
Total61181454489
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05116
11000
81
Total6117
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333134266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822dc714bf2e2f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3264633731346266
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_13.json b/autobahn/client/tungstenite_case_12_1_13.json new file mode 100644 index 0000000..6e18fff --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_13.json @@ -0,0 +1,747 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 314, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 739, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=314&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 0KLwpbcMd0wVxm/dLDVI/g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: gnbRbiqSZb9BnSWQ4sDyorrAVQs=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1240": 1, + "1243": 2, + "1244": 1, + "1245": 1, + "1246": 1, + "1247": 1, + "1248": 1, + "1249": 4, + "1250": 1, + "1252": 2, + "1254": 2, + "1255": 2, + "1256": 1, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 4, + "1261": 1, + "1262": 3, + "1263": 1, + "1264": 1, + "1265": 3, + "1266": 5, + "1267": 2, + "1268": 3, + "1269": 2, + "1270": 4, + "1271": 4, + "1272": 2, + "1273": 7, + "1274": 5, + "1276": 4, + "1277": 8, + "1278": 4, + "1279": 9, + "1280": 3, + "1281": 9, + "1282": 6, + "1283": 6, + "1284": 11, + "1285": 8, + "1286": 9, + "1287": 9, + "1288": 4, + "1289": 4, + "1290": 8, + "1291": 5, + "1292": 5, + "1293": 5, + "1294": 2, + "1295": 4, + "1296": 1, + "1297": 3, + "1298": 5, + "1299": 4, + "1300": 3, + "1301": 4, + "1302": 5, + "1303": 5, + "1304": 3, + "1305": 6, + "1306": 6, + "1307": 4, + "1308": 4, + "1309": 1, + "1310": 1, + "1311": 4, + "1312": 2, + "1313": 3, + "1314": 2, + "1315": 3, + "1316": 4, + "1317": 2, + "1318": 1, + "1320": 2, + "1321": 2, + "1322": 1, + "1323": 4, + "1325": 3, + "1326": 1, + "1327": 1, + "1328": 2, + "1329": 2, + "1331": 4, + "1332": 2, + "1333": 1, + "1334": 1, + "1335": 2, + "1336": 2, + "1337": 1, + "1338": 2, + "1340": 3, + "1341": 1, + "1343": 2, + "1344": 3, + "1345": 2, + "1346": 1, + "1347": 2, + "1348": 2, + "1349": 4, + "1350": 2, + "1351": 6, + "1352": 1, + "1353": 1, + "1355": 5, + "1356": 4, + "1357": 2, + "1359": 5, + "1360": 4, + "1362": 1, + "1363": 3, + "1364": 3, + "1365": 2, + "1366": 1, + "1367": 2, + "1368": 1, + "1370": 2, + "1371": 4, + "1372": 1, + "1373": 4, + "1374": 1, + "1376": 2, + "1377": 2, + "1378": 3, + "1381": 1, + "1382": 2, + "1383": 1, + "1384": 1, + "1385": 3, + "1386": 3, + "1387": 1, + "1388": 3, + "1389": 3, + "1390": 1, + "1391": 1, + "1393": 2, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 2, + "1400": 1, + "1401": 2, + "1402": 1, + "1405": 1, + "1406": 2, + "1407": 1, + "1408": 1, + "1409": 1, + "1410": 2, + "1413": 2, + "1414": 1, + "1415": 2, + "1416": 1, + "1417": 6, + "1418": 2, + "1419": 1, + "1420": 3, + "1421": 4, + "1422": 1, + "1423": 1, + "1424": 1, + "1425": 4, + "1426": 2, + "1427": 2, + "1428": 1, + "1429": 2, + "1430": 1, + "1431": 4, + "1433": 2, + "1435": 2, + "1436": 4, + "1438": 1, + "1439": 1, + "1440": 3, + "1441": 2, + "1443": 4, + "1444": 1, + "1445": 2, + "1446": 2, + "1448": 1, + "1450": 4, + "1451": 2, + "1452": 1, + "1453": 2, + "1454": 1, + "1455": 2, + "1456": 2, + "1457": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 2, + "1463": 1, + "1464": 2, + "1465": 1, + "1466": 1, + "1467": 2, + "1468": 1, + "1469": 3, + "1470": 2, + "1471": 2, + "1472": 2, + "1473": 4, + "1474": 4, + "1475": 6, + "1476": 3, + "1477": 2, + "1478": 2, + "1479": 1, + "1480": 2, + "1481": 3, + "1482": 3, + "1483": 2, + "1484": 2, + "1485": 1, + "1486": 1, + "1487": 3, + "1488": 4, + "1489": 6, + "1490": 3, + "1491": 2, + "1492": 4, + "1493": 3, + "1494": 2, + "1495": 1, + "1496": 3, + "1497": 3, + "1498": 2, + "1499": 3, + "1500": 5, + "1502": 2, + "1504": 3, + "1505": 2, + "1506": 2, + "1507": 2, + "1508": 2, + "1509": 3, + "1510": 2, + "1511": 1, + "1512": 3, + "1513": 2, + "1514": 1, + "1515": 2, + "1517": 5, + "1518": 2, + "1519": 2, + "1520": 1, + "1521": 4, + "1522": 4, + "1523": 3, + "1524": 4, + "1526": 6, + "1528": 2, + "1529": 1, + "1530": 1, + "1532": 3, + "1533": 5, + "1535": 2, + "1536": 3, + "1537": 1, + "1538": 4, + "1539": 4, + "1540": 5, + "1541": 5, + "1542": 9, + "1543": 5, + "1544": 6, + "1545": 7, + "1546": 6, + "1547": 3, + "1548": 5, + "1549": 1, + "1550": 3, + "1551": 7, + "1552": 2, + "1553": 2, + "1554": 3, + "1555": 6, + "1556": 5, + "1557": 6, + "1558": 3, + "1559": 3, + "1560": 6, + "1561": 5, + "1562": 8, + "1563": 7, + "1564": 11, + "1565": 7, + "1566": 7, + "1567": 2, + "1568": 6, + "1569": 5, + "1570": 5, + "1571": 5, + "1572": 2, + "1573": 3, + "1574": 5, + "1575": 5, + "1576": 3, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 2, + "1582": 1, + "1584": 3, + "1585": 2, + "1586": 3, + "1587": 2, + "1589": 1, + "1590": 2, + "1591": 2, + "1592": 2, + "1593": 2, + "1594": 2, + "1595": 2, + "1596": 1, + "1597": 1, + "1601": 1, + "1608": 1, + "1611": 1, + "1612": 2, + "1615": 2, + "1617": 1, + "1618": 1, + "1621": 1, + "1622": 4, + "1625": 1, + "1627": 2, + "1628": 2, + "1629": 1, + "1630": 6, + "1631": 3, + "1632": 1, + "1633": 2, + "1634": 1, + "1636": 2, + "1638": 1, + "1640": 2, + "1641": 2, + "1643": 1, + "1645": 3, + "1647": 3, + "1648": 2, + "1650": 6, + "1651": 1, + "1652": 2, + "1654": 2, + "1655": 2, + "1656": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1661": 2, + "1662": 1, + "1663": 2, + "1664": 2, + "1665": 1, + "1668": 2 + }, + "started": "2025-09-11T20:06:02.251Z", + "trafficStats": { + "incomingCompressionRatio": 0.043666534423828125, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1430865, + "incomingOctetsWireLevel": 1438865, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0055910236115915895, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1454233, + "outgoingWebSocketFrames": 6116, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016331379969459034, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 5116, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 10, + "3": 11, + "4": 15, + "5": 8, + "6": 10, + "7": 6, + "8": 5, + "9": 11, + "10": 3, + "11": 5, + "12": 8, + "13": 10, + "14": 8, + "15": 10, + "16": 8, + "17": 8, + "18": 9, + "19": 11, + "20": 14, + "21": 11, + "22": 15, + "23": 8, + "24": 8, + "25": 6, + "26": 8, + "27": 8, + "28": 7, + "29": 8, + "30": 6, + "31": 5, + "32": 6, + "33": 5, + "34": 5, + "35": 5, + "36": 2, + "37": 5, + "38": 2, + "39": 5, + "40": 2, + "41": 1, + "42": 5, + "43": 4, + "44": 3, + "45": 6, + "46": 2, + "47": 2, + "48": 3, + "49": 4, + "50": 4, + "51": 3, + "52": 4, + "53": 2, + "54": 4, + "55": 2, + "57": 2, + "58": 3, + "59": 3, + "60": 1, + "61": 2, + "62": 2, + "63": 4, + "64": 2, + "65": 6, + "66": 2, + "67": 1, + "69": 6, + "70": 6, + "71": 2, + "73": 7, + "74": 4, + "75": 1, + "76": 2, + "77": 3, + "78": 3, + "79": 3, + "80": 5, + "81": 2, + "82": 1, + "83": 1, + "84": 2, + "85": 6, + "86": 3, + "87": 5, + "88": 7, + "89": 3, + "90": 3, + "91": 4, + "92": 4, + "94": 2, + "95": 1, + "96": 3, + "97": 1, + "98": 3, + "99": 5, + "100": 3, + "101": 2, + "102": 3, + "103": 6, + "104": 1, + "105": 4, + "106": 2, + "107": 2, + "108": 6, + "109": 4, + "110": 4, + "111": 1, + "112": 4, + "113": 4, + "114": 3, + "115": 4, + "116": 2, + "117": 2, + "119": 3, + "120": 3, + "121": 3, + "122": 3, + "123": 2, + "124": 2, + "126": 2, + "127": 2, + "130": 1, + "131": 2, + "132": 1, + "133": 6, + "134": 2, + "135": 1, + "136": 3, + "137": 4, + "138": 1, + "139": 1, + "140": 1, + "141": 4, + "142": 2, + "143": 2, + "144": 1, + "145": 2, + "146": 1, + "147": 4, + "149": 2, + "151": 2, + "152": 4, + "154": 1, + "155": 1, + "156": 3, + "157": 2, + "159": 4, + "160": 1, + "161": 2, + "162": 2, + "164": 1, + "166": 4, + "167": 2, + "168": 1, + "169": 2, + "170": 1, + "171": 2, + "172": 2, + "173": 2, + "174": 3, + "175": 2, + "176": 2, + "177": 2, + "179": 1, + "180": 2, + "181": 1, + "182": 1, + "183": 2, + "184": 1, + "185": 3, + "186": 2, + "187": 2, + "188": 2, + "189": 4, + "190": 4, + "191": 6, + "192": 3, + "193": 2, + "194": 2, + "195": 1, + "196": 2, + "197": 3, + "198": 3, + "199": 2, + "200": 2, + "201": 1, + "202": 1, + "203": 3, + "204": 4, + "205": 6, + "206": 3, + "207": 2, + "208": 4, + "209": 3, + "210": 2, + "211": 1, + "212": 4, + "213": 3, + "214": 2, + "215": 5, + "216": 6, + "217": 1, + "218": 3, + "219": 1, + "220": 4, + "221": 6, + "222": 3, + "223": 2, + "224": 4, + "225": 3, + "226": 4, + "227": 3, + "228": 4, + "229": 3, + "230": 4, + "231": 3, + "232": 4, + "233": 6, + "234": 5, + "235": 3, + "236": 2, + "237": 7, + "238": 9, + "239": 5, + "240": 7, + "241": 2, + "242": 10, + "243": 4, + "244": 4, + "245": 8, + "246": 6, + "248": 7, + "249": 13, + "250": 4, + "251": 11, + "252": 7, + "253": 10, + "254": 10, + "255": 10, + "256": 16, + "257": 13, + "258": 18, + "259": 14, + "260": 5116 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333134266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822dc714bf2e2f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2dc714bf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_14.html b/autobahn/client/tungstenite_case_12_1_14.html new file mode 100644 index 0000000..4984db0 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_14.html @@ -0,0 +1,540 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.14 : Pass - 1359 ms @ 2025-09-11T20:06:02.992Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=315&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: TiTt75L81joC//m+oF2+Bw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: kZ/qhUkSOLvAHjHApOLc/Of9JeY=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
280525610
280612806
280725614
2808514040
2809411236
2810616860
2811514055
2812616872
28131233756
28141747838
28152261930
28162673216
28172878876
28181747906
28193598665
28201953580
28213187451
28222056440
28232364929
28241748008
28252159325
28262776302
28272570675
28282262216
28292673554
28302056600
28313496254
28322056640
28331439662
2834822672
2835925515
28361748212
28371645392
28381748246
28391645424
28401028400
2841925569
2842514210
284338529
284412844
284538535
2846411384
284725694
285025700
285112851
285312853
285412854
285525710
285712857
285812858
285925718
286138583
2863411452
286412864
2866411464
286738601
286825736
287025740
287112871
287212872
287312873
287412874
287612876
288212882
288312883
288625772
288712887
288812888
288912889
289025780
289112891
289225784
289612896
289912899
290112901
290338709
290425808
290525810
2906514530
2907823256
2908514540
2909720363
2910411640
2911823288
291225824
291338739
291438742
2915514575
29161029160
29171132087
29181646688
29191029190
29201132120
2921617526
29221955518
29231235076
2924617544
2925926325
29261235112
29271235124
29281235136
2929926361
2930720510
2931926379
2932720524
2933617598
2934411736
2935411740
293625872
293738811
293812938
2939617634
29401132340
2941823528
29421338246
29431029430
2944926496
2945514725
294625892
294738841
296112961
Total10022860358
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21734
32163
428112
525125
622132
726182
820160
934306
1020200
1114154
12896
139117
1417238
1516240
1617272
1716272
1810180
199171
205100
21363
22122
23369
24496
25250
28256
29129
31131
32132
33266
35135
36136
37274
393117
414164
42142
444176
453135
46292
48296
49149
50150
51151
52152
54154
60160
61161
642128
65165
66166
67167
682136
69169
702140
74174
77177
79179
813243
822164
832166
845420
858680
865430
877609
884352
898712
902180
913273
923276
935465
9410940
95111045
96161536
9710970
98111078
996594
100191900
101121212
1026612
1039927
104121248
105121260
106121272
1079963
1087756
1099981
1107770
1116666
1124448
1134452
1142228
1153345
1161116
1176702
118111298
1198952
120131560
121101210
12291098
1235615
1242248
1253375
1411141
2412482
2421242
2432486
24451220
2454980
24661476
24751235
24861488
249122988
250174250
251225522
252276804
253287084
254174318
255358925
256194864
257317967
258205160
259235957
260107192786940
Total117212897789
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
010719
11000
81
Total11720
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333135266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882eed8293bed30
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6565643832393362
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_14.json b/autobahn/client/tungstenite_case_12_1_14.json new file mode 100644 index 0000000..c706fda --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_14.json @@ -0,0 +1,387 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 315, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1359, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=315&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: TiTt75L81joC//m+oF2+Bw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: kZ/qhUkSOLvAHjHApOLc/Of9JeY=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2805": 2, + "2806": 1, + "2807": 2, + "2808": 5, + "2809": 4, + "2810": 6, + "2811": 5, + "2812": 6, + "2813": 12, + "2814": 17, + "2815": 22, + "2816": 26, + "2817": 28, + "2818": 17, + "2819": 35, + "2820": 19, + "2821": 31, + "2822": 20, + "2823": 23, + "2824": 17, + "2825": 21, + "2826": 27, + "2827": 25, + "2828": 22, + "2829": 26, + "2830": 20, + "2831": 34, + "2832": 20, + "2833": 14, + "2834": 8, + "2835": 9, + "2836": 17, + "2837": 16, + "2838": 17, + "2839": 16, + "2840": 10, + "2841": 9, + "2842": 5, + "2843": 3, + "2844": 1, + "2845": 3, + "2846": 4, + "2847": 2, + "2850": 2, + "2851": 1, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 1, + "2858": 1, + "2859": 2, + "2861": 3, + "2863": 4, + "2864": 1, + "2866": 4, + "2867": 3, + "2868": 2, + "2870": 2, + "2871": 1, + "2872": 1, + "2873": 1, + "2874": 1, + "2876": 1, + "2882": 1, + "2883": 1, + "2886": 2, + "2887": 1, + "2888": 1, + "2889": 1, + "2890": 2, + "2891": 1, + "2892": 2, + "2896": 1, + "2899": 1, + "2901": 1, + "2903": 3, + "2904": 2, + "2905": 2, + "2906": 5, + "2907": 8, + "2908": 5, + "2909": 7, + "2910": 4, + "2911": 8, + "2912": 2, + "2913": 3, + "2914": 3, + "2915": 5, + "2916": 10, + "2917": 11, + "2918": 16, + "2919": 10, + "2920": 11, + "2921": 6, + "2922": 19, + "2923": 12, + "2924": 6, + "2925": 9, + "2926": 12, + "2927": 12, + "2928": 12, + "2929": 9, + "2930": 7, + "2931": 9, + "2932": 7, + "2933": 6, + "2934": 4, + "2935": 4, + "2936": 2, + "2937": 3, + "2938": 1, + "2939": 6, + "2940": 11, + "2941": 8, + "2942": 13, + "2943": 10, + "2944": 9, + "2945": 5, + "2946": 2, + "2947": 3, + "2961": 1 + }, + "started": "2025-09-11T20:06:02.992Z", + "trafficStats": { + "incomingCompressionRatio": 0.04351948547363281, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2852093, + "incomingOctetsWireLevel": 2860093, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0028049576223496218, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2897533, + "outgoingWebSocketFrames": 11719, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015932159294945854, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 10719, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 17, + "3": 21, + "4": 28, + "5": 25, + "6": 22, + "7": 26, + "8": 20, + "9": 34, + "10": 20, + "11": 14, + "12": 8, + "13": 9, + "14": 17, + "15": 16, + "16": 17, + "17": 16, + "18": 10, + "19": 9, + "20": 5, + "21": 3, + "22": 1, + "23": 3, + "24": 4, + "25": 2, + "28": 2, + "29": 1, + "31": 1, + "32": 1, + "33": 2, + "35": 1, + "36": 1, + "37": 2, + "39": 3, + "41": 4, + "42": 1, + "44": 4, + "45": 3, + "46": 2, + "48": 2, + "49": 1, + "50": 1, + "51": 1, + "52": 1, + "54": 1, + "60": 1, + "61": 1, + "64": 2, + "65": 1, + "66": 1, + "67": 1, + "68": 2, + "69": 1, + "70": 2, + "74": 1, + "77": 1, + "79": 1, + "81": 3, + "82": 2, + "83": 2, + "84": 5, + "85": 8, + "86": 5, + "87": 7, + "88": 4, + "89": 8, + "90": 2, + "91": 3, + "92": 3, + "93": 5, + "94": 10, + "95": 11, + "96": 16, + "97": 10, + "98": 11, + "99": 6, + "100": 19, + "101": 12, + "102": 6, + "103": 9, + "104": 12, + "105": 12, + "106": 12, + "107": 9, + "108": 7, + "109": 9, + "110": 7, + "111": 6, + "112": 4, + "113": 4, + "114": 2, + "115": 3, + "116": 1, + "117": 6, + "118": 11, + "119": 8, + "120": 13, + "121": 10, + "122": 9, + "123": 5, + "124": 2, + "125": 3, + "141": 1, + "241": 2, + "242": 1, + "243": 2, + "244": 5, + "245": 4, + "246": 6, + "247": 5, + "248": 6, + "249": 12, + "250": 17, + "251": 22, + "252": 27, + "253": 28, + "254": 17, + "255": 35, + "256": 19, + "257": 31, + "258": 20, + "259": 23, + "260": 10719 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333135266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882eed8293bed30" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "eed8293b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_15.html b/autobahn/client/tungstenite_case_12_1_15.html new file mode 100644 index 0000000..6bf591f --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_15.html @@ -0,0 +1,587 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.15 : Pass - 2512 ms @ 2025-09-11T20:06:04.353Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=316&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pnMzqVCc7Qk9JiBiKbMWZQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LNlX2YlOINH5rOZrh6MClHHb5r8=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
326
4416
515
6212
7214
818
9218
10110
11333
12112
13339
14684
15230
16232
17234
23123
30130
31262
33133
34134
36136
37274
393117
40140
41141
42284
433129
449396
455225
463138
4710470
4810480
4915735
50201000
5114714
5216832
5314742
54211134
55261430
5617952
5711627
58251450
59211239
60241440
6116976
62251550
63241512
64241536
6512780
66171122
67191273
6813884
699621
70251750
71251775
72161152
7312876
7411814
758600
7610760
77131001
784312
796474
803240
81181
822164
832166
845420
853255
863258
875435
884352
89121068
9010900
917637
92111012
939837
942188
953285
972194
983294
99199
1121112
1131113
1141114
1163348
1172234
1191119
1271127
1302260
1992398
2001200
2011201
2021202
2032406
20451020
20571435
20651030
2074828
2081208
20961254
21081680
21161266
2124848
213112343
21481712
21571505
21661296
21761302
2184872
2194876
22051100
22151105
22271554
223173791
224163584
225143150
226132938
22761362
22861368
229102290
230163680
231133003
23292088
23361398
23461404
23561410
2362472
2374948
23851190
2394956
24061440
2413723
2432486
2442488
2462492
2481248
2491249
2513753
2521252
2533759
2542508
2561256
2582516
2591259
260217025642520
Total227045753762
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
021702
11000
81
Total22703
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333136266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882949b306a9773
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3934396233303661
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_15.json b/autobahn/client/tungstenite_case_12_1_15.json new file mode 100644 index 0000000..ad1ac81 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_15.json @@ -0,0 +1,434 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 316, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2512, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=316&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pnMzqVCc7Qk9JiBiKbMWZQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LNlX2YlOINH5rOZrh6MClHHb5r8=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:06:04.353Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5753506, + "outgoingWebSocketFrames": 22702, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01578503761764009, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 21702, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 2, + "4": 4, + "5": 1, + "6": 2, + "7": 2, + "8": 1, + "9": 2, + "10": 1, + "11": 3, + "12": 1, + "13": 3, + "14": 6, + "15": 2, + "16": 2, + "17": 2, + "23": 1, + "30": 1, + "31": 2, + "33": 1, + "34": 1, + "36": 1, + "37": 2, + "39": 3, + "40": 1, + "41": 1, + "42": 2, + "43": 3, + "44": 9, + "45": 5, + "46": 3, + "47": 10, + "48": 10, + "49": 15, + "50": 20, + "51": 14, + "52": 16, + "53": 14, + "54": 21, + "55": 26, + "56": 17, + "57": 11, + "58": 25, + "59": 21, + "60": 24, + "61": 16, + "62": 25, + "63": 24, + "64": 24, + "65": 12, + "66": 17, + "67": 19, + "68": 13, + "69": 9, + "70": 25, + "71": 25, + "72": 16, + "73": 12, + "74": 11, + "75": 8, + "76": 10, + "77": 13, + "78": 4, + "79": 6, + "80": 3, + "81": 1, + "82": 2, + "83": 2, + "84": 5, + "85": 3, + "86": 3, + "87": 5, + "88": 4, + "89": 12, + "90": 10, + "91": 7, + "92": 11, + "93": 9, + "94": 2, + "95": 3, + "97": 2, + "98": 3, + "99": 1, + "112": 1, + "113": 1, + "114": 1, + "116": 3, + "117": 2, + "119": 1, + "127": 1, + "130": 2, + "199": 2, + "200": 1, + "201": 1, + "202": 1, + "203": 2, + "204": 5, + "205": 7, + "206": 5, + "207": 4, + "208": 1, + "209": 6, + "210": 8, + "211": 6, + "212": 4, + "213": 11, + "214": 8, + "215": 7, + "216": 6, + "217": 6, + "218": 4, + "219": 4, + "220": 5, + "221": 5, + "222": 7, + "223": 17, + "224": 16, + "225": 14, + "226": 13, + "227": 6, + "228": 6, + "229": 10, + "230": 16, + "231": 13, + "232": 9, + "233": 6, + "234": 6, + "235": 6, + "236": 2, + "237": 4, + "238": 5, + "239": 4, + "240": 6, + "241": 3, + "243": 2, + "244": 2, + "246": 2, + "248": 1, + "249": 1, + "251": 3, + "252": 1, + "253": 3, + "254": 2, + "256": 1, + "258": 2, + "259": 1, + "260": 21702 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333136266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882949b306a9773" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "949b306a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_16.html b/autobahn/client/tungstenite_case_12_1_16.html new file mode 100644 index 0000000..f0c672b --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_16.html @@ -0,0 +1,588 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.16 : Pass - 2589 ms @ 2025-09-11T20:06:06.866Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=317&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: lXWRPoGE/DKM56z6ORnBgA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sEfIAW0wRvOb5K37G0XZgGDhURU=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
4552910
4561456
4571457
4581458
4592918
46052300
46173227
46252310
46341852
4641464
46562790
46683728
46762802
46841872
469115159
47083760
47173297
47262832
47362838
47441896
47541900
47652380
47752385
47873346
479178143
480167680
481146734
482136266
48362898
48462904
485104850
486167776
487136331
48894392
48962934
49062940
49162946
4922984
49341972
49452470
49541980
49662976
49731491
4992998
50021000
50221004
5041504
5051505
50731521
50931527
51021020
5121512
51421028
5151515
51721034
51831554
5191519
52021040
52121042
5221522
52321046
5241524
52531575
5261526
52731581
52863168
52921058
53021060
53121062
5371537
5441544
54521090
5471547
5481548
5501550
55121102
55331659
5541554
5551555
55621112
55731671
55895022
55952795
56031680
561105610
562105620
563158445
5642011280
565147910
566169056
567147938
5682111928
5692614794
570179690
571116281
5722514300
5732112033
5742413776
575169200
5762514400
5772413848
5782413872
579126948
580179860
5811911039
582137566
58395247
5842514600
5852514625
586169376
587127044
588116468
58984712
590105900
591137683
59242368
59363558
59431782
5951595
59621192
59721194
59852990
59931797
60031800
60153005
60242408
603127236
604106040
60574235
606116666
60795463
60821216
60931827
61121222
61231836
6131613
6261626
6271627
6281628
63031890
63121262
6331633
6411641
64221284
102850005140000
Total60025688354
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05000
11000
81
Total6001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333137266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88829e9c26d09d74
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3965396332366430
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_16.json b/autobahn/client/tungstenite_case_12_1_16.json new file mode 100644 index 0000000..a082711 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_16.json @@ -0,0 +1,435 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 317, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2589, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=317&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: lXWRPoGE/DKM56z6ORnBgA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sEfIAW0wRvOb5K37G0XZgGDhURU=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:06:06.866Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5688098, + "outgoingWebSocketFrames": 6000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0042372148222011696, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 5000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "455": 2, + "456": 1, + "457": 1, + "458": 1, + "459": 2, + "460": 5, + "461": 7, + "462": 5, + "463": 4, + "464": 1, + "465": 6, + "466": 8, + "467": 6, + "468": 4, + "469": 11, + "470": 8, + "471": 7, + "472": 6, + "473": 6, + "474": 4, + "475": 4, + "476": 5, + "477": 5, + "478": 7, + "479": 17, + "480": 16, + "481": 14, + "482": 13, + "483": 6, + "484": 6, + "485": 10, + "486": 16, + "487": 13, + "488": 9, + "489": 6, + "490": 6, + "491": 6, + "492": 2, + "493": 4, + "494": 5, + "495": 4, + "496": 6, + "497": 3, + "499": 2, + "500": 2, + "502": 2, + "504": 1, + "505": 1, + "507": 3, + "509": 3, + "510": 2, + "512": 1, + "514": 2, + "515": 1, + "517": 2, + "518": 3, + "519": 1, + "520": 2, + "521": 2, + "522": 1, + "523": 2, + "524": 1, + "525": 3, + "526": 1, + "527": 3, + "528": 6, + "529": 2, + "530": 2, + "531": 2, + "537": 1, + "544": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "551": 2, + "553": 3, + "554": 1, + "555": 1, + "556": 2, + "557": 3, + "558": 9, + "559": 5, + "560": 3, + "561": 10, + "562": 10, + "563": 15, + "564": 20, + "565": 14, + "566": 16, + "567": 14, + "568": 21, + "569": 26, + "570": 17, + "571": 11, + "572": 25, + "573": 21, + "574": 24, + "575": 16, + "576": 25, + "577": 24, + "578": 24, + "579": 12, + "580": 17, + "581": 19, + "582": 13, + "583": 9, + "584": 25, + "585": 25, + "586": 16, + "587": 12, + "588": 11, + "589": 8, + "590": 10, + "591": 13, + "592": 4, + "593": 6, + "594": 3, + "595": 1, + "596": 2, + "597": 2, + "598": 5, + "599": 3, + "600": 3, + "601": 5, + "602": 4, + "603": 12, + "604": 10, + "605": 7, + "606": 11, + "607": 9, + "608": 2, + "609": 3, + "611": 2, + "612": 3, + "613": 1, + "626": 1, + "627": 1, + "628": 1, + "630": 3, + "631": 2, + "633": 1, + "641": 1, + "642": 2, + "1028": 5000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333137266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829e9c26d09d74" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9e9c26d0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_17.html b/autobahn/client/tungstenite_case_12_1_17.html new file mode 100644 index 0000000..3f351d8 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_17.html @@ -0,0 +1,588 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.17 : Pass - 2414 ms @ 2025-09-11T20:06:09.457Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=318&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: JVqZx+mQO8GkaNkHaGKfMA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Rs0I6i6x3QWuWDE+SGLSvYV/ors=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
147922958
148011480
148111481
148211482
148322966
148457420
1485710395
148657430
148745948
148811488
148968934
1490811920
149168946
149245968
14931116423
1494811952
1495710465
149668976
149768982
149845992
149945996
150057500
150157505
1502710514
15031725551
15041624064
15051421070
15061319578
150769042
150869048
15091015090
15101624160
15111319643
1512913608
151369078
151469084
151569090
151623032
151746068
151857590
151946076
152069120
152134563
152323046
152423048
152623052
152811528
152911529
153134593
153334599
153423068
153611536
153823076
153911539
154123082
154234626
154311543
154423088
154523090
154611546
154723094
154811548
154934647
155011550
155134653
155269312
155323106
155423108
155523110
156111561
156811568
156923138
157111571
157211572
157411574
157523150
157734731
157811578
157911579
158023160
158134743
1582914238
158357915
158434752
15851015850
15861015860
15871523805
15882031760
15891422246
15901625440
15911422274
15922133432
15932641418
15941727098
15951117545
15962539900
15972133537
15982438352
15991625584
16002540000
16012438424
16022438448
16031219236
16041727268
16051930495
16061320878
1607914463
16082540200
16092540225
16101625760
16111219332
16121117732
1613812904
16141016140
16151320995
161646464
161769702
161834854
161911619
162023240
162123242
162258110
162334869
162434872
162558125
162646504
16271219524
16281016280
1629711403
16301117930
1631914679
163223264
163334899
163523270
163634908
163711637
165011650
165111651
165211652
165434962
165523310
165711657
166511665
166623332
410010004100000
Total20025672354
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333138266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88829088c35d9360
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3930383863333564
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_17.json b/autobahn/client/tungstenite_case_12_1_17.json new file mode 100644 index 0000000..0a2b06b --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_17.json @@ -0,0 +1,435 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 318, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2414, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=318&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: JVqZx+mQO8GkaNkHaGKfMA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Rs0I6i6x3QWuWDE+SGLSvYV/ors=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:06:09.457Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5672098, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014124049407337233, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "1479": 2, + "1480": 1, + "1481": 1, + "1482": 1, + "1483": 2, + "1484": 5, + "1485": 7, + "1486": 5, + "1487": 4, + "1488": 1, + "1489": 6, + "1490": 8, + "1491": 6, + "1492": 4, + "1493": 11, + "1494": 8, + "1495": 7, + "1496": 6, + "1497": 6, + "1498": 4, + "1499": 4, + "1500": 5, + "1501": 5, + "1502": 7, + "1503": 17, + "1504": 16, + "1505": 14, + "1506": 13, + "1507": 6, + "1508": 6, + "1509": 10, + "1510": 16, + "1511": 13, + "1512": 9, + "1513": 6, + "1514": 6, + "1515": 6, + "1516": 2, + "1517": 4, + "1518": 5, + "1519": 4, + "1520": 6, + "1521": 3, + "1523": 2, + "1524": 2, + "1526": 2, + "1528": 1, + "1529": 1, + "1531": 3, + "1533": 3, + "1534": 2, + "1536": 1, + "1538": 2, + "1539": 1, + "1541": 2, + "1542": 3, + "1543": 1, + "1544": 2, + "1545": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 3, + "1550": 1, + "1551": 3, + "1552": 6, + "1553": 2, + "1554": 2, + "1555": 2, + "1561": 1, + "1568": 1, + "1569": 2, + "1571": 1, + "1572": 1, + "1574": 1, + "1575": 2, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 3, + "1582": 9, + "1583": 5, + "1584": 3, + "1585": 10, + "1586": 10, + "1587": 15, + "1588": 20, + "1589": 14, + "1590": 16, + "1591": 14, + "1592": 21, + "1593": 26, + "1594": 17, + "1595": 11, + "1596": 25, + "1597": 21, + "1598": 24, + "1599": 16, + "1600": 25, + "1601": 24, + "1602": 24, + "1603": 12, + "1604": 17, + "1605": 19, + "1606": 13, + "1607": 9, + "1608": 25, + "1609": 25, + "1610": 16, + "1611": 12, + "1612": 11, + "1613": 8, + "1614": 10, + "1615": 13, + "1616": 4, + "1617": 6, + "1618": 3, + "1619": 1, + "1620": 2, + "1621": 2, + "1622": 5, + "1623": 3, + "1624": 3, + "1625": 5, + "1626": 4, + "1627": 12, + "1628": 10, + "1629": 7, + "1630": 11, + "1631": 9, + "1632": 2, + "1633": 3, + "1635": 2, + "1636": 3, + "1637": 1, + "1650": 1, + "1651": 1, + "1652": 1, + "1654": 3, + "1655": 2, + "1657": 1, + "1665": 1, + "1666": 2, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333138266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829088c35d9360" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9088c35d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_18.html b/autobahn/client/tungstenite_case_12_1_18.html new file mode 100644 index 0000000..e63380f --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_18.html @@ -0,0 +1,586 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.18 : Pass - 2514 ms @ 2025-09-11T20:06:11.872Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=319&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: sy8CVAGO2K0yWM+1/QOzAg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: fL1A/A83U7PuCVDM9k635s1LYt0=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668354
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333139266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d956e7fcdabe
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6439353665376663
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_18.json b/autobahn/client/tungstenite_case_12_1_18.json new file mode 100644 index 0000000..d5da360 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_18.json @@ -0,0 +1,433 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 319, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2514, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=319&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: sy8CVAGO2K0yWM+1/QOzAg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: fL1A/A83U7PuCVDM9k635s1LYt0=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:06:11.872Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333139266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d956e7fcdabe" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d956e7fc" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_2.html b/autobahn/client/tungstenite_case_12_1_2.html new file mode 100644 index 0000000..df7576d --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_2.html @@ -0,0 +1,328 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.2 : Pass - 159 ms @ 2025-09-11T20:05:55.952Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=303&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: s0sAq5Si55dOtMjc1deeKg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: osMrJwwnr4LNr0fqFxA/Hg/c4dA=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
114414851
1210120
131431859
141742436
1536540
16681088
17781326
1828504
1916304
23123
28128
36136
41141
42142
55155
2571257
Total100213518
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
74413087
81080
91431287
101741740
1136396
1268816
13781014
1428392
1516240
19119
24124
32132
37137
38138
51151
2521252
Total10029509
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333033266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882e4f5558be71d
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6534663535353862
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_2.json b/autobahn/client/tungstenite_case_12_1_2.json new file mode 100644 index 0000000..a367741 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_2.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 303, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 159, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=303&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: s0sAq5Si55dOtMjc1deeKg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: osMrJwwnr4LNr0fqFxA/Hg/c4dA=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 441, + "12": 10, + "13": 143, + "14": 174, + "15": 36, + "16": 68, + "17": 78, + "18": 28, + "19": 16, + "23": 1, + "28": 1, + "36": 1, + "41": 1, + "42": 1, + "55": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:55.952Z", + "trafficStats": { + "incomingCompressionRatio": 0.113328125, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 7253, + "incomingOctetsWireLevel": 13253, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.8272438990762443, + "outgoingCompressionRatio": 0.113328125, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 7253, + "outgoingOctetsWireLevel": 9253, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.2757479663587481, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 441, + "8": 10, + "9": 143, + "10": 174, + "11": 36, + "12": 68, + "13": 78, + "14": 28, + "15": 16, + "19": 1, + "24": 1, + "32": 1, + "37": 1, + "38": 1, + "51": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333033266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e4f5558be71d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e4f5558b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_3.html b/autobahn/client/tungstenite_case_12_1_3.html new file mode 100644 index 0000000..d2697fc --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_3.html @@ -0,0 +1,358 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.3 : Pass - 116 ms @ 2025-09-11T20:05:56.112Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=304&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: lbRnJ4TuFb3x9KkVKT2dew==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dsK4gV7jFIg5Qe//stYG+HozX5Y=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1742714
18701260
1942798
201382760
211052205
22992178
231252875
24721728
25761900
26541404
27531431
28381064
2929841
3022660
3110310
324128
335165
34134
35270
36136
37274
38138
40140
41141
43143
45290
47147
65165
70170
1511151
2571257
Total100223485
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1342546
1470980
1542630
161382208
171051785
18991782
191252375
20721440
21761596
22541188
23531219
2438912
2529725
2622572
2710270
284112
295145
30130
31262
32132
33266
34134
36136
37137
39139
41282
43143
61161
66166
1471147
2521252
Total100219476
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333034266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888259f9c8e65a11
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3539663963386536
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_3.json b/autobahn/client/tungstenite_case_12_1_3.json new file mode 100644 index 0000000..4243efd --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_3.json @@ -0,0 +1,205 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 304, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 116, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=304&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: lbRnJ4TuFb3x9KkVKT2dew==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dsK4gV7jFIg5Qe//stYG+HozX5Y=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "17": 42, + "18": 70, + "19": 42, + "20": 138, + "21": 105, + "22": 99, + "23": 125, + "24": 72, + "25": 76, + "26": 54, + "27": 53, + "28": 38, + "29": 29, + "30": 22, + "31": 10, + "32": 4, + "33": 5, + "34": 1, + "35": 2, + "36": 1, + "37": 2, + "38": 1, + "40": 1, + "41": 1, + "43": 1, + "45": 2, + "47": 1, + "65": 1, + "70": 1, + "151": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:56.112Z", + "trafficStats": { + "incomingCompressionRatio": 0.0672578125, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 17218, + "incomingOctetsWireLevel": 23220, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.3485886862585666, + "outgoingCompressionRatio": 0.0672578125, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 17218, + "outgoingOctetsWireLevel": 19220, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11627366709257754, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 42, + "14": 70, + "15": 42, + "16": 138, + "17": 105, + "18": 99, + "19": 125, + "20": 72, + "21": 76, + "22": 54, + "23": 53, + "24": 38, + "25": 29, + "26": 22, + "27": 10, + "28": 4, + "29": 5, + "30": 1, + "31": 2, + "32": 1, + "33": 2, + "34": 1, + "36": 1, + "37": 1, + "39": 1, + "41": 2, + "43": 1, + "61": 1, + "66": 1, + "147": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333034266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888259f9c8e65a11" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "59f9c8e6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_4.html b/autobahn/client/tungstenite_case_12_1_4.html new file mode 100644 index 0000000..12d6c36 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_4.html @@ -0,0 +1,426 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.4 : Pass - 145 ms @ 2025-09-11T20:05:56.230Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=305&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: GxA1/FVg8dlphZ6I7cbBwA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: tuJNSn4cwF+bWr+O/Bsl4E6QLFk=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
43143
44144
454180
485240
49149
504200
519459
52221144
53331749
54321728
55392145
56683808
57482736
58633654
59603540
60674020
61664026
62271674
63493087
64291856
65181170
66161056
67312077
68181224
69161104
708560
71191349
72211512
73161168
74292146
75181350
76282128
77312387
7810780
7911869
80181440
8110810
828656
834332
843252
86186
872174
883264
903270
91191
92192
933279
952190
962192
984392
1001100
1011101
1032206
1041104
1051105
1081108
1092218
1101110
1111111
1121112
1132226
1141114
1181118
1741174
2571257
Total100264954
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
39139
40140
414164
445220
45145
464184
479423
48221056
49331617
50321600
51391989
52683536
53482544
54633402
55603300
56673752
57663762
58271566
59492891
60291740
61181098
6216992
63311953
64181152
65161040
668528
67191273
68211428
69161104
70292030
71181278
72282016
73312263
7410740
7511825
76181368
7710770
788624
794316
803240
82182
832166
843252
863258
87187
88188
893267
912182
922184
944376
96196
97197
992198
1001100
1011101
1041104
1052210
1061106
1071107
1081108
1092218
1101110
1141114
1701170
2521252
Total100260945
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333035266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882c21f103ec1f7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6332316631303365
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_4.json b/autobahn/client/tungstenite_case_12_1_4.json new file mode 100644 index 0000000..c1c266b --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_4.json @@ -0,0 +1,273 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 305, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 145, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=305&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: GxA1/FVg8dlphZ6I7cbBwA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: tuJNSn4cwF+bWr+O/Bsl4E6QLFk=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "43": 1, + "44": 1, + "45": 4, + "48": 5, + "49": 1, + "50": 4, + "51": 9, + "52": 22, + "53": 33, + "54": 32, + "55": 39, + "56": 68, + "57": 48, + "58": 63, + "59": 60, + "60": 67, + "61": 66, + "62": 27, + "63": 49, + "64": 29, + "65": 18, + "66": 16, + "67": 31, + "68": 18, + "69": 16, + "70": 8, + "71": 19, + "72": 21, + "73": 16, + "74": 29, + "75": 18, + "76": 28, + "77": 31, + "78": 10, + "79": 11, + "80": 18, + "81": 10, + "82": 8, + "83": 4, + "84": 3, + "86": 1, + "87": 2, + "88": 3, + "90": 3, + "91": 1, + "92": 1, + "93": 3, + "95": 2, + "96": 2, + "98": 4, + "100": 1, + "101": 1, + "103": 2, + "104": 1, + "105": 1, + "108": 1, + "109": 2, + "110": 1, + "111": 1, + "112": 1, + "113": 2, + "114": 1, + "118": 1, + "174": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:56.230Z", + "trafficStats": { + "incomingCompressionRatio": 0.0573115234375, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 58687, + "incomingOctetsWireLevel": 64689, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.1022713718540733, + "outgoingCompressionRatio": 0.0573115234375, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 58687, + "outgoingOctetsWireLevel": 60689, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.034113176683081434, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "39": 1, + "40": 1, + "41": 4, + "44": 5, + "45": 1, + "46": 4, + "47": 9, + "48": 22, + "49": 33, + "50": 32, + "51": 39, + "52": 68, + "53": 48, + "54": 63, + "55": 60, + "56": 67, + "57": 66, + "58": 27, + "59": 49, + "60": 29, + "61": 18, + "62": 16, + "63": 31, + "64": 18, + "65": 16, + "66": 8, + "67": 19, + "68": 21, + "69": 16, + "70": 29, + "71": 18, + "72": 28, + "73": 31, + "74": 10, + "75": 11, + "76": 18, + "77": 10, + "78": 8, + "79": 4, + "80": 3, + "82": 1, + "83": 2, + "84": 3, + "86": 3, + "87": 1, + "88": 1, + "89": 3, + "91": 2, + "92": 2, + "94": 4, + "96": 1, + "97": 1, + "99": 2, + "100": 1, + "101": 1, + "104": 1, + "105": 2, + "106": 1, + "107": 1, + "108": 1, + "109": 2, + "110": 1, + "114": 1, + "170": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333035266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c21f103ec1f7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c21f103e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_5.html b/autobahn/client/tungstenite_case_12_1_5.html new file mode 100644 index 0000000..71256db --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_5.html @@ -0,0 +1,538 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.5 : Pass - 215 ms @ 2025-09-11T20:05:56.376Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=306&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 07fGhWIBx7GPS8549gdATQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: S3C6eC/KkhJNlSOLkn/yjPKaQT8=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1521152
1532306
1542308
1554620
1573471
1582316
1592318
1603480
1611161
1622324
1631163
1646984
1655825
1661166
16771169
16871176
169101690
170132210
171101710
172132236
173142422
174193306
175203500
176162816
177284956
178203560
179244296
180234140
181234163
182234186
183285124
184203680
185193515
186173162
187122244
188224136
189264914
190122280
191132483
192152880
193112123
194112134
195163120
196112156
19791773
19871386
199101990
2003600
20191809
202112222
20351015
2044816
205102050
206102060
2074828
20871456
2091209
2103630
21151055
21251060
21351065
214102140
215112365
216102160
217122604
218102180
21971533
2204880
22191989
222112442
223102230
224173808
22561350
226122712
227143178
22871596
229132977
230112530
23192079
232112552
233153495
234122808
235163760
23671652
23761422
2383714
2392478
2401240
2442488
24651230
2472494
2484992
2492498
25041000
2511251
25241008
2531253
2552510
2563768
25751285
2581258
2591259
26041040
2612522
2623786
2631263
26461584
2653795
26661596
26751335
26851340
26992421
27051350
27141084
2721272
2733819
2741274
2761276
2851285
2891289
3101310
Total1002202922
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1481148
1492298
1502300
1514604
1533459
1542308
1552310
1563468
1571157
1582316
1591159
1606960
1615805
1621162
16371141
16471148
165101650
166132158
167101670
168132184
169142366
170193230
171203420
172162752
173284844
174203480
175244200
176234048
177234071
178234094
179285012
180203600
181193439
182173094
183122196
184224048
185264810
186122232
187132431
188152820
189112079
190112090
191163056
192112112
19391737
19471358
195101950
1963588
19791773
198112178
1995995
2004800
201102010
202102020
2034812
20471428
2051205
2063618
20751035
20851040
20951045
210102100
211112321
212102120
213122556
214102140
21571505
2164864
21791953
218112398
219102190
220173740
22161326
222122664
223143122
22471568
225132925
226112486
22792043
228112508
229153435
230122760
231163696
23271624
23361398
2343702
2352470
2361236
2402480
24251210
2432486
2444976
2452490
2464984
2471247
2484992
2491249
2512502
25241008
25341012
2541254
2551255
25641024
2572514
2583774
2591259
26061560
2613783
26261572
26351315
26451320
26592385
26651330
26741068
2681268
2693807
2701270
2721272
2811281
2851285
3061306
Total1002198913
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333036266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820a8bb5690963
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3061386262353639
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_5.json b/autobahn/client/tungstenite_case_12_1_5.json new file mode 100644 index 0000000..df2f995 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_5.json @@ -0,0 +1,385 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 306, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 215, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=306&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 07fGhWIBx7GPS8549gdATQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: S3C6eC/KkhJNlSOLkn/yjPKaQT8=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "152": 1, + "153": 2, + "154": 2, + "155": 4, + "157": 3, + "158": 2, + "159": 2, + "160": 3, + "161": 1, + "162": 2, + "163": 1, + "164": 6, + "165": 5, + "166": 1, + "167": 7, + "168": 7, + "169": 10, + "170": 13, + "171": 10, + "172": 13, + "173": 14, + "174": 19, + "175": 20, + "176": 16, + "177": 28, + "178": 20, + "179": 24, + "180": 23, + "181": 23, + "182": 23, + "183": 28, + "184": 20, + "185": 19, + "186": 17, + "187": 12, + "188": 22, + "189": 26, + "190": 12, + "191": 13, + "192": 15, + "193": 11, + "194": 11, + "195": 16, + "196": 11, + "197": 9, + "198": 7, + "199": 10, + "200": 3, + "201": 9, + "202": 11, + "203": 5, + "204": 4, + "205": 10, + "206": 10, + "207": 4, + "208": 7, + "209": 1, + "210": 3, + "211": 5, + "212": 5, + "213": 5, + "214": 10, + "215": 11, + "216": 10, + "217": 12, + "218": 10, + "219": 7, + "220": 4, + "221": 9, + "222": 11, + "223": 10, + "224": 17, + "225": 6, + "226": 12, + "227": 14, + "228": 7, + "229": 13, + "230": 11, + "231": 9, + "232": 11, + "233": 15, + "234": 12, + "235": 16, + "236": 7, + "237": 6, + "238": 3, + "239": 2, + "240": 1, + "244": 2, + "246": 5, + "247": 2, + "248": 4, + "249": 2, + "250": 4, + "251": 1, + "252": 4, + "253": 1, + "255": 2, + "256": 3, + "257": 5, + "258": 1, + "259": 1, + "260": 4, + "261": 2, + "262": 3, + "263": 1, + "264": 6, + "265": 3, + "266": 6, + "267": 5, + "268": 5, + "269": 9, + "270": 5, + "271": 4, + "272": 1, + "273": 3, + "274": 1, + "276": 1, + "285": 1, + "289": 1, + "310": 1 + }, + "started": "2025-09-11T20:05:56.376Z", + "trafficStats": { + "incomingCompressionRatio": 0.047523681640625, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 194657, + "incomingOctetsWireLevel": 202657, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.04109793123288656, + "outgoingCompressionRatio": 0.047523681640625, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 194657, + "outgoingOctetsWireLevel": 198657, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.02054896561644328, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "148": 1, + "149": 2, + "150": 2, + "151": 4, + "153": 3, + "154": 2, + "155": 2, + "156": 3, + "157": 1, + "158": 2, + "159": 1, + "160": 6, + "161": 5, + "162": 1, + "163": 7, + "164": 7, + "165": 10, + "166": 13, + "167": 10, + "168": 13, + "169": 14, + "170": 19, + "171": 20, + "172": 16, + "173": 28, + "174": 20, + "175": 24, + "176": 23, + "177": 23, + "178": 23, + "179": 28, + "180": 20, + "181": 19, + "182": 17, + "183": 12, + "184": 22, + "185": 26, + "186": 12, + "187": 13, + "188": 15, + "189": 11, + "190": 11, + "191": 16, + "192": 11, + "193": 9, + "194": 7, + "195": 10, + "196": 3, + "197": 9, + "198": 11, + "199": 5, + "200": 4, + "201": 10, + "202": 10, + "203": 4, + "204": 7, + "205": 1, + "206": 3, + "207": 5, + "208": 5, + "209": 5, + "210": 10, + "211": 11, + "212": 10, + "213": 12, + "214": 10, + "215": 7, + "216": 4, + "217": 9, + "218": 11, + "219": 10, + "220": 17, + "221": 6, + "222": 12, + "223": 14, + "224": 7, + "225": 13, + "226": 11, + "227": 9, + "228": 11, + "229": 15, + "230": 12, + "231": 16, + "232": 7, + "233": 6, + "234": 3, + "235": 2, + "236": 1, + "240": 2, + "242": 5, + "243": 2, + "244": 4, + "245": 2, + "246": 4, + "247": 1, + "248": 4, + "249": 1, + "251": 2, + "252": 4, + "253": 4, + "254": 1, + "255": 1, + "256": 4, + "257": 2, + "258": 3, + "259": 1, + "260": 6, + "261": 3, + "262": 6, + "263": 5, + "264": 5, + "265": 9, + "266": 5, + "267": 4, + "268": 1, + "269": 3, + "270": 1, + "272": 1, + "281": 1, + "285": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333036266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820a8bb5690963" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0a8bb569" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_6.html b/autobahn/client/tungstenite_case_12_1_6.html new file mode 100644 index 0000000..0d410fb --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_6.html @@ -0,0 +1,660 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.6 : Pass - 258 ms @ 2025-09-11T20:05:56.593Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=307&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: +iLNm0nOjvd/ttB8xEW/bg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Bs3wjCqAtLtJH6I0o5od9nWh8jg=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
30551525
30661836
3072614
30851540
30961854
310113410
311103110
3123936
3131313
31451570
3151315
3163948
3171317
31851590
31972233
32041280
32161926
322123864
32341292
324123888
325113575
326103260
327134251
328103280
329185922
330165280
331154965
332103320
333216993
334217014
335196365
336134368
337165392
33872366
33972373
340124080
341113751
342103420
34351715
34472408
34541380
34651730
34751735
34831044
3491349
35051750
35151755
35262112
35393177
35493186
35593195
35682848
357103570
35882864
359145026
36093240
361103610
362124344
36393267
36482912
365124380
36682928
367103670
36841472
36962214
37062220
3712742
3722744
373114103
37472618
3752750
376114136
37772639
37883024
37931137
38072660
38183048
38262292
383103830
38462304
38541540
3862772
38772709
3882776
38931167
39031170
39141564
39231176
39331179
39451970
3952790
39641584
39731191
39841592
39931197
40031200
40162406
40241608
40331209
4041404
4051405
40641624
40731221
40831224
4091409
41041640
41183288
41231236
4132826
41472898
41562490
4162832
4171417
4181418
41941676
420125040
42152105
42231266
42331269
4242848
4252850
42672982
42741708
42831284
42931287
43052150
4312862
43331299
43431302
43531305
4361436
4371437
43831314
4401440
4411441
4452890
4461446
44731341
4491449
4511451
45231356
4531453
45431362
45531365
4561456
45794113
45883664
4592918
46073220
461104610
46294158
4632926
46473248
465136045
46662796
46783736
46852340
46983752
47094230
47162826
47283776
4732946
47441896
4751475
4762952
4772954
4781478
4791479
4802960
4811481
4821482
48331449
4841484
4861486
4881488
4912982
4921492
49331479
4941494
4961496
4971497
Total1002377539
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
30151505
30261812
3032606
30451520
30561830
306113366
307103070
3083924
3091309
31051550
3111311
3123936
3131313
31451570
31572205
31641264
31761902
318123816
31941276
320123840
321113531
322103220
323134199
324103240
325185850
326165216
327154905
328103280
329216909
330216930
331196289
332134316
333165328
33472338
33572345
336124032
337113707
338103380
33951695
34072380
34141364
34251710
34351715
34431032
3451345
34651730
34751735
34862088
34993141
35093150
35193159
35282816
353103530
35482832
355144970
35693204
357103570
358124296
35993231
36082880
361124332
36282896
363103630
36441456
36562190
36662196
3672734
3682736
369114059
37072590
3712742
372114092
37372611
37482992
37531125
37672632
37783016
37862268
379103790
38062280
38141524
3822764
38372681
3842768
38531155
38631158
38741548
38831164
38931167
39051950
3912782
39241568
39331179
39441576
39531185
39631188
39762382
39841592
39931197
4001400
4011401
40241608
40331209
40431212
4051405
40641624
40783256
40831224
4092818
41072870
41162466
4122824
4131413
4141414
41541660
416124992
41752085
41831254
41931257
4202840
4212842
42272954
42341692
42431272
42531275
42652130
4272854
42931287
43031290
43131293
4321432
4331433
43431302
4361436
4371437
4412882
4421442
44331329
4451445
4471447
44831344
4491449
45031350
45131353
4521452
45394077
45483632
4552910
45673192
457104570
45894122
4592918
46073220
461135993
46262772
46383704
46452320
46583720
46694194
46762802
46883744
4692938
47041880
4711471
4722944
4732946
4741474
4751475
4762952
4771477
4781478
47931437
4801480
4821482
4841484
4872974
4881488
48931467
4901490
4921492
4931493
Total1002373530
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333037266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882bf14e8f9bcfc
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6266313465386639
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_6.json b/autobahn/client/tungstenite_case_12_1_6.json new file mode 100644 index 0000000..32316db --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_6.json @@ -0,0 +1,507 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 307, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 258, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=307&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: +iLNm0nOjvd/ttB8xEW/bg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Bs3wjCqAtLtJH6I0o5od9nWh8jg=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "305": 5, + "306": 6, + "307": 2, + "308": 5, + "309": 6, + "310": 11, + "311": 10, + "312": 3, + "313": 1, + "314": 5, + "315": 1, + "316": 3, + "317": 1, + "318": 5, + "319": 7, + "320": 4, + "321": 6, + "322": 12, + "323": 4, + "324": 12, + "325": 11, + "326": 10, + "327": 13, + "328": 10, + "329": 18, + "330": 16, + "331": 15, + "332": 10, + "333": 21, + "334": 21, + "335": 19, + "336": 13, + "337": 16, + "338": 7, + "339": 7, + "340": 12, + "341": 11, + "342": 10, + "343": 5, + "344": 7, + "345": 4, + "346": 5, + "347": 5, + "348": 3, + "349": 1, + "350": 5, + "351": 5, + "352": 6, + "353": 9, + "354": 9, + "355": 9, + "356": 8, + "357": 10, + "358": 8, + "359": 14, + "360": 9, + "361": 10, + "362": 12, + "363": 9, + "364": 8, + "365": 12, + "366": 8, + "367": 10, + "368": 4, + "369": 6, + "370": 6, + "371": 2, + "372": 2, + "373": 11, + "374": 7, + "375": 2, + "376": 11, + "377": 7, + "378": 8, + "379": 3, + "380": 7, + "381": 8, + "382": 6, + "383": 10, + "384": 6, + "385": 4, + "386": 2, + "387": 7, + "388": 2, + "389": 3, + "390": 3, + "391": 4, + "392": 3, + "393": 3, + "394": 5, + "395": 2, + "396": 4, + "397": 3, + "398": 4, + "399": 3, + "400": 3, + "401": 6, + "402": 4, + "403": 3, + "404": 1, + "405": 1, + "406": 4, + "407": 3, + "408": 3, + "409": 1, + "410": 4, + "411": 8, + "412": 3, + "413": 2, + "414": 7, + "415": 6, + "416": 2, + "417": 1, + "418": 1, + "419": 4, + "420": 12, + "421": 5, + "422": 3, + "423": 3, + "424": 2, + "425": 2, + "426": 7, + "427": 4, + "428": 3, + "429": 3, + "430": 5, + "431": 2, + "433": 3, + "434": 3, + "435": 3, + "436": 1, + "437": 1, + "438": 3, + "440": 1, + "441": 1, + "445": 2, + "446": 1, + "447": 3, + "449": 1, + "451": 1, + "452": 3, + "453": 1, + "454": 3, + "455": 3, + "456": 1, + "457": 9, + "458": 8, + "459": 2, + "460": 7, + "461": 10, + "462": 9, + "463": 2, + "464": 7, + "465": 13, + "466": 6, + "467": 8, + "468": 5, + "469": 8, + "470": 9, + "471": 6, + "472": 8, + "473": 2, + "474": 4, + "475": 1, + "476": 2, + "477": 2, + "478": 1, + "479": 1, + "480": 2, + "481": 1, + "482": 1, + "483": 3, + "484": 1, + "486": 1, + "488": 1, + "491": 2, + "492": 1, + "493": 3, + "494": 1, + "496": 1, + "497": 1 + }, + "started": "2025-09-11T20:05:56.593Z", + "trafficStats": { + "incomingCompressionRatio": 0.045077392578125, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 369274, + "incomingOctetsWireLevel": 377274, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.02166413015809399, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 373274, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.010832065079046995, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "301": 5, + "302": 6, + "303": 2, + "304": 5, + "305": 6, + "306": 11, + "307": 10, + "308": 3, + "309": 1, + "310": 5, + "311": 1, + "312": 3, + "313": 1, + "314": 5, + "315": 7, + "316": 4, + "317": 6, + "318": 12, + "319": 4, + "320": 12, + "321": 11, + "322": 10, + "323": 13, + "324": 10, + "325": 18, + "326": 16, + "327": 15, + "328": 10, + "329": 21, + "330": 21, + "331": 19, + "332": 13, + "333": 16, + "334": 7, + "335": 7, + "336": 12, + "337": 11, + "338": 10, + "339": 5, + "340": 7, + "341": 4, + "342": 5, + "343": 5, + "344": 3, + "345": 1, + "346": 5, + "347": 5, + "348": 6, + "349": 9, + "350": 9, + "351": 9, + "352": 8, + "353": 10, + "354": 8, + "355": 14, + "356": 9, + "357": 10, + "358": 12, + "359": 9, + "360": 8, + "361": 12, + "362": 8, + "363": 10, + "364": 4, + "365": 6, + "366": 6, + "367": 2, + "368": 2, + "369": 11, + "370": 7, + "371": 2, + "372": 11, + "373": 7, + "374": 8, + "375": 3, + "376": 7, + "377": 8, + "378": 6, + "379": 10, + "380": 6, + "381": 4, + "382": 2, + "383": 7, + "384": 2, + "385": 3, + "386": 3, + "387": 4, + "388": 3, + "389": 3, + "390": 5, + "391": 2, + "392": 4, + "393": 3, + "394": 4, + "395": 3, + "396": 3, + "397": 6, + "398": 4, + "399": 3, + "400": 1, + "401": 1, + "402": 4, + "403": 3, + "404": 3, + "405": 1, + "406": 4, + "407": 8, + "408": 3, + "409": 2, + "410": 7, + "411": 6, + "412": 2, + "413": 1, + "414": 1, + "415": 4, + "416": 12, + "417": 5, + "418": 3, + "419": 3, + "420": 2, + "421": 2, + "422": 7, + "423": 4, + "424": 3, + "425": 3, + "426": 5, + "427": 2, + "429": 3, + "430": 3, + "431": 3, + "432": 1, + "433": 1, + "434": 3, + "436": 1, + "437": 1, + "441": 2, + "442": 1, + "443": 3, + "445": 1, + "447": 1, + "448": 3, + "449": 1, + "450": 3, + "451": 3, + "452": 1, + "453": 9, + "454": 8, + "455": 2, + "456": 7, + "457": 10, + "458": 9, + "459": 2, + "460": 7, + "461": 13, + "462": 6, + "463": 8, + "464": 5, + "465": 8, + "466": 9, + "467": 6, + "468": 8, + "469": 2, + "470": 4, + "471": 1, + "472": 2, + "473": 2, + "474": 1, + "475": 1, + "476": 2, + "477": 1, + "478": 1, + "479": 3, + "480": 1, + "482": 1, + "484": 1, + "487": 2, + "488": 1, + "489": 3, + "490": 1, + "492": 1, + "493": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333037266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882bf14e8f9bcfc" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "bf14e8f9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_7.html b/autobahn/client/tungstenite_case_12_1_7.html new file mode 100644 index 0000000..8ce72df --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_7.html @@ -0,0 +1,856 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.7 : Pass - 391 ms @ 2025-09-11T20:05:56.852Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=308&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: kIChe8+eA2bFfzPilmpEhg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: AcOBz6rq+njWzMRGXV1GHKn6tvw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
60521210
60631818
6071607
60821216
6091609
6101610
6111611
6121612
6131613
61421228
61531845
61674312
61742468
61863708
619106190
62074340
62153105
62231866
623106230
62453120
6251625
62642504
62774389
62895652
62985032
630116930
63195679
632106320
633159495
63495706
635159525
63674452
63763822
63885104
63985112
64074480
64131923
64253210
64342572
64474508
64553225
64642584
64753235
64853240
64974543
65042600
65121302
6521652
65363918
65431962
65521310
65621312
65742628
65863948
65953295
66085280
66163966
66274634
66321326
66474648
66595985
666117326
667106670
668117348
66985352
67074690
67185368
67274704
67342692
67485392
67564050
67642704
67753385
67842712
67921358
68021360
68142724
6821682
68342732
68442736
68542740
68621372
6871687
68842752
68942756
6901690
69121382
69242768
69321386
69432082
69532085
6961696
69732091
69832094
69953495
70042800
70132103
70242808
70342812
70432112
70521410
70632118
70721414
70864248
70932127
71085680
71121422
7121712
7131713
71432142
71532145
7161716
7171717
71821436
71932157
72021440
72121442
72242888
72321446
72432172
72521450
72653630
72721454
72821456
72953645
73021460
73121462
7321732
7331733
73432202
73632208
7371737
73842952
73921478
74053700
74121482
74332229
74432232
74553725
74732241
74832244
74921498
75021500
7511751
7521752
75375271
7541754
7551755
7561756
7571757
7581758
75943036
76043040
76132283
76253810
76332289
76421528
76621532
76732301
76843072
7691769
7701770
77132313
7731773
7741774
77532325
7761776
77721554
7781778
77932337
7801780
7811781
7821782
7841784
7871787
79021580
79121582
79232376
7931793
79443176
79521590
79621592
7981798
79943196
80154005
80221604
8041804
80521610
80621612
8071807
8081808
80932427
81075670
81164866
81221624
81364878
81443256
81554075
81632448
81721634
81821636
81921638
82043280
82132463
82243288
82332469
82421648
82532475
82754135
82821656
82964974
83154155
83243328
83343332
83443336
83543340
83621672
8371837
83886704
83921678
84021680
84143364
84243368
84321686
84454220
84521690
84675922
84732541
84865088
84921698
8501850
85121702
85221704
8531853
85454270
855108550
85654280
85743428
85854290
85954295
8601860
86154305
86232586
86332589
86443456
86543460
86632598
86776069
86832604
86943476
87065220
87165226
87276104
87332619
87421748
8751875
8761876
87732631
87832634
87921758
88121762
8821882
8831883
88521770
88621772
88821776
89021780
8911891
89221784
8941894
8971897
8981898
9031903
9041904
9081908
9101910
91143644
9121912
9141914
Total1002729547
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
60121202
60231806
6031603
60421208
6051605
6061606
6071607
6081608
6091609
61021220
61131833
61274284
61342452
61463684
615106150
61674312
61753085
61831854
619106190
62053100
6211621
62242488
62374361
62495616
62585000
626116886
62795643
628106280
629159435
63095670
631159465
63274424
63363798
63485072
63585080
63674452
63731911
63853190
63942556
64074480
64153205
64242568
64353215
64453220
64574515
64642584
64721294
6481648
64963894
65031950
65121302
65221304
65342612
65463924
65553275
65685248
65763942
65874606
65921318
66074620
66195949
662117282
663106630
664117304
66585320
66674662
66785336
66874676
66942676
67085360
67164026
67242688
67353365
67442696
67521350
67621352
67742708
6781678
67942716
68042720
68142724
68221364
6831683
68442736
68542740
6861686
68721374
68842752
68921378
69032070
69132073
6921692
69332079
69432082
69553475
69642784
69732091
69842792
69942796
70032100
70121402
70232106
70321406
70464224
70532115
70685648
70721414
7081708
7091709
71032130
71132133
7121712
7131713
71421428
71532145
71621432
71721434
71842872
71921438
72032160
72121442
72253610
72321446
72421448
72553625
72621452
72721454
7281728
7291729
73032190
73232196
7331733
73442936
73521470
73653680
73721474
73932217
74032220
74153705
74332229
74432232
74521490
74621492
7471747
7481748
74975243
7501750
7511751
7521752
7531753
7541754
75543020
75643024
75732271
75853790
75932277
76021520
76221524
76332289
76443056
7651765
7661766
76732301
7691769
7701770
77132313
7721772
77321546
7741774
77532325
7761776
7771777
7781778
7801780
7831783
78621572
78721574
78832364
7891789
79043160
79121582
79221584
7941794
79543180
79753985
79821596
8001800
80121602
80221604
8031803
8041804
80532415
80675642
80764842
80821616
80964854
81043240
81154055
81232436
81321626
81421628
81521630
81643264
81732451
81843272
81932457
82021640
82132463
82354115
82421648
82564950
82754135
82843312
82943316
83043320
83143324
83221664
8331833
83486672
83521670
83621672
83743348
83843352
83921678
84054200
84121682
84275894
84332529
84465064
84521690
8461846
84721694
84821696
8491849
85054250
851108510
85254260
85343412
85454270
85554275
8561856
85754285
85832574
85932577
86043440
86143444
86232586
86376041
86432592
86543460
86665196
86765202
86876076
86932607
87021740
8711871
8721872
87332619
87432622
87521750
87721754
8781878
8791879
88121762
88221764
88421768
88621772
8871887
88821776
8901890
8931893
8941894
8991899
9001900
9041904
9061906
90743628
9081908
9101910
Total1002725538
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333038266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888220778c91239f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3230373738633931
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_7.json b/autobahn/client/tungstenite_case_12_1_7.json new file mode 100644 index 0000000..0968bd2 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_7.json @@ -0,0 +1,703 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 308, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 391, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=308&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: kIChe8+eA2bFfzPilmpEhg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: AcOBz6rq+njWzMRGXV1GHKn6tvw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "605": 2, + "606": 3, + "607": 1, + "608": 2, + "609": 1, + "610": 1, + "611": 1, + "612": 1, + "613": 1, + "614": 2, + "615": 3, + "616": 7, + "617": 4, + "618": 6, + "619": 10, + "620": 7, + "621": 5, + "622": 3, + "623": 10, + "624": 5, + "625": 1, + "626": 4, + "627": 7, + "628": 9, + "629": 8, + "630": 11, + "631": 9, + "632": 10, + "633": 15, + "634": 9, + "635": 15, + "636": 7, + "637": 6, + "638": 8, + "639": 8, + "640": 7, + "641": 3, + "642": 5, + "643": 4, + "644": 7, + "645": 5, + "646": 4, + "647": 5, + "648": 5, + "649": 7, + "650": 4, + "651": 2, + "652": 1, + "653": 6, + "654": 3, + "655": 2, + "656": 2, + "657": 4, + "658": 6, + "659": 5, + "660": 8, + "661": 6, + "662": 7, + "663": 2, + "664": 7, + "665": 9, + "666": 11, + "667": 10, + "668": 11, + "669": 8, + "670": 7, + "671": 8, + "672": 7, + "673": 4, + "674": 8, + "675": 6, + "676": 4, + "677": 5, + "678": 4, + "679": 2, + "680": 2, + "681": 4, + "682": 1, + "683": 4, + "684": 4, + "685": 4, + "686": 2, + "687": 1, + "688": 4, + "689": 4, + "690": 1, + "691": 2, + "692": 4, + "693": 2, + "694": 3, + "695": 3, + "696": 1, + "697": 3, + "698": 3, + "699": 5, + "700": 4, + "701": 3, + "702": 4, + "703": 4, + "704": 3, + "705": 2, + "706": 3, + "707": 2, + "708": 6, + "709": 3, + "710": 8, + "711": 2, + "712": 1, + "713": 1, + "714": 3, + "715": 3, + "716": 1, + "717": 1, + "718": 2, + "719": 3, + "720": 2, + "721": 2, + "722": 4, + "723": 2, + "724": 3, + "725": 2, + "726": 5, + "727": 2, + "728": 2, + "729": 5, + "730": 2, + "731": 2, + "732": 1, + "733": 1, + "734": 3, + "736": 3, + "737": 1, + "738": 4, + "739": 2, + "740": 5, + "741": 2, + "743": 3, + "744": 3, + "745": 5, + "747": 3, + "748": 3, + "749": 2, + "750": 2, + "751": 1, + "752": 1, + "753": 7, + "754": 1, + "755": 1, + "756": 1, + "757": 1, + "758": 1, + "759": 4, + "760": 4, + "761": 3, + "762": 5, + "763": 3, + "764": 2, + "766": 2, + "767": 3, + "768": 4, + "769": 1, + "770": 1, + "771": 3, + "773": 1, + "774": 1, + "775": 3, + "776": 1, + "777": 2, + "778": 1, + "779": 3, + "780": 1, + "781": 1, + "782": 1, + "784": 1, + "787": 1, + "790": 2, + "791": 2, + "792": 3, + "793": 1, + "794": 4, + "795": 2, + "796": 2, + "798": 1, + "799": 4, + "801": 5, + "802": 2, + "804": 1, + "805": 2, + "806": 2, + "807": 1, + "808": 1, + "809": 3, + "810": 7, + "811": 6, + "812": 2, + "813": 6, + "814": 4, + "815": 5, + "816": 3, + "817": 2, + "818": 2, + "819": 2, + "820": 4, + "821": 3, + "822": 4, + "823": 3, + "824": 2, + "825": 3, + "827": 5, + "828": 2, + "829": 6, + "831": 5, + "832": 4, + "833": 4, + "834": 4, + "835": 4, + "836": 2, + "837": 1, + "838": 8, + "839": 2, + "840": 2, + "841": 4, + "842": 4, + "843": 2, + "844": 5, + "845": 2, + "846": 7, + "847": 3, + "848": 6, + "849": 2, + "850": 1, + "851": 2, + "852": 2, + "853": 1, + "854": 5, + "855": 10, + "856": 5, + "857": 4, + "858": 5, + "859": 5, + "860": 1, + "861": 5, + "862": 3, + "863": 3, + "864": 4, + "865": 4, + "866": 3, + "867": 7, + "868": 3, + "869": 4, + "870": 6, + "871": 6, + "872": 7, + "873": 3, + "874": 2, + "875": 1, + "876": 1, + "877": 3, + "878": 3, + "879": 2, + "881": 2, + "882": 1, + "883": 1, + "885": 2, + "886": 2, + "888": 2, + "890": 2, + "891": 1, + "892": 2, + "894": 1, + "897": 1, + "898": 1, + "903": 1, + "904": 1, + "908": 1, + "910": 1, + "911": 4, + "912": 1, + "914": 1 + }, + "started": "2025-09-11T20:05:56.852Z", + "trafficStats": { + "incomingCompressionRatio": 0.0440235595703125, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 721282, + "incomingOctetsWireLevel": 729282, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.011091362324305888, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 725282, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.005545681162152944, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "601": 2, + "602": 3, + "603": 1, + "604": 2, + "605": 1, + "606": 1, + "607": 1, + "608": 1, + "609": 1, + "610": 2, + "611": 3, + "612": 7, + "613": 4, + "614": 6, + "615": 10, + "616": 7, + "617": 5, + "618": 3, + "619": 10, + "620": 5, + "621": 1, + "622": 4, + "623": 7, + "624": 9, + "625": 8, + "626": 11, + "627": 9, + "628": 10, + "629": 15, + "630": 9, + "631": 15, + "632": 7, + "633": 6, + "634": 8, + "635": 8, + "636": 7, + "637": 3, + "638": 5, + "639": 4, + "640": 7, + "641": 5, + "642": 4, + "643": 5, + "644": 5, + "645": 7, + "646": 4, + "647": 2, + "648": 1, + "649": 6, + "650": 3, + "651": 2, + "652": 2, + "653": 4, + "654": 6, + "655": 5, + "656": 8, + "657": 6, + "658": 7, + "659": 2, + "660": 7, + "661": 9, + "662": 11, + "663": 10, + "664": 11, + "665": 8, + "666": 7, + "667": 8, + "668": 7, + "669": 4, + "670": 8, + "671": 6, + "672": 4, + "673": 5, + "674": 4, + "675": 2, + "676": 2, + "677": 4, + "678": 1, + "679": 4, + "680": 4, + "681": 4, + "682": 2, + "683": 1, + "684": 4, + "685": 4, + "686": 1, + "687": 2, + "688": 4, + "689": 2, + "690": 3, + "691": 3, + "692": 1, + "693": 3, + "694": 3, + "695": 5, + "696": 4, + "697": 3, + "698": 4, + "699": 4, + "700": 3, + "701": 2, + "702": 3, + "703": 2, + "704": 6, + "705": 3, + "706": 8, + "707": 2, + "708": 1, + "709": 1, + "710": 3, + "711": 3, + "712": 1, + "713": 1, + "714": 2, + "715": 3, + "716": 2, + "717": 2, + "718": 4, + "719": 2, + "720": 3, + "721": 2, + "722": 5, + "723": 2, + "724": 2, + "725": 5, + "726": 2, + "727": 2, + "728": 1, + "729": 1, + "730": 3, + "732": 3, + "733": 1, + "734": 4, + "735": 2, + "736": 5, + "737": 2, + "739": 3, + "740": 3, + "741": 5, + "743": 3, + "744": 3, + "745": 2, + "746": 2, + "747": 1, + "748": 1, + "749": 7, + "750": 1, + "751": 1, + "752": 1, + "753": 1, + "754": 1, + "755": 4, + "756": 4, + "757": 3, + "758": 5, + "759": 3, + "760": 2, + "762": 2, + "763": 3, + "764": 4, + "765": 1, + "766": 1, + "767": 3, + "769": 1, + "770": 1, + "771": 3, + "772": 1, + "773": 2, + "774": 1, + "775": 3, + "776": 1, + "777": 1, + "778": 1, + "780": 1, + "783": 1, + "786": 2, + "787": 2, + "788": 3, + "789": 1, + "790": 4, + "791": 2, + "792": 2, + "794": 1, + "795": 4, + "797": 5, + "798": 2, + "800": 1, + "801": 2, + "802": 2, + "803": 1, + "804": 1, + "805": 3, + "806": 7, + "807": 6, + "808": 2, + "809": 6, + "810": 4, + "811": 5, + "812": 3, + "813": 2, + "814": 2, + "815": 2, + "816": 4, + "817": 3, + "818": 4, + "819": 3, + "820": 2, + "821": 3, + "823": 5, + "824": 2, + "825": 6, + "827": 5, + "828": 4, + "829": 4, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 8, + "835": 2, + "836": 2, + "837": 4, + "838": 4, + "839": 2, + "840": 5, + "841": 2, + "842": 7, + "843": 3, + "844": 6, + "845": 2, + "846": 1, + "847": 2, + "848": 2, + "849": 1, + "850": 5, + "851": 10, + "852": 5, + "853": 4, + "854": 5, + "855": 5, + "856": 1, + "857": 5, + "858": 3, + "859": 3, + "860": 4, + "861": 4, + "862": 3, + "863": 7, + "864": 3, + "865": 4, + "866": 6, + "867": 6, + "868": 7, + "869": 3, + "870": 2, + "871": 1, + "872": 1, + "873": 3, + "874": 3, + "875": 2, + "877": 2, + "878": 1, + "879": 1, + "881": 2, + "882": 2, + "884": 2, + "886": 2, + "887": 1, + "888": 2, + "890": 1, + "893": 1, + "894": 1, + "899": 1, + "900": 1, + "904": 1, + "906": 1, + "907": 4, + "908": 1, + "910": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333038266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888220778c91239f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "20778c91" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_8.html b/autobahn/client/tungstenite_case_12_1_8.html new file mode 100644 index 0000000..d999d17 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_8.html @@ -0,0 +1,1018 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.8 : Pass - 693 ms @ 2025-09-11T20:05:57.244Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=309&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: LenEFxwCusQEfvthFQKSlA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Mpft90dVCQeOzljvtdVQYpTY7Z8=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
124011240
124322486
124411244
124511245
124611246
124711247
124811248
124944996
125011250
125222504
125422508
125522510
125611256
125711257
125833774
125911259
126045040
126111261
126233786
126311263
126411264
126533795
126656330
126722534
126833804
126922538
127045080
127145084
127222544
127378911
127456370
127645104
1277810216
127845112
1279911511
128033840
1281911529
128267692
128367698
12841114124
1285810280
1286911574
1287911583
128845152
128945156
1290810320
129156455
129256460
129356465
129422588
129545180
129611296
129733891
129856490
129945196
130033900
130145204
130256510
130356515
130433912
130567830
130667836
130745228
130845232
130911309
131011310
131145244
131222624
131333939
131422628
131533945
131645264
131722634
131811318
132022640
132122642
132211322
132345292
132533975
132611326
132711327
132822656
132922658
133145324
133222664
133311333
133411334
133522670
133622672
133711337
133822676
134034020
134111341
134322686
134434032
134522690
134611346
134722694
134822696
134945396
135022700
135168106
135211352
135311353
135556775
135645424
135722714
135956795
136045440
136211362
136334089
136434092
136522730
136611366
136722734
136811368
137022740
137145484
137211372
137345492
137411374
137622752
137722754
137834134
138111381
138222764
138311383
138411384
138534155
138634158
138711387
138834164
138934167
139011390
139111391
139322786
139534185
139622792
139711397
139822796
139922798
140011400
140122802
140211402
140511405
140622812
140711407
140811408
140911409
141022820
141322826
141411414
141522830
141611416
141768502
141822836
141911419
142034260
142145684
142211422
142311423
142411424
142545700
142622852
142722854
142811428
142922858
143011430
143145724
143322866
143522870
143645744
143811438
143911439
144034320
144122882
144345772
144411444
144522890
144622892
144811448
145045800
145122902
145211452
145322906
145411454
145522910
145622912
145722914
145834374
145922918
146022920
146122922
146311463
146422928
146511465
146611466
146722934
146811468
146934407
147022940
147122942
147222944
147345892
147445896
147568850
147634428
147722954
147822956
147911479
148022960
148134443
148234446
148322966
148422968
148511485
148611486
148734461
148845952
148968934
149034470
149122982
149245968
149334479
149422988
149511495
149634488
149734491
149822996
149934497
150057500
150223004
150434512
150523010
150623012
150723014
150823016
150934527
151023020
151111511
151234536
151323026
151411514
151523030
151757585
151823036
151923038
152011520
152146084
152246088
152334569
152446096
152669156
152823056
152911529
153011530
153234596
153357665
153523070
153634608
153711537
153846152
153946156
154057700
154157705
1542913878
154357715
154469264
1545710815
154669276
154734641
154857740
154911549
155034650
1551710857
155223104
155323106
155434662
155569330
155657780
155769342
155834674
155934677
156069360
156157805
1562812496
1563710941
15641117204
1565710955
1566710962
156723134
156869408
156957845
157057850
157157855
157223144
157334719
157457870
157557875
157634728
157734731
157811578
157911579
158023160
158123162
158211582
158434752
158523170
158634758
158723174
158911589
159023180
159123182
159223184
159323186
159423188
159523190
159611596
159711597
160111601
160811608
161111611
161223224
161523230
161711617
161811618
162111621
162246488
162511625
162723254
162823256
162911629
163069780
163134893
163211632
163323266
163411634
163623272
163811638
164023280
164123282
164311643
164534935
164734941
164823296
165069900
165111651
165223304
165423308
165523310
165623312
165723314
165811658
165923318
166123322
166211662
166323326
166423328
166511665
166823336
Total10021439130
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
123611236
123922478
124011240
124111241
124211242
124311243
124411244
124544980
124611246
124822496
125022500
125122502
125211252
125311253
125433762
125511255
125645024
125711257
125833774
125911259
126011260
126133783
126256310
126322526
126433792
126522530
126645064
126745068
126822536
126978883
127056350
127245088
1273810184
127445096
1275911475
127633828
1277911493
127867668
127967674
12801114080
1281810248
1282911538
1283911547
128445136
128545140
1286810288
128756435
128856440
128956445
129022580
129145164
129211292
129333879
129456470
129545180
129633888
129745188
129856490
129956495
130033900
130167806
130267812
130345212
130445216
130511305
130611306
130745228
130822616
130933927
131022620
131133933
131245248
131322626
131411314
131622632
131722634
131811318
131945276
132133963
132211322
132311323
132422648
132522650
132745308
132822656
132911329
133011330
133122662
133222664
133311333
133422668
133634008
133711337
133922678
134034020
134122682
134211342
134322686
134422688
134545380
134622692
134768082
134811348
134911349
135156755
135245408
135322706
135556775
135645424
135811358
135934077
136034080
136122722
136211362
136322726
136411364
136622732
136745468
136811368
136945476
137011370
137222744
137322746
137434122
137711377
137822756
137911379
138011380
138134143
138234146
138311383
138434152
138534155
138611386
138711387
138922778
139134173
139222784
139311393
139422788
139522790
139611396
139722794
139811398
140111401
140222804
140311403
140411404
140511405
140622812
140922818
141011410
141122822
141211412
141368478
141422828
141511415
141634248
141745668
141811418
141911419
142011420
142145684
142222844
142322846
142411424
142522850
142611426
142745708
142922858
143122862
143245728
143411434
143511435
143634308
143722874
143945756
144011440
144122882
144222884
144411444
144645784
144722894
144811448
144922898
145011450
145122902
145222904
145322906
145434362
145522910
145622912
145722914
145911459
146022920
146111461
146211462
146322926
146411464
146534395
146622932
146722934
146822936
146945876
147045880
147168826
147234416
147322946
147422948
147511475
147622952
147734431
147834434
147922958
148022960
148111481
148211482
148334449
148445936
148568910
148634458
148722974
148845952
148934467
149022980
149111491
149234476
149334479
149422988
149534485
149657480
149822996
150034500
150123002
150223004
150323006
150423008
150534515
150623012
150711507
150834524
150923018
151011510
151123022
151357565
151423028
151523030
151611516
151746068
151846072
151934557
152046080
152269132
152423048
152511525
152611526
152834584
152957645
153123062
153234596
153311533
153446136
153546140
153657680
153757685
1538913842
153957695
154069240
1541710787
154269252
154334629
154457720
154511545
154634638
1547710829
154823096
154923098
155034650
155169306
155257760
155369318
155434662
155534665
155669336
155757785
1558812464
1559710913
15601117160
1561710927
1562710934
156323126
156469384
156557825
156657830
156757835
156823136
156934707
157057850
157157855
157234716
157334719
157411574
157511575
157623152
157723154
157811578
158034740
158123162
158234746
158323166
158511585
158623172
158723174
158823176
158923178
159023180
159123182
159211592
159311593
159711597
160411604
160711607
160823216
161123222
161311613
161411614
161711617
161846472
162111621
162323246
162423248
162511625
162669756
162734881
162811628
162923258
163011630
163223264
163411634
163623272
163723274
163911639
164134923
164334929
164423288
164669876
164711647
164823296
165023300
165123302
165223304
165323306
165411654
165523310
165723314
165811658
165923318
166023320
166111661
166423328
Total10021435121
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333039266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882292be7702ac3
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3239326265373730
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_8.json b/autobahn/client/tungstenite_case_12_1_8.json new file mode 100644 index 0000000..7c82124 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_8.json @@ -0,0 +1,865 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 309, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 693, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=309&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: LenEFxwCusQEfvthFQKSlA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Mpft90dVCQeOzljvtdVQYpTY7Z8=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1240": 1, + "1243": 2, + "1244": 1, + "1245": 1, + "1246": 1, + "1247": 1, + "1248": 1, + "1249": 4, + "1250": 1, + "1252": 2, + "1254": 2, + "1255": 2, + "1256": 1, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 4, + "1261": 1, + "1262": 3, + "1263": 1, + "1264": 1, + "1265": 3, + "1266": 5, + "1267": 2, + "1268": 3, + "1269": 2, + "1270": 4, + "1271": 4, + "1272": 2, + "1273": 7, + "1274": 5, + "1276": 4, + "1277": 8, + "1278": 4, + "1279": 9, + "1280": 3, + "1281": 9, + "1282": 6, + "1283": 6, + "1284": 11, + "1285": 8, + "1286": 9, + "1287": 9, + "1288": 4, + "1289": 4, + "1290": 8, + "1291": 5, + "1292": 5, + "1293": 5, + "1294": 2, + "1295": 4, + "1296": 1, + "1297": 3, + "1298": 5, + "1299": 4, + "1300": 3, + "1301": 4, + "1302": 5, + "1303": 5, + "1304": 3, + "1305": 6, + "1306": 6, + "1307": 4, + "1308": 4, + "1309": 1, + "1310": 1, + "1311": 4, + "1312": 2, + "1313": 3, + "1314": 2, + "1315": 3, + "1316": 4, + "1317": 2, + "1318": 1, + "1320": 2, + "1321": 2, + "1322": 1, + "1323": 4, + "1325": 3, + "1326": 1, + "1327": 1, + "1328": 2, + "1329": 2, + "1331": 4, + "1332": 2, + "1333": 1, + "1334": 1, + "1335": 2, + "1336": 2, + "1337": 1, + "1338": 2, + "1340": 3, + "1341": 1, + "1343": 2, + "1344": 3, + "1345": 2, + "1346": 1, + "1347": 2, + "1348": 2, + "1349": 4, + "1350": 2, + "1351": 6, + "1352": 1, + "1353": 1, + "1355": 5, + "1356": 4, + "1357": 2, + "1359": 5, + "1360": 4, + "1362": 1, + "1363": 3, + "1364": 3, + "1365": 2, + "1366": 1, + "1367": 2, + "1368": 1, + "1370": 2, + "1371": 4, + "1372": 1, + "1373": 4, + "1374": 1, + "1376": 2, + "1377": 2, + "1378": 3, + "1381": 1, + "1382": 2, + "1383": 1, + "1384": 1, + "1385": 3, + "1386": 3, + "1387": 1, + "1388": 3, + "1389": 3, + "1390": 1, + "1391": 1, + "1393": 2, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 2, + "1400": 1, + "1401": 2, + "1402": 1, + "1405": 1, + "1406": 2, + "1407": 1, + "1408": 1, + "1409": 1, + "1410": 2, + "1413": 2, + "1414": 1, + "1415": 2, + "1416": 1, + "1417": 6, + "1418": 2, + "1419": 1, + "1420": 3, + "1421": 4, + "1422": 1, + "1423": 1, + "1424": 1, + "1425": 4, + "1426": 2, + "1427": 2, + "1428": 1, + "1429": 2, + "1430": 1, + "1431": 4, + "1433": 2, + "1435": 2, + "1436": 4, + "1438": 1, + "1439": 1, + "1440": 3, + "1441": 2, + "1443": 4, + "1444": 1, + "1445": 2, + "1446": 2, + "1448": 1, + "1450": 4, + "1451": 2, + "1452": 1, + "1453": 2, + "1454": 1, + "1455": 2, + "1456": 2, + "1457": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 2, + "1463": 1, + "1464": 2, + "1465": 1, + "1466": 1, + "1467": 2, + "1468": 1, + "1469": 3, + "1470": 2, + "1471": 2, + "1472": 2, + "1473": 4, + "1474": 4, + "1475": 6, + "1476": 3, + "1477": 2, + "1478": 2, + "1479": 1, + "1480": 2, + "1481": 3, + "1482": 3, + "1483": 2, + "1484": 2, + "1485": 1, + "1486": 1, + "1487": 3, + "1488": 4, + "1489": 6, + "1490": 3, + "1491": 2, + "1492": 4, + "1493": 3, + "1494": 2, + "1495": 1, + "1496": 3, + "1497": 3, + "1498": 2, + "1499": 3, + "1500": 5, + "1502": 2, + "1504": 3, + "1505": 2, + "1506": 2, + "1507": 2, + "1508": 2, + "1509": 3, + "1510": 2, + "1511": 1, + "1512": 3, + "1513": 2, + "1514": 1, + "1515": 2, + "1517": 5, + "1518": 2, + "1519": 2, + "1520": 1, + "1521": 4, + "1522": 4, + "1523": 3, + "1524": 4, + "1526": 6, + "1528": 2, + "1529": 1, + "1530": 1, + "1532": 3, + "1533": 5, + "1535": 2, + "1536": 3, + "1537": 1, + "1538": 4, + "1539": 4, + "1540": 5, + "1541": 5, + "1542": 9, + "1543": 5, + "1544": 6, + "1545": 7, + "1546": 6, + "1547": 3, + "1548": 5, + "1549": 1, + "1550": 3, + "1551": 7, + "1552": 2, + "1553": 2, + "1554": 3, + "1555": 6, + "1556": 5, + "1557": 6, + "1558": 3, + "1559": 3, + "1560": 6, + "1561": 5, + "1562": 8, + "1563": 7, + "1564": 11, + "1565": 7, + "1566": 7, + "1567": 2, + "1568": 6, + "1569": 5, + "1570": 5, + "1571": 5, + "1572": 2, + "1573": 3, + "1574": 5, + "1575": 5, + "1576": 3, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 2, + "1582": 1, + "1584": 3, + "1585": 2, + "1586": 3, + "1587": 2, + "1589": 1, + "1590": 2, + "1591": 2, + "1592": 2, + "1593": 2, + "1594": 2, + "1595": 2, + "1596": 1, + "1597": 1, + "1601": 1, + "1608": 1, + "1611": 1, + "1612": 2, + "1615": 2, + "1617": 1, + "1618": 1, + "1621": 1, + "1622": 4, + "1625": 1, + "1627": 2, + "1628": 2, + "1629": 1, + "1630": 6, + "1631": 3, + "1632": 1, + "1633": 2, + "1634": 1, + "1636": 2, + "1638": 1, + "1640": 2, + "1641": 2, + "1643": 1, + "1645": 3, + "1647": 3, + "1648": 2, + "1650": 6, + "1651": 1, + "1652": 2, + "1654": 2, + "1655": 2, + "1656": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1661": 2, + "1662": 1, + "1663": 2, + "1664": 2, + "1665": 1, + "1668": 2 + }, + "started": "2025-09-11T20:05:57.244Z", + "trafficStats": { + "incomingCompressionRatio": 0.043666534423828125, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1430865, + "incomingOctetsWireLevel": 1438865, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0055910236115915895, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1434865, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0027955118057957948, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "1236": 1, + "1239": 2, + "1240": 1, + "1241": 1, + "1242": 1, + "1243": 1, + "1244": 1, + "1245": 4, + "1246": 1, + "1248": 2, + "1250": 2, + "1251": 2, + "1252": 1, + "1253": 1, + "1254": 3, + "1255": 1, + "1256": 4, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 1, + "1261": 3, + "1262": 5, + "1263": 2, + "1264": 3, + "1265": 2, + "1266": 4, + "1267": 4, + "1268": 2, + "1269": 7, + "1270": 5, + "1272": 4, + "1273": 8, + "1274": 4, + "1275": 9, + "1276": 3, + "1277": 9, + "1278": 6, + "1279": 6, + "1280": 11, + "1281": 8, + "1282": 9, + "1283": 9, + "1284": 4, + "1285": 4, + "1286": 8, + "1287": 5, + "1288": 5, + "1289": 5, + "1290": 2, + "1291": 4, + "1292": 1, + "1293": 3, + "1294": 5, + "1295": 4, + "1296": 3, + "1297": 4, + "1298": 5, + "1299": 5, + "1300": 3, + "1301": 6, + "1302": 6, + "1303": 4, + "1304": 4, + "1305": 1, + "1306": 1, + "1307": 4, + "1308": 2, + "1309": 3, + "1310": 2, + "1311": 3, + "1312": 4, + "1313": 2, + "1314": 1, + "1316": 2, + "1317": 2, + "1318": 1, + "1319": 4, + "1321": 3, + "1322": 1, + "1323": 1, + "1324": 2, + "1325": 2, + "1327": 4, + "1328": 2, + "1329": 1, + "1330": 1, + "1331": 2, + "1332": 2, + "1333": 1, + "1334": 2, + "1336": 3, + "1337": 1, + "1339": 2, + "1340": 3, + "1341": 2, + "1342": 1, + "1343": 2, + "1344": 2, + "1345": 4, + "1346": 2, + "1347": 6, + "1348": 1, + "1349": 1, + "1351": 5, + "1352": 4, + "1353": 2, + "1355": 5, + "1356": 4, + "1358": 1, + "1359": 3, + "1360": 3, + "1361": 2, + "1362": 1, + "1363": 2, + "1364": 1, + "1366": 2, + "1367": 4, + "1368": 1, + "1369": 4, + "1370": 1, + "1372": 2, + "1373": 2, + "1374": 3, + "1377": 1, + "1378": 2, + "1379": 1, + "1380": 1, + "1381": 3, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 3, + "1386": 1, + "1387": 1, + "1389": 2, + "1391": 3, + "1392": 2, + "1393": 1, + "1394": 2, + "1395": 2, + "1396": 1, + "1397": 2, + "1398": 1, + "1401": 1, + "1402": 2, + "1403": 1, + "1404": 1, + "1405": 1, + "1406": 2, + "1409": 2, + "1410": 1, + "1411": 2, + "1412": 1, + "1413": 6, + "1414": 2, + "1415": 1, + "1416": 3, + "1417": 4, + "1418": 1, + "1419": 1, + "1420": 1, + "1421": 4, + "1422": 2, + "1423": 2, + "1424": 1, + "1425": 2, + "1426": 1, + "1427": 4, + "1429": 2, + "1431": 2, + "1432": 4, + "1434": 1, + "1435": 1, + "1436": 3, + "1437": 2, + "1439": 4, + "1440": 1, + "1441": 2, + "1442": 2, + "1444": 1, + "1446": 4, + "1447": 2, + "1448": 1, + "1449": 2, + "1450": 1, + "1451": 2, + "1452": 2, + "1453": 2, + "1454": 3, + "1455": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 2, + "1461": 1, + "1462": 1, + "1463": 2, + "1464": 1, + "1465": 3, + "1466": 2, + "1467": 2, + "1468": 2, + "1469": 4, + "1470": 4, + "1471": 6, + "1472": 3, + "1473": 2, + "1474": 2, + "1475": 1, + "1476": 2, + "1477": 3, + "1478": 3, + "1479": 2, + "1480": 2, + "1481": 1, + "1482": 1, + "1483": 3, + "1484": 4, + "1485": 6, + "1486": 3, + "1487": 2, + "1488": 4, + "1489": 3, + "1490": 2, + "1491": 1, + "1492": 3, + "1493": 3, + "1494": 2, + "1495": 3, + "1496": 5, + "1498": 2, + "1500": 3, + "1501": 2, + "1502": 2, + "1503": 2, + "1504": 2, + "1505": 3, + "1506": 2, + "1507": 1, + "1508": 3, + "1509": 2, + "1510": 1, + "1511": 2, + "1513": 5, + "1514": 2, + "1515": 2, + "1516": 1, + "1517": 4, + "1518": 4, + "1519": 3, + "1520": 4, + "1522": 6, + "1524": 2, + "1525": 1, + "1526": 1, + "1528": 3, + "1529": 5, + "1531": 2, + "1532": 3, + "1533": 1, + "1534": 4, + "1535": 4, + "1536": 5, + "1537": 5, + "1538": 9, + "1539": 5, + "1540": 6, + "1541": 7, + "1542": 6, + "1543": 3, + "1544": 5, + "1545": 1, + "1546": 3, + "1547": 7, + "1548": 2, + "1549": 2, + "1550": 3, + "1551": 6, + "1552": 5, + "1553": 6, + "1554": 3, + "1555": 3, + "1556": 6, + "1557": 5, + "1558": 8, + "1559": 7, + "1560": 11, + "1561": 7, + "1562": 7, + "1563": 2, + "1564": 6, + "1565": 5, + "1566": 5, + "1567": 5, + "1568": 2, + "1569": 3, + "1570": 5, + "1571": 5, + "1572": 3, + "1573": 3, + "1574": 1, + "1575": 1, + "1576": 2, + "1577": 2, + "1578": 1, + "1580": 3, + "1581": 2, + "1582": 3, + "1583": 2, + "1585": 1, + "1586": 2, + "1587": 2, + "1588": 2, + "1589": 2, + "1590": 2, + "1591": 2, + "1592": 1, + "1593": 1, + "1597": 1, + "1604": 1, + "1607": 1, + "1608": 2, + "1611": 2, + "1613": 1, + "1614": 1, + "1617": 1, + "1618": 4, + "1621": 1, + "1623": 2, + "1624": 2, + "1625": 1, + "1626": 6, + "1627": 3, + "1628": 1, + "1629": 2, + "1630": 1, + "1632": 2, + "1634": 1, + "1636": 2, + "1637": 2, + "1639": 1, + "1641": 3, + "1643": 3, + "1644": 2, + "1646": 6, + "1647": 1, + "1648": 2, + "1650": 2, + "1651": 2, + "1652": 2, + "1653": 2, + "1654": 1, + "1655": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1660": 2, + "1661": 1, + "1664": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333039266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882292be7702ac3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "292be770" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_1_9.html b/autobahn/client/tungstenite_case_12_1_9.html new file mode 100644 index 0000000..4f9e1e8 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_9.html @@ -0,0 +1,540 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.1.9 : Pass - 1225 ms @ 2025-09-11T20:05:57.939Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=310&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Fn73v76mXNqbOCHL5qwOtA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /buUB5n7mQDg7K9cXKI/LVg7w1g=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
280525610
280612806
280725614
2808514040
2809411236
2810616860
2811514055
2812616872
28131233756
28141747838
28152261930
28162673216
28172878876
28181747906
28193598665
28201953580
28213187451
28222056440
28232364929
28241748008
28252159325
28262776302
28272570675
28282262216
28292673554
28302056600
28313496254
28322056640
28331439662
2834822672
2835925515
28361748212
28371645392
28381748246
28391645424
28401028400
2841925569
2842514210
284338529
284412844
284538535
2846411384
284725694
285025700
285112851
285312853
285412854
285525710
285712857
285812858
285925718
286138583
2863411452
286412864
2866411464
286738601
286825736
287025740
287112871
287212872
287312873
287412874
287612876
288212882
288312883
288625772
288712887
288812888
288912889
289025780
289112891
289225784
289612896
289912899
290112901
290338709
290425808
290525810
2906514530
2907823256
2908514540
2909720363
2910411640
2911823288
291225824
291338739
291438742
2915514575
29161029160
29171132087
29181646688
29191029190
29201132120
2921617526
29221955518
29231235076
2924617544
2925926325
29261235112
29271235124
29281235136
2929926361
2930720510
2931926379
2932720524
2933617598
2934411736
2935411740
293625872
293738811
293812938
2939617634
29401132340
2941823528
29421338246
29431029430
2944926496
2945514725
294625892
294738841
296112961
Total10022860358
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
280125602
280212802
280325606
2804514020
2805411220
2806616836
2807514035
2808616848
28091233708
28101747770
28112261842
28122673112
28132878764
28141747838
28153598525
28161953504
28173187327
28182056360
28192364837
28201747940
28212159241
28222776194
28232570575
28242262128
28252673450
28262056520
28273496118
28282056560
28291439606
2830822640
2831925479
28321748144
28331645328
28341748178
28351645360
28361028360
2837925533
2838514190
283938517
284012840
284138523
2842411368
284325686
284625692
284712847
284912849
285012850
285125702
285312853
285412854
285525710
285738571
2859411436
286012860
2862411448
286338589
286425728
286625732
286712867
286812868
286912869
287012870
287212872
287812878
287912879
288225764
288312883
288412884
288512885
288625772
288712887
288825776
289212892
289512895
289712897
289938697
290025800
290125802
2902514510
2903823224
2904514520
2905720335
2906411624
2907823256
290825816
290938727
291038730
2911514555
29121029120
29131132043
29141646624
29151029150
29161132076
2917617502
29181955442
29191235028
2920617520
2921926289
29221235064
29231235076
29241235088
2925926325
2926720482
2927926343
2928720496
2929617574
2930411720
2931411724
293225864
293338799
293412934
2935617610
29361132296
2937823496
29381338194
29391029390
2940926460
2941514705
294225884
294338829
295712957
Total10022856349
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333130266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882fac060c4f928
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6661633036306334
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_1_9.json b/autobahn/client/tungstenite_case_12_1_9.json new file mode 100644 index 0000000..11c14b2 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_1_9.json @@ -0,0 +1,387 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 310, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1225, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=310&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Fn73v76mXNqbOCHL5qwOtA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /buUB5n7mQDg7K9cXKI/LVg7w1g=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.1.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2805": 2, + "2806": 1, + "2807": 2, + "2808": 5, + "2809": 4, + "2810": 6, + "2811": 5, + "2812": 6, + "2813": 12, + "2814": 17, + "2815": 22, + "2816": 26, + "2817": 28, + "2818": 17, + "2819": 35, + "2820": 19, + "2821": 31, + "2822": 20, + "2823": 23, + "2824": 17, + "2825": 21, + "2826": 27, + "2827": 25, + "2828": 22, + "2829": 26, + "2830": 20, + "2831": 34, + "2832": 20, + "2833": 14, + "2834": 8, + "2835": 9, + "2836": 17, + "2837": 16, + "2838": 17, + "2839": 16, + "2840": 10, + "2841": 9, + "2842": 5, + "2843": 3, + "2844": 1, + "2845": 3, + "2846": 4, + "2847": 2, + "2850": 2, + "2851": 1, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 1, + "2858": 1, + "2859": 2, + "2861": 3, + "2863": 4, + "2864": 1, + "2866": 4, + "2867": 3, + "2868": 2, + "2870": 2, + "2871": 1, + "2872": 1, + "2873": 1, + "2874": 1, + "2876": 1, + "2882": 1, + "2883": 1, + "2886": 2, + "2887": 1, + "2888": 1, + "2889": 1, + "2890": 2, + "2891": 1, + "2892": 2, + "2896": 1, + "2899": 1, + "2901": 1, + "2903": 3, + "2904": 2, + "2905": 2, + "2906": 5, + "2907": 8, + "2908": 5, + "2909": 7, + "2910": 4, + "2911": 8, + "2912": 2, + "2913": 3, + "2914": 3, + "2915": 5, + "2916": 10, + "2917": 11, + "2918": 16, + "2919": 10, + "2920": 11, + "2921": 6, + "2922": 19, + "2923": 12, + "2924": 6, + "2925": 9, + "2926": 12, + "2927": 12, + "2928": 12, + "2929": 9, + "2930": 7, + "2931": 9, + "2932": 7, + "2933": 6, + "2934": 4, + "2935": 4, + "2936": 2, + "2937": 3, + "2938": 1, + "2939": 6, + "2940": 11, + "2941": 8, + "2942": 13, + "2943": 10, + "2944": 9, + "2945": 5, + "2946": 2, + "2947": 3, + "2961": 1 + }, + "started": "2025-09-11T20:05:57.939Z", + "trafficStats": { + "incomingCompressionRatio": 0.04351948547363281, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2852093, + "incomingOctetsWireLevel": 2860093, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0028049576223496218, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2856093, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014024788111748109, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "2801": 2, + "2802": 1, + "2803": 2, + "2804": 5, + "2805": 4, + "2806": 6, + "2807": 5, + "2808": 6, + "2809": 12, + "2810": 17, + "2811": 22, + "2812": 26, + "2813": 28, + "2814": 17, + "2815": 35, + "2816": 19, + "2817": 31, + "2818": 20, + "2819": 23, + "2820": 17, + "2821": 21, + "2822": 27, + "2823": 25, + "2824": 22, + "2825": 26, + "2826": 20, + "2827": 34, + "2828": 20, + "2829": 14, + "2830": 8, + "2831": 9, + "2832": 17, + "2833": 16, + "2834": 17, + "2835": 16, + "2836": 10, + "2837": 9, + "2838": 5, + "2839": 3, + "2840": 1, + "2841": 3, + "2842": 4, + "2843": 2, + "2846": 2, + "2847": 1, + "2849": 1, + "2850": 1, + "2851": 2, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 3, + "2859": 4, + "2860": 1, + "2862": 4, + "2863": 3, + "2864": 2, + "2866": 2, + "2867": 1, + "2868": 1, + "2869": 1, + "2870": 1, + "2872": 1, + "2878": 1, + "2879": 1, + "2882": 2, + "2883": 1, + "2884": 1, + "2885": 1, + "2886": 2, + "2887": 1, + "2888": 2, + "2892": 1, + "2895": 1, + "2897": 1, + "2899": 3, + "2900": 2, + "2901": 2, + "2902": 5, + "2903": 8, + "2904": 5, + "2905": 7, + "2906": 4, + "2907": 8, + "2908": 2, + "2909": 3, + "2910": 3, + "2911": 5, + "2912": 10, + "2913": 11, + "2914": 16, + "2915": 10, + "2916": 11, + "2917": 6, + "2918": 19, + "2919": 12, + "2920": 6, + "2921": 9, + "2922": 12, + "2923": 12, + "2924": 12, + "2925": 9, + "2926": 7, + "2927": 9, + "2928": 7, + "2929": 6, + "2930": 4, + "2931": 4, + "2932": 2, + "2933": 3, + "2934": 1, + "2935": 6, + "2936": 11, + "2937": 8, + "2938": 13, + "2939": 10, + "2940": 9, + "2941": 5, + "2942": 2, + "2943": 3, + "2957": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333130266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fac060c4f928" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fac060c4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_1.html b/autobahn/client/tungstenite_case_12_2_1.html new file mode 100644 index 0000000..5f03576 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_1.html @@ -0,0 +1,324 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.1 : Pass - 77 ms @ 2025-09-11T20:06:14.400Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=320&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 2iPHJrEKyrD4Sac5SujVyg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ucKLpvEmCNVbGS1IGo69nKkGCqQ=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1130330
13113
14114
15115
17117
20480
2112252
2239858
231302990
2457313752
251473675
2628728
2833924
2571257
Total100223913
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
730210
919
10110
11111
13113
16464
1712204
1839702
191302470
2057311460
211473087
2228616
2433792
2521252
Total100219904
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333230266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882ecd36bebef3b
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6563643336626562
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_1.json b/autobahn/client/tungstenite_case_12_2_1.json new file mode 100644 index 0000000..90da0d1 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_1.json @@ -0,0 +1,171 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 320, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 77, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=320&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 2iPHJrEKyrD4Sac5SujVyg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ucKLpvEmCNVbGS1IGo69nKkGCqQ=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 30, + "13": 1, + "14": 1, + "15": 1, + "17": 1, + "20": 4, + "21": 12, + "22": 39, + "23": 130, + "24": 573, + "25": 147, + "26": 28, + "28": 33, + "257": 1 + }, + "started": "2025-09-11T20:06:14.400Z", + "trafficStats": { + "incomingCompressionRatio": 1.103, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 17648, + "incomingOctetsWireLevel": 23648, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.3399818676337262, + "outgoingCompressionRatio": 1.103, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 17648, + "outgoingOctetsWireLevel": 19648, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11332728921124206, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 30, + "9": 1, + "10": 1, + "11": 1, + "13": 1, + "16": 4, + "17": 12, + "18": 39, + "19": 130, + "20": 573, + "21": 147, + "22": 28, + "24": 33, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333230266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ecd36bebef3b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ecd36beb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_10.html b/autobahn/client/tungstenite_case_12_2_10.html new file mode 100644 index 0000000..e60ac10 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_10.html @@ -0,0 +1,1931 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.10 : Pass - 11095 ms @ 2025-09-11T20:06:26.769Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=329&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pjk68S3rtEYlZt3eumrEhA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rSNZadQJWMj/ZyK6rLnNSFxSDEA=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
165811658
28960128960
36200136200
42541142541
42557142557
42563142563
42582142582
42585142585
42588142588
42597285194
42600142600
42602285204
42604142604
42627142627
42628142628
42635142635
42638142638
42640142640
42641285282
42645142645
42656142656
42658142658
42661142661
42662142662
42671142671
42672142672
42673142673
42675142675
42677285354
42684142684
42685142685
42689142689
42690142690
42692142692
42695142695
42696142696
42698285396
42699142699
42704142704
42706142706
42714142714
42719142719
42724142724
42727142727
42730142730
42734142734
42740142740
42741142741
42746142746
42747285494
42749142749
42755285510
42773142773
42774142774
42778142778
42781142781
42783142783
42785142785
42787142787
42789285578
42792142792
42793142793
42794285588
42799142799
42800142800
42806142806
42810142810
42821285642
42822142822
42824285648
42826142826
42830285660
42833142833
42834285668
42836142836
42838142838
42839285678
42843142843
428473128541
42851285702
42862285724
42863142863
42869142869
42870142870
42873285746
42875142875
42876285752
42877142877
42882285764
42883142883
42885142885
42887142887
42888142888
42892285784
42893142893
42897142897
428983128694
42906285812
42907142907
42908142908
42911142911
42912285824
42915142915
42920285840
42926142926
42927142927
42928142928
42929142929
42932142932
42934285868
42935142935
42936285872
42937142937
42943142943
42944142944
42945142945
42948142948
42951142951
42955285910
42956142956
42957142957
42961142961
42964142964
42965142965
42976142976
42977142977
429793128937
42980142980
42983142983
42984142984
42986142986
42988142988
42991285982
42993142993
42998142998
43004143004
43012143012
43019143019
43020143020
43051286102
43058143058
43063143063
43073143073
43085143085
43087143087
43090143090
43094143094
43099286198
43100143100
43119143119
43121143121
43127286254
43147143147
43149143149
43150143150
43154143154
43157143157
43174143174
43177143177
43183143183
43190286380
43192286384
43197143197
43211143211
43215286430
43219143219
43225143225
43232286464
43237143237
43240143240
43246143246
43248143248
43254143254
43255143255
43259143259
43260143260
43268143268
43275143275
43283286566
43284143284
43285143285
43287143287
43291143291
43295143295
43306143306
43308143308
43312143312
43314143314
43317143317
43319143319
433203129960
43325143325
43326286652
43328143328
43333143333
43336143336
43338143338
43340143340
43346143346
43350143350
43351286702
43355143355
43356286712
43361143361
43367143367
43369286738
43370143370
43374143374
43375143375
43376143376
43378143378
43381143381
43386143386
43388286776
43389143389
43393143393
43396143396
43397143397
43400143400
43405143405
43411143411
43413143413
43414286828
43417143417
43419143419
43420143420
43421143421
43423143423
43424286848
43426286852
43429143429
43431143431
43432143432
43433143433
43434286868
43435143435
43438143438
43439143439
43440286880
43442143442
43445143445
43447143447
43448143448
43449143449
43450286900
43452143452
43454143454
43455143455
434593130377
43461143461
43463143463
43465143465
43469143469
43474143474
43477286954
43479286958
43482143482
43483143483
43488143488
43489143489
434903130470
43491143491
43492143492
43493143493
43494286988
43495286990
43497286994
43501287002
43503287006
43504287008
43505287010
43508287016
43511143511
43512143512
43517143517
43528143528
43534143534
43536143536
43548143548
43563143563
43567143567
43570143570
43572143572
43585287170
43597287194
43598143598
43600143600
43601143601
43605287210
43610143610
43613143613
43615143615
43616143616
43622143622
43625143625
43632143632
43633143633
43635143635
43636143636
43640143640
43644143644
43650143650
43654143654
43658143658
43661143661
43672143672
43674143674
43675143675
43677287354
43682143682
43687143687
43690143690
43691143691
43694143694
43695143695
43703143703
43704287408
43705143705
43710143710
43712143712
437133131139
43716143716
43717143717
43720143720
43726143726
43738143738
43785143785
43820143820
43822143822
43891143891
43905143905
43964143964
43986143986
44047144047
44052144052
44145144145
44192144192
44224144224
44279144279
44310144310
44328144328
44370144370
44382144382
44439144439
44496144496
44498144498
44533144533
44555144555
44558144558
44599144599
44627144627
44637144637
44663144663
44673144673
44725144725
44727144727
44736144736
44776144776
44821144821
44829144829
44847144847
44849144849
44864144864
44908144908
44944144944
44947144947
44972144972
44990144990
45008145008
45014145014
45068145068
45072145072
45088145088
45089145089
45134145134
45170145170
45174145174
45201145201
45231145231
45236145236
45250145250
45271145271
45291290582
45303145303
45330145330
45331145331
45394145394
45413145413
45414145414
45433145433
45471145471
45475145475
45487145487
45513145513
45526145526
45573145573
45578145578
45601145601
45646145646
45678145678
45679145679
45708145708
45747145747
45757145757
45768145768
45774145774
45818145818
45850145850
45856145856
45892145892
45906145906
45920145920
45941145941
45950145950
45953145953
45996145996
46011146011
46015146015
46046146046
46051146051
46061146061
46093146093
46108146108
46130292260
46136146136
46144146144
46188146188
46205146205
46208146208
46235146235
46261146261
46266146266
46294146294
46305146305
46309146309
46322146322
46336292672
46372292744
46375146375
46409146409
46430146430
46431146431
46447146447
46460146460
46480146480
46532146532
46539146539
46550146550
46573146573
46574146574
46580146580
46592146592
46627146627
46651146651
46666146666
46685146685
46702146702
46712146712
46737146737
46739146739
46744146744
46750146750
46775146775
46796146796
46827146827
46847146847
46850146850
46864146864
46886293772
46887146887
46897146897
46916146916
46943146943
46954146954
46964146964
47000147000
47008147008
47009147009
47035147035
47047147047
47058147058
47061147061
47082147082
47093147093
47102147102
47111147111
47149147149
47193147193
47220147220
47223147223
47262147262
47302147302
47320147320
47366147366
47387147387
47422147422
47427147427
47467147467
47528147528
47539147539
47558147558
47576147576
47600147600
47629147629
47678147678
47703147703
47727147727
47762147762
47771147771
47830147830
47865147865
47873147873
47921147921
47986295972
48011148011
48055148055
48059148059
48082148082
48095148095
48133148133
48141148141
48147148147
48161148161
48178148178
48182148182
48188148188
48189148189
48190148190
48191148191
48193148193
481943144582
481963144588
48197296394
48198296396
48199296398
48201148201
482023144606
48204148204
48206148206
48207148207
48215148215
48216148216
48217148217
48220148220
48221148221
48228148228
48229148229
48231148231
48233148233
48235296470
48241148241
48244148244
48248148248
48253148253
48257148257
48260148260
48264148264
48273148273
48274148274
48278148278
48279148279
48290148290
48291296582
48294148294
48301148301
48307148307
48310148310
48313148313
48317148317
48319148319
48324148324
48329148329
48333296666
48334148334
48342148342
48345148345
48359148359
48363148363
48366296732
48370148370
48372148372
48378148378
48379148379
48385148385
48389148389
48394148394
48396148396
48400296800
48401148401
48404148404
48410148410
48411148411
48412148412
48415148415
48421148421
48423148423
48424148424
48427148427
48428148428
48434148434
48435148435
48442148442
48444148444
48451296902
48462148462
48469148469
48473148473
48474148474
48475296950
48477148477
48478148478
48480148480
48481148481
48492148492
48500148500
48502148502
48507148507
48509148509
48511148511
48513148513
48514148514
48516297032
48518297036
48519297038
48520148520
48521148521
48523148523
48528148528
48531297062
48532297064
48535148535
48537148537
48538148538
48542148542
48546297092
48552148552
48555297110
48556148556
48558148558
48559148559
48562148562
48564148564
48565297130
48566148566
48570148570
485713145713
48573297146
48575297150
48577148577
48579148579
485803145740
48581148581
48582148582
48584148584
485884194352
48591148591
48592297184
485934194372
48597148597
48603148603
48608148608
48611148611
48612148612
48613297226
48614148614
48616148616
486203145860
48624148624
48625148625
48626148626
48627297254
48629148629
48631148631
48632148632
48634297268
48635148635
48636148636
48638148638
48640148640
48643297286
48644148644
48647297294
48648148648
48652297304
48653148653
48655148655
48662148662
48664297328
48668148668
48674148674
48679148679
48702148702
48713148713
48727148727
48729148729
48757148757
48760148760
48769148769
48776148776
48778148778
48782148782
48798148798
48811297622
48815148815
48822148822
48828148828
48832148832
48855148855
48865148865
48869148869
48889148889
48890148890
48895148895
48898148898
48925148925
48928148928
48941148941
48945148945
48948148948
48949297898
48950148950
48955148955
48965148965
48966148966
48971148971
48974148974
48976148976
48979148979
48981148981
48984297968
48988148988
48989148989
48990297980
48991148991
48994297988
48996297992
48997148997
489994195996
49002298004
49004149004
49006149006
49008149008
49009149009
49010149010
49011298022
490123147036
490134196052
490143147042
49015149015
49016149016
49017298034
490184196072
49019149019
49020298040
490215245105
49022149022
490253147075
490263147078
49027298054
49029298058
49030298060
490313147093
49033298066
49034149034
49035298070
49036149036
490374196148
49038298076
49039298078
49041298082
490433147129
49044149044
49045149045
49047149047
49048298096
49049149049
49050149050
49051149051
49052149052
49053149053
49054149054
49056149056
49061149061
49064298128
49065149065
49066149066
49067149067
49069298138
49070149070
49071149071
49072298144
49075149075
49076149076
49078298156
49079298158
49080149080
49081149081
49083298166
49084149084
49089298178
49090298180
49092298184
49093298186
49096298192
49098149098
49099298198
49100149100
49101298202
49104149104
49108149108
49111149111
49114149114
49117298234
49120149120
49606149606
62806162806
65160483127680
65464165464
6553694962193664
Total2004111487823
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
1080731108073
1080891108089
1080951108095
1081141108114
1081171108117
1081201108120
1081292216258
1081321108132
1081342216268
1081361108136
1081591108159
1081601108160
1081671108167
1081701108170
1081721108172
1081732216346
1081771108177
1081881108188
1081901108190
1081931108193
1081941108194
1082031108203
1082041108204
1082051108205
1082071108207
1082092216418
1082161108216
1082171108217
1082211108221
1082221108222
1082241108224
1082271108227
1082281108228
1082302216460
1082311108231
1082361108236
1082381108238
1082461108246
1082511108251
1082561108256
1082591108259
1082621108262
1082661108266
1082721108272
1082731108273
1082781108278
1082792216558
1082811108281
1082872216574
1083051108305
1083061108306
1083101108310
1083131108313
1083151108315
1083171108317
1083191108319
1083212216642
1083241108324
1083251108325
1083262216652
1083311108331
1083321108332
1083381108338
1083421108342
1083532216706
1083541108354
1083562216712
1083581108358
1083622216724
1083651108365
1083662216732
1083681108368
1083701108370
1083712216742
1083751108375
1083793325137
1083832216766
1083942216788
1083951108395
1084011108401
1084021108402
1084052216810
1084071108407
1084082216816
1084091108409
1084142216828
1084151108415
1084171108417
1084191108419
1084201108420
1084242216848
1084251108425
1084291108429
1084303325290
1084382216876
1084391108439
1084401108440
1084431108443
1084442216888
1084471108447
1084522216904
1084581108458
1084591108459
1084601108460
1084611108461
1084641108464
1084662216932
1084671108467
1084682216936
1084691108469
1084751108475
1084761108476
1084771108477
1084802216960
1084831108483
1084872216974
1084881108488
1084891108489
1084931108493
1084961108496
1084971108497
1085081108508
1085091108509
1085113325533
1085121108512
1085151108515
1085161108516
1085181108518
1085201108520
1085232217046
1085251108525
1085301108530
1085361108536
1085441108544
1085491108549
1085511108551
1085832217166
1085901108590
1085951108595
1086051108605
1086171108617
1086191108619
1086211108621
1086221108622
1086261108626
1086312217262
1086321108632
1086351108635
1086471108647
1086511108651
1086531108653
1086592217318
1086791108679
1086811108681
1086821108682
1086861108686
1086891108689
1087061108706
1087091108709
1087151108715
1087222217444
1087242217448
1087291108729
1087431108743
1087472217494
1087511108751
1087571108757
1087642217528
1087691108769
1087721108772
1087781108778
1087801108780
1087861108786
1087871108787
1087911108791
1087921108792
1088001108800
1088071108807
1088152217630
1088161108816
1088171108817
1088191108819
1088231108823
1088271108827
1088331108833
1088381108838
1088401108840
1088441108844
1088461108846
1088491108849
1088511108851
1088523326556
1088571108857
1088582217716
1088601108860
1088651108865
1088681108868
1088701108870
1088721108872
1088731108873
1088781108878
1088821108882
1088832217766
1088871108887
1088882217776
1088931108893
1088991108899
1089012217802
1089021108902
1089061108906
1089071108907
1089081108908
1089101108910
1089131108913
1089181108918
1089202217840
1089211108921
1089281108928
1089291108929
1089321108932
1089371108937
1089431108943
1089451108945
1089462217892
1089491108949
1089511108951
1089521108952
1089531108953
1089551108955
1089562217912
1089582217916
1089611108961
1089631108963
1089641108964
1089651108965
1089662217932
1089671108967
1089701108970
1089711108971
1089722217944
1089741108974
1089771108977
1089791108979
1089801108980
1089811108981
1089822217964
1089841108984
1089861108986
1089871108987
1089913326973
1089931108993
1089951108995
1090011109001
1090061109006
1090092218018
1090111109011
1090141109014
1090151109015
1090201109020
1090211109021
1090223327066
1090241109024
1090251109025
1090262218052
1090272218054
1090292218058
1090332218066
1090352218070
1090362218072
1090372218074
1090402218080
1090431109043
1090441109044
1090491109049
1090601109060
1090661109066
1090681109068
1090801109080
1090951109095
1090991109099
1091021109102
1091041109104
1091172218234
1091292218258
1091301109130
1091321109132
1091331109133
1091372218274
1091381109138
1091421109142
1091451109145
1091471109147
1091481109148
1091541109154
1091571109157
1091641109164
1091651109165
1091671109167
1091681109168
1091721109172
1091761109176
1091821109182
1091861109186
1091901109190
1091931109193
1092041109204
1092061109206
1092071109207
1092091109209
1092141109214
1092191109219
1092221109222
1092231109223
1092261109226
1092271109227
1092351109235
1092362218472
1092371109237
1092421109242
1092441109244
1092453327735
1092481109248
1092521109252
1092581109258
1092701109270
1093171109317
1093521109352
1093541109354
1094231109423
1094371109437
1094841109484
1094961109496
1095181109518
1095791109579
1095841109584
1096541109654
1096771109677
1097241109724
1097561109756
1098111109811
1098291109829
1098421109842
1099021109902
1099141109914
1099711109971
1099851109985
1100051110005
1100281110028
1100651110065
1100871110087
1100901110090
1101311110131
1101461110146
1101591110159
1101691110169
1101701110170
1101951110195
1102571110257
1102591110259
1102681110268
1103081110308
1103301110330
1103531110353
1103791110379
1103961110396
1104271110427
1104401110440
1104761110476
1104791110479
1104861110486
1105041110504
1105401110540
1106001110600
1106041110604
1106201110620
1106211110621
1106661110666
1106821110682
1107021110702
1107331110733
1107631110763
1107681110768
1107821110782
1108232221646
1108351110835
1108631110863
1109031110903
1109261110926
1109451110945
1109461110946
1109651110965
1110031111003
1110071111007
1110191111019
1110451111045
1110971111097
1111051111105
1111101111110
1111331111133
1111781111178
1112021111202
1112101111210
1112111111211
1112401111240
1112861111286
1112891111289
1113001111300
1113061111306
1113501111350
1113611111361
1113821111382
1113881111388
1114241111424
1114381111438
1114521111452
1114611111461
1114821111482
1114851111485
1115282223056
1115431111543
1115471111547
1115831111583
1115931111593
1116161111616
1116251111625
1116401111640
1116621111662
1116681111668
1116761111676
1116951111695
1117201111720
1117401111740
1117481111748
1117671111767
1117931111793
1117981111798
1118261111826
1118411111841
1118541111854
1118581111858
1119041111904
1119061111906
1119071111907
1119411111941
1119621111962
1119631111963
1119791111979
1120121112012
1120421112042
1120431112043
1120641112064
1120821112082
1121051112105
1121061112106
1121121112112
1121591112159
1121831112183
1121911112191
1121981112198
1122171112217
1122441112244
1122691112269
1122711112271
1122761112276
1123071112307
1123281112328
1123491112349
1123591112359
1123791112379
1123821112382
1123961112396
1124181112418
1124291112429
1124481112448
1124581112458
1124751112475
1124861112486
1124961112496
1125321112532
1125401112540
1125411112541
1125781112578
1125791112579
1125901112590
1125931112593
1126141112614
1126251112625
1126341112634
1126431112643
1126811112681
1126951112695
1127321112732
1127521112752
1127551112755
1127941112794
1128521112852
1128831112883
1128981112898
1129191112919
1129591112959
1129991112999
1130291113029
1130601113060
1130901113090
1131321113132
1131611113161
1131671113167
1132101113210
1132351113235
1132941113294
1133031113303
1133171113317
1133621113362
1133971113397
1134531113453
1134691113469
1135182227036
1135261113526
1135871113587
1135911113591
1136141113614
1136271113627
1136651113665
1136731113673
1136791113679
1137101113710
1137141113714
1137201113720
1137211113721
1137221113722
1137231113723
1137251113725
1137263341178
1137283341184
1137292227458
1137302227460
1137312227462
1137331113733
1137343341202
1137361113736
1137381113738
1137391113739
1137471113747
1137481113748
1137491113749
1137521113752
1137531113753
1137601113760
1137611113761
1137631113763
1137651113765
1137672227534
1137731113773
1137761113776
1137801113780
1137851113785
1137891113789
1137921113792
1137961113796
1138051113805
1138061113806
1138101113810
1138111113811
1138221113822
1138232227646
1138261113826
1138331113833
1138391113839
1138421113842
1138491113849
1138511113851
1138561113856
1138611113861
1138652227730
1138661113866
1138741113874
1138771113877
1138911113891
1138951113895
1138982227796
1139021113902
1139041113904
1139101113910
1139111113911
1139171113917
1139211113921
1139261113926
1139281113928
1139322227864
1139331113933
1139361113936
1139421113942
1139431113943
1139441113944
1139471113947
1139531113953
1139551113955
1139561113956
1139591113959
1139601113960
1139661113966
1139671113967
1139741113974
1139761113976
1139832227966
1139941113994
1140011114001
1140051114005
1140061114006
1140072228014
1140091114009
1140101114010
1140121114012
1140131114013
1140241114024
1140321114032
1140341114034
1140391114039
1140411114041
1140431114043
1140451114045
1140461114046
1140482228096
1140502228100
1140512228102
1140521114052
1140531114053
1140551114055
1140601114060
1140632228126
1140642228128
1140671114067
1140691114069
1140701114070
1140741114074
1140782228156
1140841114084
1140872228174
1140881114088
1140901114090
1140911114091
1140941114094
1140961114096
1140972228194
1140981114098
1141021114102
1141033342309
1141041114104
1141053342315
1141072228214
1141091114109
1141112228222
1141123342336
1141131114113
1141141114114
1141161114116
1141204456480
1141231114123
1141242228248
1141254456500
1141271114127
1141291114129
1141351114135
1141401114140
1141431114143
1141442228288
1141452228290
1141461114146
1141481114148
1141523342456
1141561114156
1141571114157
1141581114158
1141592228318
1141611114161
1141631114163
1141641114164
1141662228332
1141671114167
1141681114168
1141702228340
1141721114172
1141752228350
1141761114176
1141792228358
1141801114180
1141842228368
1141851114185
1141871114187
1141941114194
1141962228392
1142001114200
1142061114206
1142111114211
1142341114234
1142451114245
1142591114259
1142611114261
1142891114289
1142921114292
1143011114301
1143081114308
1143101114310
1143141114314
1143301114330
1143432228686
1143471114347
1143541114354
1143601114360
1143641114364
1143871114387
1143971114397
1144011114401
1144211114421
1144221114422
1144271114427
1144301114430
1144571114457
1144601114460
1144731114473
1144771114477
1144811114481
1144821114482
1144971114497
1144981114498
1145061114506
1145081114508
1145111114511
1145131114513
1145162229032
1145211114521
1145222229044
1145231114523
1145262229052
1145282229056
1145291114529
1145314458124
1145342229068
1145361114536
1145381114538
1145401114540
1145411114541
1145421114542
1145432229086
1145443343632
1145454458180
1145462229092
1145471114547
1145481114548
1145492229098
1145504458200
1145511114551
1145522229104
1145535572765
1145541114554
1145573343671
1145583343674
1145592229118
1145612229122
1145622229124
1145633343689
1145652229130
1145661114566
1145672229134
1145681114568
1145694458276
1145702229140
1145712229142
1145732229146
1145753343725
1145761114576
1145771114577
1145791114579
1145802229160
1145811114581
1145821114582
1145831114583
1145841114584
1145851114585
1145861114586
1145881114588
1145931114593
1145962229192
1145971114597
1145981114598
1145991114599
1146012229202
1146021114602
1146031114603
1146042229208
1146071114607
1146081114608
1146102229220
1146112229222
1146121114612
1146131114613
1146152229230
1146161114616
1146212229242
1146222229244
1146242229248
1146252229250
1146282229256
1146301114630
1146312229262
1146321114632
1146332229266
1146361114636
1146401114640
1146431114643
1146461114646
1146492229298
1146521114652
1147621114762
Total1002111483814
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333239266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88827f4fcbce7ca7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3766346663626365
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_10.json b/autobahn/client/tungstenite_case_12_2_10.json new file mode 100644 index 0000000..7b7c186 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_10.json @@ -0,0 +1,1778 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 329, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 11095, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=329&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pjk68S3rtEYlZt3eumrEhA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rSNZadQJWMj/ZyK6rLnNSFxSDEA=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1658": 1, + "28960": 1, + "36200": 1, + "42541": 1, + "42557": 1, + "42563": 1, + "42582": 1, + "42585": 1, + "42588": 1, + "42597": 2, + "42600": 1, + "42602": 2, + "42604": 1, + "42627": 1, + "42628": 1, + "42635": 1, + "42638": 1, + "42640": 1, + "42641": 2, + "42645": 1, + "42656": 1, + "42658": 1, + "42661": 1, + "42662": 1, + "42671": 1, + "42672": 1, + "42673": 1, + "42675": 1, + "42677": 2, + "42684": 1, + "42685": 1, + "42689": 1, + "42690": 1, + "42692": 1, + "42695": 1, + "42696": 1, + "42698": 2, + "42699": 1, + "42704": 1, + "42706": 1, + "42714": 1, + "42719": 1, + "42724": 1, + "42727": 1, + "42730": 1, + "42734": 1, + "42740": 1, + "42741": 1, + "42746": 1, + "42747": 2, + "42749": 1, + "42755": 2, + "42773": 1, + "42774": 1, + "42778": 1, + "42781": 1, + "42783": 1, + "42785": 1, + "42787": 1, + "42789": 2, + "42792": 1, + "42793": 1, + "42794": 2, + "42799": 1, + "42800": 1, + "42806": 1, + "42810": 1, + "42821": 2, + "42822": 1, + "42824": 2, + "42826": 1, + "42830": 2, + "42833": 1, + "42834": 2, + "42836": 1, + "42838": 1, + "42839": 2, + "42843": 1, + "42847": 3, + "42851": 2, + "42862": 2, + "42863": 1, + "42869": 1, + "42870": 1, + "42873": 2, + "42875": 1, + "42876": 2, + "42877": 1, + "42882": 2, + "42883": 1, + "42885": 1, + "42887": 1, + "42888": 1, + "42892": 2, + "42893": 1, + "42897": 1, + "42898": 3, + "42906": 2, + "42907": 1, + "42908": 1, + "42911": 1, + "42912": 2, + "42915": 1, + "42920": 2, + "42926": 1, + "42927": 1, + "42928": 1, + "42929": 1, + "42932": 1, + "42934": 2, + "42935": 1, + "42936": 2, + "42937": 1, + "42943": 1, + "42944": 1, + "42945": 1, + "42948": 1, + "42951": 1, + "42955": 2, + "42956": 1, + "42957": 1, + "42961": 1, + "42964": 1, + "42965": 1, + "42976": 1, + "42977": 1, + "42979": 3, + "42980": 1, + "42983": 1, + "42984": 1, + "42986": 1, + "42988": 1, + "42991": 2, + "42993": 1, + "42998": 1, + "43004": 1, + "43012": 1, + "43019": 1, + "43020": 1, + "43051": 2, + "43058": 1, + "43063": 1, + "43073": 1, + "43085": 1, + "43087": 1, + "43090": 1, + "43094": 1, + "43099": 2, + "43100": 1, + "43119": 1, + "43121": 1, + "43127": 2, + "43147": 1, + "43149": 1, + "43150": 1, + "43154": 1, + "43157": 1, + "43174": 1, + "43177": 1, + "43183": 1, + "43190": 2, + "43192": 2, + "43197": 1, + "43211": 1, + "43215": 2, + "43219": 1, + "43225": 1, + "43232": 2, + "43237": 1, + "43240": 1, + "43246": 1, + "43248": 1, + "43254": 1, + "43255": 1, + "43259": 1, + "43260": 1, + "43268": 1, + "43275": 1, + "43283": 2, + "43284": 1, + "43285": 1, + "43287": 1, + "43291": 1, + "43295": 1, + "43306": 1, + "43308": 1, + "43312": 1, + "43314": 1, + "43317": 1, + "43319": 1, + "43320": 3, + "43325": 1, + "43326": 2, + "43328": 1, + "43333": 1, + "43336": 1, + "43338": 1, + "43340": 1, + "43346": 1, + "43350": 1, + "43351": 2, + "43355": 1, + "43356": 2, + "43361": 1, + "43367": 1, + "43369": 2, + "43370": 1, + "43374": 1, + "43375": 1, + "43376": 1, + "43378": 1, + "43381": 1, + "43386": 1, + "43388": 2, + "43389": 1, + "43393": 1, + "43396": 1, + "43397": 1, + "43400": 1, + "43405": 1, + "43411": 1, + "43413": 1, + "43414": 2, + "43417": 1, + "43419": 1, + "43420": 1, + "43421": 1, + "43423": 1, + "43424": 2, + "43426": 2, + "43429": 1, + "43431": 1, + "43432": 1, + "43433": 1, + "43434": 2, + "43435": 1, + "43438": 1, + "43439": 1, + "43440": 2, + "43442": 1, + "43445": 1, + "43447": 1, + "43448": 1, + "43449": 1, + "43450": 2, + "43452": 1, + "43454": 1, + "43455": 1, + "43459": 3, + "43461": 1, + "43463": 1, + "43465": 1, + "43469": 1, + "43474": 1, + "43477": 2, + "43479": 2, + "43482": 1, + "43483": 1, + "43488": 1, + "43489": 1, + "43490": 3, + "43491": 1, + "43492": 1, + "43493": 1, + "43494": 2, + "43495": 2, + "43497": 2, + "43501": 2, + "43503": 2, + "43504": 2, + "43505": 2, + "43508": 2, + "43511": 1, + "43512": 1, + "43517": 1, + "43528": 1, + "43534": 1, + "43536": 1, + "43548": 1, + "43563": 1, + "43567": 1, + "43570": 1, + "43572": 1, + "43585": 2, + "43597": 2, + "43598": 1, + "43600": 1, + "43601": 1, + "43605": 2, + "43610": 1, + "43613": 1, + "43615": 1, + "43616": 1, + "43622": 1, + "43625": 1, + "43632": 1, + "43633": 1, + "43635": 1, + "43636": 1, + "43640": 1, + "43644": 1, + "43650": 1, + "43654": 1, + "43658": 1, + "43661": 1, + "43672": 1, + "43674": 1, + "43675": 1, + "43677": 2, + "43682": 1, + "43687": 1, + "43690": 1, + "43691": 1, + "43694": 1, + "43695": 1, + "43703": 1, + "43704": 2, + "43705": 1, + "43710": 1, + "43712": 1, + "43713": 3, + "43716": 1, + "43717": 1, + "43720": 1, + "43726": 1, + "43738": 1, + "43785": 1, + "43820": 1, + "43822": 1, + "43891": 1, + "43905": 1, + "43964": 1, + "43986": 1, + "44047": 1, + "44052": 1, + "44145": 1, + "44192": 1, + "44224": 1, + "44279": 1, + "44310": 1, + "44328": 1, + "44370": 1, + "44382": 1, + "44439": 1, + "44496": 1, + "44498": 1, + "44533": 1, + "44555": 1, + "44558": 1, + "44599": 1, + "44627": 1, + "44637": 1, + "44663": 1, + "44673": 1, + "44725": 1, + "44727": 1, + "44736": 1, + "44776": 1, + "44821": 1, + "44829": 1, + "44847": 1, + "44849": 1, + "44864": 1, + "44908": 1, + "44944": 1, + "44947": 1, + "44972": 1, + "44990": 1, + "45008": 1, + "45014": 1, + "45068": 1, + "45072": 1, + "45088": 1, + "45089": 1, + "45134": 1, + "45170": 1, + "45174": 1, + "45201": 1, + "45231": 1, + "45236": 1, + "45250": 1, + "45271": 1, + "45291": 2, + "45303": 1, + "45330": 1, + "45331": 1, + "45394": 1, + "45413": 1, + "45414": 1, + "45433": 1, + "45471": 1, + "45475": 1, + "45487": 1, + "45513": 1, + "45526": 1, + "45573": 1, + "45578": 1, + "45601": 1, + "45646": 1, + "45678": 1, + "45679": 1, + "45708": 1, + "45747": 1, + "45757": 1, + "45768": 1, + "45774": 1, + "45818": 1, + "45850": 1, + "45856": 1, + "45892": 1, + "45906": 1, + "45920": 1, + "45941": 1, + "45950": 1, + "45953": 1, + "45996": 1, + "46011": 1, + "46015": 1, + "46046": 1, + "46051": 1, + "46061": 1, + "46093": 1, + "46108": 1, + "46130": 2, + "46136": 1, + "46144": 1, + "46188": 1, + "46205": 1, + "46208": 1, + "46235": 1, + "46261": 1, + "46266": 1, + "46294": 1, + "46305": 1, + "46309": 1, + "46322": 1, + "46336": 2, + "46372": 2, + "46375": 1, + "46409": 1, + "46430": 1, + "46431": 1, + "46447": 1, + "46460": 1, + "46480": 1, + "46532": 1, + "46539": 1, + "46550": 1, + "46573": 1, + "46574": 1, + "46580": 1, + "46592": 1, + "46627": 1, + "46651": 1, + "46666": 1, + "46685": 1, + "46702": 1, + "46712": 1, + "46737": 1, + "46739": 1, + "46744": 1, + "46750": 1, + "46775": 1, + "46796": 1, + "46827": 1, + "46847": 1, + "46850": 1, + "46864": 1, + "46886": 2, + "46887": 1, + "46897": 1, + "46916": 1, + "46943": 1, + "46954": 1, + "46964": 1, + "47000": 1, + "47008": 1, + "47009": 1, + "47035": 1, + "47047": 1, + "47058": 1, + "47061": 1, + "47082": 1, + "47093": 1, + "47102": 1, + "47111": 1, + "47149": 1, + "47193": 1, + "47220": 1, + "47223": 1, + "47262": 1, + "47302": 1, + "47320": 1, + "47366": 1, + "47387": 1, + "47422": 1, + "47427": 1, + "47467": 1, + "47528": 1, + "47539": 1, + "47558": 1, + "47576": 1, + "47600": 1, + "47629": 1, + "47678": 1, + "47703": 1, + "47727": 1, + "47762": 1, + "47771": 1, + "47830": 1, + "47865": 1, + "47873": 1, + "47921": 1, + "47986": 2, + "48011": 1, + "48055": 1, + "48059": 1, + "48082": 1, + "48095": 1, + "48133": 1, + "48141": 1, + "48147": 1, + "48161": 1, + "48178": 1, + "48182": 1, + "48188": 1, + "48189": 1, + "48190": 1, + "48191": 1, + "48193": 1, + "48194": 3, + "48196": 3, + "48197": 2, + "48198": 2, + "48199": 2, + "48201": 1, + "48202": 3, + "48204": 1, + "48206": 1, + "48207": 1, + "48215": 1, + "48216": 1, + "48217": 1, + "48220": 1, + "48221": 1, + "48228": 1, + "48229": 1, + "48231": 1, + "48233": 1, + "48235": 2, + "48241": 1, + "48244": 1, + "48248": 1, + "48253": 1, + "48257": 1, + "48260": 1, + "48264": 1, + "48273": 1, + "48274": 1, + "48278": 1, + "48279": 1, + "48290": 1, + "48291": 2, + "48294": 1, + "48301": 1, + "48307": 1, + "48310": 1, + "48313": 1, + "48317": 1, + "48319": 1, + "48324": 1, + "48329": 1, + "48333": 2, + "48334": 1, + "48342": 1, + "48345": 1, + "48359": 1, + "48363": 1, + "48366": 2, + "48370": 1, + "48372": 1, + "48378": 1, + "48379": 1, + "48385": 1, + "48389": 1, + "48394": 1, + "48396": 1, + "48400": 2, + "48401": 1, + "48404": 1, + "48410": 1, + "48411": 1, + "48412": 1, + "48415": 1, + "48421": 1, + "48423": 1, + "48424": 1, + "48427": 1, + "48428": 1, + "48434": 1, + "48435": 1, + "48442": 1, + "48444": 1, + "48451": 2, + "48462": 1, + "48469": 1, + "48473": 1, + "48474": 1, + "48475": 2, + "48477": 1, + "48478": 1, + "48480": 1, + "48481": 1, + "48492": 1, + "48500": 1, + "48502": 1, + "48507": 1, + "48509": 1, + "48511": 1, + "48513": 1, + "48514": 1, + "48516": 2, + "48518": 2, + "48519": 2, + "48520": 1, + "48521": 1, + "48523": 1, + "48528": 1, + "48531": 2, + "48532": 2, + "48535": 1, + "48537": 1, + "48538": 1, + "48542": 1, + "48546": 2, + "48552": 1, + "48555": 2, + "48556": 1, + "48558": 1, + "48559": 1, + "48562": 1, + "48564": 1, + "48565": 2, + "48566": 1, + "48570": 1, + "48571": 3, + "48573": 2, + "48575": 2, + "48577": 1, + "48579": 1, + "48580": 3, + "48581": 1, + "48582": 1, + "48584": 1, + "48588": 4, + "48591": 1, + "48592": 2, + "48593": 4, + "48597": 1, + "48603": 1, + "48608": 1, + "48611": 1, + "48612": 1, + "48613": 2, + "48614": 1, + "48616": 1, + "48620": 3, + "48624": 1, + "48625": 1, + "48626": 1, + "48627": 2, + "48629": 1, + "48631": 1, + "48632": 1, + "48634": 2, + "48635": 1, + "48636": 1, + "48638": 1, + "48640": 1, + "48643": 2, + "48644": 1, + "48647": 2, + "48648": 1, + "48652": 2, + "48653": 1, + "48655": 1, + "48662": 1, + "48664": 2, + "48668": 1, + "48674": 1, + "48679": 1, + "48702": 1, + "48713": 1, + "48727": 1, + "48729": 1, + "48757": 1, + "48760": 1, + "48769": 1, + "48776": 1, + "48778": 1, + "48782": 1, + "48798": 1, + "48811": 2, + "48815": 1, + "48822": 1, + "48828": 1, + "48832": 1, + "48855": 1, + "48865": 1, + "48869": 1, + "48889": 1, + "48890": 1, + "48895": 1, + "48898": 1, + "48925": 1, + "48928": 1, + "48941": 1, + "48945": 1, + "48948": 1, + "48949": 2, + "48950": 1, + "48955": 1, + "48965": 1, + "48966": 1, + "48971": 1, + "48974": 1, + "48976": 1, + "48979": 1, + "48981": 1, + "48984": 2, + "48988": 1, + "48989": 1, + "48990": 2, + "48991": 1, + "48994": 2, + "48996": 2, + "48997": 1, + "48999": 4, + "49002": 2, + "49004": 1, + "49006": 1, + "49008": 1, + "49009": 1, + "49010": 1, + "49011": 2, + "49012": 3, + "49013": 4, + "49014": 3, + "49015": 1, + "49016": 1, + "49017": 2, + "49018": 4, + "49019": 1, + "49020": 2, + "49021": 5, + "49022": 1, + "49025": 3, + "49026": 3, + "49027": 2, + "49029": 2, + "49030": 2, + "49031": 3, + "49033": 2, + "49034": 1, + "49035": 2, + "49036": 1, + "49037": 4, + "49038": 2, + "49039": 2, + "49041": 2, + "49043": 3, + "49044": 1, + "49045": 1, + "49047": 1, + "49048": 2, + "49049": 1, + "49050": 1, + "49051": 1, + "49052": 1, + "49053": 1, + "49054": 1, + "49056": 1, + "49061": 1, + "49064": 2, + "49065": 1, + "49066": 1, + "49067": 1, + "49069": 2, + "49070": 1, + "49071": 1, + "49072": 2, + "49075": 1, + "49076": 1, + "49078": 2, + "49079": 2, + "49080": 1, + "49081": 1, + "49083": 2, + "49084": 1, + "49089": 2, + "49090": 2, + "49092": 2, + "49093": 2, + "49096": 2, + "49098": 1, + "49099": 2, + "49100": 1, + "49101": 2, + "49104": 1, + "49108": 1, + "49111": 1, + "49114": 1, + "49117": 2, + "49120": 1, + "49606": 1, + "62806": 1, + "65160": 48, + "65464": 1, + "65536": 949 + }, + "started": "2025-09-11T20:06:26.769Z", + "trafficStats": { + "incomingCompressionRatio": 0.8504757537841797, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 111473558, + "incomingOctetsWireLevel": 111487558, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00012559032160792787, + "outgoingCompressionRatio": 0.8504757537841797, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 111473558, + "outgoingOctetsWireLevel": 111483558, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 8.970737257709133e-05, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "108073": 1, + "108089": 1, + "108095": 1, + "108114": 1, + "108117": 1, + "108120": 1, + "108129": 2, + "108132": 1, + "108134": 2, + "108136": 1, + "108159": 1, + "108160": 1, + "108167": 1, + "108170": 1, + "108172": 1, + "108173": 2, + "108177": 1, + "108188": 1, + "108190": 1, + "108193": 1, + "108194": 1, + "108203": 1, + "108204": 1, + "108205": 1, + "108207": 1, + "108209": 2, + "108216": 1, + "108217": 1, + "108221": 1, + "108222": 1, + "108224": 1, + "108227": 1, + "108228": 1, + "108230": 2, + "108231": 1, + "108236": 1, + "108238": 1, + "108246": 1, + "108251": 1, + "108256": 1, + "108259": 1, + "108262": 1, + "108266": 1, + "108272": 1, + "108273": 1, + "108278": 1, + "108279": 2, + "108281": 1, + "108287": 2, + "108305": 1, + "108306": 1, + "108310": 1, + "108313": 1, + "108315": 1, + "108317": 1, + "108319": 1, + "108321": 2, + "108324": 1, + "108325": 1, + "108326": 2, + "108331": 1, + "108332": 1, + "108338": 1, + "108342": 1, + "108353": 2, + "108354": 1, + "108356": 2, + "108358": 1, + "108362": 2, + "108365": 1, + "108366": 2, + "108368": 1, + "108370": 1, + "108371": 2, + "108375": 1, + "108379": 3, + "108383": 2, + "108394": 2, + "108395": 1, + "108401": 1, + "108402": 1, + "108405": 2, + "108407": 1, + "108408": 2, + "108409": 1, + "108414": 2, + "108415": 1, + "108417": 1, + "108419": 1, + "108420": 1, + "108424": 2, + "108425": 1, + "108429": 1, + "108430": 3, + "108438": 2, + "108439": 1, + "108440": 1, + "108443": 1, + "108444": 2, + "108447": 1, + "108452": 2, + "108458": 1, + "108459": 1, + "108460": 1, + "108461": 1, + "108464": 1, + "108466": 2, + "108467": 1, + "108468": 2, + "108469": 1, + "108475": 1, + "108476": 1, + "108477": 1, + "108480": 2, + "108483": 1, + "108487": 2, + "108488": 1, + "108489": 1, + "108493": 1, + "108496": 1, + "108497": 1, + "108508": 1, + "108509": 1, + "108511": 3, + "108512": 1, + "108515": 1, + "108516": 1, + "108518": 1, + "108520": 1, + "108523": 2, + "108525": 1, + "108530": 1, + "108536": 1, + "108544": 1, + "108549": 1, + "108551": 1, + "108583": 2, + "108590": 1, + "108595": 1, + "108605": 1, + "108617": 1, + "108619": 1, + "108621": 1, + "108622": 1, + "108626": 1, + "108631": 2, + "108632": 1, + "108635": 1, + "108647": 1, + "108651": 1, + "108653": 1, + "108659": 2, + "108679": 1, + "108681": 1, + "108682": 1, + "108686": 1, + "108689": 1, + "108706": 1, + "108709": 1, + "108715": 1, + "108722": 2, + "108724": 2, + "108729": 1, + "108743": 1, + "108747": 2, + "108751": 1, + "108757": 1, + "108764": 2, + "108769": 1, + "108772": 1, + "108778": 1, + "108780": 1, + "108786": 1, + "108787": 1, + "108791": 1, + "108792": 1, + "108800": 1, + "108807": 1, + "108815": 2, + "108816": 1, + "108817": 1, + "108819": 1, + "108823": 1, + "108827": 1, + "108833": 1, + "108838": 1, + "108840": 1, + "108844": 1, + "108846": 1, + "108849": 1, + "108851": 1, + "108852": 3, + "108857": 1, + "108858": 2, + "108860": 1, + "108865": 1, + "108868": 1, + "108870": 1, + "108872": 1, + "108873": 1, + "108878": 1, + "108882": 1, + "108883": 2, + "108887": 1, + "108888": 2, + "108893": 1, + "108899": 1, + "108901": 2, + "108902": 1, + "108906": 1, + "108907": 1, + "108908": 1, + "108910": 1, + "108913": 1, + "108918": 1, + "108920": 2, + "108921": 1, + "108928": 1, + "108929": 1, + "108932": 1, + "108937": 1, + "108943": 1, + "108945": 1, + "108946": 2, + "108949": 1, + "108951": 1, + "108952": 1, + "108953": 1, + "108955": 1, + "108956": 2, + "108958": 2, + "108961": 1, + "108963": 1, + "108964": 1, + "108965": 1, + "108966": 2, + "108967": 1, + "108970": 1, + "108971": 1, + "108972": 2, + "108974": 1, + "108977": 1, + "108979": 1, + "108980": 1, + "108981": 1, + "108982": 2, + "108984": 1, + "108986": 1, + "108987": 1, + "108991": 3, + "108993": 1, + "108995": 1, + "109001": 1, + "109006": 1, + "109009": 2, + "109011": 1, + "109014": 1, + "109015": 1, + "109020": 1, + "109021": 1, + "109022": 3, + "109024": 1, + "109025": 1, + "109026": 2, + "109027": 2, + "109029": 2, + "109033": 2, + "109035": 2, + "109036": 2, + "109037": 2, + "109040": 2, + "109043": 1, + "109044": 1, + "109049": 1, + "109060": 1, + "109066": 1, + "109068": 1, + "109080": 1, + "109095": 1, + "109099": 1, + "109102": 1, + "109104": 1, + "109117": 2, + "109129": 2, + "109130": 1, + "109132": 1, + "109133": 1, + "109137": 2, + "109138": 1, + "109142": 1, + "109145": 1, + "109147": 1, + "109148": 1, + "109154": 1, + "109157": 1, + "109164": 1, + "109165": 1, + "109167": 1, + "109168": 1, + "109172": 1, + "109176": 1, + "109182": 1, + "109186": 1, + "109190": 1, + "109193": 1, + "109204": 1, + "109206": 1, + "109207": 1, + "109209": 1, + "109214": 1, + "109219": 1, + "109222": 1, + "109223": 1, + "109226": 1, + "109227": 1, + "109235": 1, + "109236": 2, + "109237": 1, + "109242": 1, + "109244": 1, + "109245": 3, + "109248": 1, + "109252": 1, + "109258": 1, + "109270": 1, + "109317": 1, + "109352": 1, + "109354": 1, + "109423": 1, + "109437": 1, + "109484": 1, + "109496": 1, + "109518": 1, + "109579": 1, + "109584": 1, + "109654": 1, + "109677": 1, + "109724": 1, + "109756": 1, + "109811": 1, + "109829": 1, + "109842": 1, + "109902": 1, + "109914": 1, + "109971": 1, + "109985": 1, + "110005": 1, + "110028": 1, + "110065": 1, + "110087": 1, + "110090": 1, + "110131": 1, + "110146": 1, + "110159": 1, + "110169": 1, + "110170": 1, + "110195": 1, + "110257": 1, + "110259": 1, + "110268": 1, + "110308": 1, + "110330": 1, + "110353": 1, + "110379": 1, + "110396": 1, + "110427": 1, + "110440": 1, + "110476": 1, + "110479": 1, + "110486": 1, + "110504": 1, + "110540": 1, + "110600": 1, + "110604": 1, + "110620": 1, + "110621": 1, + "110666": 1, + "110682": 1, + "110702": 1, + "110733": 1, + "110763": 1, + "110768": 1, + "110782": 1, + "110823": 2, + "110835": 1, + "110863": 1, + "110903": 1, + "110926": 1, + "110945": 1, + "110946": 1, + "110965": 1, + "111003": 1, + "111007": 1, + "111019": 1, + "111045": 1, + "111097": 1, + "111105": 1, + "111110": 1, + "111133": 1, + "111178": 1, + "111202": 1, + "111210": 1, + "111211": 1, + "111240": 1, + "111286": 1, + "111289": 1, + "111300": 1, + "111306": 1, + "111350": 1, + "111361": 1, + "111382": 1, + "111388": 1, + "111424": 1, + "111438": 1, + "111452": 1, + "111461": 1, + "111482": 1, + "111485": 1, + "111528": 2, + "111543": 1, + "111547": 1, + "111583": 1, + "111593": 1, + "111616": 1, + "111625": 1, + "111640": 1, + "111662": 1, + "111668": 1, + "111676": 1, + "111695": 1, + "111720": 1, + "111740": 1, + "111748": 1, + "111767": 1, + "111793": 1, + "111798": 1, + "111826": 1, + "111841": 1, + "111854": 1, + "111858": 1, + "111904": 1, + "111906": 1, + "111907": 1, + "111941": 1, + "111962": 1, + "111963": 1, + "111979": 1, + "112012": 1, + "112042": 1, + "112043": 1, + "112064": 1, + "112082": 1, + "112105": 1, + "112106": 1, + "112112": 1, + "112159": 1, + "112183": 1, + "112191": 1, + "112198": 1, + "112217": 1, + "112244": 1, + "112269": 1, + "112271": 1, + "112276": 1, + "112307": 1, + "112328": 1, + "112349": 1, + "112359": 1, + "112379": 1, + "112382": 1, + "112396": 1, + "112418": 1, + "112429": 1, + "112448": 1, + "112458": 1, + "112475": 1, + "112486": 1, + "112496": 1, + "112532": 1, + "112540": 1, + "112541": 1, + "112578": 1, + "112579": 1, + "112590": 1, + "112593": 1, + "112614": 1, + "112625": 1, + "112634": 1, + "112643": 1, + "112681": 1, + "112695": 1, + "112732": 1, + "112752": 1, + "112755": 1, + "112794": 1, + "112852": 1, + "112883": 1, + "112898": 1, + "112919": 1, + "112959": 1, + "112999": 1, + "113029": 1, + "113060": 1, + "113090": 1, + "113132": 1, + "113161": 1, + "113167": 1, + "113210": 1, + "113235": 1, + "113294": 1, + "113303": 1, + "113317": 1, + "113362": 1, + "113397": 1, + "113453": 1, + "113469": 1, + "113518": 2, + "113526": 1, + "113587": 1, + "113591": 1, + "113614": 1, + "113627": 1, + "113665": 1, + "113673": 1, + "113679": 1, + "113710": 1, + "113714": 1, + "113720": 1, + "113721": 1, + "113722": 1, + "113723": 1, + "113725": 1, + "113726": 3, + "113728": 3, + "113729": 2, + "113730": 2, + "113731": 2, + "113733": 1, + "113734": 3, + "113736": 1, + "113738": 1, + "113739": 1, + "113747": 1, + "113748": 1, + "113749": 1, + "113752": 1, + "113753": 1, + "113760": 1, + "113761": 1, + "113763": 1, + "113765": 1, + "113767": 2, + "113773": 1, + "113776": 1, + "113780": 1, + "113785": 1, + "113789": 1, + "113792": 1, + "113796": 1, + "113805": 1, + "113806": 1, + "113810": 1, + "113811": 1, + "113822": 1, + "113823": 2, + "113826": 1, + "113833": 1, + "113839": 1, + "113842": 1, + "113849": 1, + "113851": 1, + "113856": 1, + "113861": 1, + "113865": 2, + "113866": 1, + "113874": 1, + "113877": 1, + "113891": 1, + "113895": 1, + "113898": 2, + "113902": 1, + "113904": 1, + "113910": 1, + "113911": 1, + "113917": 1, + "113921": 1, + "113926": 1, + "113928": 1, + "113932": 2, + "113933": 1, + "113936": 1, + "113942": 1, + "113943": 1, + "113944": 1, + "113947": 1, + "113953": 1, + "113955": 1, + "113956": 1, + "113959": 1, + "113960": 1, + "113966": 1, + "113967": 1, + "113974": 1, + "113976": 1, + "113983": 2, + "113994": 1, + "114001": 1, + "114005": 1, + "114006": 1, + "114007": 2, + "114009": 1, + "114010": 1, + "114012": 1, + "114013": 1, + "114024": 1, + "114032": 1, + "114034": 1, + "114039": 1, + "114041": 1, + "114043": 1, + "114045": 1, + "114046": 1, + "114048": 2, + "114050": 2, + "114051": 2, + "114052": 1, + "114053": 1, + "114055": 1, + "114060": 1, + "114063": 2, + "114064": 2, + "114067": 1, + "114069": 1, + "114070": 1, + "114074": 1, + "114078": 2, + "114084": 1, + "114087": 2, + "114088": 1, + "114090": 1, + "114091": 1, + "114094": 1, + "114096": 1, + "114097": 2, + "114098": 1, + "114102": 1, + "114103": 3, + "114104": 1, + "114105": 3, + "114107": 2, + "114109": 1, + "114111": 2, + "114112": 3, + "114113": 1, + "114114": 1, + "114116": 1, + "114120": 4, + "114123": 1, + "114124": 2, + "114125": 4, + "114127": 1, + "114129": 1, + "114135": 1, + "114140": 1, + "114143": 1, + "114144": 2, + "114145": 2, + "114146": 1, + "114148": 1, + "114152": 3, + "114156": 1, + "114157": 1, + "114158": 1, + "114159": 2, + "114161": 1, + "114163": 1, + "114164": 1, + "114166": 2, + "114167": 1, + "114168": 1, + "114170": 2, + "114172": 1, + "114175": 2, + "114176": 1, + "114179": 2, + "114180": 1, + "114184": 2, + "114185": 1, + "114187": 1, + "114194": 1, + "114196": 2, + "114200": 1, + "114206": 1, + "114211": 1, + "114234": 1, + "114245": 1, + "114259": 1, + "114261": 1, + "114289": 1, + "114292": 1, + "114301": 1, + "114308": 1, + "114310": 1, + "114314": 1, + "114330": 1, + "114343": 2, + "114347": 1, + "114354": 1, + "114360": 1, + "114364": 1, + "114387": 1, + "114397": 1, + "114401": 1, + "114421": 1, + "114422": 1, + "114427": 1, + "114430": 1, + "114457": 1, + "114460": 1, + "114473": 1, + "114477": 1, + "114481": 1, + "114482": 1, + "114497": 1, + "114498": 1, + "114506": 1, + "114508": 1, + "114511": 1, + "114513": 1, + "114516": 2, + "114521": 1, + "114522": 2, + "114523": 1, + "114526": 2, + "114528": 2, + "114529": 1, + "114531": 4, + "114534": 2, + "114536": 1, + "114538": 1, + "114540": 1, + "114541": 1, + "114542": 1, + "114543": 2, + "114544": 3, + "114545": 4, + "114546": 2, + "114547": 1, + "114548": 1, + "114549": 2, + "114550": 4, + "114551": 1, + "114552": 2, + "114553": 5, + "114554": 1, + "114557": 3, + "114558": 3, + "114559": 2, + "114561": 2, + "114562": 2, + "114563": 3, + "114565": 2, + "114566": 1, + "114567": 2, + "114568": 1, + "114569": 4, + "114570": 2, + "114571": 2, + "114573": 2, + "114575": 3, + "114576": 1, + "114577": 1, + "114579": 1, + "114580": 2, + "114581": 1, + "114582": 1, + "114583": 1, + "114584": 1, + "114585": 1, + "114586": 1, + "114588": 1, + "114593": 1, + "114596": 2, + "114597": 1, + "114598": 1, + "114599": 1, + "114601": 2, + "114602": 1, + "114603": 1, + "114604": 2, + "114607": 1, + "114608": 1, + "114610": 2, + "114611": 2, + "114612": 1, + "114613": 1, + "114615": 2, + "114616": 1, + "114621": 2, + "114622": 2, + "114624": 2, + "114625": 2, + "114628": 2, + "114630": 1, + "114631": 2, + "114632": 1, + "114633": 2, + "114636": 1, + "114640": 1, + "114643": 1, + "114646": 1, + "114649": 2, + "114652": 1, + "114762": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333239266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827f4fcbce7ca7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7f4fcbce" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_11.html b/autobahn/client/tungstenite_case_12_2_11.html new file mode 100644 index 0000000..c054391 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_11.html @@ -0,0 +1,1006 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.11 : Pass - 944 ms @ 2025-09-11T20:06:37.866Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=330&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: TcaYf2YrVBnabQLqfqV4pw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: EOQPUtn6YyO5ZPrizdUSBnU936M=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
449914499
457014570
457614576
459214592
460514605
460914609
462514625
465814658
467514675
470014700
470714707
476714767
476814768
479914799
481814818
483914839
484814848
487514875
489114891
495314953
498514985
501415014
501515015
503515035
509615096
512015120
514215142
516515165
524715247
531315313
546515465
561315613
575915759
581215812
585615856
5860211720
586515865
587515875
5876211752
587715877
5886423544
588915889
589515895
590115901
590515905
5906317718
592315923
5924211848
593915939
594115941
594615946
5950211900
596115961
5964211928
596915969
597415974
597515975
598015980
598215982
598515985
599115991
599315993
600916009
601216012
601316013
601716017
602116021
604216042
604516045
605516055
606816068
6073212146
607516075
609316093
610216102
611816118
613216132
614816148
616816168
618416184
618716187
619516195
622616226
622916229
624216242
626116261
628716287
629216292
632216322
632716327
635116351
635916359
636116361
638116381
638916389
641916419
642616426
645916459
646316463
649416494
651416514
651816518
652516525
655516555
657916579
660816608
662716627
663216632
665716657
667616676
668116681
669216692
671716717
673316733
673416734
674316743
674516745
675416754
675616756
676616766
677516775
678116781
679416794
680616806
682116821
683516835
684916849
686016860
686416864
687416874
688216882
688316883
688916889
689116891
689316893
689416894
689716897
689816898
689916899
6903213806
6904213808
690516905
690716907
690916909
691816918
692116921
6922213844
692316923
6924213848
692516925
692616926
692816928
693116931
693316933
6934213868
6935213870
693916939
6940213880
6941320823
694216942
694316943
6944213888
694616946
695216952
695616956
6959213918
696216962
696516965
696616966
6969213938
697016970
697316973
6974213948
6975213950
6976213952
697716977
697816978
6981427924
698316983
698416984
6991213982
699216992
6993320979
6994213988
699516995
699616996
699716997
6999213998
7000321000
700217002
7003214006
700517005
700817008
7010214020
7011214022
701217012
701317013
7014214028
701517015
7016535080
702117021
7023321069
7024214048
702517025
7026321078
7027321081
7028321084
703017030
7032214064
703317033
7034214068
703517035
7036214072
703817038
703917039
704117041
704217042
7044321132
704517045
704717047
7048214096
7049214098
705117051
705217052
705517055
7056214112
7057214114
706017060
706117061
706217062
706317063
706417064
7067214134
706817068
707017070
707117071
707217072
707417074
707517075
7077214154
707817078
7079321237
7081214162
7082214164
7083214166
7084321252
7085321255
7088321264
7089321267
7090428360
7091428364
709217092
709317093
7094214188
7095214190
7096428384
709717097
7098214196
7099642594
710017100
7102642612
710317103
710417104
710517105
710617106
7107214214
7108214216
710917109
7110214220
7111321333
7112214224
7113856904
7114535570
7115964035
7116642696
7117321351
7118214236
7119321357
7120321360
7121214242
7122535610
7123321369
712417124
7126535630
712717127
712817128
7129214258
713117131
7132214264
7133321399
713417134
7135214270
713617136
713717137
713817138
7139321417
7140321420
7141214282
7143321429
7144964296
7145321435
714617146
7147214294
7148321444
714917149
7150321450
7151321453
7152214304
7153535765
7154535770
7155857240
7156964404
7157642942
7158642948
7159428636
7160428640
7161535805
7163428652
7164857312
71651178815
7166535830
7167428668
7168750176
7169535845
7170321510
7171750197
7172643032
7173428692
7174857392
7175857400
71761178936
7177750239
717814100492
7179857432
718017180
7181321543
7182857456
7183535915
7184535920
7185428740
7186214372
7187535935
7188535940
7189214378
7190214380
7191428764
7192857536
7193214386
7194428776
7195643170
719617196
7197214394
7198214396
719917199
720117201
720217202
720417204
720517205
7206536030
7209536045
7210321630
721117211
7213321639
721417214
7215214430
7216214432
721717217
7218214436
7219214438
7220321660
7221428884
7222214444
7223643338
7224321672
7225643350
722617226
7227321681
722817228
7229428916
7230214460
7231428924
7233321699
7234428936
7235536175
723617236
7237536185
7238321714
7239214478
7240428960
7241643446
7242428968
7243214486
7244428976
7245536225
7246428984
72471394211
7248428992
7249321747
7250321750
725117251
7252858016
725317253
7254750778
7255321765
725617256
7257214514
7258214516
725917259
7260214520
7261429044
7263214526
7264214528
7265321795
726617266
726717267
726817268
7269321807
727117271
727217272
7275214550
7276321828
7277214554
7278429112
7279321837
7280321840
7281321843
7282321846
7283214566
7284214568
728517285
7286321858
7287214574
7289321867
729017290
7291214582
7300214600
7301214602
7303321909
7304214608
730617306
730717307
730917309
731017310
731117311
7312214624
731517315
731717317
7318321954
7320214640
732217322
732317323
732517325
7327321981
732817328
732917329
733117331
733217332
733717337
734017340
734217342
7343214686
734417344
734517345
Total10026981484
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21122
3824
41768
51050
6318
7535
8972
9545
10660
11666
12560
13791
14684
15345
16580
176102
189162
19357
205100
218168
22366
235115
24372
25250
26252
27127
28256
29129
304120
31131
325160
34268
355175
363108
37274
38138
394156
40140
414164
42284
43143
444176
454180
463138
476282
483144
496294
503150
518408
523156
534212
54154
556330
566336
577399
582116
594236
605300
616366
62162
639567
643192
653195
665330
677469
684272
692138
706420
716426
725360
73151095
745370
757525
766456
772154
789702
793237
808640
817567
824328
835415
843252
853255
864344
875435
882176
892178
903270
914364
925460
934372
943282
954380
962192
973291
986588
99199
1012202
1023306
1033309
1045520
1056630
1065530
1074428
1087756
1095545
1105550
1112222
1125560
1133339
1142228
1156690
1163348
1173351
1183354
1193357
1201120
1213363
1232246
1241124
1265630
1274508
1314524
1324528
1332266
1342268
1352270
1361136
1371137
1381138
1393417
1404560
1412282
1432286
1442288
1452290
1466876
1472294
1483444
1502300
1514604
1521152
1532306
1541154
1555775
1563468
1571157
1581158
1592318
1601160
1613483
1621162
1634652
1653495
1662332
1673501
1684672
1693507
1701170
1712342
1724688
1734692
1745870
17561050
1763528
1771177
1782356
1793537
1804720
1813543
1822364
18371281
1841184
18661116
1872374
1881188
1893567
1901190
1912382
1922384
1931193
1942388
1953585
1962392
19781576
1985990
19991791
20071400
2014804
2022404
2034812
20451020
2052410
20661236
2073621
2081208
21061260
2112422
2121212
2133639
2142428
2151215
2162432
2173651
2181218
2192438
2203660
2211221
2222444
22351115
22451120
2252450
2261226
2274908
228112508
22951145
2301230
2313693
2323696
2334932
2344936
2353705
2364944
23761422
23861428
239102390
240122880
24181928
24261452
24361458
24461464
24561470
24751235
24881984
249133237
25092250
25141004
25292268
25382024
2543762
25571785
25671792
25741028
25892322
25992331
260267516955260
Total277537083403
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
026751
21000
81
Total27752
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333330266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88821627042315cf
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3136323730343233
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_11.json b/autobahn/client/tungstenite_case_12_2_11.json new file mode 100644 index 0000000..8ff1c94 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_11.json @@ -0,0 +1,853 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 330, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 944, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=330&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: TcaYf2YrVBnabQLqfqV4pw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: EOQPUtn6YyO5ZPrizdUSBnU936M=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4499": 1, + "4570": 1, + "4576": 1, + "4592": 1, + "4605": 1, + "4609": 1, + "4625": 1, + "4658": 1, + "4675": 1, + "4700": 1, + "4707": 1, + "4767": 1, + "4768": 1, + "4799": 1, + "4818": 1, + "4839": 1, + "4848": 1, + "4875": 1, + "4891": 1, + "4953": 1, + "4985": 1, + "5014": 1, + "5015": 1, + "5035": 1, + "5096": 1, + "5120": 1, + "5142": 1, + "5165": 1, + "5247": 1, + "5313": 1, + "5465": 1, + "5613": 1, + "5759": 1, + "5812": 1, + "5856": 1, + "5860": 2, + "5865": 1, + "5875": 1, + "5876": 2, + "5877": 1, + "5886": 4, + "5889": 1, + "5895": 1, + "5901": 1, + "5905": 1, + "5906": 3, + "5923": 1, + "5924": 2, + "5939": 1, + "5941": 1, + "5946": 1, + "5950": 2, + "5961": 1, + "5964": 2, + "5969": 1, + "5974": 1, + "5975": 1, + "5980": 1, + "5982": 1, + "5985": 1, + "5991": 1, + "5993": 1, + "6009": 1, + "6012": 1, + "6013": 1, + "6017": 1, + "6021": 1, + "6042": 1, + "6045": 1, + "6055": 1, + "6068": 1, + "6073": 2, + "6075": 1, + "6093": 1, + "6102": 1, + "6118": 1, + "6132": 1, + "6148": 1, + "6168": 1, + "6184": 1, + "6187": 1, + "6195": 1, + "6226": 1, + "6229": 1, + "6242": 1, + "6261": 1, + "6287": 1, + "6292": 1, + "6322": 1, + "6327": 1, + "6351": 1, + "6359": 1, + "6361": 1, + "6381": 1, + "6389": 1, + "6419": 1, + "6426": 1, + "6459": 1, + "6463": 1, + "6494": 1, + "6514": 1, + "6518": 1, + "6525": 1, + "6555": 1, + "6579": 1, + "6608": 1, + "6627": 1, + "6632": 1, + "6657": 1, + "6676": 1, + "6681": 1, + "6692": 1, + "6717": 1, + "6733": 1, + "6734": 1, + "6743": 1, + "6745": 1, + "6754": 1, + "6756": 1, + "6766": 1, + "6775": 1, + "6781": 1, + "6794": 1, + "6806": 1, + "6821": 1, + "6835": 1, + "6849": 1, + "6860": 1, + "6864": 1, + "6874": 1, + "6882": 1, + "6883": 1, + "6889": 1, + "6891": 1, + "6893": 1, + "6894": 1, + "6897": 1, + "6898": 1, + "6899": 1, + "6903": 2, + "6904": 2, + "6905": 1, + "6907": 1, + "6909": 1, + "6918": 1, + "6921": 1, + "6922": 2, + "6923": 1, + "6924": 2, + "6925": 1, + "6926": 1, + "6928": 1, + "6931": 1, + "6933": 1, + "6934": 2, + "6935": 2, + "6939": 1, + "6940": 2, + "6941": 3, + "6942": 1, + "6943": 1, + "6944": 2, + "6946": 1, + "6952": 1, + "6956": 1, + "6959": 2, + "6962": 1, + "6965": 1, + "6966": 1, + "6969": 2, + "6970": 1, + "6973": 1, + "6974": 2, + "6975": 2, + "6976": 2, + "6977": 1, + "6978": 1, + "6981": 4, + "6983": 1, + "6984": 1, + "6991": 2, + "6992": 1, + "6993": 3, + "6994": 2, + "6995": 1, + "6996": 1, + "6997": 1, + "6999": 2, + "7000": 3, + "7002": 1, + "7003": 2, + "7005": 1, + "7008": 1, + "7010": 2, + "7011": 2, + "7012": 1, + "7013": 1, + "7014": 2, + "7015": 1, + "7016": 5, + "7021": 1, + "7023": 3, + "7024": 2, + "7025": 1, + "7026": 3, + "7027": 3, + "7028": 3, + "7030": 1, + "7032": 2, + "7033": 1, + "7034": 2, + "7035": 1, + "7036": 2, + "7038": 1, + "7039": 1, + "7041": 1, + "7042": 1, + "7044": 3, + "7045": 1, + "7047": 1, + "7048": 2, + "7049": 2, + "7051": 1, + "7052": 1, + "7055": 1, + "7056": 2, + "7057": 2, + "7060": 1, + "7061": 1, + "7062": 1, + "7063": 1, + "7064": 1, + "7067": 2, + "7068": 1, + "7070": 1, + "7071": 1, + "7072": 1, + "7074": 1, + "7075": 1, + "7077": 2, + "7078": 1, + "7079": 3, + "7081": 2, + "7082": 2, + "7083": 2, + "7084": 3, + "7085": 3, + "7088": 3, + "7089": 3, + "7090": 4, + "7091": 4, + "7092": 1, + "7093": 1, + "7094": 2, + "7095": 2, + "7096": 4, + "7097": 1, + "7098": 2, + "7099": 6, + "7100": 1, + "7102": 6, + "7103": 1, + "7104": 1, + "7105": 1, + "7106": 1, + "7107": 2, + "7108": 2, + "7109": 1, + "7110": 2, + "7111": 3, + "7112": 2, + "7113": 8, + "7114": 5, + "7115": 9, + "7116": 6, + "7117": 3, + "7118": 2, + "7119": 3, + "7120": 3, + "7121": 2, + "7122": 5, + "7123": 3, + "7124": 1, + "7126": 5, + "7127": 1, + "7128": 1, + "7129": 2, + "7131": 1, + "7132": 2, + "7133": 3, + "7134": 1, + "7135": 2, + "7136": 1, + "7137": 1, + "7138": 1, + "7139": 3, + "7140": 3, + "7141": 2, + "7143": 3, + "7144": 9, + "7145": 3, + "7146": 1, + "7147": 2, + "7148": 3, + "7149": 1, + "7150": 3, + "7151": 3, + "7152": 2, + "7153": 5, + "7154": 5, + "7155": 8, + "7156": 9, + "7157": 6, + "7158": 6, + "7159": 4, + "7160": 4, + "7161": 5, + "7163": 4, + "7164": 8, + "7165": 11, + "7166": 5, + "7167": 4, + "7168": 7, + "7169": 5, + "7170": 3, + "7171": 7, + "7172": 6, + "7173": 4, + "7174": 8, + "7175": 8, + "7176": 11, + "7177": 7, + "7178": 14, + "7179": 8, + "7180": 1, + "7181": 3, + "7182": 8, + "7183": 5, + "7184": 5, + "7185": 4, + "7186": 2, + "7187": 5, + "7188": 5, + "7189": 2, + "7190": 2, + "7191": 4, + "7192": 8, + "7193": 2, + "7194": 4, + "7195": 6, + "7196": 1, + "7197": 2, + "7198": 2, + "7199": 1, + "7201": 1, + "7202": 1, + "7204": 1, + "7205": 1, + "7206": 5, + "7209": 5, + "7210": 3, + "7211": 1, + "7213": 3, + "7214": 1, + "7215": 2, + "7216": 2, + "7217": 1, + "7218": 2, + "7219": 2, + "7220": 3, + "7221": 4, + "7222": 2, + "7223": 6, + "7224": 3, + "7225": 6, + "7226": 1, + "7227": 3, + "7228": 1, + "7229": 4, + "7230": 2, + "7231": 4, + "7233": 3, + "7234": 4, + "7235": 5, + "7236": 1, + "7237": 5, + "7238": 3, + "7239": 2, + "7240": 4, + "7241": 6, + "7242": 4, + "7243": 2, + "7244": 4, + "7245": 5, + "7246": 4, + "7247": 13, + "7248": 4, + "7249": 3, + "7250": 3, + "7251": 1, + "7252": 8, + "7253": 1, + "7254": 7, + "7255": 3, + "7256": 1, + "7257": 2, + "7258": 2, + "7259": 1, + "7260": 2, + "7261": 4, + "7263": 2, + "7264": 2, + "7265": 3, + "7266": 1, + "7267": 1, + "7268": 1, + "7269": 3, + "7271": 1, + "7272": 1, + "7275": 2, + "7276": 3, + "7277": 2, + "7278": 4, + "7279": 3, + "7280": 3, + "7281": 3, + "7282": 3, + "7283": 2, + "7284": 2, + "7285": 1, + "7286": 3, + "7287": 2, + "7289": 3, + "7290": 1, + "7291": 2, + "7300": 2, + "7301": 2, + "7303": 3, + "7304": 2, + "7306": 1, + "7307": 1, + "7309": 1, + "7310": 1, + "7311": 1, + "7312": 2, + "7315": 1, + "7317": 1, + "7318": 3, + "7320": 2, + "7322": 1, + "7323": 1, + "7325": 1, + "7327": 3, + "7328": 1, + "7329": 1, + "7331": 1, + "7332": 1, + "7337": 1, + "7340": 1, + "7342": 1, + "7343": 2, + "7344": 1, + "7345": 1 + }, + "started": "2025-09-11T20:06:37.866Z", + "trafficStats": { + "incomingCompressionRatio": 0.8512230224609375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 6973219, + "incomingOctetsWireLevel": 6981219, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0011472463434749431, + "outgoingCompressionRatio": 0.8512230224609375, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 6973219, + "outgoingOctetsWireLevel": 7083147, + "outgoingWebSocketFrames": 27751, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015764312005689195, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 26751, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 11, + "3": 8, + "4": 17, + "5": 10, + "6": 3, + "7": 5, + "8": 9, + "9": 5, + "10": 6, + "11": 6, + "12": 5, + "13": 7, + "14": 6, + "15": 3, + "16": 5, + "17": 6, + "18": 9, + "19": 3, + "20": 5, + "21": 8, + "22": 3, + "23": 5, + "24": 3, + "25": 2, + "26": 2, + "27": 1, + "28": 2, + "29": 1, + "30": 4, + "31": 1, + "32": 5, + "34": 2, + "35": 5, + "36": 3, + "37": 2, + "38": 1, + "39": 4, + "40": 1, + "41": 4, + "42": 2, + "43": 1, + "44": 4, + "45": 4, + "46": 3, + "47": 6, + "48": 3, + "49": 6, + "50": 3, + "51": 8, + "52": 3, + "53": 4, + "54": 1, + "55": 6, + "56": 6, + "57": 7, + "58": 2, + "59": 4, + "60": 5, + "61": 6, + "62": 1, + "63": 9, + "64": 3, + "65": 3, + "66": 5, + "67": 7, + "68": 4, + "69": 2, + "70": 6, + "71": 6, + "72": 5, + "73": 15, + "74": 5, + "75": 7, + "76": 6, + "77": 2, + "78": 9, + "79": 3, + "80": 8, + "81": 7, + "82": 4, + "83": 5, + "84": 3, + "85": 3, + "86": 4, + "87": 5, + "88": 2, + "89": 2, + "90": 3, + "91": 4, + "92": 5, + "93": 4, + "94": 3, + "95": 4, + "96": 2, + "97": 3, + "98": 6, + "99": 1, + "101": 2, + "102": 3, + "103": 3, + "104": 5, + "105": 6, + "106": 5, + "107": 4, + "108": 7, + "109": 5, + "110": 5, + "111": 2, + "112": 5, + "113": 3, + "114": 2, + "115": 6, + "116": 3, + "117": 3, + "118": 3, + "119": 3, + "120": 1, + "121": 3, + "123": 2, + "124": 1, + "126": 5, + "127": 4, + "131": 4, + "132": 4, + "133": 2, + "134": 2, + "135": 2, + "136": 1, + "137": 1, + "138": 1, + "139": 3, + "140": 4, + "141": 2, + "143": 2, + "144": 2, + "145": 2, + "146": 6, + "147": 2, + "148": 3, + "150": 2, + "151": 4, + "152": 1, + "153": 2, + "154": 1, + "155": 5, + "156": 3, + "157": 1, + "158": 1, + "159": 2, + "160": 1, + "161": 3, + "162": 1, + "163": 4, + "165": 3, + "166": 2, + "167": 3, + "168": 4, + "169": 3, + "170": 1, + "171": 2, + "172": 4, + "173": 4, + "174": 5, + "175": 6, + "176": 3, + "177": 1, + "178": 2, + "179": 3, + "180": 4, + "181": 3, + "182": 2, + "183": 7, + "184": 1, + "186": 6, + "187": 2, + "188": 1, + "189": 3, + "190": 1, + "191": 2, + "192": 2, + "193": 1, + "194": 2, + "195": 3, + "196": 2, + "197": 8, + "198": 5, + "199": 9, + "200": 7, + "201": 4, + "202": 2, + "203": 4, + "204": 5, + "205": 2, + "206": 6, + "207": 3, + "208": 1, + "210": 6, + "211": 2, + "212": 1, + "213": 3, + "214": 2, + "215": 1, + "216": 2, + "217": 3, + "218": 1, + "219": 2, + "220": 3, + "221": 1, + "222": 2, + "223": 5, + "224": 5, + "225": 2, + "226": 1, + "227": 4, + "228": 11, + "229": 5, + "230": 1, + "231": 3, + "232": 3, + "233": 4, + "234": 4, + "235": 3, + "236": 4, + "237": 6, + "238": 6, + "239": 10, + "240": 12, + "241": 8, + "242": 6, + "243": 6, + "244": 6, + "245": 6, + "247": 5, + "248": 8, + "249": 13, + "250": 9, + "251": 4, + "252": 9, + "253": 8, + "254": 3, + "255": 7, + "256": 7, + "257": 4, + "258": 9, + "259": 9, + "260": 26751 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333330266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821627042315cf" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "16270423" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_12.html b/autobahn/client/tungstenite_case_12_2_12.html new file mode 100644 index 0000000..b7c32e5 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_12.html @@ -0,0 +1,1143 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.12 : Pass - 1823 ms @ 2025-09-11T20:06:38.811Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=331&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: EmVhwmVPS5cHeCH2/otKvg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5COgRrgOkGKKu9amvHnYnZV34vU=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
10394110394
10445110445
10487110487
10500110500
10532110532
10555110555
10572110572
10579110579
10587110587
10656110656
10674110674
10716110716
10755110755
10757110757
10770110770
10779110779
10815110815
10867110867
10888110888
10893110893
10993110993
11023111023
11059111059
11072111072
11083111083
11156111156
11202111202
11218111218
11235111235
11250111250
11311111311
11366111366
11368111368
11385111385
11428111428
11477111477
11525111525
11537111537
11540111540
11584111584
11651111651
11669111669
11689111689
11721111721
11761111761
11767111767
11769111769
11771111771
11777111777
11792111792
11813111813
11814111814
11816111816
11823111823
11829111829
11841111841
11844111844
11848111848
11863111863
11867111867
11868111868
11896111896
11901111901
11905111905
11910111910
11912111912
11929111929
11945111945
11958111958
11967111967
11973111973
11988111988
12015112015
12021112021
12023112023
12038112038
12045112045
12066112066
12111224222
12127112127
12130112130
12144112144
12160224320
12173112173
12199224398
12225112225
12228112228
12239112239
12241112241
12273112273
12278112278
12280112280
12292112292
12321112321
12326112326
12345112345
12391112391
12400112400
12434112434
12437112437
12449112449
12504112504
12528112528
12555112555
12565112565
12620112620
12636112636
12667112667
12691112691
12709112709
12750112750
12786112786
12800112800
12805112805
12834112834
12876112876
12913112913
12922112922
12955112955
12974112974
12986112986
12990112990
13017113017
13033113033
13063113063
13074113074
13141113141
13155113155
13181113181
13186113186
13187113187
13227113227
13253113253
13273113273
13293113293
13338113338
13374113374
13375113375
13388113388
13410113410
13427113427
13469113469
13483113483
13519113519
13551113551
13566113566
13579113579
13592113592
13617113617
13642113642
13662113662
13672113672
13697113697
13722113722
13745113745
13747113747
13759113759
13770113770
13809113809
13827113827
13841113841
13845113845
13848113848
13850113850
13853227706
13854227708
13856113856
13857113857
13860113860
13861113861
13863113863
13866113866
13869227738
13870113870
13871227742
13873113873
13874113874
13880113880
13881113881
13882113882
13883113883
13887227774
13889113889
13890113890
13891113891
13896113896
13897113897
13898113898
13900113900
13901113901
13903113903
13907113907
13909113909
13912113912
13913113913
13914113914
13919113919
13929113929
13930227860
13932113932
13935113935
13936113936
13937113937
13940227880
13942227884
13950113950
13953113953
13959227918
13960113960
13967113967
13970113970
13972341916
13979113979
13981227962
13982113982
13986227972
13988113988
13990113990
13997227994
14001114001
14006114006
14007114007
14012114012
14014114014
14016228032
14017114017
14019114019
14023114023
14024570120
14029228058
14030114030
14031342093
14034228068
14035456140
14041114041
14043114043
14044342132
14047114047
14048114048
14049228098
14050228100
14051114051
14053228106
14055342165
14056228112
14057228114
14058456232
14060114060
14061228122
14062114062
14063228126
14064114064
14066114066
14067228134
14068342204
14069228138
14070114070
14071342213
14072114072
14073114073
14075114075
14077114077
14082114082
14083228166
14085228170
14091114091
14092114092
14093114093
14094114094
14096228192
14097114097
14098342294
14101114101
14104114104
14108228216
14109114109
14113114113
14115114115
14116114116
14117114117
14118114118
14121114121
14123114123
14126114126
14127114127
14128114128
14129114129
14130114130
14132228264
14133114133
14135114135
14136228272
14137114137
14139114139
14140228280
14141114141
14142228284
14144114144
14145114145
14146114146
14148114148
14150114150
14151114151
14153114153
14154114154
14155114155
14156342468
14157342471
14158342474
14159228318
14160228320
14161114161
14162114162
14164114164
14166342498
14168228336
14170114170
14173228346
14177342531
14178114178
14180228360
14181342543
14182456728
14183114183
14184114184
14186114186
14187114187
14188228376
14190228380
14195114195
14197114197
14198114198
14199114199
14201114201
14203114203
14205114205
14206114206
14208114208
14209114209
14210114210
14211114211
14212114212
14213114213
14214114214
14216228432
14217228434
14218228436
14219114219
14221114221
14222228444
14223228446
14224114224
14226114226
14228114228
14230114230
14233114233
14234228468
14235114235
14236114236
14237228474
14238342714
14240114240
14242114242
14247114247
14248114248
14250228500
14251342753
14253114253
14255342765
14256114256
14257342771
14258228516
14259114259
14260228520
14261342783
14264228528
14267228534
14268342804
14269457076
14270342810
14271457084
14272228544
14273114273
14275228550
14276114276
14277571385
14278342834
14279457116
14280114280
14281342843
14282342846
14283457132
14285457140
14286342858
14287571435
14288228576
14289457156
14290114290
14291114291
14293571465
14294114294
14295342885
14296342888
142977100079
14298457192
14299571495
143009128700
14301342903
14302685812
14303571515
14304228608
1430510143050
14306114306
14307342921
14308457232
14309342927
14310571550
14311228622
14312228624
14313457252
14314114314
14315457260
14316228632
14317571585
14318457272
14320342960
14321685926
14322342966
14323571615
14324457296
14325228650
14326228652
14327342981
14328457312
14329114329
14330114330
14331228662
14332342996
14333457332
14334343002
14335228670
14336228672
14338114338
14340114340
14341114341
14342228684
14343571715
14344114344
14345228690
14346571730
14347343041
14348228696
14349114349
14350228700
14351228702
14352228704
14353114353
14355343065
14357114357
14358114358
14360114360
14363228726
14367228734
14368228736
14369114369
14373228746
14374343122
14375114375
14377343131
14379114379
14380228760
14381114381
14383228766
14384228768
14387228774
14390114390
14392114392
14393228786
14394228788
14395114395
14396114396
14397228794
14398343194
14399114399
14400228800
14402114402
14403114403
14404343212
14406572030
14409457636
14410228820
14411114411
14412343236
14413228826
14414343242
14416228832
14417572085
14418228836
14419114419
14420114420
14421572105
14422343266
14423457692
14424114424
14425114425
14426114426
14427343281
14428228856
14429228858
14430114430
14431228862
14432114432
14434114434
14435228870
14436228872
14437343311
14438228876
14440457760
14441228882
14443228886
14444343332
14445114445
14446343338
14447114447
14448114448
14449228898
14450686700
14451343353
14452228904
14453457812
14454114454
144557101185
14456343368
14457457828
14458572290
14459114459
14460114460
14461343383
14462228924
14463343389
14464343392
14465114465
14466228932
14468343404
14470343410
14472114472
14473114473
14475114475
14476228952
14477343431
14478343434
14479228958
14481572405
14482114482
14483114483
14484228968
14485343455
14486114486
14487114487
14488114488
14489114489
14490114490
14491114491
14492114492
14494114494
14498114498
14499343497
14500229000
14501114501
14503229006
14504114504
14505229010
14507114507
14508343524
14510229020
14511229022
14512114512
14513114513
14514229028
14518114518
14519229038
14520114520
14524114524
14525114525
14526114526
14527229054
14528229056
14529114529
14533114533
14534114534
14535229070
14536114536
14538114538
14541114541
14543114543
Total100213931447
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
4624
5630
6318
7321
8324
9327
10550
11444
12560
13339
14114
15460
16116
18472
20240
21363
22244
23369
24248
25250
26378
274108
28256
29129
30390
315155
326192
33266
34134
354140
36136
37274
38276
393117
40280
417287
423126
433129
44288
453135
46292
47294
48148
49149
504200
515255
523156
534212
543162
553165
566336
575285
585290
593177
603180
612122
625310
646384
65165
662132
676402
685340
693207
7011770
716426
726432
735365
744296
756450
763228
773231
782156
797553
806480
815405
824328
832166
843252
855425
864344
874348
882176
894356
90190
913273
924368
933279
944376
956570
967672
972194
987686
993297
1003300
1013303
1026612
1031103
1045520
1052210
1064424
1074428
1086648
1096654
1104440
1115555
1124448
1138904
1144456
1156690
1166696
1173351
1181118
1196714
1204480
1213363
1226732
1235615
1244496
1253375
1264504
1271127
1305650
1312262
1326792
1333399
1342268
1352270
1362272
1376822
1385690
1395695
1401140
1415705
1424568
1432286
14471008
1455725
1462292
1471147
1481148
1493447
1505750
1514604
1522304
1535765
1545770
1562312
1571157
1584632
1593477
1604640
1612322
1621162
1635815
1642328
1654660
1662332
16761002
1683504
1693507
1703510
1715855
1722344
17361038
1745870
1752350
1762352
1773531
1783534
1793537
1803540
1821182
1832366
1845920
1855925
18661116
18781496
18861128
1894756
1901190
1913573
1922384
19381544
1944776
19571365
19671372
1974788
1985990
1994796
20181608
20251010
203112233
2042408
20551025
2064824
20751035
2081208
20961254
2101210
2113633
2124848
213102130
2144856
21561290
216132808
2173651
21861308
21961314
2203660
221122652
2223666
22351115
2244896
22551125
22651130
22751135
2284912
22971603
23051150
2314924
2323696
23381864
23451170
2354940
23651180
237102370
23861428
23971673
24071680
24151205
2424968
24392187
24461464
2453735
2461246
2474988
2483744
24951245
25041000
2512502
25241008
2531253
2542508
25541020
2563768
25761542
2583774
25961554
2605385014001000
Total5485214141928
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
053850
21000
81
Total54851
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333331266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882b5de117bb636
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6235646531313762
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_12.json b/autobahn/client/tungstenite_case_12_2_12.json new file mode 100644 index 0000000..61ed49e --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_12.json @@ -0,0 +1,990 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 331, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1823, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=331&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: EmVhwmVPS5cHeCH2/otKvg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5COgRrgOkGKKu9amvHnYnZV34vU=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "10394": 1, + "10445": 1, + "10487": 1, + "10500": 1, + "10532": 1, + "10555": 1, + "10572": 1, + "10579": 1, + "10587": 1, + "10656": 1, + "10674": 1, + "10716": 1, + "10755": 1, + "10757": 1, + "10770": 1, + "10779": 1, + "10815": 1, + "10867": 1, + "10888": 1, + "10893": 1, + "10993": 1, + "11023": 1, + "11059": 1, + "11072": 1, + "11083": 1, + "11156": 1, + "11202": 1, + "11218": 1, + "11235": 1, + "11250": 1, + "11311": 1, + "11366": 1, + "11368": 1, + "11385": 1, + "11428": 1, + "11477": 1, + "11525": 1, + "11537": 1, + "11540": 1, + "11584": 1, + "11651": 1, + "11669": 1, + "11689": 1, + "11721": 1, + "11761": 1, + "11767": 1, + "11769": 1, + "11771": 1, + "11777": 1, + "11792": 1, + "11813": 1, + "11814": 1, + "11816": 1, + "11823": 1, + "11829": 1, + "11841": 1, + "11844": 1, + "11848": 1, + "11863": 1, + "11867": 1, + "11868": 1, + "11896": 1, + "11901": 1, + "11905": 1, + "11910": 1, + "11912": 1, + "11929": 1, + "11945": 1, + "11958": 1, + "11967": 1, + "11973": 1, + "11988": 1, + "12015": 1, + "12021": 1, + "12023": 1, + "12038": 1, + "12045": 1, + "12066": 1, + "12111": 2, + "12127": 1, + "12130": 1, + "12144": 1, + "12160": 2, + "12173": 1, + "12199": 2, + "12225": 1, + "12228": 1, + "12239": 1, + "12241": 1, + "12273": 1, + "12278": 1, + "12280": 1, + "12292": 1, + "12321": 1, + "12326": 1, + "12345": 1, + "12391": 1, + "12400": 1, + "12434": 1, + "12437": 1, + "12449": 1, + "12504": 1, + "12528": 1, + "12555": 1, + "12565": 1, + "12620": 1, + "12636": 1, + "12667": 1, + "12691": 1, + "12709": 1, + "12750": 1, + "12786": 1, + "12800": 1, + "12805": 1, + "12834": 1, + "12876": 1, + "12913": 1, + "12922": 1, + "12955": 1, + "12974": 1, + "12986": 1, + "12990": 1, + "13017": 1, + "13033": 1, + "13063": 1, + "13074": 1, + "13141": 1, + "13155": 1, + "13181": 1, + "13186": 1, + "13187": 1, + "13227": 1, + "13253": 1, + "13273": 1, + "13293": 1, + "13338": 1, + "13374": 1, + "13375": 1, + "13388": 1, + "13410": 1, + "13427": 1, + "13469": 1, + "13483": 1, + "13519": 1, + "13551": 1, + "13566": 1, + "13579": 1, + "13592": 1, + "13617": 1, + "13642": 1, + "13662": 1, + "13672": 1, + "13697": 1, + "13722": 1, + "13745": 1, + "13747": 1, + "13759": 1, + "13770": 1, + "13809": 1, + "13827": 1, + "13841": 1, + "13845": 1, + "13848": 1, + "13850": 1, + "13853": 2, + "13854": 2, + "13856": 1, + "13857": 1, + "13860": 1, + "13861": 1, + "13863": 1, + "13866": 1, + "13869": 2, + "13870": 1, + "13871": 2, + "13873": 1, + "13874": 1, + "13880": 1, + "13881": 1, + "13882": 1, + "13883": 1, + "13887": 2, + "13889": 1, + "13890": 1, + "13891": 1, + "13896": 1, + "13897": 1, + "13898": 1, + "13900": 1, + "13901": 1, + "13903": 1, + "13907": 1, + "13909": 1, + "13912": 1, + "13913": 1, + "13914": 1, + "13919": 1, + "13929": 1, + "13930": 2, + "13932": 1, + "13935": 1, + "13936": 1, + "13937": 1, + "13940": 2, + "13942": 2, + "13950": 1, + "13953": 1, + "13959": 2, + "13960": 1, + "13967": 1, + "13970": 1, + "13972": 3, + "13979": 1, + "13981": 2, + "13982": 1, + "13986": 2, + "13988": 1, + "13990": 1, + "13997": 2, + "14001": 1, + "14006": 1, + "14007": 1, + "14012": 1, + "14014": 1, + "14016": 2, + "14017": 1, + "14019": 1, + "14023": 1, + "14024": 5, + "14029": 2, + "14030": 1, + "14031": 3, + "14034": 2, + "14035": 4, + "14041": 1, + "14043": 1, + "14044": 3, + "14047": 1, + "14048": 1, + "14049": 2, + "14050": 2, + "14051": 1, + "14053": 2, + "14055": 3, + "14056": 2, + "14057": 2, + "14058": 4, + "14060": 1, + "14061": 2, + "14062": 1, + "14063": 2, + "14064": 1, + "14066": 1, + "14067": 2, + "14068": 3, + "14069": 2, + "14070": 1, + "14071": 3, + "14072": 1, + "14073": 1, + "14075": 1, + "14077": 1, + "14082": 1, + "14083": 2, + "14085": 2, + "14091": 1, + "14092": 1, + "14093": 1, + "14094": 1, + "14096": 2, + "14097": 1, + "14098": 3, + "14101": 1, + "14104": 1, + "14108": 2, + "14109": 1, + "14113": 1, + "14115": 1, + "14116": 1, + "14117": 1, + "14118": 1, + "14121": 1, + "14123": 1, + "14126": 1, + "14127": 1, + "14128": 1, + "14129": 1, + "14130": 1, + "14132": 2, + "14133": 1, + "14135": 1, + "14136": 2, + "14137": 1, + "14139": 1, + "14140": 2, + "14141": 1, + "14142": 2, + "14144": 1, + "14145": 1, + "14146": 1, + "14148": 1, + "14150": 1, + "14151": 1, + "14153": 1, + "14154": 1, + "14155": 1, + "14156": 3, + "14157": 3, + "14158": 3, + "14159": 2, + "14160": 2, + "14161": 1, + "14162": 1, + "14164": 1, + "14166": 3, + "14168": 2, + "14170": 1, + "14173": 2, + "14177": 3, + "14178": 1, + "14180": 2, + "14181": 3, + "14182": 4, + "14183": 1, + "14184": 1, + "14186": 1, + "14187": 1, + "14188": 2, + "14190": 2, + "14195": 1, + "14197": 1, + "14198": 1, + "14199": 1, + "14201": 1, + "14203": 1, + "14205": 1, + "14206": 1, + "14208": 1, + "14209": 1, + "14210": 1, + "14211": 1, + "14212": 1, + "14213": 1, + "14214": 1, + "14216": 2, + "14217": 2, + "14218": 2, + "14219": 1, + "14221": 1, + "14222": 2, + "14223": 2, + "14224": 1, + "14226": 1, + "14228": 1, + "14230": 1, + "14233": 1, + "14234": 2, + "14235": 1, + "14236": 1, + "14237": 2, + "14238": 3, + "14240": 1, + "14242": 1, + "14247": 1, + "14248": 1, + "14250": 2, + "14251": 3, + "14253": 1, + "14255": 3, + "14256": 1, + "14257": 3, + "14258": 2, + "14259": 1, + "14260": 2, + "14261": 3, + "14264": 2, + "14267": 2, + "14268": 3, + "14269": 4, + "14270": 3, + "14271": 4, + "14272": 2, + "14273": 1, + "14275": 2, + "14276": 1, + "14277": 5, + "14278": 3, + "14279": 4, + "14280": 1, + "14281": 3, + "14282": 3, + "14283": 4, + "14285": 4, + "14286": 3, + "14287": 5, + "14288": 2, + "14289": 4, + "14290": 1, + "14291": 1, + "14293": 5, + "14294": 1, + "14295": 3, + "14296": 3, + "14297": 7, + "14298": 4, + "14299": 5, + "14300": 9, + "14301": 3, + "14302": 6, + "14303": 5, + "14304": 2, + "14305": 10, + "14306": 1, + "14307": 3, + "14308": 4, + "14309": 3, + "14310": 5, + "14311": 2, + "14312": 2, + "14313": 4, + "14314": 1, + "14315": 4, + "14316": 2, + "14317": 5, + "14318": 4, + "14320": 3, + "14321": 6, + "14322": 3, + "14323": 5, + "14324": 4, + "14325": 2, + "14326": 2, + "14327": 3, + "14328": 4, + "14329": 1, + "14330": 1, + "14331": 2, + "14332": 3, + "14333": 4, + "14334": 3, + "14335": 2, + "14336": 2, + "14338": 1, + "14340": 1, + "14341": 1, + "14342": 2, + "14343": 5, + "14344": 1, + "14345": 2, + "14346": 5, + "14347": 3, + "14348": 2, + "14349": 1, + "14350": 2, + "14351": 2, + "14352": 2, + "14353": 1, + "14355": 3, + "14357": 1, + "14358": 1, + "14360": 1, + "14363": 2, + "14367": 2, + "14368": 2, + "14369": 1, + "14373": 2, + "14374": 3, + "14375": 1, + "14377": 3, + "14379": 1, + "14380": 2, + "14381": 1, + "14383": 2, + "14384": 2, + "14387": 2, + "14390": 1, + "14392": 1, + "14393": 2, + "14394": 2, + "14395": 1, + "14396": 1, + "14397": 2, + "14398": 3, + "14399": 1, + "14400": 2, + "14402": 1, + "14403": 1, + "14404": 3, + "14406": 5, + "14409": 4, + "14410": 2, + "14411": 1, + "14412": 3, + "14413": 2, + "14414": 3, + "14416": 2, + "14417": 5, + "14418": 2, + "14419": 1, + "14420": 1, + "14421": 5, + "14422": 3, + "14423": 4, + "14424": 1, + "14425": 1, + "14426": 1, + "14427": 3, + "14428": 2, + "14429": 2, + "14430": 1, + "14431": 2, + "14432": 1, + "14434": 1, + "14435": 2, + "14436": 2, + "14437": 3, + "14438": 2, + "14440": 4, + "14441": 2, + "14443": 2, + "14444": 3, + "14445": 1, + "14446": 3, + "14447": 1, + "14448": 1, + "14449": 2, + "14450": 6, + "14451": 3, + "14452": 2, + "14453": 4, + "14454": 1, + "14455": 7, + "14456": 3, + "14457": 4, + "14458": 5, + "14459": 1, + "14460": 1, + "14461": 3, + "14462": 2, + "14463": 3, + "14464": 3, + "14465": 1, + "14466": 2, + "14468": 3, + "14470": 3, + "14472": 1, + "14473": 1, + "14475": 1, + "14476": 2, + "14477": 3, + "14478": 3, + "14479": 2, + "14481": 5, + "14482": 1, + "14483": 1, + "14484": 2, + "14485": 3, + "14486": 1, + "14487": 1, + "14488": 1, + "14489": 1, + "14490": 1, + "14491": 1, + "14492": 1, + "14494": 1, + "14498": 1, + "14499": 3, + "14500": 2, + "14501": 1, + "14503": 2, + "14504": 1, + "14505": 2, + "14507": 1, + "14508": 3, + "14510": 2, + "14511": 2, + "14512": 1, + "14513": 1, + "14514": 2, + "14518": 1, + "14519": 2, + "14520": 1, + "14524": 1, + "14525": 1, + "14526": 1, + "14527": 2, + "14528": 2, + "14529": 1, + "14533": 1, + "14534": 1, + "14535": 2, + "14536": 1, + "14538": 1, + "14541": 1, + "14543": 1 + }, + "started": "2025-09-11T20:06:38.811Z", + "trafficStats": { + "incomingCompressionRatio": 0.8498035888671875, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 13923182, + "incomingOctetsWireLevel": 13931182, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0005745812990162738, + "outgoingCompressionRatio": 0.8498035888671875, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 13923182, + "outgoingOctetsWireLevel": 14141672, + "outgoingWebSocketFrames": 54850, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015692533502758205, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 53850, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 6, + "5": 6, + "6": 3, + "7": 3, + "8": 3, + "9": 3, + "10": 5, + "11": 4, + "12": 5, + "13": 3, + "14": 1, + "15": 4, + "16": 1, + "18": 4, + "20": 2, + "21": 3, + "22": 2, + "23": 3, + "24": 2, + "25": 2, + "26": 3, + "27": 4, + "28": 2, + "29": 1, + "30": 3, + "31": 5, + "32": 6, + "33": 2, + "34": 1, + "35": 4, + "36": 1, + "37": 2, + "38": 2, + "39": 3, + "40": 2, + "41": 7, + "42": 3, + "43": 3, + "44": 2, + "45": 3, + "46": 2, + "47": 2, + "48": 1, + "49": 1, + "50": 4, + "51": 5, + "52": 3, + "53": 4, + "54": 3, + "55": 3, + "56": 6, + "57": 5, + "58": 5, + "59": 3, + "60": 3, + "61": 2, + "62": 5, + "64": 6, + "65": 1, + "66": 2, + "67": 6, + "68": 5, + "69": 3, + "70": 11, + "71": 6, + "72": 6, + "73": 5, + "74": 4, + "75": 6, + "76": 3, + "77": 3, + "78": 2, + "79": 7, + "80": 6, + "81": 5, + "82": 4, + "83": 2, + "84": 3, + "85": 5, + "86": 4, + "87": 4, + "88": 2, + "89": 4, + "90": 1, + "91": 3, + "92": 4, + "93": 3, + "94": 4, + "95": 6, + "96": 7, + "97": 2, + "98": 7, + "99": 3, + "100": 3, + "101": 3, + "102": 6, + "103": 1, + "104": 5, + "105": 2, + "106": 4, + "107": 4, + "108": 6, + "109": 6, + "110": 4, + "111": 5, + "112": 4, + "113": 8, + "114": 4, + "115": 6, + "116": 6, + "117": 3, + "118": 1, + "119": 6, + "120": 4, + "121": 3, + "122": 6, + "123": 5, + "124": 4, + "125": 3, + "126": 4, + "127": 1, + "130": 5, + "131": 2, + "132": 6, + "133": 3, + "134": 2, + "135": 2, + "136": 2, + "137": 6, + "138": 5, + "139": 5, + "140": 1, + "141": 5, + "142": 4, + "143": 2, + "144": 7, + "145": 5, + "146": 2, + "147": 1, + "148": 1, + "149": 3, + "150": 5, + "151": 4, + "152": 2, + "153": 5, + "154": 5, + "156": 2, + "157": 1, + "158": 4, + "159": 3, + "160": 4, + "161": 2, + "162": 1, + "163": 5, + "164": 2, + "165": 4, + "166": 2, + "167": 6, + "168": 3, + "169": 3, + "170": 3, + "171": 5, + "172": 2, + "173": 6, + "174": 5, + "175": 2, + "176": 2, + "177": 3, + "178": 3, + "179": 3, + "180": 3, + "182": 1, + "183": 2, + "184": 5, + "185": 5, + "186": 6, + "187": 8, + "188": 6, + "189": 4, + "190": 1, + "191": 3, + "192": 2, + "193": 8, + "194": 4, + "195": 7, + "196": 7, + "197": 4, + "198": 5, + "199": 4, + "201": 8, + "202": 5, + "203": 11, + "204": 2, + "205": 5, + "206": 4, + "207": 5, + "208": 1, + "209": 6, + "210": 1, + "211": 3, + "212": 4, + "213": 10, + "214": 4, + "215": 6, + "216": 13, + "217": 3, + "218": 6, + "219": 6, + "220": 3, + "221": 12, + "222": 3, + "223": 5, + "224": 4, + "225": 5, + "226": 5, + "227": 5, + "228": 4, + "229": 7, + "230": 5, + "231": 4, + "232": 3, + "233": 8, + "234": 5, + "235": 4, + "236": 5, + "237": 10, + "238": 6, + "239": 7, + "240": 7, + "241": 5, + "242": 4, + "243": 9, + "244": 6, + "245": 3, + "246": 1, + "247": 4, + "248": 3, + "249": 5, + "250": 4, + "251": 2, + "252": 4, + "253": 1, + "254": 2, + "255": 4, + "256": 3, + "257": 6, + "258": 3, + "259": 6, + "260": 53850 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333331266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b5de117bb636" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b5de117b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_13.html b/autobahn/client/tungstenite_case_12_2_13.html new file mode 100644 index 0000000..00d4e6a --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_13.html @@ -0,0 +1,1251 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.13 : Pass - 3200 ms @ 2025-09-11T20:06:40.636Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=332&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 9HccAzk/sbSQEO781MPPjA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: fj4a5KQdlYhNUYwuSeOBv3dHvnE=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
653016530
676616766
680516805
687816878
688716887
693016930
698316983
700717007
701517015
705317053
14284114284
14480114480
2172010217200
22873122873
22876122876
22885122885
22975122975
23046123046
23087123087
23102123102
23122123122
23162123162
23236123236
23238123238
23246123246
23259123259
23268123268
23275123275
23283123283
23291123291
23311123311
23354123354
23357123357
23375123375
23382123382
23403123403
23415123415
23454123454
23495123495
23537123537
23555123555
23572123572
23581123581
23614123614
23641123641
23661123661
23696123696
23740123740
23750123750
23778123778
23794123794
23846123846
23895123895
23925123925
23933123933
23955123955
23998123998
24074124074
24080124080
24099124099
24115124115
24168124168
24231124231
24261124261
24271124271
24292124292
24326124326
24388124388
24393124393
24438124438
24456124456
24476124476
24542124542
24565124565
24614124614
24624124624
24638124638
24697124697
24717124717
24758124758
24791124791
24809124809
24847124847
24883124883
24909124909
24912124912
24933124933
24952124952
24984124984
24993124993
25009125009
25027125027
25030125030
25046125046
25058125058
25085125085
25099125099
25132125132
25148125148
25185125185
25188125188
25206125206
25208125208
25244125244
25252125252
25299125299
25307125307
25332125332
25341125341
25349125349
25369125369
25381125381
25418125418
25448125448
25470250940
25499125499
25513125513
25525125525
25539125539
25564125564
25605125605
25616125616
25632125632
25646125646
25672125672
25673125673
25699125699
25707125707
25756125756
25766125766
25784125784
25793125793
25818125818
25834125834
25845125845
25850125850
25906125906
25925125925
25933125933
25956125956
25977125977
25980125980
25992125992
26000126000
26055126055
26068126068
26083126083
26108126108
26119126119
26130126130
26151126151
26156126156
26193126193
26203126203
26229126229
26243126243
26269126269
26271126271
26281126281
26298126298
26328126328
26346126346
26348126348
26361126361
26388252776
26408126408
26431126431
26459126459
26460126460
26476126476
26504126504
26522126522
26535126535
26550126550
26564126564
26565126565
26571126571
26608126608
26619126619
26620126620
26628126628
26654126654
26679126679
26699126699
26735126735
26748126748
26761126761
26831126831
26857126857
26899126899
26926126926
26944126944
26993126993
27016127016
27057127057
27074127074
27112127112
27132127132
27153127153
27202127202
27205127205
27265127265
27300127300
27314127314
27323127323
27334127334
27387127387
27429127429
27444127444
27466127466
27503127503
27508127508
27560127560
27564127564
27606127606
27624127624
27681127681
27684127684
27687127687
27740127740
27769127769
27794127794
27808127808
27845127845
27870127870
27880127880
27898127898
27911127911
27936127936
27968127968
27970127970
28002128002
28024128024
28031256062
28032128032
28036128036
28039256078
28040384120
28043256086
28044128044
28048384144
28050128050
28056128056
28057256114
28059384177
28060128060
28062128062
28063256126
28066128066
28070256140
28077256154
28080128080
28088128088
28089128089
28091384273
28092128092
28099256198
28104128104
28109128109
28112128112
28117256234
28119128119
28122128122
28125128125
28128256256
28129128129
28132128132
28134128134
28138128138
28139128139
28142128142
28148256296
28151128151
28153256306
28154128154
28158384474
28160256320
28161128161
28163256326
28164128164
28168256336
28169256338
28172128172
28174128174
28178128178
28180256360
28184256368
28185128185
28189128189
28190128190
28191128191
28192128192
28193128193
28194128194
28195128195
28196256392
28199128199
28200128200
28201256402
28202128202
28204128204
28206128206
28207128207
28209256418
28210384630
28211256422
28212128212
28213128213
28215256430
28216384648
28217128217
28218128218
28219128219
28221128221
28223128223
28224128224
28225256450
28227256454
28229128229
28231128231
28233128233
28234128234
28238128238
28241128241
28244128244
28245128245
28247128247
28248128248
28249256498
28250128250
28252128252
28255128255
28256128256
28257128257
28258256516
28259128259
28260256520
28261128261
28264128264
28265128265
28266128266
28267128267
28272384816
28273128273
28275256550
28276256552
28278128278
28279128279
28280128280
28282128282
28286256572
28289256578
282914113164
28295128295
28297256594
28301128301
28306128306
28307128307
28308128308
28310128310
28314128314
28315128315
28316256632
28317128317
28318256636
28319128319
28323128323
28326128326
28330128330
28332128332
28336128336
28337128337
28339128339
28340256680
28342128342
28346128346
28347128347
28348128348
28354256708
28362128362
28366256732
28369128369
28373128373
28376128376
28377385131
28378128378
28380385140
28382128382
28385128385
28387128387
28389128389
28390128390
28392256784
28395128395
28396128396
28397256794
28400128400
28403128403
28405128405
28408128408
28412128412
28416128416
28418256836
28421128421
28425128425
28426128426
28428128428
28429128429
28430128430
28436128436
28438128438
28439128439
28441128441
28442128442
28443128443
28446256892
28448256896
28454128454
28455256910
284584113832
28459128459
28465128465
28467256934
28469128469
28475128475
28476256952
28477128477
28478128478
28481256962
28484256968
28485256970
28486128486
284874113948
28488128488
28490128490
28493128493
28498128498
28500128500
28504128504
28505128505
28506128506
28507257014
28508128508
28510128510
28511128511
28512128512
28516128516
28517257034
28519128519
28521257042
28524257048
28526385578
28527128527
28529128529
285304114120
28531257062
28532257064
28533385599
28534385602
28535257070
28536385608
28537128537
28538257076
28539257078
28540128540
28542257084
28543128543
28544128544
28545257090
28547257094
28549128549
28552128552
28553128553
28555128555
28556257112
28557385671
28558257116
28559128559
28560128560
28561128561
28562128562
28563128563
28564257128
28566128566
28568128568
28570257140
28571128571
285724114288
28573128573
285744114296
28575257150
28576128576
28577128577
28578385734
285795142895
28581385743
28582128582
28583257166
28584128584
28585128585
28586257172
28588385764
28589128589
28592257184
28594257188
285955142975
28599257198
28600257200
28601257202
28602257204
286044114416
28605128605
28606257212
28607385821
28608385824
28609128609
28610128610
28611128611
28614257228
28615128615
28617257234
28618257236
28619128619
28620257240
28621385863
28623385869
28624128624
286255143125
28626128626
286274114508
286284114512
28629385887
28630128630
28631385893
28633128633
28635385905
28636385908
28637128637
28638257276
28639128639
28640385920
28641128641
28642385926
28643385929
28644128644
28645128645
28646257292
28647257294
286484114592
28649128649
28653128653
28654257308
28656128656
28657257314
28660128660
28662128662
28664128664
28666128666
28667128667
28674128674
28675257350
28678128678
28681386043
28682128682
28685128685
28687257374
28691128691
28694257388
28697128697
28702128702
28706128706
28709128709
28710128710
28711128711
28712128712
28716128716
28719128719
28722257444
28723128723
28724257448
28727128727
28728128728
287305143650
28731386193
28732257464
28733257466
28734128734
28737386211
28738257476
28739128739
28741257482
28742257484
28744257488
28745257490
28750128750
28753257506
28754386262
28756386268
28757257514
28758386274
28759128759
28761257522
28762128762
28763128763
28765128765
28766128766
28767257534
28768128768
28769128769
28770257540
28771257542
28772128772
28773128773
28776128776
28779128779
28782128782
28784128784
28786128786
28788128788
28789257578
28790257580
28795386385
28796128796
28797128797
28798128798
28800128800
28801386403
28802257604
28806386418
28808257616
28809257618
28810257620
28811257622
28813128813
28814257628
28815128815
28817128817
28819257638
28821128821
28822128822
28823128823
28824128824
28826128826
28828257656
28829257658
28830257660
28832128832
28833257666
28834128834
28835257670
28836128836
28838257676
28841128841
28843257686
28844128844
28845128845
28847128847
28848386544
28851128851
28853128853
28854128854
28855257710
288575144285
28858257716
28859257718
28860257720
28861128861
28862128862
28863128863
28865128865
28866386598
28867128867
28868128868
28870386610
28871128871
28872257744
288734115492
28874386622
28876128876
288774115508
28878257756
288794115516
288807202160
28881257762
28882128882
28883128883
28884128884
28885386655
28886257772
28887386661
28888386664
28889257778
28891128891
28892128892
28894128894
28895386685
28896257792
28897128897
289006173400
28901128901
28902128902
28906128906
28907128907
28908386724
28915128915
28917257834
28919128919
Total101327878381
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
224
3618
4416
515
6212
7214
8216
9436
10220
11111
12224
13226
14684
16348
17117
18236
19476
20120
21121
23246
245120
25250
265130
27254
28256
29258
30390
31393
324128
336198
343102
35270
365180
37137
384152
403120
413123
42142
433129
446264
457315
464184
47294
495245
504200
51151
527364
535265
545270
555275
565280
573171
583174
597413
604240
613183
623186
637441
644256
655325
664264
675335
684272
69169
713213
722144
73173
74174
754300
765380
785390
793237
804320
813243
822164
837581
844336
855425
866516
87187
882176
894356
903270
913273
925460
934372
946564
957665
97197
984392
993297
1001100
1014404
1023306
1032206
1044416
1053315
1064424
1073321
1085540
1094436
1106660
1117777
1128896
1134452
1147798
1154460
1164464
1175585
1184472
1192238
1207840
1213363
1223366
1238984
1242248
1257875
1261126
1271127
1303390
1313393
132101320
1336798
1342268
1355675
1363408
1376822
1384552
1392278
1406840
1412282
1424568
1435715
1443432
1451145
1463438
1471147
1484592
1492298
1505750
1516906
152121824
1535765
154101540
1556930
1563468
1574628
1585790
15981272
1603480
1613483
16271134
1634652
1642328
1654660
1663498
1672334
16861008
1694676
1711171
17271204
1733519
1743522
17571225
1762352
1772354
1785890
1794716
1804720
18181448
18261092
18371281
18491656
1852370
1864744
18761122
1883564
1893567
19071330
19161146
1923576
1933579
19491746
1954780
1963588
19761182
19861188
1992398
2003600
20181608
20251010
20391827
20491836
20581640
2062412
20761242
20861248
20991881
21051050
21181688
21251060
21361278
2143642
21561290
21681728
2172434
21861308
2194876
22071540
2214884
22251110
22351115
224102240
2253675
22651130
2272454
22892052
2293687
23051150
2314924
23251160
2333699
2343702
2363708
2373711
2381238
2393717
2404960
24151205
2421242
2432486
2442488
2453735
2464984
2474988
2484992
2492498
2503750
25241008
2531253
2543762
25551275
2562512
2573771
2583774
2592518
26010833628167360
Total10933828306854
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
0108336
21000
81
Total109337
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333332266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882c9c46314ca2c
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6339633436333134
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_13.json b/autobahn/client/tungstenite_case_12_2_13.json new file mode 100644 index 0000000..6c9a1bd --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_13.json @@ -0,0 +1,1098 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 332, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 3200, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=332&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 9HccAzk/sbSQEO781MPPjA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: fj4a5KQdlYhNUYwuSeOBv3dHvnE=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "6530": 1, + "6766": 1, + "6805": 1, + "6878": 1, + "6887": 1, + "6930": 1, + "6983": 1, + "7007": 1, + "7015": 1, + "7053": 1, + "14284": 1, + "14480": 1, + "21720": 10, + "22873": 1, + "22876": 1, + "22885": 1, + "22975": 1, + "23046": 1, + "23087": 1, + "23102": 1, + "23122": 1, + "23162": 1, + "23236": 1, + "23238": 1, + "23246": 1, + "23259": 1, + "23268": 1, + "23275": 1, + "23283": 1, + "23291": 1, + "23311": 1, + "23354": 1, + "23357": 1, + "23375": 1, + "23382": 1, + "23403": 1, + "23415": 1, + "23454": 1, + "23495": 1, + "23537": 1, + "23555": 1, + "23572": 1, + "23581": 1, + "23614": 1, + "23641": 1, + "23661": 1, + "23696": 1, + "23740": 1, + "23750": 1, + "23778": 1, + "23794": 1, + "23846": 1, + "23895": 1, + "23925": 1, + "23933": 1, + "23955": 1, + "23998": 1, + "24074": 1, + "24080": 1, + "24099": 1, + "24115": 1, + "24168": 1, + "24231": 1, + "24261": 1, + "24271": 1, + "24292": 1, + "24326": 1, + "24388": 1, + "24393": 1, + "24438": 1, + "24456": 1, + "24476": 1, + "24542": 1, + "24565": 1, + "24614": 1, + "24624": 1, + "24638": 1, + "24697": 1, + "24717": 1, + "24758": 1, + "24791": 1, + "24809": 1, + "24847": 1, + "24883": 1, + "24909": 1, + "24912": 1, + "24933": 1, + "24952": 1, + "24984": 1, + "24993": 1, + "25009": 1, + "25027": 1, + "25030": 1, + "25046": 1, + "25058": 1, + "25085": 1, + "25099": 1, + "25132": 1, + "25148": 1, + "25185": 1, + "25188": 1, + "25206": 1, + "25208": 1, + "25244": 1, + "25252": 1, + "25299": 1, + "25307": 1, + "25332": 1, + "25341": 1, + "25349": 1, + "25369": 1, + "25381": 1, + "25418": 1, + "25448": 1, + "25470": 2, + "25499": 1, + "25513": 1, + "25525": 1, + "25539": 1, + "25564": 1, + "25605": 1, + "25616": 1, + "25632": 1, + "25646": 1, + "25672": 1, + "25673": 1, + "25699": 1, + "25707": 1, + "25756": 1, + "25766": 1, + "25784": 1, + "25793": 1, + "25818": 1, + "25834": 1, + "25845": 1, + "25850": 1, + "25906": 1, + "25925": 1, + "25933": 1, + "25956": 1, + "25977": 1, + "25980": 1, + "25992": 1, + "26000": 1, + "26055": 1, + "26068": 1, + "26083": 1, + "26108": 1, + "26119": 1, + "26130": 1, + "26151": 1, + "26156": 1, + "26193": 1, + "26203": 1, + "26229": 1, + "26243": 1, + "26269": 1, + "26271": 1, + "26281": 1, + "26298": 1, + "26328": 1, + "26346": 1, + "26348": 1, + "26361": 1, + "26388": 2, + "26408": 1, + "26431": 1, + "26459": 1, + "26460": 1, + "26476": 1, + "26504": 1, + "26522": 1, + "26535": 1, + "26550": 1, + "26564": 1, + "26565": 1, + "26571": 1, + "26608": 1, + "26619": 1, + "26620": 1, + "26628": 1, + "26654": 1, + "26679": 1, + "26699": 1, + "26735": 1, + "26748": 1, + "26761": 1, + "26831": 1, + "26857": 1, + "26899": 1, + "26926": 1, + "26944": 1, + "26993": 1, + "27016": 1, + "27057": 1, + "27074": 1, + "27112": 1, + "27132": 1, + "27153": 1, + "27202": 1, + "27205": 1, + "27265": 1, + "27300": 1, + "27314": 1, + "27323": 1, + "27334": 1, + "27387": 1, + "27429": 1, + "27444": 1, + "27466": 1, + "27503": 1, + "27508": 1, + "27560": 1, + "27564": 1, + "27606": 1, + "27624": 1, + "27681": 1, + "27684": 1, + "27687": 1, + "27740": 1, + "27769": 1, + "27794": 1, + "27808": 1, + "27845": 1, + "27870": 1, + "27880": 1, + "27898": 1, + "27911": 1, + "27936": 1, + "27968": 1, + "27970": 1, + "28002": 1, + "28024": 1, + "28031": 2, + "28032": 1, + "28036": 1, + "28039": 2, + "28040": 3, + "28043": 2, + "28044": 1, + "28048": 3, + "28050": 1, + "28056": 1, + "28057": 2, + "28059": 3, + "28060": 1, + "28062": 1, + "28063": 2, + "28066": 1, + "28070": 2, + "28077": 2, + "28080": 1, + "28088": 1, + "28089": 1, + "28091": 3, + "28092": 1, + "28099": 2, + "28104": 1, + "28109": 1, + "28112": 1, + "28117": 2, + "28119": 1, + "28122": 1, + "28125": 1, + "28128": 2, + "28129": 1, + "28132": 1, + "28134": 1, + "28138": 1, + "28139": 1, + "28142": 1, + "28148": 2, + "28151": 1, + "28153": 2, + "28154": 1, + "28158": 3, + "28160": 2, + "28161": 1, + "28163": 2, + "28164": 1, + "28168": 2, + "28169": 2, + "28172": 1, + "28174": 1, + "28178": 1, + "28180": 2, + "28184": 2, + "28185": 1, + "28189": 1, + "28190": 1, + "28191": 1, + "28192": 1, + "28193": 1, + "28194": 1, + "28195": 1, + "28196": 2, + "28199": 1, + "28200": 1, + "28201": 2, + "28202": 1, + "28204": 1, + "28206": 1, + "28207": 1, + "28209": 2, + "28210": 3, + "28211": 2, + "28212": 1, + "28213": 1, + "28215": 2, + "28216": 3, + "28217": 1, + "28218": 1, + "28219": 1, + "28221": 1, + "28223": 1, + "28224": 1, + "28225": 2, + "28227": 2, + "28229": 1, + "28231": 1, + "28233": 1, + "28234": 1, + "28238": 1, + "28241": 1, + "28244": 1, + "28245": 1, + "28247": 1, + "28248": 1, + "28249": 2, + "28250": 1, + "28252": 1, + "28255": 1, + "28256": 1, + "28257": 1, + "28258": 2, + "28259": 1, + "28260": 2, + "28261": 1, + "28264": 1, + "28265": 1, + "28266": 1, + "28267": 1, + "28272": 3, + "28273": 1, + "28275": 2, + "28276": 2, + "28278": 1, + "28279": 1, + "28280": 1, + "28282": 1, + "28286": 2, + "28289": 2, + "28291": 4, + "28295": 1, + "28297": 2, + "28301": 1, + "28306": 1, + "28307": 1, + "28308": 1, + "28310": 1, + "28314": 1, + "28315": 1, + "28316": 2, + "28317": 1, + "28318": 2, + "28319": 1, + "28323": 1, + "28326": 1, + "28330": 1, + "28332": 1, + "28336": 1, + "28337": 1, + "28339": 1, + "28340": 2, + "28342": 1, + "28346": 1, + "28347": 1, + "28348": 1, + "28354": 2, + "28362": 1, + "28366": 2, + "28369": 1, + "28373": 1, + "28376": 1, + "28377": 3, + "28378": 1, + "28380": 3, + "28382": 1, + "28385": 1, + "28387": 1, + "28389": 1, + "28390": 1, + "28392": 2, + "28395": 1, + "28396": 1, + "28397": 2, + "28400": 1, + "28403": 1, + "28405": 1, + "28408": 1, + "28412": 1, + "28416": 1, + "28418": 2, + "28421": 1, + "28425": 1, + "28426": 1, + "28428": 1, + "28429": 1, + "28430": 1, + "28436": 1, + "28438": 1, + "28439": 1, + "28441": 1, + "28442": 1, + "28443": 1, + "28446": 2, + "28448": 2, + "28454": 1, + "28455": 2, + "28458": 4, + "28459": 1, + "28465": 1, + "28467": 2, + "28469": 1, + "28475": 1, + "28476": 2, + "28477": 1, + "28478": 1, + "28481": 2, + "28484": 2, + "28485": 2, + "28486": 1, + "28487": 4, + "28488": 1, + "28490": 1, + "28493": 1, + "28498": 1, + "28500": 1, + "28504": 1, + "28505": 1, + "28506": 1, + "28507": 2, + "28508": 1, + "28510": 1, + "28511": 1, + "28512": 1, + "28516": 1, + "28517": 2, + "28519": 1, + "28521": 2, + "28524": 2, + "28526": 3, + "28527": 1, + "28529": 1, + "28530": 4, + "28531": 2, + "28532": 2, + "28533": 3, + "28534": 3, + "28535": 2, + "28536": 3, + "28537": 1, + "28538": 2, + "28539": 2, + "28540": 1, + "28542": 2, + "28543": 1, + "28544": 1, + "28545": 2, + "28547": 2, + "28549": 1, + "28552": 1, + "28553": 1, + "28555": 1, + "28556": 2, + "28557": 3, + "28558": 2, + "28559": 1, + "28560": 1, + "28561": 1, + "28562": 1, + "28563": 1, + "28564": 2, + "28566": 1, + "28568": 1, + "28570": 2, + "28571": 1, + "28572": 4, + "28573": 1, + "28574": 4, + "28575": 2, + "28576": 1, + "28577": 1, + "28578": 3, + "28579": 5, + "28581": 3, + "28582": 1, + "28583": 2, + "28584": 1, + "28585": 1, + "28586": 2, + "28588": 3, + "28589": 1, + "28592": 2, + "28594": 2, + "28595": 5, + "28599": 2, + "28600": 2, + "28601": 2, + "28602": 2, + "28604": 4, + "28605": 1, + "28606": 2, + "28607": 3, + "28608": 3, + "28609": 1, + "28610": 1, + "28611": 1, + "28614": 2, + "28615": 1, + "28617": 2, + "28618": 2, + "28619": 1, + "28620": 2, + "28621": 3, + "28623": 3, + "28624": 1, + "28625": 5, + "28626": 1, + "28627": 4, + "28628": 4, + "28629": 3, + "28630": 1, + "28631": 3, + "28633": 1, + "28635": 3, + "28636": 3, + "28637": 1, + "28638": 2, + "28639": 1, + "28640": 3, + "28641": 1, + "28642": 3, + "28643": 3, + "28644": 1, + "28645": 1, + "28646": 2, + "28647": 2, + "28648": 4, + "28649": 1, + "28653": 1, + "28654": 2, + "28656": 1, + "28657": 2, + "28660": 1, + "28662": 1, + "28664": 1, + "28666": 1, + "28667": 1, + "28674": 1, + "28675": 2, + "28678": 1, + "28681": 3, + "28682": 1, + "28685": 1, + "28687": 2, + "28691": 1, + "28694": 2, + "28697": 1, + "28702": 1, + "28706": 1, + "28709": 1, + "28710": 1, + "28711": 1, + "28712": 1, + "28716": 1, + "28719": 1, + "28722": 2, + "28723": 1, + "28724": 2, + "28727": 1, + "28728": 1, + "28730": 5, + "28731": 3, + "28732": 2, + "28733": 2, + "28734": 1, + "28737": 3, + "28738": 2, + "28739": 1, + "28741": 2, + "28742": 2, + "28744": 2, + "28745": 2, + "28750": 1, + "28753": 2, + "28754": 3, + "28756": 3, + "28757": 2, + "28758": 3, + "28759": 1, + "28761": 2, + "28762": 1, + "28763": 1, + "28765": 1, + "28766": 1, + "28767": 2, + "28768": 1, + "28769": 1, + "28770": 2, + "28771": 2, + "28772": 1, + "28773": 1, + "28776": 1, + "28779": 1, + "28782": 1, + "28784": 1, + "28786": 1, + "28788": 1, + "28789": 2, + "28790": 2, + "28795": 3, + "28796": 1, + "28797": 1, + "28798": 1, + "28800": 1, + "28801": 3, + "28802": 2, + "28806": 3, + "28808": 2, + "28809": 2, + "28810": 2, + "28811": 2, + "28813": 1, + "28814": 2, + "28815": 1, + "28817": 1, + "28819": 2, + "28821": 1, + "28822": 1, + "28823": 1, + "28824": 1, + "28826": 1, + "28828": 2, + "28829": 2, + "28830": 2, + "28832": 1, + "28833": 2, + "28834": 1, + "28835": 2, + "28836": 1, + "28838": 2, + "28841": 1, + "28843": 2, + "28844": 1, + "28845": 1, + "28847": 1, + "28848": 3, + "28851": 1, + "28853": 1, + "28854": 1, + "28855": 2, + "28857": 5, + "28858": 2, + "28859": 2, + "28860": 2, + "28861": 1, + "28862": 1, + "28863": 1, + "28865": 1, + "28866": 3, + "28867": 1, + "28868": 1, + "28870": 3, + "28871": 1, + "28872": 2, + "28873": 4, + "28874": 3, + "28876": 1, + "28877": 4, + "28878": 2, + "28879": 4, + "28880": 7, + "28881": 2, + "28882": 1, + "28883": 1, + "28884": 1, + "28885": 3, + "28886": 2, + "28887": 3, + "28888": 3, + "28889": 2, + "28891": 1, + "28892": 1, + "28894": 1, + "28895": 3, + "28896": 2, + "28897": 1, + "28900": 6, + "28901": 1, + "28902": 1, + "28906": 1, + "28907": 1, + "28908": 3, + "28915": 1, + "28917": 2, + "28919": 1 + }, + "started": "2025-09-11T20:06:40.636Z", + "trafficStats": { + "incomingCompressionRatio": 0.8505284423828126, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 27870116, + "incomingOctetsWireLevel": 27878116, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0002870458092101231, + "outgoingCompressionRatio": 0.8505284423828126, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 27870116, + "outgoingOctetsWireLevel": 28306598, + "outgoingWebSocketFrames": 109336, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015661291111956622, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 108336, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 2, + "3": 6, + "4": 4, + "5": 1, + "6": 2, + "7": 2, + "8": 2, + "9": 4, + "10": 2, + "11": 1, + "12": 2, + "13": 2, + "14": 6, + "16": 3, + "17": 1, + "18": 2, + "19": 4, + "20": 1, + "21": 1, + "23": 2, + "24": 5, + "25": 2, + "26": 5, + "27": 2, + "28": 2, + "29": 2, + "30": 3, + "31": 3, + "32": 4, + "33": 6, + "34": 3, + "35": 2, + "36": 5, + "37": 1, + "38": 4, + "40": 3, + "41": 3, + "42": 1, + "43": 3, + "44": 6, + "45": 7, + "46": 4, + "47": 2, + "49": 5, + "50": 4, + "51": 1, + "52": 7, + "53": 5, + "54": 5, + "55": 5, + "56": 5, + "57": 3, + "58": 3, + "59": 7, + "60": 4, + "61": 3, + "62": 3, + "63": 7, + "64": 4, + "65": 5, + "66": 4, + "67": 5, + "68": 4, + "69": 1, + "71": 3, + "72": 2, + "73": 1, + "74": 1, + "75": 4, + "76": 5, + "78": 5, + "79": 3, + "80": 4, + "81": 3, + "82": 2, + "83": 7, + "84": 4, + "85": 5, + "86": 6, + "87": 1, + "88": 2, + "89": 4, + "90": 3, + "91": 3, + "92": 5, + "93": 4, + "94": 6, + "95": 7, + "97": 1, + "98": 4, + "99": 3, + "100": 1, + "101": 4, + "102": 3, + "103": 2, + "104": 4, + "105": 3, + "106": 4, + "107": 3, + "108": 5, + "109": 4, + "110": 6, + "111": 7, + "112": 8, + "113": 4, + "114": 7, + "115": 4, + "116": 4, + "117": 5, + "118": 4, + "119": 2, + "120": 7, + "121": 3, + "122": 3, + "123": 8, + "124": 2, + "125": 7, + "126": 1, + "127": 1, + "130": 3, + "131": 3, + "132": 10, + "133": 6, + "134": 2, + "135": 5, + "136": 3, + "137": 6, + "138": 4, + "139": 2, + "140": 6, + "141": 2, + "142": 4, + "143": 5, + "144": 3, + "145": 1, + "146": 3, + "147": 1, + "148": 4, + "149": 2, + "150": 5, + "151": 6, + "152": 12, + "153": 5, + "154": 10, + "155": 6, + "156": 3, + "157": 4, + "158": 5, + "159": 8, + "160": 3, + "161": 3, + "162": 7, + "163": 4, + "164": 2, + "165": 4, + "166": 3, + "167": 2, + "168": 6, + "169": 4, + "171": 1, + "172": 7, + "173": 3, + "174": 3, + "175": 7, + "176": 2, + "177": 2, + "178": 5, + "179": 4, + "180": 4, + "181": 8, + "182": 6, + "183": 7, + "184": 9, + "185": 2, + "186": 4, + "187": 6, + "188": 3, + "189": 3, + "190": 7, + "191": 6, + "192": 3, + "193": 3, + "194": 9, + "195": 4, + "196": 3, + "197": 6, + "198": 6, + "199": 2, + "200": 3, + "201": 8, + "202": 5, + "203": 9, + "204": 9, + "205": 8, + "206": 2, + "207": 6, + "208": 6, + "209": 9, + "210": 5, + "211": 8, + "212": 5, + "213": 6, + "214": 3, + "215": 6, + "216": 8, + "217": 2, + "218": 6, + "219": 4, + "220": 7, + "221": 4, + "222": 5, + "223": 5, + "224": 10, + "225": 3, + "226": 5, + "227": 2, + "228": 9, + "229": 3, + "230": 5, + "231": 4, + "232": 5, + "233": 3, + "234": 3, + "236": 3, + "237": 3, + "238": 1, + "239": 3, + "240": 4, + "241": 5, + "242": 1, + "243": 2, + "244": 2, + "245": 3, + "246": 4, + "247": 4, + "248": 4, + "249": 2, + "250": 3, + "252": 4, + "253": 1, + "254": 3, + "255": 5, + "256": 2, + "257": 3, + "258": 3, + "259": 2, + "260": 108336 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333332266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c9c46314ca2c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c9c46314" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_14.html b/autobahn/client/tungstenite_case_12_2_14.html new file mode 100644 index 0000000..ffd213c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_14.html @@ -0,0 +1,1286 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.14 : Pass - 6066 ms @ 2025-09-11T20:06:43.837Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=333&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ONOAXFrGJ7zL7zYGtWUAZQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: IDHUFnT1ZxzMrNtFewIrWMpA5PI=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
596915969
14480114480
43211143211
50680150680
51274151274
51298151298
51309151309
51342151342
51345151345
51357151357
51372151372
51379151379
51382151382
51385151385
51391151391
51398151398
51403151403
51421151421
51427151427
51445151445
51451151451
51465151465
51470151470
51474151474
51487151487
51494151494
51495151495
51497151497
51505151505
51507151507
51523151523
51528151528
51529151529
515352103070
51541151541
51548151548
51549151549
51551151551
51554151554
51555151555
51564151564
51571151571
515732103146
51574151574
51585151585
515902103180
51592151592
51598151598
51599151599
516002103200
516032103206
51605151605
516063154818
51607151607
51608151608
51614151614
51615151615
51616151616
51617151617
51618151618
516222103244
51630151630
516313154893
516422103284
51665151665
516662103332
51682151682
51686151686
51688151688
51690151690
51692151692
51701151701
51720151720
517222103444
51733151733
517352103470
51743151743
51744151744
51762151762
51766151766
51767151767
51770151770
51773151773
51776151776
51777151777
517792103558
51784151784
51789151789
51790151790
517932103586
51799151799
51802151802
51806151806
51811151811
51813151813
51819151819
51820151820
51822151822
51826151826
51827151827
518282103656
51829151829
51830151830
518312103662
51832151832
51833151833
51835151835
51838151838
51840151840
51843151843
518452103690
51846151846
51847151847
51852151852
518533155559
51854151854
51856151856
51857151857
51858151858
518593155577
51890151890
51896151896
51906151906
51909151909
51942151942
51967151967
51983151983
52019152019
52056152056
52070152070
52113152113
52145152145
52158152158
52176152176
52199152199
52235152235
52284152284
52307152307
52330152330
52344152344
52365152365
52419152419
52445152445
52476152476
52495152495
52524152524
52605152605
52627152627
52687152687
52704152704
52706152706
52789152789
52800152800
52857152857
52893152893
52907152907
52970152970
52995152995
53055153055
53057153057
53098153098
53130153130
53152153152
53205153205
53222153222
53273153273
53299153299
53331153331
53354153354
53368153368
53370153370
53420153420
53435153435
53438153438
53478153478
53487153487
53504153504
53516153516
53547153547
53556153556
53598153598
53608153608
53622153622
53640153640
53651153651
53671153671
53690153690
53693153693
53729153729
53753153753
53780153780
53795153795
53799153799
53809153809
53852153852
53868153868
53876153876
53907153907
53921153921
53951153951
53957153957
53966153966
53995153995
54028154028
54040154040
54047154047
54093154093
54109154109
54119154119
54134154134
54148154148
54181154181
54194154194
54220154220
54277154277
54283154283
54296154296
54315154315
54330154330
54349154349
54351154351
54380154380
54428154428
54435154435
54446154446
54475154475
54483154483
54507154507
54516154516
54541154541
54576154576
54589154589
54617154617
54623154623
54643154643
54657154657
54683154683
54709154709
54713154713
54732154732
54749154749
54760154760
54817154817
54822154822
54851154851
54857154857
54881154881
54893154893
54901154901
54919154919
54944154944
54984154984
54994154994
55002155002
550352110070
55052155052
55058155058
55080155080
55103155103
55104155104
55140155140
55142155142
55177155177
55180155180
55200155200
55212155212
55213155213
55226155226
55250155250
55262155262
55271155271
55296155296
55305155305
55324155324
55336155336
55350155350
55354155354
55372155372
55404155404
55426155426
55432155432
55441155441
554722110944
55484155484
55498155498
55500155500
55527155527
55538155538
55540155540
55555155555
55561155561
55565155565
55587155587
55595155595
55608155608
55664155664
55667155667
55670155670
55707155707
55720155720
55757155757
55784155784
55823155823
55831155831
55859155859
55870155870
55901155901
55922155922
55928155928
55971155971
56023156023
56034156034
56046156046
56075156075
56096156096
56131156131
56132156132
56154156154
56177156177
562152112430
56241156241
56242156242
56273156273
56299156299
56311156311
56354156354
56389156389
56390156390
56415156415
56418156418
56432156432
56442156442
56458156458
56472156472
56489156489
56519156519
56525156525
56529156529
56537156537
56555156555
56565156565
56572156572
56573156573
56578156578
56586156586
56587156587
565942113188
56600156600
56611156611
56613156613
56615156615
56616156616
566182113236
56624156624
56626156626
566273169881
56628156628
566302113260
56631156631
56633156633
56635156635
56636156636
566382113276
566392113278
56641156641
566423169926
56643156643
56644156644
56646156646
566474226588
56649156649
566502113300
56653156653
56654156654
56656156656
56661156661
566622113324
56663156663
56664156664
566702113340
56678156678
56679156679
56683156683
56684156684
566852113370
56687156687
566902113380
566962113392
56698156698
56699156699
56700156700
56701156701
567022113404
56704156704
567084226832
567114226844
56712156712
567162113432
567192113438
567202113440
567212113442
56722156722
567252113450
56726156726
56727156727
56729156729
567352113470
56736156736
567382113476
56744156744
56745156745
56748156748
56751156751
567522113504
56757156757
56758156758
567602113520
56763156763
56765156765
567673170301
567702113540
56772156772
56774156774
56776156776
56778156778
56779156779
56782156782
56791156791
567943170382
56795156795
567982113596
56803156803
56804156804
56805156805
56810156810
568113170433
56812156812
56821156821
568222113644
56823156823
56825156825
56827156827
56829156829
56832156832
56834156834
56837156837
568382113676
568392113678
56848156848
568502113700
568533170559
56854156854
56855156855
56857156857
56858156858
56859156859
56860156860
56865156865
56866156866
568672113734
56869156869
56871156871
56889156889
56894156894
56916156916
56918156918
56935156935
56941156941
56968156968
56974156974
569762113952
56978156978
56997156997
57004157004
57006157006
57008157008
57021157021
57026157026
57029157029
57036157036
57038157038
570532114106
57068157068
57081157081
57083157083
57085157085
57088157088
57089157089
57090157090
57092157092
57093157093
570952114190
57096157096
570972114194
570992114198
57100157100
57102157102
571044228416
571052114210
57106157106
571072114214
571082114216
571092114218
571113171333
57112157112
571132114226
571142114228
571164228464
571173171351
571185285590
571193171357
571202114240
571212114242
57122157122
571233171369
571242114248
57125157125
571263171378
571275285635
571286342768
571294228516
57130157130
571316342786
571324228528
571333171399
571342114268
571354228540
571363171408
571373171411
571383171414
57139157139
571403171420
571412114282
571425285710
571433171429
571443171432
571454228580
571463171438
571472114294
571483171444
571495285745
571504228600
571513171453
571522114304
57153157153
571543171462
57155157155
571562114312
57157157157
571582114316
571596342954
571612114322
571623171486
57163157163
571662114332
571672114334
571682114336
571694228676
57171157171
571722114344
571732114346
571743171522
57175157175
57177157177
571782114356
57185157185
57187157187
571902114380
57194157194
57196157196
57201157201
57205157205
57209157209
572142114428
57215157215
572192114438
572202114440
57223157223
57227157227
57229157229
57230157230
57231157231
57234157234
572362114472
57238157238
57239157239
57240157240
57242157242
57243157243
57246157246
57250157250
57254157254
57255157255
57257157257
572592114518
57264157264
572652114530
572663171798
57271157271
57272157272
57273157273
572802114560
57284157284
57285157285
57288157288
57289157289
57290157290
57291157291
57295157295
57298157298
57300157300
57301157301
57304157304
57306157306
573072114614
57308157308
573092114618
573122114624
57313157313
57318157318
573222114644
573232114646
57324157324
57325157325
57326157326
57327157327
573284229312
573292114658
57333157333
57335157335
57336157336
573372114674
573382114676
573402114680
573422114684
573452114690
57347157347
57348157348
573492114698
57350157350
57353157353
573544229416
573572114714
57360157360
57363157363
573662114732
57367157367
57368157368
57370157370
57372157372
57374157374
573753172125
573763172128
57378157378
573792114758
57380157380
57381157381
57383157383
573842114768
57388157388
57390157390
57391157391
57396157396
57397157397
573982114796
57400157400
574012114802
57402157402
57403157403
57405157405
57406157406
574072114814
57408157408
574102114820
57412157412
57415157415
57416157416
57418157418
57419157419
57421157421
57423157423
57424157424
57426157426
57427157427
574282114856
574293172287
57430157430
574313172293
574322114864
574332114866
574342114868
574362114872
574382114876
574403172320
574412114882
57442157442
57444157444
57446157446
574472114894
574492114898
57453157453
57455157455
57458157458
57461157461
574642114928
574673172401
57468157468
57471157471
574732114946
574762114952
57477157477
57482157482
57483157483
57488157488
574912114982
57492157492
57493157493
57495157495
574962114992
574973172491
574982114996
57499157499
57500157500
57503157503
575042115008
57505157505
575062115012
57507157507
57508157508
57509157509
575112115022
57513157513
57517157517
57518157518
575202115040
57522157522
57523157523
575272115054
57529157529
Total100455760530
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
224
3618
4832
5630
6424
7428
8216
9327
10660
11222
12784
13339
14342
15690
16348
178136
18590
19476
20480
21121
227154
23369
246144
259225
267182
274108
284112
2910290
30390
314124
325160
3310330
3411374
355175
363108
379333
386228
393117
403120
415205
425210
435215
445220
458360
466276
474188
4811528
495245
505250
518408
527364
534212
545270
558440
569504
579513
586348
594236
608480
617427
625310
632126
644256
6511715
663198
676402
687476
692138
70170
715355
724288
736438
744296
756450
76176
774308
785390
797553
807560
816486
824328
834332
846504
85185
864344
873261
886528
893267
903270
914364
924368
933279
942188
95195
966576
975485
98198
992198
1004400
1012202
1027714
1036618
1041104
1052210
1062212
1072214
1085540
1094436
1103330
1116666
1125560
1132226
1148912
1153345
1163348
1175585
1182236
1192238
1205600
1212242
1222244
1234492
1241124
1253375
12691134
1273381
1303390
1317917
1325660
1331133
1343402
1352270
1364544
1375685
1385690
1394556
14081120
1416846
1424568
143101430
1443432
1454580
1465730
1476882
1485740
1494596
1503450
1514604
1522304
1532306
1542308
1554620
15671092
1573471
1586948
1593477
1601160
1613483
1623486
1634652
1642328
1654660
1673501
1685840
1692338
1704680
1714684
17281376
1734692
17471218
1752350
1772354
1782356
1793537
1804720
1814724
1824728
1832366
1841184
1853555
1862372
1875935
1882376
1904760
1911191
1922384
1934772
1942388
1951195
1963588
1971197
1983594
1994796
2004800
2012402
2023606
2032406
2041204
2053615
20651030
2071207
2081208
2092418
2112422
2121212
2131213
21451070
2153645
2161216
21771519
2183654
2203660
2212442
2223666
2232446
2241224
2251225
22651130
2273681
2283684
23051150
23192079
2324928
2331233
2342468
2352470
2364944
2372474
2381238
2402480
24151205
2422484
2433729
2441244
24551225
2462492
24751235
2484992
2493747
2502500
2511251
25251260
2533759
2543762
2553765
2562512
25751285
2583774
25941036
26021735556512300
Total21835756624755
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
0217355
21000
81
Total218356
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333333266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882f933c299fadb
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6639333363323939
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_14.json b/autobahn/client/tungstenite_case_12_2_14.json new file mode 100644 index 0000000..c320472 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_14.json @@ -0,0 +1,1133 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 333, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 6066, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=333&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ONOAXFrGJ7zL7zYGtWUAZQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: IDHUFnT1ZxzMrNtFewIrWMpA5PI=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5969": 1, + "14480": 1, + "43211": 1, + "50680": 1, + "51274": 1, + "51298": 1, + "51309": 1, + "51342": 1, + "51345": 1, + "51357": 1, + "51372": 1, + "51379": 1, + "51382": 1, + "51385": 1, + "51391": 1, + "51398": 1, + "51403": 1, + "51421": 1, + "51427": 1, + "51445": 1, + "51451": 1, + "51465": 1, + "51470": 1, + "51474": 1, + "51487": 1, + "51494": 1, + "51495": 1, + "51497": 1, + "51505": 1, + "51507": 1, + "51523": 1, + "51528": 1, + "51529": 1, + "51535": 2, + "51541": 1, + "51548": 1, + "51549": 1, + "51551": 1, + "51554": 1, + "51555": 1, + "51564": 1, + "51571": 1, + "51573": 2, + "51574": 1, + "51585": 1, + "51590": 2, + "51592": 1, + "51598": 1, + "51599": 1, + "51600": 2, + "51603": 2, + "51605": 1, + "51606": 3, + "51607": 1, + "51608": 1, + "51614": 1, + "51615": 1, + "51616": 1, + "51617": 1, + "51618": 1, + "51622": 2, + "51630": 1, + "51631": 3, + "51642": 2, + "51665": 1, + "51666": 2, + "51682": 1, + "51686": 1, + "51688": 1, + "51690": 1, + "51692": 1, + "51701": 1, + "51720": 1, + "51722": 2, + "51733": 1, + "51735": 2, + "51743": 1, + "51744": 1, + "51762": 1, + "51766": 1, + "51767": 1, + "51770": 1, + "51773": 1, + "51776": 1, + "51777": 1, + "51779": 2, + "51784": 1, + "51789": 1, + "51790": 1, + "51793": 2, + "51799": 1, + "51802": 1, + "51806": 1, + "51811": 1, + "51813": 1, + "51819": 1, + "51820": 1, + "51822": 1, + "51826": 1, + "51827": 1, + "51828": 2, + "51829": 1, + "51830": 1, + "51831": 2, + "51832": 1, + "51833": 1, + "51835": 1, + "51838": 1, + "51840": 1, + "51843": 1, + "51845": 2, + "51846": 1, + "51847": 1, + "51852": 1, + "51853": 3, + "51854": 1, + "51856": 1, + "51857": 1, + "51858": 1, + "51859": 3, + "51890": 1, + "51896": 1, + "51906": 1, + "51909": 1, + "51942": 1, + "51967": 1, + "51983": 1, + "52019": 1, + "52056": 1, + "52070": 1, + "52113": 1, + "52145": 1, + "52158": 1, + "52176": 1, + "52199": 1, + "52235": 1, + "52284": 1, + "52307": 1, + "52330": 1, + "52344": 1, + "52365": 1, + "52419": 1, + "52445": 1, + "52476": 1, + "52495": 1, + "52524": 1, + "52605": 1, + "52627": 1, + "52687": 1, + "52704": 1, + "52706": 1, + "52789": 1, + "52800": 1, + "52857": 1, + "52893": 1, + "52907": 1, + "52970": 1, + "52995": 1, + "53055": 1, + "53057": 1, + "53098": 1, + "53130": 1, + "53152": 1, + "53205": 1, + "53222": 1, + "53273": 1, + "53299": 1, + "53331": 1, + "53354": 1, + "53368": 1, + "53370": 1, + "53420": 1, + "53435": 1, + "53438": 1, + "53478": 1, + "53487": 1, + "53504": 1, + "53516": 1, + "53547": 1, + "53556": 1, + "53598": 1, + "53608": 1, + "53622": 1, + "53640": 1, + "53651": 1, + "53671": 1, + "53690": 1, + "53693": 1, + "53729": 1, + "53753": 1, + "53780": 1, + "53795": 1, + "53799": 1, + "53809": 1, + "53852": 1, + "53868": 1, + "53876": 1, + "53907": 1, + "53921": 1, + "53951": 1, + "53957": 1, + "53966": 1, + "53995": 1, + "54028": 1, + "54040": 1, + "54047": 1, + "54093": 1, + "54109": 1, + "54119": 1, + "54134": 1, + "54148": 1, + "54181": 1, + "54194": 1, + "54220": 1, + "54277": 1, + "54283": 1, + "54296": 1, + "54315": 1, + "54330": 1, + "54349": 1, + "54351": 1, + "54380": 1, + "54428": 1, + "54435": 1, + "54446": 1, + "54475": 1, + "54483": 1, + "54507": 1, + "54516": 1, + "54541": 1, + "54576": 1, + "54589": 1, + "54617": 1, + "54623": 1, + "54643": 1, + "54657": 1, + "54683": 1, + "54709": 1, + "54713": 1, + "54732": 1, + "54749": 1, + "54760": 1, + "54817": 1, + "54822": 1, + "54851": 1, + "54857": 1, + "54881": 1, + "54893": 1, + "54901": 1, + "54919": 1, + "54944": 1, + "54984": 1, + "54994": 1, + "55002": 1, + "55035": 2, + "55052": 1, + "55058": 1, + "55080": 1, + "55103": 1, + "55104": 1, + "55140": 1, + "55142": 1, + "55177": 1, + "55180": 1, + "55200": 1, + "55212": 1, + "55213": 1, + "55226": 1, + "55250": 1, + "55262": 1, + "55271": 1, + "55296": 1, + "55305": 1, + "55324": 1, + "55336": 1, + "55350": 1, + "55354": 1, + "55372": 1, + "55404": 1, + "55426": 1, + "55432": 1, + "55441": 1, + "55472": 2, + "55484": 1, + "55498": 1, + "55500": 1, + "55527": 1, + "55538": 1, + "55540": 1, + "55555": 1, + "55561": 1, + "55565": 1, + "55587": 1, + "55595": 1, + "55608": 1, + "55664": 1, + "55667": 1, + "55670": 1, + "55707": 1, + "55720": 1, + "55757": 1, + "55784": 1, + "55823": 1, + "55831": 1, + "55859": 1, + "55870": 1, + "55901": 1, + "55922": 1, + "55928": 1, + "55971": 1, + "56023": 1, + "56034": 1, + "56046": 1, + "56075": 1, + "56096": 1, + "56131": 1, + "56132": 1, + "56154": 1, + "56177": 1, + "56215": 2, + "56241": 1, + "56242": 1, + "56273": 1, + "56299": 1, + "56311": 1, + "56354": 1, + "56389": 1, + "56390": 1, + "56415": 1, + "56418": 1, + "56432": 1, + "56442": 1, + "56458": 1, + "56472": 1, + "56489": 1, + "56519": 1, + "56525": 1, + "56529": 1, + "56537": 1, + "56555": 1, + "56565": 1, + "56572": 1, + "56573": 1, + "56578": 1, + "56586": 1, + "56587": 1, + "56594": 2, + "56600": 1, + "56611": 1, + "56613": 1, + "56615": 1, + "56616": 1, + "56618": 2, + "56624": 1, + "56626": 1, + "56627": 3, + "56628": 1, + "56630": 2, + "56631": 1, + "56633": 1, + "56635": 1, + "56636": 1, + "56638": 2, + "56639": 2, + "56641": 1, + "56642": 3, + "56643": 1, + "56644": 1, + "56646": 1, + "56647": 4, + "56649": 1, + "56650": 2, + "56653": 1, + "56654": 1, + "56656": 1, + "56661": 1, + "56662": 2, + "56663": 1, + "56664": 1, + "56670": 2, + "56678": 1, + "56679": 1, + "56683": 1, + "56684": 1, + "56685": 2, + "56687": 1, + "56690": 2, + "56696": 2, + "56698": 1, + "56699": 1, + "56700": 1, + "56701": 1, + "56702": 2, + "56704": 1, + "56708": 4, + "56711": 4, + "56712": 1, + "56716": 2, + "56719": 2, + "56720": 2, + "56721": 2, + "56722": 1, + "56725": 2, + "56726": 1, + "56727": 1, + "56729": 1, + "56735": 2, + "56736": 1, + "56738": 2, + "56744": 1, + "56745": 1, + "56748": 1, + "56751": 1, + "56752": 2, + "56757": 1, + "56758": 1, + "56760": 2, + "56763": 1, + "56765": 1, + "56767": 3, + "56770": 2, + "56772": 1, + "56774": 1, + "56776": 1, + "56778": 1, + "56779": 1, + "56782": 1, + "56791": 1, + "56794": 3, + "56795": 1, + "56798": 2, + "56803": 1, + "56804": 1, + "56805": 1, + "56810": 1, + "56811": 3, + "56812": 1, + "56821": 1, + "56822": 2, + "56823": 1, + "56825": 1, + "56827": 1, + "56829": 1, + "56832": 1, + "56834": 1, + "56837": 1, + "56838": 2, + "56839": 2, + "56848": 1, + "56850": 2, + "56853": 3, + "56854": 1, + "56855": 1, + "56857": 1, + "56858": 1, + "56859": 1, + "56860": 1, + "56865": 1, + "56866": 1, + "56867": 2, + "56869": 1, + "56871": 1, + "56889": 1, + "56894": 1, + "56916": 1, + "56918": 1, + "56935": 1, + "56941": 1, + "56968": 1, + "56974": 1, + "56976": 2, + "56978": 1, + "56997": 1, + "57004": 1, + "57006": 1, + "57008": 1, + "57021": 1, + "57026": 1, + "57029": 1, + "57036": 1, + "57038": 1, + "57053": 2, + "57068": 1, + "57081": 1, + "57083": 1, + "57085": 1, + "57088": 1, + "57089": 1, + "57090": 1, + "57092": 1, + "57093": 1, + "57095": 2, + "57096": 1, + "57097": 2, + "57099": 2, + "57100": 1, + "57102": 1, + "57104": 4, + "57105": 2, + "57106": 1, + "57107": 2, + "57108": 2, + "57109": 2, + "57111": 3, + "57112": 1, + "57113": 2, + "57114": 2, + "57116": 4, + "57117": 3, + "57118": 5, + "57119": 3, + "57120": 2, + "57121": 2, + "57122": 1, + "57123": 3, + "57124": 2, + "57125": 1, + "57126": 3, + "57127": 5, + "57128": 6, + "57129": 4, + "57130": 1, + "57131": 6, + "57132": 4, + "57133": 3, + "57134": 2, + "57135": 4, + "57136": 3, + "57137": 3, + "57138": 3, + "57139": 1, + "57140": 3, + "57141": 2, + "57142": 5, + "57143": 3, + "57144": 3, + "57145": 4, + "57146": 3, + "57147": 2, + "57148": 3, + "57149": 5, + "57150": 4, + "57151": 3, + "57152": 2, + "57153": 1, + "57154": 3, + "57155": 1, + "57156": 2, + "57157": 1, + "57158": 2, + "57159": 6, + "57161": 2, + "57162": 3, + "57163": 1, + "57166": 2, + "57167": 2, + "57168": 2, + "57169": 4, + "57171": 1, + "57172": 2, + "57173": 2, + "57174": 3, + "57175": 1, + "57177": 1, + "57178": 2, + "57185": 1, + "57187": 1, + "57190": 2, + "57194": 1, + "57196": 1, + "57201": 1, + "57205": 1, + "57209": 1, + "57214": 2, + "57215": 1, + "57219": 2, + "57220": 2, + "57223": 1, + "57227": 1, + "57229": 1, + "57230": 1, + "57231": 1, + "57234": 1, + "57236": 2, + "57238": 1, + "57239": 1, + "57240": 1, + "57242": 1, + "57243": 1, + "57246": 1, + "57250": 1, + "57254": 1, + "57255": 1, + "57257": 1, + "57259": 2, + "57264": 1, + "57265": 2, + "57266": 3, + "57271": 1, + "57272": 1, + "57273": 1, + "57280": 2, + "57284": 1, + "57285": 1, + "57288": 1, + "57289": 1, + "57290": 1, + "57291": 1, + "57295": 1, + "57298": 1, + "57300": 1, + "57301": 1, + "57304": 1, + "57306": 1, + "57307": 2, + "57308": 1, + "57309": 2, + "57312": 2, + "57313": 1, + "57318": 1, + "57322": 2, + "57323": 2, + "57324": 1, + "57325": 1, + "57326": 1, + "57327": 1, + "57328": 4, + "57329": 2, + "57333": 1, + "57335": 1, + "57336": 1, + "57337": 2, + "57338": 2, + "57340": 2, + "57342": 2, + "57345": 2, + "57347": 1, + "57348": 1, + "57349": 2, + "57350": 1, + "57353": 1, + "57354": 4, + "57357": 2, + "57360": 1, + "57363": 1, + "57366": 2, + "57367": 1, + "57368": 1, + "57370": 1, + "57372": 1, + "57374": 1, + "57375": 3, + "57376": 3, + "57378": 1, + "57379": 2, + "57380": 1, + "57381": 1, + "57383": 1, + "57384": 2, + "57388": 1, + "57390": 1, + "57391": 1, + "57396": 1, + "57397": 1, + "57398": 2, + "57400": 1, + "57401": 2, + "57402": 1, + "57403": 1, + "57405": 1, + "57406": 1, + "57407": 2, + "57408": 1, + "57410": 2, + "57412": 1, + "57415": 1, + "57416": 1, + "57418": 1, + "57419": 1, + "57421": 1, + "57423": 1, + "57424": 1, + "57426": 1, + "57427": 1, + "57428": 2, + "57429": 3, + "57430": 1, + "57431": 3, + "57432": 2, + "57433": 2, + "57434": 2, + "57436": 2, + "57438": 2, + "57440": 3, + "57441": 2, + "57442": 1, + "57444": 1, + "57446": 1, + "57447": 2, + "57449": 2, + "57453": 1, + "57455": 1, + "57458": 1, + "57461": 1, + "57464": 2, + "57467": 3, + "57468": 1, + "57471": 1, + "57473": 2, + "57476": 2, + "57477": 1, + "57482": 1, + "57483": 1, + "57488": 1, + "57491": 2, + "57492": 1, + "57493": 1, + "57495": 1, + "57496": 2, + "57497": 3, + "57498": 2, + "57499": 1, + "57500": 1, + "57503": 1, + "57504": 2, + "57505": 1, + "57506": 2, + "57507": 1, + "57508": 1, + "57509": 1, + "57511": 2, + "57513": 1, + "57517": 1, + "57518": 1, + "57520": 2, + "57522": 1, + "57523": 1, + "57527": 2, + "57529": 1 + }, + "started": "2025-09-11T20:06:43.837Z", + "trafficStats": { + "incomingCompressionRatio": 0.8507120513916016, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 55752265, + "incomingOctetsWireLevel": 55760265, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00014349192808579166, + "outgoingCompressionRatio": 0.8507120513916016, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 55752265, + "outgoingOctetsWireLevel": 56624499, + "outgoingWebSocketFrames": 218355, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0156448173002478, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 217355, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 2, + "3": 6, + "4": 8, + "5": 6, + "6": 4, + "7": 4, + "8": 2, + "9": 3, + "10": 6, + "11": 2, + "12": 7, + "13": 3, + "14": 3, + "15": 6, + "16": 3, + "17": 8, + "18": 5, + "19": 4, + "20": 4, + "21": 1, + "22": 7, + "23": 3, + "24": 6, + "25": 9, + "26": 7, + "27": 4, + "28": 4, + "29": 10, + "30": 3, + "31": 4, + "32": 5, + "33": 10, + "34": 11, + "35": 5, + "36": 3, + "37": 9, + "38": 6, + "39": 3, + "40": 3, + "41": 5, + "42": 5, + "43": 5, + "44": 5, + "45": 8, + "46": 6, + "47": 4, + "48": 11, + "49": 5, + "50": 5, + "51": 8, + "52": 7, + "53": 4, + "54": 5, + "55": 8, + "56": 9, + "57": 9, + "58": 6, + "59": 4, + "60": 8, + "61": 7, + "62": 5, + "63": 2, + "64": 4, + "65": 11, + "66": 3, + "67": 6, + "68": 7, + "69": 2, + "70": 1, + "71": 5, + "72": 4, + "73": 6, + "74": 4, + "75": 6, + "76": 1, + "77": 4, + "78": 5, + "79": 7, + "80": 7, + "81": 6, + "82": 4, + "83": 4, + "84": 6, + "85": 1, + "86": 4, + "87": 3, + "88": 6, + "89": 3, + "90": 3, + "91": 4, + "92": 4, + "93": 3, + "94": 2, + "95": 1, + "96": 6, + "97": 5, + "98": 1, + "99": 2, + "100": 4, + "101": 2, + "102": 7, + "103": 6, + "104": 1, + "105": 2, + "106": 2, + "107": 2, + "108": 5, + "109": 4, + "110": 3, + "111": 6, + "112": 5, + "113": 2, + "114": 8, + "115": 3, + "116": 3, + "117": 5, + "118": 2, + "119": 2, + "120": 5, + "121": 2, + "122": 2, + "123": 4, + "124": 1, + "125": 3, + "126": 9, + "127": 3, + "130": 3, + "131": 7, + "132": 5, + "133": 1, + "134": 3, + "135": 2, + "136": 4, + "137": 5, + "138": 5, + "139": 4, + "140": 8, + "141": 6, + "142": 4, + "143": 10, + "144": 3, + "145": 4, + "146": 5, + "147": 6, + "148": 5, + "149": 4, + "150": 3, + "151": 4, + "152": 2, + "153": 2, + "154": 2, + "155": 4, + "156": 7, + "157": 3, + "158": 6, + "159": 3, + "160": 1, + "161": 3, + "162": 3, + "163": 4, + "164": 2, + "165": 4, + "167": 3, + "168": 5, + "169": 2, + "170": 4, + "171": 4, + "172": 8, + "173": 4, + "174": 7, + "175": 2, + "177": 2, + "178": 2, + "179": 3, + "180": 4, + "181": 4, + "182": 4, + "183": 2, + "184": 1, + "185": 3, + "186": 2, + "187": 5, + "188": 2, + "190": 4, + "191": 1, + "192": 2, + "193": 4, + "194": 2, + "195": 1, + "196": 3, + "197": 1, + "198": 3, + "199": 4, + "200": 4, + "201": 2, + "202": 3, + "203": 2, + "204": 1, + "205": 3, + "206": 5, + "207": 1, + "208": 1, + "209": 2, + "211": 2, + "212": 1, + "213": 1, + "214": 5, + "215": 3, + "216": 1, + "217": 7, + "218": 3, + "220": 3, + "221": 2, + "222": 3, + "223": 2, + "224": 1, + "225": 1, + "226": 5, + "227": 3, + "228": 3, + "230": 5, + "231": 9, + "232": 4, + "233": 1, + "234": 2, + "235": 2, + "236": 4, + "237": 2, + "238": 1, + "240": 2, + "241": 5, + "242": 2, + "243": 3, + "244": 1, + "245": 5, + "246": 2, + "247": 5, + "248": 4, + "249": 3, + "250": 2, + "251": 1, + "252": 5, + "253": 3, + "254": 3, + "255": 3, + "256": 2, + "257": 5, + "258": 3, + "259": 4, + "260": 217355 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333333266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f933c299fadb" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f933c299" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_15.html b/autobahn/client/tungstenite_case_12_2_15.html new file mode 100644 index 0000000..4d87fd2 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_15.html @@ -0,0 +1,1376 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.15 : Pass - 11460 ms @ 2025-09-11T20:06:49.904Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=334&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: a4FoUBr+/XzcWtpISj1/6w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xH0vzeTARnY6LwDWt1eFQkKLpTs=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
13406113406
42541142541
42557142557
42563142563
42582142582
42585142585
42588142588
42597285194
42600142600
42602285204
42604142604
42627142627
42628142628
42635142635
42638142638
42640142640
42641285282
42645142645
42656142656
42658142658
42661142661
42662142662
42671142671
42672142672
42673142673
42675142675
42677285354
42684142684
42685142685
42689142689
42690142690
42692142692
42695142695
42696142696
42698285396
42699142699
42704142704
42706142706
42714142714
42719142719
42724142724
42727142727
42730142730
42734142734
42740142740
42741142741
42746142746
42747285494
42749142749
42755285510
42773142773
42774142774
42778142778
42781142781
42783142783
42785142785
42789285578
42792142792
42793142793
42794285588
42799142799
42800142800
42806142806
42810142810
42821285642
42822142822
42824285648
42826142826
42830285660
42833142833
42834142834
42836142836
42838142838
42839142839
42843142843
428473128541
42851285702
42859142859
42862285724
42863142863
42869142869
42870142870
42873285746
42875142875
42876285752
42877142877
42882285764
42883142883
42885142885
42887142887
42892285784
42893142893
42897142897
428983128694
429063128718
42907142907
42908142908
42911285822
42912285824
42915142915
42920142920
42927142927
42929142929
42932142932
42934285868
42935142935
42937142937
42943142943
42944142944
42945142945
42948285896
42951142951
42955285910
42956142956
42957142957
42960142960
42961142961
42964142964
42965142965
42976142976
42977142977
42979285958
42980142980
42984142984
42986142986
42988142988
42991285982
42992142992
42993142993
42998142998
43000143000
43004143004
43008143008
43012143012
43017143017
43019143019
430513129153
43055143055
43058143058
43063143063
43070143070
43073143073
43085143085
43087143087
43089143089
43090143090
43094143094
43099286198
43100143100
43103143103
43115143115
43119143119
43121143121
43127286254
43147143147
43149143149
43150143150
43154143154
43157143157
43174143174
43177143177
43183143183
43190286380
43192286384
43211143211
43215286430
43219143219
43225143225
43232286464
43237143237
43240143240
43246143246
43248143248
43254143254
43255143255
43259143259
43260143260
43268143268
43269143269
43275143275
43283143283
43284143284
43285143285
43287143287
43291143291
43295143295
43301143301
43306143306
43308143308
43312286624
43314143314
43317143317
43320286640
43325143325
43326286652
43328143328
43333143333
43336143336
43338143338
43340143340
43341143341
43346143346
43350143350
43351286702
43355286710
43356286712
43367143367
43369143369
43370143370
43374143374
43375143375
43376143376
43381143381
43386143386
43388286776
43389143389
43391143391
43392143392
43396143396
43397143397
43400143400
43405143405
43411143411
43413143413
43414286828
43417143417
43419143419
43420143420
43421143421
43423143423
43424143424
43426286852
43429143429
43431143431
43433286866
43434286868
43435143435
43438143438
43439143439
43440286880
43441143441
43445143445
43447143447
43448143448
43449143449
43450286900
43452143452
43454143454
43455143455
434593130377
43461143461
43463143463
43469143469
43474143474
43477286954
43479143479
43482143482
43483143483
43488143488
43489143489
434903130470
43492143492
43493143493
43494143494
43495286990
43496143496
43497143497
43501287002
43503143503
435043130512
43505143505
43508287016
43511143511
43512287024
43514143514
43517143517
43522143522
43528143528
43536143536
43548143548
43563143563
43566143566
43567143567
43569143569
43570143570
43572143572
43575143575
43577143577
43585287170
43597287194
43598143598
43600143600
43601143601
43605287210
43606287212
43610143610
43613143613
43615143615
43616143616
43622143622
43625143625
43632143632
43633143633
43635143635
43636143636
43640143640
43644143644
43650143650
43654143654
43658143658
43661143661
43672143672
43674143674
43675143675
43677143677
43682143682
43687143687
43690143690
43691143691
43694143694
43695143695
43703143703
43704287408
43705143705
43710143710
43712143712
437133131139
43716143716
43720143720
43726143726
43738143738
43785143785
43820143820
43822143822
43891143891
43905143905
43952143952
43964143964
43986143986
44047144047
44052144052
44122144122
44145144145
44192144192
44224144224
44279144279
44297144297
44310144310
44370144370
44382144382
44439144439
44453144453
44473144473
44496144496
44533144533
44555144555
44558144558
44599144599
44614144614
44627144627
44637144637
44638144638
44663144663
44725144725
44727144727
44736144736
44776144776
44798144798
44821144821
44847144847
44864144864
44895144895
44908144908
44944144944
44947144947
44954144954
44972144972
45008145008
45072145072
45088145088
45089145089
45134145134
45150145150
45170145170
45201145201
45231145231
45236145236
45250145250
45291290582
45303145303
45331145331
45371145371
45394145394
45413145413
45414145414
45433145433
45444145444
45471145471
45475145475
45487145487
45513145513
45565145565
45573145573
45578145578
45601145601
45646145646
45670145670
45678145678
45679145679
45708145708
45754145754
45757145757
45768145768
45774145774
45818145818
45829145829
45850145850
45856145856
45892145892
45906145906
45920145920
45929145929
45950145950
45953145953
45996291992
46011146011
46015146015
46051146051
46061146061
46084146084
46093146093
46108146108
46130146130
46136146136
46144146144
46163146163
46188146188
46208146208
46216146216
46235146235
46261146261
46266146266
46294146294
46309146309
46322146322
46326146326
46372146372
46374146374
46375146375
46409146409
46430146430
46431146431
46447146447
46480146480
46510146510
46511146511
46532146532
46550146550
46573146573
46574146574
46580146580
46627146627
46651146651
46659146659
46666146666
46685146685
46712146712
46737146737
46739146739
46744146744
46775146775
46796146796
46817146817
46827146827
46847146847
46850146850
46864146864
46886146886
46897146897
46916146916
46926146926
46943146943
46954146954
46964146964
47000147000
47008147008
47009147009
47046147046
47047147047
47058147058
47061147061
47082147082
47093147093
47102147102
47111147111
47149147149
47163147163
47200147200
47220147220
47223147223
47262147262
47320147320
47351147351
47366147366
47387147387
47427147427
47467147467
47497147497
47528147528
47558147558
47600147600
47629147629
47635147635
47678147678
47703147703
47762147762
47771147771
47785147785
47830147830
47865147865
47921147921
47937147937
47986295972
47994147994
48055148055
48059148059
48082148082
48095148095
48133148133
48141148141
48147148147
48178148178
48182148182
48188148188
48189148189
48190148190
48191148191
48193148193
481943144582
481963144588
48197296394
48198296396
48199296398
48201148201
482023144606
48204148204
48206148206
48207148207
48215148215
48216148216
48217148217
48220148220
48221148221
48228148228
48229148229
48231148231
48233148233
48235296470
48241148241
48244148244
48248148248
48253148253
48257148257
48260148260
48264148264
48273148273
48274148274
48279148279
48290148290
48291296582
48294148294
48301148301
48307148307
48317148317
48319148319
48324148324
48329148329
48333296666
48334148334
48342148342
48345148345
48350148350
48359148359
48363148363
48366148366
48370148370
48372148372
48378148378
48379148379
48382148382
48385148385
48389148389
48400296800
48401148401
48404148404
48410148410
48411148411
48412148412
48415148415
48423148423
48424148424
48427148427
48428148428
48435148435
48438148438
48442148442
48444148444
48451296902
48462148462
48466148466
48468148468
48469148469
48474148474
48475296950
48477148477
48478148478
48480148480
48481148481
48492148492
48493148493
48500148500
48506148506
48507148507
48509148509
48511148511
48513148513
48514148514
48516148516
48518297036
48519148519
48520148520
48521148521
48523148523
48528148528
48531148531
48532297064
48535148535
48537148537
48538148538
48542148542
48545148545
48546148546
48552148552
48555297110
48556148556
48558148558
48559148559
48562148562
48564148564
48565297130
48566148566
48570148570
485713145713
48572148572
485733145719
48574148574
48575297150
48577148577
48579297158
485803145740
48581148581
48582148582
485885242940
48591297182
48592297184
485934194372
48595148595
48597148597
48603297206
48611148611
48612297224
48613297226
48614148614
48616148616
48618148618
486203145860
48624148624
48625148625
48626148626
48627297254
48629148629
48631148631
48632148632
48634297268
48636148636
48638297276
48640148640
48643297286
48644148644
48647297294
48648148648
48652297304
48653148653
48655148655
48656148656
48662148662
48664148664
48668148668
48674148674
48679148679
48680148680
48702148702
48707148707
48727148727
48736148736
48757148757
48760148760
48776148776
48778148778
48782148782
48785148785
48798148798
48811148811
48815148815
48822148822
48828148828
48832148832
48841148841
48855148855
48869148869
48883148883
48889148889
48890148890
48895148895
48925148925
48928148928
48937148937
48941148941
48949148949
48950148950
48965148965
48970148970
48976148976
48979148979
48981148981
48984297968
48989148989
48990297980
48991148991
48994297988
48996297992
48997148997
489993146997
49002298004
49004149004
49006149006
49008149008
49009149009
49010149010
49011149011
490123147036
490133147039
49014298028
49015149015
49016149016
49017298034
490183147054
49019149019
49020149020
490214196084
49025298050
49026149026
49027298054
49029298058
49030298060
49031298062
49033298066
49034149034
49035298070
49036149036
490373147111
490383147114
49039298078
49041298082
49043298086
49044149044
49045149045
49046149046
49047149047
49048298096
49050149050
49051149051
49052149052
49053149053
49054149054
49056149056
49061149061
49064298128
49065149065
49066149066
49067149067
49069298138
49070149070
49071149071
49072298144
49076149076
49078298156
49079298158
49080149080
49081149081
490833147249
49084149084
49085149085
490893147267
490903147270
490923147276
490933147279
49094149094
49096298192
49097149097
490983147294
49099298198
49100149100
49101298202
49103149103
49104149104
49105149105
49108149108
49109149109
49111149111
49114149114
49115149115
49117298234
49120149120
49121149121
49143149143
49147149147
57920157920
651603195480
65464704582480
6553692660686336
Total2003111487823
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
224
326
4624
515
7535
8324
9327
10330
11111
12224
14342
15345
16464
17234
19357
20360
21363
22122
23246
24124
254100
26252
27381
28256
29129
30390
314124
32396
33399
34134
353105
36272
373111
386228
39139
40140
41282
423126
433129
444176
46292
473141
48296
493147
505250
51151
523156
535265
543162
555275
565280
576342
585290
592118
603180
613183
626372
642128
654260
6610660
672134
682136
693207
707490
713213
72172
734292
745370
757525
763228
774308
783234
796474
805400
816486
827574
839747
844336
852170
862172
872174
883264
895445
903270
916546
92192
935465
946564
954380
965480
985490
995495
1003300
1015505
1025510
1034412
1048832
1057735
1064424
1075535
1085540
1095545
1106660
1113333
1127784
11391017
1142228
1151115
1161116
1178936
1187826
1194476
1205600
1214484
1225610
1236738
1246744
1254500
1263378
1275635
1304520
13181048
1325660
1332266
1344536
13581080
1366816
13781096
1383414
1394556
1403420
1414564
1425710
1433429
1446864
1456870
1463438
1473441
1484592
1493447
15081200
1511151
15271064
1534612
1554620
1563468
1572314
15871106
1594636
1604640
16171127
1624648
1633489
1646984
165111815
16671162
1672334
1682336
1693507
1704680
17171197
17291548
17381384
17481392
1755875
1765880
17771239
17861068
17971253
1802360
18161086
1825910
18381464
1844736
1855925
186112046
1874748
1883564
1894756
19061140
1912382
1923576
19361158
19471358
19561170
1963588
1973591
19861188
1995995
20051000
2012402
2022404
20351015
2044816
2053615
2061206
2072414
2084832
2092418
2112422
2132426
21461284
2154860
2163648
21751085
21851090
21961314
2203660
22151105
2224888
2232446
2243672
2254900
2264904
2274908
22851140
2294916
23051150
2314924
2323696
2332466
23451170
2354940
2363708
23761422
2382476
2392478
24061440
24151205
2423726
2433729
2444976
2452490
2461246
2471247
2482496
2494996
25041000
25141004
2522504
2533759
2542508
2553765
2562512
2573771
25841032
25941036
260434923113079980
Total435925113216594
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
0434923
21000
81
Total435924
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333334266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888281e30632820b
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3831653330363332
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_15.json b/autobahn/client/tungstenite_case_12_2_15.json new file mode 100644 index 0000000..f95ab6c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_15.json @@ -0,0 +1,1223 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 334, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 11460, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=334&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: a4FoUBr+/XzcWtpISj1/6w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xH0vzeTARnY6LwDWt1eFQkKLpTs=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "13406": 1, + "42541": 1, + "42557": 1, + "42563": 1, + "42582": 1, + "42585": 1, + "42588": 1, + "42597": 2, + "42600": 1, + "42602": 2, + "42604": 1, + "42627": 1, + "42628": 1, + "42635": 1, + "42638": 1, + "42640": 1, + "42641": 2, + "42645": 1, + "42656": 1, + "42658": 1, + "42661": 1, + "42662": 1, + "42671": 1, + "42672": 1, + "42673": 1, + "42675": 1, + "42677": 2, + "42684": 1, + "42685": 1, + "42689": 1, + "42690": 1, + "42692": 1, + "42695": 1, + "42696": 1, + "42698": 2, + "42699": 1, + "42704": 1, + "42706": 1, + "42714": 1, + "42719": 1, + "42724": 1, + "42727": 1, + "42730": 1, + "42734": 1, + "42740": 1, + "42741": 1, + "42746": 1, + "42747": 2, + "42749": 1, + "42755": 2, + "42773": 1, + "42774": 1, + "42778": 1, + "42781": 1, + "42783": 1, + "42785": 1, + "42789": 2, + "42792": 1, + "42793": 1, + "42794": 2, + "42799": 1, + "42800": 1, + "42806": 1, + "42810": 1, + "42821": 2, + "42822": 1, + "42824": 2, + "42826": 1, + "42830": 2, + "42833": 1, + "42834": 1, + "42836": 1, + "42838": 1, + "42839": 1, + "42843": 1, + "42847": 3, + "42851": 2, + "42859": 1, + "42862": 2, + "42863": 1, + "42869": 1, + "42870": 1, + "42873": 2, + "42875": 1, + "42876": 2, + "42877": 1, + "42882": 2, + "42883": 1, + "42885": 1, + "42887": 1, + "42892": 2, + "42893": 1, + "42897": 1, + "42898": 3, + "42906": 3, + "42907": 1, + "42908": 1, + "42911": 2, + "42912": 2, + "42915": 1, + "42920": 1, + "42927": 1, + "42929": 1, + "42932": 1, + "42934": 2, + "42935": 1, + "42937": 1, + "42943": 1, + "42944": 1, + "42945": 1, + "42948": 2, + "42951": 1, + "42955": 2, + "42956": 1, + "42957": 1, + "42960": 1, + "42961": 1, + "42964": 1, + "42965": 1, + "42976": 1, + "42977": 1, + "42979": 2, + "42980": 1, + "42984": 1, + "42986": 1, + "42988": 1, + "42991": 2, + "42992": 1, + "42993": 1, + "42998": 1, + "43000": 1, + "43004": 1, + "43008": 1, + "43012": 1, + "43017": 1, + "43019": 1, + "43051": 3, + "43055": 1, + "43058": 1, + "43063": 1, + "43070": 1, + "43073": 1, + "43085": 1, + "43087": 1, + "43089": 1, + "43090": 1, + "43094": 1, + "43099": 2, + "43100": 1, + "43103": 1, + "43115": 1, + "43119": 1, + "43121": 1, + "43127": 2, + "43147": 1, + "43149": 1, + "43150": 1, + "43154": 1, + "43157": 1, + "43174": 1, + "43177": 1, + "43183": 1, + "43190": 2, + "43192": 2, + "43211": 1, + "43215": 2, + "43219": 1, + "43225": 1, + "43232": 2, + "43237": 1, + "43240": 1, + "43246": 1, + "43248": 1, + "43254": 1, + "43255": 1, + "43259": 1, + "43260": 1, + "43268": 1, + "43269": 1, + "43275": 1, + "43283": 1, + "43284": 1, + "43285": 1, + "43287": 1, + "43291": 1, + "43295": 1, + "43301": 1, + "43306": 1, + "43308": 1, + "43312": 2, + "43314": 1, + "43317": 1, + "43320": 2, + "43325": 1, + "43326": 2, + "43328": 1, + "43333": 1, + "43336": 1, + "43338": 1, + "43340": 1, + "43341": 1, + "43346": 1, + "43350": 1, + "43351": 2, + "43355": 2, + "43356": 2, + "43367": 1, + "43369": 1, + "43370": 1, + "43374": 1, + "43375": 1, + "43376": 1, + "43381": 1, + "43386": 1, + "43388": 2, + "43389": 1, + "43391": 1, + "43392": 1, + "43396": 1, + "43397": 1, + "43400": 1, + "43405": 1, + "43411": 1, + "43413": 1, + "43414": 2, + "43417": 1, + "43419": 1, + "43420": 1, + "43421": 1, + "43423": 1, + "43424": 1, + "43426": 2, + "43429": 1, + "43431": 1, + "43433": 2, + "43434": 2, + "43435": 1, + "43438": 1, + "43439": 1, + "43440": 2, + "43441": 1, + "43445": 1, + "43447": 1, + "43448": 1, + "43449": 1, + "43450": 2, + "43452": 1, + "43454": 1, + "43455": 1, + "43459": 3, + "43461": 1, + "43463": 1, + "43469": 1, + "43474": 1, + "43477": 2, + "43479": 1, + "43482": 1, + "43483": 1, + "43488": 1, + "43489": 1, + "43490": 3, + "43492": 1, + "43493": 1, + "43494": 1, + "43495": 2, + "43496": 1, + "43497": 1, + "43501": 2, + "43503": 1, + "43504": 3, + "43505": 1, + "43508": 2, + "43511": 1, + "43512": 2, + "43514": 1, + "43517": 1, + "43522": 1, + "43528": 1, + "43536": 1, + "43548": 1, + "43563": 1, + "43566": 1, + "43567": 1, + "43569": 1, + "43570": 1, + "43572": 1, + "43575": 1, + "43577": 1, + "43585": 2, + "43597": 2, + "43598": 1, + "43600": 1, + "43601": 1, + "43605": 2, + "43606": 2, + "43610": 1, + "43613": 1, + "43615": 1, + "43616": 1, + "43622": 1, + "43625": 1, + "43632": 1, + "43633": 1, + "43635": 1, + "43636": 1, + "43640": 1, + "43644": 1, + "43650": 1, + "43654": 1, + "43658": 1, + "43661": 1, + "43672": 1, + "43674": 1, + "43675": 1, + "43677": 1, + "43682": 1, + "43687": 1, + "43690": 1, + "43691": 1, + "43694": 1, + "43695": 1, + "43703": 1, + "43704": 2, + "43705": 1, + "43710": 1, + "43712": 1, + "43713": 3, + "43716": 1, + "43720": 1, + "43726": 1, + "43738": 1, + "43785": 1, + "43820": 1, + "43822": 1, + "43891": 1, + "43905": 1, + "43952": 1, + "43964": 1, + "43986": 1, + "44047": 1, + "44052": 1, + "44122": 1, + "44145": 1, + "44192": 1, + "44224": 1, + "44279": 1, + "44297": 1, + "44310": 1, + "44370": 1, + "44382": 1, + "44439": 1, + "44453": 1, + "44473": 1, + "44496": 1, + "44533": 1, + "44555": 1, + "44558": 1, + "44599": 1, + "44614": 1, + "44627": 1, + "44637": 1, + "44638": 1, + "44663": 1, + "44725": 1, + "44727": 1, + "44736": 1, + "44776": 1, + "44798": 1, + "44821": 1, + "44847": 1, + "44864": 1, + "44895": 1, + "44908": 1, + "44944": 1, + "44947": 1, + "44954": 1, + "44972": 1, + "45008": 1, + "45072": 1, + "45088": 1, + "45089": 1, + "45134": 1, + "45150": 1, + "45170": 1, + "45201": 1, + "45231": 1, + "45236": 1, + "45250": 1, + "45291": 2, + "45303": 1, + "45331": 1, + "45371": 1, + "45394": 1, + "45413": 1, + "45414": 1, + "45433": 1, + "45444": 1, + "45471": 1, + "45475": 1, + "45487": 1, + "45513": 1, + "45565": 1, + "45573": 1, + "45578": 1, + "45601": 1, + "45646": 1, + "45670": 1, + "45678": 1, + "45679": 1, + "45708": 1, + "45754": 1, + "45757": 1, + "45768": 1, + "45774": 1, + "45818": 1, + "45829": 1, + "45850": 1, + "45856": 1, + "45892": 1, + "45906": 1, + "45920": 1, + "45929": 1, + "45950": 1, + "45953": 1, + "45996": 2, + "46011": 1, + "46015": 1, + "46051": 1, + "46061": 1, + "46084": 1, + "46093": 1, + "46108": 1, + "46130": 1, + "46136": 1, + "46144": 1, + "46163": 1, + "46188": 1, + "46208": 1, + "46216": 1, + "46235": 1, + "46261": 1, + "46266": 1, + "46294": 1, + "46309": 1, + "46322": 1, + "46326": 1, + "46372": 1, + "46374": 1, + "46375": 1, + "46409": 1, + "46430": 1, + "46431": 1, + "46447": 1, + "46480": 1, + "46510": 1, + "46511": 1, + "46532": 1, + "46550": 1, + "46573": 1, + "46574": 1, + "46580": 1, + "46627": 1, + "46651": 1, + "46659": 1, + "46666": 1, + "46685": 1, + "46712": 1, + "46737": 1, + "46739": 1, + "46744": 1, + "46775": 1, + "46796": 1, + "46817": 1, + "46827": 1, + "46847": 1, + "46850": 1, + "46864": 1, + "46886": 1, + "46897": 1, + "46916": 1, + "46926": 1, + "46943": 1, + "46954": 1, + "46964": 1, + "47000": 1, + "47008": 1, + "47009": 1, + "47046": 1, + "47047": 1, + "47058": 1, + "47061": 1, + "47082": 1, + "47093": 1, + "47102": 1, + "47111": 1, + "47149": 1, + "47163": 1, + "47200": 1, + "47220": 1, + "47223": 1, + "47262": 1, + "47320": 1, + "47351": 1, + "47366": 1, + "47387": 1, + "47427": 1, + "47467": 1, + "47497": 1, + "47528": 1, + "47558": 1, + "47600": 1, + "47629": 1, + "47635": 1, + "47678": 1, + "47703": 1, + "47762": 1, + "47771": 1, + "47785": 1, + "47830": 1, + "47865": 1, + "47921": 1, + "47937": 1, + "47986": 2, + "47994": 1, + "48055": 1, + "48059": 1, + "48082": 1, + "48095": 1, + "48133": 1, + "48141": 1, + "48147": 1, + "48178": 1, + "48182": 1, + "48188": 1, + "48189": 1, + "48190": 1, + "48191": 1, + "48193": 1, + "48194": 3, + "48196": 3, + "48197": 2, + "48198": 2, + "48199": 2, + "48201": 1, + "48202": 3, + "48204": 1, + "48206": 1, + "48207": 1, + "48215": 1, + "48216": 1, + "48217": 1, + "48220": 1, + "48221": 1, + "48228": 1, + "48229": 1, + "48231": 1, + "48233": 1, + "48235": 2, + "48241": 1, + "48244": 1, + "48248": 1, + "48253": 1, + "48257": 1, + "48260": 1, + "48264": 1, + "48273": 1, + "48274": 1, + "48279": 1, + "48290": 1, + "48291": 2, + "48294": 1, + "48301": 1, + "48307": 1, + "48317": 1, + "48319": 1, + "48324": 1, + "48329": 1, + "48333": 2, + "48334": 1, + "48342": 1, + "48345": 1, + "48350": 1, + "48359": 1, + "48363": 1, + "48366": 1, + "48370": 1, + "48372": 1, + "48378": 1, + "48379": 1, + "48382": 1, + "48385": 1, + "48389": 1, + "48400": 2, + "48401": 1, + "48404": 1, + "48410": 1, + "48411": 1, + "48412": 1, + "48415": 1, + "48423": 1, + "48424": 1, + "48427": 1, + "48428": 1, + "48435": 1, + "48438": 1, + "48442": 1, + "48444": 1, + "48451": 2, + "48462": 1, + "48466": 1, + "48468": 1, + "48469": 1, + "48474": 1, + "48475": 2, + "48477": 1, + "48478": 1, + "48480": 1, + "48481": 1, + "48492": 1, + "48493": 1, + "48500": 1, + "48506": 1, + "48507": 1, + "48509": 1, + "48511": 1, + "48513": 1, + "48514": 1, + "48516": 1, + "48518": 2, + "48519": 1, + "48520": 1, + "48521": 1, + "48523": 1, + "48528": 1, + "48531": 1, + "48532": 2, + "48535": 1, + "48537": 1, + "48538": 1, + "48542": 1, + "48545": 1, + "48546": 1, + "48552": 1, + "48555": 2, + "48556": 1, + "48558": 1, + "48559": 1, + "48562": 1, + "48564": 1, + "48565": 2, + "48566": 1, + "48570": 1, + "48571": 3, + "48572": 1, + "48573": 3, + "48574": 1, + "48575": 2, + "48577": 1, + "48579": 2, + "48580": 3, + "48581": 1, + "48582": 1, + "48588": 5, + "48591": 2, + "48592": 2, + "48593": 4, + "48595": 1, + "48597": 1, + "48603": 2, + "48611": 1, + "48612": 2, + "48613": 2, + "48614": 1, + "48616": 1, + "48618": 1, + "48620": 3, + "48624": 1, + "48625": 1, + "48626": 1, + "48627": 2, + "48629": 1, + "48631": 1, + "48632": 1, + "48634": 2, + "48636": 1, + "48638": 2, + "48640": 1, + "48643": 2, + "48644": 1, + "48647": 2, + "48648": 1, + "48652": 2, + "48653": 1, + "48655": 1, + "48656": 1, + "48662": 1, + "48664": 1, + "48668": 1, + "48674": 1, + "48679": 1, + "48680": 1, + "48702": 1, + "48707": 1, + "48727": 1, + "48736": 1, + "48757": 1, + "48760": 1, + "48776": 1, + "48778": 1, + "48782": 1, + "48785": 1, + "48798": 1, + "48811": 1, + "48815": 1, + "48822": 1, + "48828": 1, + "48832": 1, + "48841": 1, + "48855": 1, + "48869": 1, + "48883": 1, + "48889": 1, + "48890": 1, + "48895": 1, + "48925": 1, + "48928": 1, + "48937": 1, + "48941": 1, + "48949": 1, + "48950": 1, + "48965": 1, + "48970": 1, + "48976": 1, + "48979": 1, + "48981": 1, + "48984": 2, + "48989": 1, + "48990": 2, + "48991": 1, + "48994": 2, + "48996": 2, + "48997": 1, + "48999": 3, + "49002": 2, + "49004": 1, + "49006": 1, + "49008": 1, + "49009": 1, + "49010": 1, + "49011": 1, + "49012": 3, + "49013": 3, + "49014": 2, + "49015": 1, + "49016": 1, + "49017": 2, + "49018": 3, + "49019": 1, + "49020": 1, + "49021": 4, + "49025": 2, + "49026": 1, + "49027": 2, + "49029": 2, + "49030": 2, + "49031": 2, + "49033": 2, + "49034": 1, + "49035": 2, + "49036": 1, + "49037": 3, + "49038": 3, + "49039": 2, + "49041": 2, + "49043": 2, + "49044": 1, + "49045": 1, + "49046": 1, + "49047": 1, + "49048": 2, + "49050": 1, + "49051": 1, + "49052": 1, + "49053": 1, + "49054": 1, + "49056": 1, + "49061": 1, + "49064": 2, + "49065": 1, + "49066": 1, + "49067": 1, + "49069": 2, + "49070": 1, + "49071": 1, + "49072": 2, + "49076": 1, + "49078": 2, + "49079": 2, + "49080": 1, + "49081": 1, + "49083": 3, + "49084": 1, + "49085": 1, + "49089": 3, + "49090": 3, + "49092": 3, + "49093": 3, + "49094": 1, + "49096": 2, + "49097": 1, + "49098": 3, + "49099": 2, + "49100": 1, + "49101": 2, + "49103": 1, + "49104": 1, + "49105": 1, + "49108": 1, + "49109": 1, + "49111": 1, + "49114": 1, + "49115": 1, + "49117": 2, + "49120": 1, + "49121": 1, + "49143": 1, + "49147": 1, + "57920": 1, + "65160": 3, + "65464": 70, + "65536": 926 + }, + "started": "2025-09-11T20:06:49.904Z", + "trafficStats": { + "incomingCompressionRatio": 0.8504757537841797, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 111473558, + "incomingOctetsWireLevel": 111487558, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00012559032160792787, + "outgoingCompressionRatio": 0.8504757537841797, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 111473558, + "outgoingOctetsWireLevel": 113216338, + "outgoingWebSocketFrames": 435923, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015634021477990322, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 434923, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 2, + "3": 2, + "4": 6, + "5": 1, + "7": 5, + "8": 3, + "9": 3, + "10": 3, + "11": 1, + "12": 2, + "14": 3, + "15": 3, + "16": 4, + "17": 2, + "19": 3, + "20": 3, + "21": 3, + "22": 1, + "23": 2, + "24": 1, + "25": 4, + "26": 2, + "27": 3, + "28": 2, + "29": 1, + "30": 3, + "31": 4, + "32": 3, + "33": 3, + "34": 1, + "35": 3, + "36": 2, + "37": 3, + "38": 6, + "39": 1, + "40": 1, + "41": 2, + "42": 3, + "43": 3, + "44": 4, + "46": 2, + "47": 3, + "48": 2, + "49": 3, + "50": 5, + "51": 1, + "52": 3, + "53": 5, + "54": 3, + "55": 5, + "56": 5, + "57": 6, + "58": 5, + "59": 2, + "60": 3, + "61": 3, + "62": 6, + "64": 2, + "65": 4, + "66": 10, + "67": 2, + "68": 2, + "69": 3, + "70": 7, + "71": 3, + "72": 1, + "73": 4, + "74": 5, + "75": 7, + "76": 3, + "77": 4, + "78": 3, + "79": 6, + "80": 5, + "81": 6, + "82": 7, + "83": 9, + "84": 4, + "85": 2, + "86": 2, + "87": 2, + "88": 3, + "89": 5, + "90": 3, + "91": 6, + "92": 1, + "93": 5, + "94": 6, + "95": 4, + "96": 5, + "98": 5, + "99": 5, + "100": 3, + "101": 5, + "102": 5, + "103": 4, + "104": 8, + "105": 7, + "106": 4, + "107": 5, + "108": 5, + "109": 5, + "110": 6, + "111": 3, + "112": 7, + "113": 9, + "114": 2, + "115": 1, + "116": 1, + "117": 8, + "118": 7, + "119": 4, + "120": 5, + "121": 4, + "122": 5, + "123": 6, + "124": 6, + "125": 4, + "126": 3, + "127": 5, + "130": 4, + "131": 8, + "132": 5, + "133": 2, + "134": 4, + "135": 8, + "136": 6, + "137": 8, + "138": 3, + "139": 4, + "140": 3, + "141": 4, + "142": 5, + "143": 3, + "144": 6, + "145": 6, + "146": 3, + "147": 3, + "148": 4, + "149": 3, + "150": 8, + "151": 1, + "152": 7, + "153": 4, + "155": 4, + "156": 3, + "157": 2, + "158": 7, + "159": 4, + "160": 4, + "161": 7, + "162": 4, + "163": 3, + "164": 6, + "165": 11, + "166": 7, + "167": 2, + "168": 2, + "169": 3, + "170": 4, + "171": 7, + "172": 9, + "173": 8, + "174": 8, + "175": 5, + "176": 5, + "177": 7, + "178": 6, + "179": 7, + "180": 2, + "181": 6, + "182": 5, + "183": 8, + "184": 4, + "185": 5, + "186": 11, + "187": 4, + "188": 3, + "189": 4, + "190": 6, + "191": 2, + "192": 3, + "193": 6, + "194": 7, + "195": 6, + "196": 3, + "197": 3, + "198": 6, + "199": 5, + "200": 5, + "201": 2, + "202": 2, + "203": 5, + "204": 4, + "205": 3, + "206": 1, + "207": 2, + "208": 4, + "209": 2, + "211": 2, + "213": 2, + "214": 6, + "215": 4, + "216": 3, + "217": 5, + "218": 5, + "219": 6, + "220": 3, + "221": 5, + "222": 4, + "223": 2, + "224": 3, + "225": 4, + "226": 4, + "227": 4, + "228": 5, + "229": 4, + "230": 5, + "231": 4, + "232": 3, + "233": 2, + "234": 5, + "235": 4, + "236": 3, + "237": 6, + "238": 2, + "239": 2, + "240": 6, + "241": 5, + "242": 3, + "243": 3, + "244": 4, + "245": 2, + "246": 1, + "247": 1, + "248": 2, + "249": 4, + "250": 4, + "251": 4, + "252": 2, + "253": 3, + "254": 2, + "255": 3, + "256": 2, + "257": 3, + "258": 4, + "259": 4, + "260": 434923 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333334266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888281e30632820b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "81e30632" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_16.html b/autobahn/client/tungstenite_case_12_2_16.html new file mode 100644 index 0000000..f905655 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_16.html @@ -0,0 +1,1719 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.16 : Pass - 11230 ms @ 2025-09-11T20:07:01.367Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=335&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: TPYQFLUqUpG/sCZQGKvMsw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 21P9XuxDIV3MUth9RInt36sAVTY=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
13406113406
42541142541
42557142557
42563142563
42582142582
42585142585
42588142588
42597285194
42600142600
42602285204
42604142604
42627142627
42628142628
42635142635
42638142638
42640142640
42641285282
42645142645
42656142656
42658142658
42661142661
42662142662
42671142671
42672142672
42673142673
42675142675
42677285354
42684142684
42685142685
42689142689
42690142690
42692142692
42695142695
42696142696
42698285396
42699142699
42704142704
42706142706
42714142714
42719142719
42724142724
42727142727
42730142730
42734142734
42740142740
42741142741
42746142746
42747285494
42749142749
42755285510
42773142773
42774142774
42778142778
42781142781
42783142783
42785142785
42787142787
42789285578
42792142792
42793142793
42794285588
42799142799
42800142800
42806142806
42810142810
42821285642
42822142822
42824285648
42826142826
42830285660
42833142833
42834285668
42836142836
42838142838
42839285678
42843142843
428473128541
42851285702
42862285724
42863142863
42869142869
42870142870
42873285746
42875142875
42876285752
42877142877
42882285764
42883142883
42885142885
42887142887
42888142888
42892285784
42893142893
42897142897
42898285796
42906285812
42907142907
42908142908
42911142911
42912285824
42915142915
42920285840
42926142926
42927142927
42928142928
42929142929
42932142932
42934285868
42935142935
42936285872
42937142937
42943142943
42944142944
42945142945
42948285896
42951142951
42955285910
42956142956
42957142957
42961142961
42964142964
42965142965
42970142970
42976142976
42977142977
429793128937
42980142980
42983142983
42984142984
42986142986
42988142988
42991285982
42993142993
42998142998
43004143004
43012143012
43017143017
43019143019
43051286102
43058143058
43063143063
43073143073
43085143085
43087143087
43089143089
43090143090
43094143094
43099286198
43103143103
43115143115
43119143119
43121143121
43127286254
43147143147
43149143149
43150143150
43154143154
43157143157
43174143174
43177143177
43183143183
43190286380
43192286384
43197143197
43211143211
43215286430
43219143219
43225143225
43232286464
43237143237
43240143240
43246143246
43248143248
43254143254
43255143255
43259143259
43260143260
43268143268
43275143275
43283286566
43284143284
43285143285
43287143287
43291143291
43295143295
43301143301
43306143306
43308143308
43312143312
43314143314
43317143317
43319143319
433203129960
43325143325
43326286652
43328143328
43333143333
43336143336
43338143338
43340143340
43341143341
43346143346
43350143350
43351286702
43355143355
43356286712
43361143361
43367143367
43369286738
43370143370
43374143374
43375143375
43376143376
43378143378
43381143381
43386143386
43388286776
43389143389
43396143396
43397143397
43400143400
43405143405
43411143411
43413143413
43414286828
43417143417
43419143419
43420143420
43421143421
43423143423
43424286848
43426286852
43429143429
43431143431
43432143432
43433143433
43434286868
43435143435
43438143438
43439143439
434403130320
43442143442
43445143445
43447143447
43448143448
43449143449
43450286900
43452143452
43454143454
43455143455
434593130377
43461143461
43463143463
43469143469
43474143474
43476143476
43477286954
43482143482
43483143483
43488143488
43489143489
434903130470
43492143492
43493143493
43494286988
43495286990
43497286994
43501287002
43503287006
43504287008
43505287010
43508287016
43511143511
43512143512
43517143517
43528143528
43534143534
43536143536
43548143548
43551143551
43563143563
43567143567
43570143570
43572143572
43597287194
43598143598
43601143601
43605287210
43606143606
43610143610
43613143613
43615143615
43616143616
43622143622
43625143625
43632143632
43633143633
43635143635
43636143636
43640143640
43644143644
43650143650
43654143654
43657143657
43658143658
43661143661
43672143672
43674143674
43675143675
43677143677
43682143682
43687143687
43690143690
43691143691
43694143694
43695143695
43703143703
43704287408
43705143705
43710143710
43712143712
437133131139
43716143716
43720143720
43726143726
43738143738
43785143785
43820143820
43822143822
43891143891
43905143905
43952143952
43961143961
43964143964
43976143976
43986143986
44052144052
44119144119
44122144122
44145144145
44192144192
44224144224
44279144279
44297144297
44310144310
44370144370
44382144382
44439144439
44473144473
44496144496
44533144533
44555144555
44558144558
44599144599
44614144614
44627144627
44637144637
44663144663
44725144725
44727144727
44736144736
44776144776
44798144798
44821144821
44829144829
44847144847
44864144864
44908144908
44944144944
44947144947
44954144954
44972144972
45008145008
45014145014
45068145068
45072145072
45088145088
45089145089
45134145134
45170145170
45201145201
45231145231
45236145236
45250145250
45271145271
45291290582
45303145303
45331145331
45371145371
45394145394
45413145413
45414145414
45433145433
45471145471
45475145475
45487145487
45513145513
45526145526
45565145565
45573145573
45578145578
45601145601
45670145670
45678145678
45679145679
45708145708
45718145718
45754145754
45757145757
45768145768
45774145774
45829145829
45850145850
45856145856
45890145890
45892145892
45906145906
45920145920
45929145929
45950145950
45953145953
45996145996
46011146011
46015146015
46051146051
46061146061
46068146068
46084146084
46093146093
46108146108
46130146130
46136146136
46144146144
46163146163
46188146188
46208146208
46216146216
46235146235
46266146266
46294146294
46309146309
46322146322
46326146326
46333146333
46372146372
46374146374
46375146375
46409146409
46430146430
46431146431
46480146480
46510146510
46511146511
46519146519
46532146532
46550146550
46573146573
46574146574
46580146580
46651146651
46659146659
46666146666
46685146685
46699146699
46712146712
46737146737
46739146739
46744146744
46796146796
46827146827
46847293694
46850146850
46864146864
46886146886
46897146897
46916146916
46943146943
46954146954
46964146964
47000147000
47008147008
47009147009
47047147047
47058147058
47061147061
47082147082
47093147093
47102147102
47111147111
47149147149
47193147193
47200147200
47220147220
47223147223
47262147262
47302147302
47320147320
47351147351
47366147366
47387147387
47422147422
47427147427
47467147467
47497147497
47528147528
47539147539
47558147558
47600147600
47629147629
47635147635
47678147678
47703147703
47762147762
47771147771
47785147785
47830147830
47865147865
47921147921
47937147937
47986295972
48055148055
48059148059
48082148082
48095148095
48133148133
48141148141
48147148147
48182148182
48188148188
48189148189
48190148190
48191148191
48193148193
481943144582
481963144588
48197296394
48198296396
48199296398
48201148201
482023144606
48204148204
48206148206
48207148207
48215148215
48216148216
48217148217
48220148220
48221148221
48228148228
48229148229
48231148231
48233148233
48235296470
48241148241
48244148244
48248148248
48250148250
48253148253
48257148257
48260148260
48264148264
48273148273
48274148274
48278148278
48279148279
48290148290
48291296582
48294148294
48301148301
48307148307
48317148317
48319148319
48324148324
48329148329
48333148333
48334148334
48342148342
48345148345
48359148359
48363148363
48366296732
48370296740
48372148372
48378148378
48379148379
48385148385
48389148389
48394148394
48396148396
48400296800
48401148401
48404148404
48410148410
48411148411
48412148412
48415148415
48421148421
48423148423
48424148424
48427148427
48428148428
48434148434
48435148435
48442148442
48444148444
48451296902
48462148462
48469148469
48473148473
48474148474
48475296950
48477148477
48478148478
48480148480
48481148481
48492148492
48500148500
48502148502
48507148507
48509148509
48511148511
48513148513
48514148514
48516297032
48518297036
48519297038
48520148520
48521148521
48523148523
48528148528
48531297062
48532297064
48535148535
48537148537
48538148538
48542148542
48546297092
48552148552
48555297110
48556148556
48558148558
48559148559
48562148562
48564148564
48565297130
48566148566
48570148570
485713145713
48572148572
485733145719
48575297150
48577148577
48579297158
485803145740
48581148581
48582148582
48584148584
485884194352
48591148591
48592297184
485934194372
48595148595
48597148597
48603148603
48608148608
48611148611
48612297224
48613297226
48614148614
48616148616
486203145860
48624148624
48625148625
48626148626
48627297254
48629148629
48631148631
48632148632
48634297268
48635148635
48636148636
48638297276
48640148640
48643297286
48644148644
48647297294
48648148648
48652297304
48653148653
48655148655
48662148662
48664297328
48668148668
48674148674
48679148679
48686148686
48702148702
48709148709
48713148713
48727148727
48729148729
48757148757
48760148760
48769148769
48776148776
48778148778
48782148782
48798148798
48811297622
48815148815
48822148822
48828148828
48832148832
48855148855
48865148865
48869148869
48889148889
48890148890
48895148895
48898148898
48925148925
48928148928
48941148941
48945148945
48949148949
48950148950
48965148965
48966148966
48974148974
48976148976
48979148979
48981148981
48984297968
48989148989
48990297980
48991148991
48994297988
48996297992
48997148997
489994195996
49002298004
49004149004
49008149008
49009149009
49010149010
49011298022
490123147036
490133147039
49014298028
49015149015
49016149016
49017298034
490184196072
49019149019
49020298040
490214196084
49022149022
490253147075
490263147078
49027298054
49029298058
49030298060
490313147093
49033298066
49034149034
49035298070
49036149036
490374196148
49038298076
49039298078
49041298082
490433147129
49044149044
49045149045
49047149047
49048298096
49049149049
49050149050
49051149051
49052149052
49053149053
49054149054
49056149056
49061149061
49064298128
49065149065
49066149066
49067149067
49069298138
49070149070
49071149071
49072298144
49075149075
49076149076
490783147234
49079149079
49080149080
49081149081
49083298166
49084149084
49085149085
49089298178
49090298180
49092298184
49093298186
49096298192
49098149098
49099298198
49100149100
49101298202
49104149104
49108149108
49111149111
49114149114
49117298234
49120149120
49151149151
49397149397
57920157920
6516015977400
6546415981960
6553696963504384
Total2003111487823
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
313
428
717
818
16116
20120
21121
31262
33133
383114
42142
43143
44144
47147
48148
49149
50150
51151
52152
532106
543162
563168
572114
582116
592118
61161
623186
64164
65165
663198
672134
69169
70170
71171
74174
75175
76176
77177
78178
792158
802160
81181
82182
83183
84184
88188
89189
91191
93193
953285
96196
99199
1013303
1021102
1042208
1073321
1081108
1131113
1161116
1171117
1201120
1242248
1271127
1311131
1321132
1352270
1362272
1391139
1401140
1411141
1451145
1481148
1501150
1521152
1532306
1562312
1591159
1631163
1652330
1691169
1701170
1711171
1723516
1742348
1761176
1792358
1811181
1821182
1841184
1861186
1911191
1931193
1952390
1961196
1972394
2011201
2042408
2061206
2072414
2142428
2192438
2211221
2221222
2253675
2283684
2301230
2322464
2341234
2362472
2374948
2401240
2412482
2421242
2471247
2501250
2511251
2522504
2551255
2561256
2571257
2581258
2622524
2631263
2653795
2662532
2671267
2681268
2691269
2721272
2733819
2741274
2772554
2821282
2832566
2841284
2852570
2861286
2881288
2891289
2902580
2941294
2962592
2971297
2991299
3011301
3023906
3041304
3051305
3061306
3071307
3082616
3101310
3133939
3151315
3181318
3191319
3201320
3221322
3231323
3241324
3283984
3311331
3321332
3332666
3351335
3361336
33731011
3382676
3391339
34031020
3411341
3421342
3432686
3471347
3481348
3491349
3512702
3521352
3531353
3541354
3561356
3572714
3581358
3601360
3621362
3631363
3641364
3671367
3681368
3691369
3702740
3712742
3731373
3751375
3761376
37831134
3791379
3802760
3812762
3822764
3832766
3851385
3871387
3902780
39331179
3942788
3951395
3962792
3972794
3992798
4001400
4011401
4021402
4031403
4041404
4052810
4062812
40841632
4091409
4112822
4131413
41431242
4151415
4162832
41731251
4181418
42031260
42141684
4222844
4242848
4261426
42731281
4281428
4291429
4301430
4312862
43231296
43331299
4342868
43531305
4361436
43731311
4391439
44152205
44241768
4432886
4442888
4451445
4461446
4471447
45041800
4511451
4531453
45431362
45541820
4561456
4571457
45931377
4601460
4611461
4641464
4652930
4702940
4711471
47231416
4731473
47431422
47531425
47631428
4772954
4781478
4792958
48231446
48331449
4841484
4852970
48641944
48731461
4881488
4892978
49031470
4912982
4932986
4942988
4962992
4971497
4981498
4992998
50021000
5021502
50521010
5061506
5071507
50921018
51021020
5121512
5131513
51421028
51521030
51621032
5171517
5181518
5211521
5241524
52621052
53021060
5351535
5361536
5371537
5411541
5451545
5471547
5491549
5521552
5541554
5571557
5611561
5631563
56421128
56721134
56921138
5721572
5751575
5761576
57921158
58021160
5821582
5831583
5851585
58721174
58821176
58921178
59121182
5921592
5941594
59531785
5961596
5971597
5981598
60321206
60421208
6061606
6071607
60821216
6101610
6121612
6131613
6141614
6151615
6171617
6181618
6191619
6211621
62231866
6261626
6311631
6321632
6331633
6341634
6361636
6381638
64021280
6411641
6421642
6431643
64421288
6461646
64731941
6481648
6491649
6511651
65421308
6561656
65721314
6591659
6601660
6621662
66421328
6671667
6681668
6691669
6711671
6721672
67332019
6761676
67732031
6781678
6791679
6811681
68332049
6841684
68532055
68621372
6871687
6881688
69021380
69121382
6921692
69432082
69542780
6961696
69821396
7011701
70232106
70421408
7051705
7061706
70821416
7101710
7121712
7161716
7171717
72021440
7251725
72721454
7301730
7311731
7331733
7341734
7361736
7371737
7401740
7461746
7471747
75121502
75232256
75321506
7551755
7561756
75721514
76021520
76121522
7631763
7671767
7741774
77921558
7801780
78421568
78721574
7891789
79021580
7911791
7931793
79521590
7961796
7981798
7991799
80021600
8021802
8031803
8041804
80521610
8061806
80732421
8111811
81221624
8161816
8221822
8231823
82621652
82732481
82821656
83021660
8321832
83643344
8381838
8391839
84032520
8411841
8421842
8431843
8441844
84521690
84621692
8491849
8511851
85221704
85365118
8541854
85621712
85721714
85821716
8591859
86143444
8631863
86432592
86621732
86832604
8691869
8701870
8711871
87232616
87332619
87443496
87554375
87632628
8771877
8781878
87943516
88054400
88121762
88243528
88365298
88421768
88754435
88854440
88932667
89132673
89221784
89343572
8941894
89521790
8961896
89721794
89832694
89954495
90021800
90121802
9021902
90332709
90432712
90543620
9061906
9071907
9091909
91032730
9111911
91243648
91321826
91421828
9151915
9161916
9171917
91843672
9191919
9211921
9231923
92643704
9271927
9281928
9291929
93032790
93121862
93221864
93321866
93443736
9351935
9371937
93821876
94043760
94143764
94232826
94321886
94543780
94621892
94921898
9501950
95132853
95221904
95443816
95521910
9561956
95721914
95821916
9601960
96143844
96221924
96332889
96621932
9671967
96832904
97021940
97121942
9731973
9761976
97921958
9811981
98221964
9831983
98543940
9861986
9891989
9901990
99221984
9941994
9951995
99721994
9991999
100311003
100411004
101011010
101211012
101822036
101911019
102111021
102311023
102511025
102611026
102722054
1028108310111342680
Total109312111910876
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
0108310
21000
81
Total109311
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333335266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88829fb41c039c5c
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3966623431633033
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_16.json b/autobahn/client/tungstenite_case_12_2_16.json new file mode 100644 index 0000000..d1e833a --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_16.json @@ -0,0 +1,1566 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 335, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 11230, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=335&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: TPYQFLUqUpG/sCZQGKvMsw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 21P9XuxDIV3MUth9RInt36sAVTY=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "13406": 1, + "42541": 1, + "42557": 1, + "42563": 1, + "42582": 1, + "42585": 1, + "42588": 1, + "42597": 2, + "42600": 1, + "42602": 2, + "42604": 1, + "42627": 1, + "42628": 1, + "42635": 1, + "42638": 1, + "42640": 1, + "42641": 2, + "42645": 1, + "42656": 1, + "42658": 1, + "42661": 1, + "42662": 1, + "42671": 1, + "42672": 1, + "42673": 1, + "42675": 1, + "42677": 2, + "42684": 1, + "42685": 1, + "42689": 1, + "42690": 1, + "42692": 1, + "42695": 1, + "42696": 1, + "42698": 2, + "42699": 1, + "42704": 1, + "42706": 1, + "42714": 1, + "42719": 1, + "42724": 1, + "42727": 1, + "42730": 1, + "42734": 1, + "42740": 1, + "42741": 1, + "42746": 1, + "42747": 2, + "42749": 1, + "42755": 2, + "42773": 1, + "42774": 1, + "42778": 1, + "42781": 1, + "42783": 1, + "42785": 1, + "42787": 1, + "42789": 2, + "42792": 1, + "42793": 1, + "42794": 2, + "42799": 1, + "42800": 1, + "42806": 1, + "42810": 1, + "42821": 2, + "42822": 1, + "42824": 2, + "42826": 1, + "42830": 2, + "42833": 1, + "42834": 2, + "42836": 1, + "42838": 1, + "42839": 2, + "42843": 1, + "42847": 3, + "42851": 2, + "42862": 2, + "42863": 1, + "42869": 1, + "42870": 1, + "42873": 2, + "42875": 1, + "42876": 2, + "42877": 1, + "42882": 2, + "42883": 1, + "42885": 1, + "42887": 1, + "42888": 1, + "42892": 2, + "42893": 1, + "42897": 1, + "42898": 2, + "42906": 2, + "42907": 1, + "42908": 1, + "42911": 1, + "42912": 2, + "42915": 1, + "42920": 2, + "42926": 1, + "42927": 1, + "42928": 1, + "42929": 1, + "42932": 1, + "42934": 2, + "42935": 1, + "42936": 2, + "42937": 1, + "42943": 1, + "42944": 1, + "42945": 1, + "42948": 2, + "42951": 1, + "42955": 2, + "42956": 1, + "42957": 1, + "42961": 1, + "42964": 1, + "42965": 1, + "42970": 1, + "42976": 1, + "42977": 1, + "42979": 3, + "42980": 1, + "42983": 1, + "42984": 1, + "42986": 1, + "42988": 1, + "42991": 2, + "42993": 1, + "42998": 1, + "43004": 1, + "43012": 1, + "43017": 1, + "43019": 1, + "43051": 2, + "43058": 1, + "43063": 1, + "43073": 1, + "43085": 1, + "43087": 1, + "43089": 1, + "43090": 1, + "43094": 1, + "43099": 2, + "43103": 1, + "43115": 1, + "43119": 1, + "43121": 1, + "43127": 2, + "43147": 1, + "43149": 1, + "43150": 1, + "43154": 1, + "43157": 1, + "43174": 1, + "43177": 1, + "43183": 1, + "43190": 2, + "43192": 2, + "43197": 1, + "43211": 1, + "43215": 2, + "43219": 1, + "43225": 1, + "43232": 2, + "43237": 1, + "43240": 1, + "43246": 1, + "43248": 1, + "43254": 1, + "43255": 1, + "43259": 1, + "43260": 1, + "43268": 1, + "43275": 1, + "43283": 2, + "43284": 1, + "43285": 1, + "43287": 1, + "43291": 1, + "43295": 1, + "43301": 1, + "43306": 1, + "43308": 1, + "43312": 1, + "43314": 1, + "43317": 1, + "43319": 1, + "43320": 3, + "43325": 1, + "43326": 2, + "43328": 1, + "43333": 1, + "43336": 1, + "43338": 1, + "43340": 1, + "43341": 1, + "43346": 1, + "43350": 1, + "43351": 2, + "43355": 1, + "43356": 2, + "43361": 1, + "43367": 1, + "43369": 2, + "43370": 1, + "43374": 1, + "43375": 1, + "43376": 1, + "43378": 1, + "43381": 1, + "43386": 1, + "43388": 2, + "43389": 1, + "43396": 1, + "43397": 1, + "43400": 1, + "43405": 1, + "43411": 1, + "43413": 1, + "43414": 2, + "43417": 1, + "43419": 1, + "43420": 1, + "43421": 1, + "43423": 1, + "43424": 2, + "43426": 2, + "43429": 1, + "43431": 1, + "43432": 1, + "43433": 1, + "43434": 2, + "43435": 1, + "43438": 1, + "43439": 1, + "43440": 3, + "43442": 1, + "43445": 1, + "43447": 1, + "43448": 1, + "43449": 1, + "43450": 2, + "43452": 1, + "43454": 1, + "43455": 1, + "43459": 3, + "43461": 1, + "43463": 1, + "43469": 1, + "43474": 1, + "43476": 1, + "43477": 2, + "43482": 1, + "43483": 1, + "43488": 1, + "43489": 1, + "43490": 3, + "43492": 1, + "43493": 1, + "43494": 2, + "43495": 2, + "43497": 2, + "43501": 2, + "43503": 2, + "43504": 2, + "43505": 2, + "43508": 2, + "43511": 1, + "43512": 1, + "43517": 1, + "43528": 1, + "43534": 1, + "43536": 1, + "43548": 1, + "43551": 1, + "43563": 1, + "43567": 1, + "43570": 1, + "43572": 1, + "43597": 2, + "43598": 1, + "43601": 1, + "43605": 2, + "43606": 1, + "43610": 1, + "43613": 1, + "43615": 1, + "43616": 1, + "43622": 1, + "43625": 1, + "43632": 1, + "43633": 1, + "43635": 1, + "43636": 1, + "43640": 1, + "43644": 1, + "43650": 1, + "43654": 1, + "43657": 1, + "43658": 1, + "43661": 1, + "43672": 1, + "43674": 1, + "43675": 1, + "43677": 1, + "43682": 1, + "43687": 1, + "43690": 1, + "43691": 1, + "43694": 1, + "43695": 1, + "43703": 1, + "43704": 2, + "43705": 1, + "43710": 1, + "43712": 1, + "43713": 3, + "43716": 1, + "43720": 1, + "43726": 1, + "43738": 1, + "43785": 1, + "43820": 1, + "43822": 1, + "43891": 1, + "43905": 1, + "43952": 1, + "43961": 1, + "43964": 1, + "43976": 1, + "43986": 1, + "44052": 1, + "44119": 1, + "44122": 1, + "44145": 1, + "44192": 1, + "44224": 1, + "44279": 1, + "44297": 1, + "44310": 1, + "44370": 1, + "44382": 1, + "44439": 1, + "44473": 1, + "44496": 1, + "44533": 1, + "44555": 1, + "44558": 1, + "44599": 1, + "44614": 1, + "44627": 1, + "44637": 1, + "44663": 1, + "44725": 1, + "44727": 1, + "44736": 1, + "44776": 1, + "44798": 1, + "44821": 1, + "44829": 1, + "44847": 1, + "44864": 1, + "44908": 1, + "44944": 1, + "44947": 1, + "44954": 1, + "44972": 1, + "45008": 1, + "45014": 1, + "45068": 1, + "45072": 1, + "45088": 1, + "45089": 1, + "45134": 1, + "45170": 1, + "45201": 1, + "45231": 1, + "45236": 1, + "45250": 1, + "45271": 1, + "45291": 2, + "45303": 1, + "45331": 1, + "45371": 1, + "45394": 1, + "45413": 1, + "45414": 1, + "45433": 1, + "45471": 1, + "45475": 1, + "45487": 1, + "45513": 1, + "45526": 1, + "45565": 1, + "45573": 1, + "45578": 1, + "45601": 1, + "45670": 1, + "45678": 1, + "45679": 1, + "45708": 1, + "45718": 1, + "45754": 1, + "45757": 1, + "45768": 1, + "45774": 1, + "45829": 1, + "45850": 1, + "45856": 1, + "45890": 1, + "45892": 1, + "45906": 1, + "45920": 1, + "45929": 1, + "45950": 1, + "45953": 1, + "45996": 1, + "46011": 1, + "46015": 1, + "46051": 1, + "46061": 1, + "46068": 1, + "46084": 1, + "46093": 1, + "46108": 1, + "46130": 1, + "46136": 1, + "46144": 1, + "46163": 1, + "46188": 1, + "46208": 1, + "46216": 1, + "46235": 1, + "46266": 1, + "46294": 1, + "46309": 1, + "46322": 1, + "46326": 1, + "46333": 1, + "46372": 1, + "46374": 1, + "46375": 1, + "46409": 1, + "46430": 1, + "46431": 1, + "46480": 1, + "46510": 1, + "46511": 1, + "46519": 1, + "46532": 1, + "46550": 1, + "46573": 1, + "46574": 1, + "46580": 1, + "46651": 1, + "46659": 1, + "46666": 1, + "46685": 1, + "46699": 1, + "46712": 1, + "46737": 1, + "46739": 1, + "46744": 1, + "46796": 1, + "46827": 1, + "46847": 2, + "46850": 1, + "46864": 1, + "46886": 1, + "46897": 1, + "46916": 1, + "46943": 1, + "46954": 1, + "46964": 1, + "47000": 1, + "47008": 1, + "47009": 1, + "47047": 1, + "47058": 1, + "47061": 1, + "47082": 1, + "47093": 1, + "47102": 1, + "47111": 1, + "47149": 1, + "47193": 1, + "47200": 1, + "47220": 1, + "47223": 1, + "47262": 1, + "47302": 1, + "47320": 1, + "47351": 1, + "47366": 1, + "47387": 1, + "47422": 1, + "47427": 1, + "47467": 1, + "47497": 1, + "47528": 1, + "47539": 1, + "47558": 1, + "47600": 1, + "47629": 1, + "47635": 1, + "47678": 1, + "47703": 1, + "47762": 1, + "47771": 1, + "47785": 1, + "47830": 1, + "47865": 1, + "47921": 1, + "47937": 1, + "47986": 2, + "48055": 1, + "48059": 1, + "48082": 1, + "48095": 1, + "48133": 1, + "48141": 1, + "48147": 1, + "48182": 1, + "48188": 1, + "48189": 1, + "48190": 1, + "48191": 1, + "48193": 1, + "48194": 3, + "48196": 3, + "48197": 2, + "48198": 2, + "48199": 2, + "48201": 1, + "48202": 3, + "48204": 1, + "48206": 1, + "48207": 1, + "48215": 1, + "48216": 1, + "48217": 1, + "48220": 1, + "48221": 1, + "48228": 1, + "48229": 1, + "48231": 1, + "48233": 1, + "48235": 2, + "48241": 1, + "48244": 1, + "48248": 1, + "48250": 1, + "48253": 1, + "48257": 1, + "48260": 1, + "48264": 1, + "48273": 1, + "48274": 1, + "48278": 1, + "48279": 1, + "48290": 1, + "48291": 2, + "48294": 1, + "48301": 1, + "48307": 1, + "48317": 1, + "48319": 1, + "48324": 1, + "48329": 1, + "48333": 1, + "48334": 1, + "48342": 1, + "48345": 1, + "48359": 1, + "48363": 1, + "48366": 2, + "48370": 2, + "48372": 1, + "48378": 1, + "48379": 1, + "48385": 1, + "48389": 1, + "48394": 1, + "48396": 1, + "48400": 2, + "48401": 1, + "48404": 1, + "48410": 1, + "48411": 1, + "48412": 1, + "48415": 1, + "48421": 1, + "48423": 1, + "48424": 1, + "48427": 1, + "48428": 1, + "48434": 1, + "48435": 1, + "48442": 1, + "48444": 1, + "48451": 2, + "48462": 1, + "48469": 1, + "48473": 1, + "48474": 1, + "48475": 2, + "48477": 1, + "48478": 1, + "48480": 1, + "48481": 1, + "48492": 1, + "48500": 1, + "48502": 1, + "48507": 1, + "48509": 1, + "48511": 1, + "48513": 1, + "48514": 1, + "48516": 2, + "48518": 2, + "48519": 2, + "48520": 1, + "48521": 1, + "48523": 1, + "48528": 1, + "48531": 2, + "48532": 2, + "48535": 1, + "48537": 1, + "48538": 1, + "48542": 1, + "48546": 2, + "48552": 1, + "48555": 2, + "48556": 1, + "48558": 1, + "48559": 1, + "48562": 1, + "48564": 1, + "48565": 2, + "48566": 1, + "48570": 1, + "48571": 3, + "48572": 1, + "48573": 3, + "48575": 2, + "48577": 1, + "48579": 2, + "48580": 3, + "48581": 1, + "48582": 1, + "48584": 1, + "48588": 4, + "48591": 1, + "48592": 2, + "48593": 4, + "48595": 1, + "48597": 1, + "48603": 1, + "48608": 1, + "48611": 1, + "48612": 2, + "48613": 2, + "48614": 1, + "48616": 1, + "48620": 3, + "48624": 1, + "48625": 1, + "48626": 1, + "48627": 2, + "48629": 1, + "48631": 1, + "48632": 1, + "48634": 2, + "48635": 1, + "48636": 1, + "48638": 2, + "48640": 1, + "48643": 2, + "48644": 1, + "48647": 2, + "48648": 1, + "48652": 2, + "48653": 1, + "48655": 1, + "48662": 1, + "48664": 2, + "48668": 1, + "48674": 1, + "48679": 1, + "48686": 1, + "48702": 1, + "48709": 1, + "48713": 1, + "48727": 1, + "48729": 1, + "48757": 1, + "48760": 1, + "48769": 1, + "48776": 1, + "48778": 1, + "48782": 1, + "48798": 1, + "48811": 2, + "48815": 1, + "48822": 1, + "48828": 1, + "48832": 1, + "48855": 1, + "48865": 1, + "48869": 1, + "48889": 1, + "48890": 1, + "48895": 1, + "48898": 1, + "48925": 1, + "48928": 1, + "48941": 1, + "48945": 1, + "48949": 1, + "48950": 1, + "48965": 1, + "48966": 1, + "48974": 1, + "48976": 1, + "48979": 1, + "48981": 1, + "48984": 2, + "48989": 1, + "48990": 2, + "48991": 1, + "48994": 2, + "48996": 2, + "48997": 1, + "48999": 4, + "49002": 2, + "49004": 1, + "49008": 1, + "49009": 1, + "49010": 1, + "49011": 2, + "49012": 3, + "49013": 3, + "49014": 2, + "49015": 1, + "49016": 1, + "49017": 2, + "49018": 4, + "49019": 1, + "49020": 2, + "49021": 4, + "49022": 1, + "49025": 3, + "49026": 3, + "49027": 2, + "49029": 2, + "49030": 2, + "49031": 3, + "49033": 2, + "49034": 1, + "49035": 2, + "49036": 1, + "49037": 4, + "49038": 2, + "49039": 2, + "49041": 2, + "49043": 3, + "49044": 1, + "49045": 1, + "49047": 1, + "49048": 2, + "49049": 1, + "49050": 1, + "49051": 1, + "49052": 1, + "49053": 1, + "49054": 1, + "49056": 1, + "49061": 1, + "49064": 2, + "49065": 1, + "49066": 1, + "49067": 1, + "49069": 2, + "49070": 1, + "49071": 1, + "49072": 2, + "49075": 1, + "49076": 1, + "49078": 3, + "49079": 1, + "49080": 1, + "49081": 1, + "49083": 2, + "49084": 1, + "49085": 1, + "49089": 2, + "49090": 2, + "49092": 2, + "49093": 2, + "49096": 2, + "49098": 1, + "49099": 2, + "49100": 1, + "49101": 2, + "49104": 1, + "49108": 1, + "49111": 1, + "49114": 1, + "49117": 2, + "49120": 1, + "49151": 1, + "49397": 1, + "57920": 1, + "65160": 15, + "65464": 15, + "65536": 969 + }, + "started": "2025-09-11T20:07:01.367Z", + "trafficStats": { + "incomingCompressionRatio": 0.8504757537841797, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 111473558, + "incomingOctetsWireLevel": 111487558, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00012559032160792787, + "outgoingCompressionRatio": 0.8504757537841797, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 111473558, + "outgoingOctetsWireLevel": 111910620, + "outgoingWebSocketFrames": 109310, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.003920768367328869, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 108310, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "4": 2, + "7": 1, + "8": 1, + "16": 1, + "20": 1, + "21": 1, + "31": 2, + "33": 1, + "38": 3, + "42": 1, + "43": 1, + "44": 1, + "47": 1, + "48": 1, + "49": 1, + "50": 1, + "51": 1, + "52": 1, + "53": 2, + "54": 3, + "56": 3, + "57": 2, + "58": 2, + "59": 2, + "61": 1, + "62": 3, + "64": 1, + "65": 1, + "66": 3, + "67": 2, + "69": 1, + "70": 1, + "71": 1, + "74": 1, + "75": 1, + "76": 1, + "77": 1, + "78": 1, + "79": 2, + "80": 2, + "81": 1, + "82": 1, + "83": 1, + "84": 1, + "88": 1, + "89": 1, + "91": 1, + "93": 1, + "95": 3, + "96": 1, + "99": 1, + "101": 3, + "102": 1, + "104": 2, + "107": 3, + "108": 1, + "113": 1, + "116": 1, + "117": 1, + "120": 1, + "124": 2, + "127": 1, + "131": 1, + "132": 1, + "135": 2, + "136": 2, + "139": 1, + "140": 1, + "141": 1, + "145": 1, + "148": 1, + "150": 1, + "152": 1, + "153": 2, + "156": 2, + "159": 1, + "163": 1, + "165": 2, + "169": 1, + "170": 1, + "171": 1, + "172": 3, + "174": 2, + "176": 1, + "179": 2, + "181": 1, + "182": 1, + "184": 1, + "186": 1, + "191": 1, + "193": 1, + "195": 2, + "196": 1, + "197": 2, + "201": 1, + "204": 2, + "206": 1, + "207": 2, + "214": 2, + "219": 2, + "221": 1, + "222": 1, + "225": 3, + "228": 3, + "230": 1, + "232": 2, + "234": 1, + "236": 2, + "237": 4, + "240": 1, + "241": 2, + "242": 1, + "247": 1, + "250": 1, + "251": 1, + "252": 2, + "255": 1, + "256": 1, + "257": 1, + "258": 1, + "262": 2, + "263": 1, + "265": 3, + "266": 2, + "267": 1, + "268": 1, + "269": 1, + "272": 1, + "273": 3, + "274": 1, + "277": 2, + "282": 1, + "283": 2, + "284": 1, + "285": 2, + "286": 1, + "288": 1, + "289": 1, + "290": 2, + "294": 1, + "296": 2, + "297": 1, + "299": 1, + "301": 1, + "302": 3, + "304": 1, + "305": 1, + "306": 1, + "307": 1, + "308": 2, + "310": 1, + "313": 3, + "315": 1, + "318": 1, + "319": 1, + "320": 1, + "322": 1, + "323": 1, + "324": 1, + "328": 3, + "331": 1, + "332": 1, + "333": 2, + "335": 1, + "336": 1, + "337": 3, + "338": 2, + "339": 1, + "340": 3, + "341": 1, + "342": 1, + "343": 2, + "347": 1, + "348": 1, + "349": 1, + "351": 2, + "352": 1, + "353": 1, + "354": 1, + "356": 1, + "357": 2, + "358": 1, + "360": 1, + "362": 1, + "363": 1, + "364": 1, + "367": 1, + "368": 1, + "369": 1, + "370": 2, + "371": 2, + "373": 1, + "375": 1, + "376": 1, + "378": 3, + "379": 1, + "380": 2, + "381": 2, + "382": 2, + "383": 2, + "385": 1, + "387": 1, + "390": 2, + "393": 3, + "394": 2, + "395": 1, + "396": 2, + "397": 2, + "399": 2, + "400": 1, + "401": 1, + "402": 1, + "403": 1, + "404": 1, + "405": 2, + "406": 2, + "408": 4, + "409": 1, + "411": 2, + "413": 1, + "414": 3, + "415": 1, + "416": 2, + "417": 3, + "418": 1, + "420": 3, + "421": 4, + "422": 2, + "424": 2, + "426": 1, + "427": 3, + "428": 1, + "429": 1, + "430": 1, + "431": 2, + "432": 3, + "433": 3, + "434": 2, + "435": 3, + "436": 1, + "437": 3, + "439": 1, + "441": 5, + "442": 4, + "443": 2, + "444": 2, + "445": 1, + "446": 1, + "447": 1, + "450": 4, + "451": 1, + "453": 1, + "454": 3, + "455": 4, + "456": 1, + "457": 1, + "459": 3, + "460": 1, + "461": 1, + "464": 1, + "465": 2, + "470": 2, + "471": 1, + "472": 3, + "473": 1, + "474": 3, + "475": 3, + "476": 3, + "477": 2, + "478": 1, + "479": 2, + "482": 3, + "483": 3, + "484": 1, + "485": 2, + "486": 4, + "487": 3, + "488": 1, + "489": 2, + "490": 3, + "491": 2, + "493": 2, + "494": 2, + "496": 2, + "497": 1, + "498": 1, + "499": 2, + "500": 2, + "502": 1, + "505": 2, + "506": 1, + "507": 1, + "509": 2, + "510": 2, + "512": 1, + "513": 1, + "514": 2, + "515": 2, + "516": 2, + "517": 1, + "518": 1, + "521": 1, + "524": 1, + "526": 2, + "530": 2, + "535": 1, + "536": 1, + "537": 1, + "541": 1, + "545": 1, + "547": 1, + "549": 1, + "552": 1, + "554": 1, + "557": 1, + "561": 1, + "563": 1, + "564": 2, + "567": 2, + "569": 2, + "572": 1, + "575": 1, + "576": 1, + "579": 2, + "580": 2, + "582": 1, + "583": 1, + "585": 1, + "587": 2, + "588": 2, + "589": 2, + "591": 2, + "592": 1, + "594": 1, + "595": 3, + "596": 1, + "597": 1, + "598": 1, + "603": 2, + "604": 2, + "606": 1, + "607": 1, + "608": 2, + "610": 1, + "612": 1, + "613": 1, + "614": 1, + "615": 1, + "617": 1, + "618": 1, + "619": 1, + "621": 1, + "622": 3, + "626": 1, + "631": 1, + "632": 1, + "633": 1, + "634": 1, + "636": 1, + "638": 1, + "640": 2, + "641": 1, + "642": 1, + "643": 1, + "644": 2, + "646": 1, + "647": 3, + "648": 1, + "649": 1, + "651": 1, + "654": 2, + "656": 1, + "657": 2, + "659": 1, + "660": 1, + "662": 1, + "664": 2, + "667": 1, + "668": 1, + "669": 1, + "671": 1, + "672": 1, + "673": 3, + "676": 1, + "677": 3, + "678": 1, + "679": 1, + "681": 1, + "683": 3, + "684": 1, + "685": 3, + "686": 2, + "687": 1, + "688": 1, + "690": 2, + "691": 2, + "692": 1, + "694": 3, + "695": 4, + "696": 1, + "698": 2, + "701": 1, + "702": 3, + "704": 2, + "705": 1, + "706": 1, + "708": 2, + "710": 1, + "712": 1, + "716": 1, + "717": 1, + "720": 2, + "725": 1, + "727": 2, + "730": 1, + "731": 1, + "733": 1, + "734": 1, + "736": 1, + "737": 1, + "740": 1, + "746": 1, + "747": 1, + "751": 2, + "752": 3, + "753": 2, + "755": 1, + "756": 1, + "757": 2, + "760": 2, + "761": 2, + "763": 1, + "767": 1, + "774": 1, + "779": 2, + "780": 1, + "784": 2, + "787": 2, + "789": 1, + "790": 2, + "791": 1, + "793": 1, + "795": 2, + "796": 1, + "798": 1, + "799": 1, + "800": 2, + "802": 1, + "803": 1, + "804": 1, + "805": 2, + "806": 1, + "807": 3, + "811": 1, + "812": 2, + "816": 1, + "822": 1, + "823": 1, + "826": 2, + "827": 3, + "828": 2, + "830": 2, + "832": 1, + "836": 4, + "838": 1, + "839": 1, + "840": 3, + "841": 1, + "842": 1, + "843": 1, + "844": 1, + "845": 2, + "846": 2, + "849": 1, + "851": 1, + "852": 2, + "853": 6, + "854": 1, + "856": 2, + "857": 2, + "858": 2, + "859": 1, + "861": 4, + "863": 1, + "864": 3, + "866": 2, + "868": 3, + "869": 1, + "870": 1, + "871": 1, + "872": 3, + "873": 3, + "874": 4, + "875": 5, + "876": 3, + "877": 1, + "878": 1, + "879": 4, + "880": 5, + "881": 2, + "882": 4, + "883": 6, + "884": 2, + "887": 5, + "888": 5, + "889": 3, + "891": 3, + "892": 2, + "893": 4, + "894": 1, + "895": 2, + "896": 1, + "897": 2, + "898": 3, + "899": 5, + "900": 2, + "901": 2, + "902": 1, + "903": 3, + "904": 3, + "905": 4, + "906": 1, + "907": 1, + "909": 1, + "910": 3, + "911": 1, + "912": 4, + "913": 2, + "914": 2, + "915": 1, + "916": 1, + "917": 1, + "918": 4, + "919": 1, + "921": 1, + "923": 1, + "926": 4, + "927": 1, + "928": 1, + "929": 1, + "930": 3, + "931": 2, + "932": 2, + "933": 2, + "934": 4, + "935": 1, + "937": 1, + "938": 2, + "940": 4, + "941": 4, + "942": 3, + "943": 2, + "945": 4, + "946": 2, + "949": 2, + "950": 1, + "951": 3, + "952": 2, + "954": 4, + "955": 2, + "956": 1, + "957": 2, + "958": 2, + "960": 1, + "961": 4, + "962": 2, + "963": 3, + "966": 2, + "967": 1, + "968": 3, + "970": 2, + "971": 2, + "973": 1, + "976": 1, + "979": 2, + "981": 1, + "982": 2, + "983": 1, + "985": 4, + "986": 1, + "989": 1, + "990": 1, + "992": 2, + "994": 1, + "995": 1, + "997": 2, + "999": 1, + "1003": 1, + "1004": 1, + "1010": 1, + "1012": 1, + "1018": 2, + "1019": 1, + "1021": 1, + "1023": 1, + "1025": 1, + "1026": 1, + "1027": 2, + "1028": 108310 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333335266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829fb41c039c5c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9fb41c03" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_17.html b/autobahn/client/tungstenite_case_12_2_17.html new file mode 100644 index 0000000..9712347 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_17.html @@ -0,0 +1,1907 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.17 : Pass - 11522 ms @ 2025-09-11T20:07:12.599Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=336&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: XGHBdO7/R2JaG1UGWNjqgQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ibaV9uL1F4kKvDwUWXB1Ex84E7Y=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
13406113406
42541142541
42557142557
42563142563
42582142582
42585142585
42588142588
42597285194
42600142600
42602285204
42604142604
42627142627
42628142628
42635142635
42638142638
42640142640
42641285282
42645142645
42656142656
42661142661
42662142662
42671142671
42672142672
42673142673
42675142675
42677285354
42684142684
42685142685
42689142689
42690142690
42692142692
42695142695
42696142696
42698285396
42699142699
42704142704
42706142706
42714142714
42719142719
42724142724
42727142727
42730142730
42734142734
42740142740
42741142741
42746142746
42747285494
42749142749
42755285510
42773142773
42774142774
42778142778
42781142781
42783142783
42785142785
42787142787
42789285578
42792142792
42793142793
42794285588
42799142799
42800142800
42806142806
42810142810
42821285642
42822142822
42824285648
42826142826
42830285660
42833142833
42834285668
42836142836
42838142838
42839285678
42843142843
428473128541
42851285702
42862285724
42863142863
42869142869
42870142870
42873285746
42875142875
42876285752
42877142877
42882285764
42883142883
42885142885
42887142887
42888142888
42892285784
42893142893
42897142897
428983128694
42906285812
42907142907
42908142908
42911142911
42912285824
42915142915
42920285840
42926142926
42927142927
42928142928
42929142929
42932142932
42934285868
42935142935
42936285872
42937142937
42943142943
42944142944
42945142945
42948285896
42951142951
42955285910
42956142956
42957142957
42961142961
42964142964
42965142965
42976142976
42977142977
429793128937
42980142980
42983142983
42984142984
42986142986
42988142988
42991285982
42993142993
42998142998
43004143004
43012143012
43017143017
43019143019
43034143034
43051286102
43058143058
43063143063
43073143073
43085143085
43087143087
43089143089
43090143090
43094143094
43099143099
43100143100
43103143103
43115143115
43119143119
43121143121
43127286254
43147143147
43149143149
43150143150
43154143154
43157143157
43174143174
43177143177
43183143183
43190286380
43192286384
43197143197
43211143211
43215286430
43219143219
43225143225
43232143232
43237143237
43240143240
43246143246
43248143248
43254143254
43259143259
43260143260
43268143268
43275143275
43283286566
43284143284
43285143285
43287143287
43291143291
43295143295
43301143301
43306143306
43308143308
43312143312
43314143314
43317143317
43319143319
433203129960
43325143325
43326286652
43328143328
43333143333
43336143336
43338143338
43340143340
43341143341
43346143346
43350143350
43351286702
43355143355
43356286712
43361143361
43367143367
43369286738
43370143370
43374143374
43375143375
43376143376
43378143378
43381143381
43386143386
43388286776
43389143389
43396143396
43397143397
43400143400
43405143405
43411143411
43413143413
43414286828
43417143417
43419143419
43420143420
43421143421
43423143423
43424286848
43426286852
43429143429
43431143431
43432143432
43434286868
43435143435
43438143438
43439143439
434403130320
43442143442
43445143445
43447143447
43448143448
43449143449
43450286900
43452143452
43454143454
43455143455
434593130377
43463143463
43469143469
43474143474
43475143475
43477286954
43479143479
43482143482
43483143483
43488143488
43489143489
434903130470
43492143492
43493143493
43494286988
43495286990
43497286994
43501287002
43503287006
43504287008
43505287010
43508287016
43511143511
43512143512
43517143517
43528143528
43534143534
43536143536
43548143548
43563143563
43567143567
43570143570
43572143572
43585287170
43597287194
43598143598
43600143600
43601143601
43605287210
43608143608
43610143610
43615143615
43616143616
43622143622
43625143625
43631143631
43632143632
43633143633
43635143635
43636143636
43640143640
43650143650
43654143654
43658143658
43661143661
43672143672
43674143674
43675143675
43677143677
43682143682
43685143685
43687143687
43690143690
43691143691
43694143694
43695143695
43703143703
43704287408
43705143705
43710143710
43712143712
43713287426
43716287432
43720143720
43726143726
43738143738
43785287570
43809143809
43820143820
43822143822
43837143837
43891143891
43905143905
43952143952
43964143964
43986143986
44047144047
44052144052
44122144122
44145144145
44192144192
44224144224
44279144279
44310144310
44369144369
44370144370
44382144382
44439144439
44473144473
44496144496
44533144533
44555144555
44558144558
44599144599
44614144614
44627144627
44637144637
44663144663
44725144725
44727144727
44736144736
44776144776
44798144798
44821144821
44829144829
44847144847
44864144864
44908144908
44944144944
44947144947
44954144954
45008145008
45014145014
45044145044
45068145068
45072145072
45088145088
45089145089
45170145170
45201145201
45231145231
45236145236
45250145250
45271145271
45291145291
45303145303
45331145331
45394145394
45413145413
45414145414
45433145433
45471145471
45487145487
45510145510
45513145513
45526145526
45573145573
45578145578
45601145601
45646145646
45667145667
45670145670
45678145678
45679145679
45708145708
45747145747
45757145757
45768145768
45774145774
45818145818
45850145850
45851145851
45856145856
45892145892
45906145906
45920145920
45941145941
45950145950
45953145953
45996145996
46011146011
46015146015
46051146051
46061146061
46093146093
46108146108
46130292260
46136146136
46144146144
46188146188
46205146205
46208146208
46235146235
46261146261
46266146266
46294146294
46305146305
46309146309
46322146322
46372292744
46375146375
46409146409
46430146430
46431146431
46447146447
46460146460
46480146480
46532146532
46539146539
46550146550
46573146573
46574146574
46580146580
46592146592
46627146627
46651146651
46666146666
46702146702
46712146712
46737146737
46739146739
46744146744
46750146750
46775146775
46796146796
46827146827
46847146847
46850146850
46886146886
46887146887
46897146897
46916146916
46943146943
46954146954
46958146958
46964146964
47000147000
47008147008
47009147009
47035147035
47046147046
47058147058
47061294122
47082147082
47093147093
47102147102
47111147111
47149147149
47193147193
47200147200
47220147220
47223147223
47240147240
47262147262
47302147302
47366147366
47387147387
47423147423
47427147427
47467147467
47497147497
47528147528
47539147539
47558147558
47600147600
47629147629
47635147635
47678147678
47696147696
47703147703
47727147727
47762147762
47771147771
47785147785
47830147830
47865147865
47921147921
47937147937
47986295972
48055148055
48059148059
48082148082
48095148095
48133148133
48141148141
48147148147
48178148178
48188148188
48189148189
48190148190
48191148191
48193148193
48194296388
481963144588
48197296394
48198296396
48199296398
48201148201
48202296404
48204148204
48206148206
48207148207
48215148215
48216148216
48217148217
48220148220
48221148221
48228148228
48229148229
48231148231
48233148233
48235296470
48241148241
48244148244
48248148248
48253148253
48254148254
48257148257
48260148260
48264148264
48266148266
48273148273
48274296548
48278148278
48279148279
48290148290
48291296582
48294148294
48301148301
48307148307
48310148310
48317148317
48319148319
48324148324
48329148329
48333296666
48334148334
48342148342
48345148345
48359148359
48363148363
48366296732
48370296740
48372148372
48378148378
48379148379
48385148385
48389148389
48394148394
48396148396
48400296800
48401148401
48404148404
48410148410
48411148411
48412148412
48415148415
48421148421
48423148423
48424148424
48427148427
48428148428
48434148434
48435148435
48442148442
48444148444
48451296902
48462148462
48469148469
48473148473
48474148474
48475296950
48477148477
48478148478
48480148480
48481148481
48492148492
48500148500
48502148502
48507148507
48509148509
48511148511
48513148513
48514148514
48516297032
48518297036
48519297038
48520148520
48521148521
48523148523
48528148528
48531297062
48532297064
48535148535
48537148537
48538148538
48542148542
48546297092
48552148552
48555297110
48556148556
48558148558
48559148559
48562148562
48564148564
48565297130
48566148566
48570148570
485713145713
48572148572
485733145719
48575297150
48577148577
48579297158
485803145740
48581148581
48582148582
48584148584
485883145764
48591148591
48592297184
485934194372
48595148595
48597148597
48603148603
48608148608
48611148611
48612297224
48613297226
48614148614
48616148616
486203145860
48624148624
48625148625
48626148626
48627297254
48629148629
48631148631
48632148632
48634297268
48635148635
48636148636
48638297276
48640148640
48643297286
48644148644
48647297294
48648148648
48652297304
48653148653
48655148655
48660148660
48662148662
48664297328
48668148668
48674148674
48679148679
48702148702
48713148713
48727148727
48729148729
48757148757
48760148760
48769148769
48776148776
48778148778
48782148782
48798148798
48811297622
48815148815
48822148822
48828148828
48832148832
48855148855
48865148865
48869148869
48889148889
48895148895
48898148898
48925148925
48928148928
48941148941
48949148949
48950148950
48962148962
48965148965
48966148966
48974148974
48976148976
48979148979
48981148981
48984297968
48989148989
48990297980
48991148991
48994297988
48996148996
48997148997
489994195996
49002298004
49004149004
49006149006
49008149008
49009149009
49010149010
49011298022
490123147036
490134196052
49014298028
49015149015
49016149016
490173147051
490184196072
49019149019
49020298040
490215245105
49022149022
49025298050
490263147078
49027298054
49029298058
49030298060
490313147093
49033298066
49034149034
49035298070
49036149036
490374196148
49038298076
49039298078
49041298082
490433147129
49044149044
49045149045
49047149047
49048298096
49049149049
49050149050
49051149051
49052149052
49053149053
49054149054
49056149056
49061149061
49064298128
49065149065
49066149066
49067149067
49068149068
49069298138
49070149070
49071149071
49072149072
49075149075
49076149076
49078298156
49079298158
49080149080
49081149081
49083298166
49084149084
49089298178
49090298180
49092298184
49093298186
49096298192
49097149097
49098149098
49099298198
49100149100
49101298202
49104149104
49108149108
49111149111
49114149114
49117298234
49120149120
49144149144
51222151222
579202115840
65160362345760
6546415981960
6553694762062592
Total2003111487823
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
428
20120
21121
662132
82182
1021102
1351135
1651165
1701170
1841184
2252450
2371237
2521252
2651265
3051305
3281328
3471347
3481348
3671367
4051405
4091409
4211421
4471447
4991499
5071507
5121512
5351535
5801580
6041604
6121612
6131613
6421642
6881688
6911691
7021702
7081708
7521752
7631763
7841784
7901790
8261826
8401840
8541854
8631863
8841884
8871887
93021860
9451945
9491949
9851985
9951995
101811018
102711027
104211042
106411064
107011070
107811078
109711097
112211122
114211142
115011150
116911169
119511195
120011200
122811228
124311243
125611256
126011260
130611306
130811308
130911309
134311343
136411364
136511365
138111381
141411414
144411444
144511445
146611466
148411484
150711507
150811508
151411514
156111561
157111571
158511585
158711587
159323186
160011600
161211612
161511615
161811618
161911619
162723254
163011630
163223264
163411634
164611646
165711657
165811658
166511665
166811668
167011670
167135013
167311673
167511675
167811678
168611686
168811688
169111691
169211692
170111701
170211702
170311703
170511705
170723414
170911709
171411714
171511715
171911719
172011720
172211722
172511725
172611726
172823456
172911729
173011730
173411734
173611736
174411744
174911749
175111751
175411754
175711757
176011760
176111761
176411764
177011770
177111771
177611776
177723554
177911779
178111781
178411784
178523570
179811798
180311803
180411804
180811808
181111811
181311813
181511815
181711817
181923638
182011820
182211822
182311823
182423648
182911829
183011830
183111831
183611836
184011840
185011850
185123702
185211852
185423708
185611856
186035580
186311863
186423728
186611866
186811868
186923738
187311873
187747508
188123762
188811888
189223784
189311893
189811898
189911899
190011900
190323806
190511905
190623812
190711907
191223824
191311913
191511915
191711917
191811918
192223844
192311923
192711927
192835784
193411934
193623872
193711937
193811938
194111941
194235826
194311943
194511945
195023900
195611956
195711957
195811958
195911959
196211962
196423928
196511965
196623932
196711967
197311973
197411974
197511975
197823956
198011980
198123962
198523970
198611986
198711987
199111991
199211992
199411994
199523990
200612006
200712007
200936027
201012010
201312013
201412014
201624032
201812018
202124042
202312023
202712027
202812028
203412034
203612036
204212042
204512045
204712047
204912049
208124162
208312083
208812088
209312093
209712097
210312103
211512115
211712117
211912119
212012120
212412124
212924258
213012130
213312133
213412134
214512145
214912149
215112151
215412154
215736471
217712177
217912179
218012180
218412184
218712187
219612196
220412204
220712207
221312213
222024440
222224444
222712227
224112241
224524490
224912249
225412254
225512255
226224524
226712267
227012270
227612276
227812278
228412284
228524570
228912289
229012290
229812298
230012300
230512305
231324626
231412314
231512315
231712317
232124642
232512325
233112331
233612336
233812338
234212342
234412344
234712347
234912349
235037050
235512355
235624712
235812358
236112361
236312363
236612366
236812368
237012370
237112371
237612376
238012380
238124762
238512385
238624772
239112391
239712397
239924798
240012400
240112401
240412404
240512405
240612406
240812408
241112411
241612416
241824836
241912419
242612426
242712427
243012430
243112431
243512435
244112441
244312443
244424888
244712447
244912449
245012450
245112451
245312453
245424908
245624912
245912459
246112461
246224924
246312463
246424928
246512465
246812468
246912469
247024940
247212472
247512475
247712477
247812478
247912479
248024960
248212482
248412484
248512485
248937467
249112491
249212492
249312493
249912499
250412504
250725014
250912509
251212512
251312513
251812518
251912519
252037560
252212522
252312523
252425048
252525050
252725054
253125062
253325066
253437602
253525070
253825076
254112541
254212542
254712547
255812558
256312563
256412564
256612566
256912569
257812578
259312593
259712597
260012600
260212602
261212612
261525230
262725254
262812628
263012630
263112631
263525270
263612636
263712637
264012640
264312643
264512645
264612646
265212652
265512655
266212662
266312663
266512665
266612666
267012670
267412674
268012680
268412684
268812688
269112691
269612696
270212702
270412704
270525410
270712707
271212712
271712717
271912719
272012720
272112721
272412724
272512725
273312733
273425468
273512735
274012740
274212742
274338229
274612746
275012750
275612756
276412764
276812768
279912799
281512815
285012850
285212852
285512855
287112871
292025840
292112921
292812928
293512935
298212982
298912989
299312993
299412994
301626032
302913029
306713067
307513075
307713077
308113081
308213082
311213112
311613116
312213122
312313123
312413124
312513125
312713127
312839384
313039390
313126262
313226264
313326266
313513135
313639408
313813138
314013140
314113141
314913149
315013150
315113151
315213152
315413154
315513155
316213162
316313163
316513165
316713167
316926338
317526350
317813178
318213182
318713187
319113191
319413194
319813198
320713207
320813208
321213212
321313213
322213222
322413224
322526450
322813228
323513235
324113241
324413244
325113251
325313253
325413254
325813258
326313263
326726534
326813268
327613276
327913279
329313293
329713297
330026600
330413304
330613306
330913309
331213312
331313313
331913319
332313323
332713327
332813328
333013330
333426668
333513335
333813338
334013340
334413344
334513345
334613346
334913349
335513355
335713357
335813358
336113361
336213362
336813368
336913369
337613376
337813378
338526770
339613396
340013400
340313403
340713407
340813408
340926818
341113411
341226824
341413414
341513415
342613426
343413434
343613436
344113441
344313443
344513445
344713447
344813448
345026900
345226904
345326906
345413454
345513455
345713457
346213462
346526930
346626932
346926938
347113471
347213472
347613476
348026960
348313483
348613486
348926978
349013490
349213492
349313493
349613496
349813498
349926998
350013500
350313503
350413504
3505310515
350613506
3507310521
350927018
351113511
351327026
3514310542
351513515
351613516
351813518
3522414088
352513525
3526310578
3527414108
352913529
353113531
353713537
354213542
354513545
354627092
354727094
354813548
355013550
3554310662
355813558
355913559
356013560
356127122
356327126
356513565
356613566
356827136
356913569
357013570
357227144
357413574
357727154
357813578
358127162
358213582
358513585
358627172
358713587
358813588
358913589
359613596
359827196
360213602
360813608
361313613
362913629
363613636
364413644
364713647
365713657
366113661
366313663
366713667
366813668
369113691
369313693
369413694
370313703
371013710
371213712
371613716
373213732
374527490
374913749
375513755
375613756
375713757
376213762
376627532
378913789
379913799
380313803
380613806
382313823
382413824
382813828
382913829
383213832
385113851
385913859
386213862
387513875
387713877
387913879
388313883
388413884
389413894
389913899
390013900
390813908
391013910
391313913
391513915
391827836
392313923
392427848
392527850
392827856
393027860
393113931
3933415732
393627872
393827876
394013940
394213942
394313943
394413944
394527890
3946311838
3947415788
394827896
394913949
395013950
395127902
3952415808
395313953
395427908
3955519775
395613956
3959311877
3960311880
396127922
396327926
396427928
3965311895
396727934
396813968
396927938
397013970
3971415884
397227944
397327946
397413974
397527950
3977415908
397813978
397913979
398113981
398227964
398313983
398427968
398513985
398613986
398713987
398813988
399013990
399513995
399827996
399913999
400014000
400114001
400214002
400328006
400414004
400514005
400628012
400914009
401014010
401228024
401328026
401414014
401514015
401728034
401814018
402328046
402428048
402628052
402728054
403028060
403214032
403328066
403414034
403528070
403828076
404214042
404514045
404814048
405128102
405414054
409814098
410026554108871400
Total27556111584016
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
026554
21000
81
Total27555
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333336266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882703f741473d7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3730336637343134
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_17.json b/autobahn/client/tungstenite_case_12_2_17.json new file mode 100644 index 0000000..0b49b98 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_17.json @@ -0,0 +1,1754 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 336, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 11522, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=336&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: XGHBdO7/R2JaG1UGWNjqgQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ibaV9uL1F4kKvDwUWXB1Ex84E7Y=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "13406": 1, + "42541": 1, + "42557": 1, + "42563": 1, + "42582": 1, + "42585": 1, + "42588": 1, + "42597": 2, + "42600": 1, + "42602": 2, + "42604": 1, + "42627": 1, + "42628": 1, + "42635": 1, + "42638": 1, + "42640": 1, + "42641": 2, + "42645": 1, + "42656": 1, + "42661": 1, + "42662": 1, + "42671": 1, + "42672": 1, + "42673": 1, + "42675": 1, + "42677": 2, + "42684": 1, + "42685": 1, + "42689": 1, + "42690": 1, + "42692": 1, + "42695": 1, + "42696": 1, + "42698": 2, + "42699": 1, + "42704": 1, + "42706": 1, + "42714": 1, + "42719": 1, + "42724": 1, + "42727": 1, + "42730": 1, + "42734": 1, + "42740": 1, + "42741": 1, + "42746": 1, + "42747": 2, + "42749": 1, + "42755": 2, + "42773": 1, + "42774": 1, + "42778": 1, + "42781": 1, + "42783": 1, + "42785": 1, + "42787": 1, + "42789": 2, + "42792": 1, + "42793": 1, + "42794": 2, + "42799": 1, + "42800": 1, + "42806": 1, + "42810": 1, + "42821": 2, + "42822": 1, + "42824": 2, + "42826": 1, + "42830": 2, + "42833": 1, + "42834": 2, + "42836": 1, + "42838": 1, + "42839": 2, + "42843": 1, + "42847": 3, + "42851": 2, + "42862": 2, + "42863": 1, + "42869": 1, + "42870": 1, + "42873": 2, + "42875": 1, + "42876": 2, + "42877": 1, + "42882": 2, + "42883": 1, + "42885": 1, + "42887": 1, + "42888": 1, + "42892": 2, + "42893": 1, + "42897": 1, + "42898": 3, + "42906": 2, + "42907": 1, + "42908": 1, + "42911": 1, + "42912": 2, + "42915": 1, + "42920": 2, + "42926": 1, + "42927": 1, + "42928": 1, + "42929": 1, + "42932": 1, + "42934": 2, + "42935": 1, + "42936": 2, + "42937": 1, + "42943": 1, + "42944": 1, + "42945": 1, + "42948": 2, + "42951": 1, + "42955": 2, + "42956": 1, + "42957": 1, + "42961": 1, + "42964": 1, + "42965": 1, + "42976": 1, + "42977": 1, + "42979": 3, + "42980": 1, + "42983": 1, + "42984": 1, + "42986": 1, + "42988": 1, + "42991": 2, + "42993": 1, + "42998": 1, + "43004": 1, + "43012": 1, + "43017": 1, + "43019": 1, + "43034": 1, + "43051": 2, + "43058": 1, + "43063": 1, + "43073": 1, + "43085": 1, + "43087": 1, + "43089": 1, + "43090": 1, + "43094": 1, + "43099": 1, + "43100": 1, + "43103": 1, + "43115": 1, + "43119": 1, + "43121": 1, + "43127": 2, + "43147": 1, + "43149": 1, + "43150": 1, + "43154": 1, + "43157": 1, + "43174": 1, + "43177": 1, + "43183": 1, + "43190": 2, + "43192": 2, + "43197": 1, + "43211": 1, + "43215": 2, + "43219": 1, + "43225": 1, + "43232": 1, + "43237": 1, + "43240": 1, + "43246": 1, + "43248": 1, + "43254": 1, + "43259": 1, + "43260": 1, + "43268": 1, + "43275": 1, + "43283": 2, + "43284": 1, + "43285": 1, + "43287": 1, + "43291": 1, + "43295": 1, + "43301": 1, + "43306": 1, + "43308": 1, + "43312": 1, + "43314": 1, + "43317": 1, + "43319": 1, + "43320": 3, + "43325": 1, + "43326": 2, + "43328": 1, + "43333": 1, + "43336": 1, + "43338": 1, + "43340": 1, + "43341": 1, + "43346": 1, + "43350": 1, + "43351": 2, + "43355": 1, + "43356": 2, + "43361": 1, + "43367": 1, + "43369": 2, + "43370": 1, + "43374": 1, + "43375": 1, + "43376": 1, + "43378": 1, + "43381": 1, + "43386": 1, + "43388": 2, + "43389": 1, + "43396": 1, + "43397": 1, + "43400": 1, + "43405": 1, + "43411": 1, + "43413": 1, + "43414": 2, + "43417": 1, + "43419": 1, + "43420": 1, + "43421": 1, + "43423": 1, + "43424": 2, + "43426": 2, + "43429": 1, + "43431": 1, + "43432": 1, + "43434": 2, + "43435": 1, + "43438": 1, + "43439": 1, + "43440": 3, + "43442": 1, + "43445": 1, + "43447": 1, + "43448": 1, + "43449": 1, + "43450": 2, + "43452": 1, + "43454": 1, + "43455": 1, + "43459": 3, + "43463": 1, + "43469": 1, + "43474": 1, + "43475": 1, + "43477": 2, + "43479": 1, + "43482": 1, + "43483": 1, + "43488": 1, + "43489": 1, + "43490": 3, + "43492": 1, + "43493": 1, + "43494": 2, + "43495": 2, + "43497": 2, + "43501": 2, + "43503": 2, + "43504": 2, + "43505": 2, + "43508": 2, + "43511": 1, + "43512": 1, + "43517": 1, + "43528": 1, + "43534": 1, + "43536": 1, + "43548": 1, + "43563": 1, + "43567": 1, + "43570": 1, + "43572": 1, + "43585": 2, + "43597": 2, + "43598": 1, + "43600": 1, + "43601": 1, + "43605": 2, + "43608": 1, + "43610": 1, + "43615": 1, + "43616": 1, + "43622": 1, + "43625": 1, + "43631": 1, + "43632": 1, + "43633": 1, + "43635": 1, + "43636": 1, + "43640": 1, + "43650": 1, + "43654": 1, + "43658": 1, + "43661": 1, + "43672": 1, + "43674": 1, + "43675": 1, + "43677": 1, + "43682": 1, + "43685": 1, + "43687": 1, + "43690": 1, + "43691": 1, + "43694": 1, + "43695": 1, + "43703": 1, + "43704": 2, + "43705": 1, + "43710": 1, + "43712": 1, + "43713": 2, + "43716": 2, + "43720": 1, + "43726": 1, + "43738": 1, + "43785": 2, + "43809": 1, + "43820": 1, + "43822": 1, + "43837": 1, + "43891": 1, + "43905": 1, + "43952": 1, + "43964": 1, + "43986": 1, + "44047": 1, + "44052": 1, + "44122": 1, + "44145": 1, + "44192": 1, + "44224": 1, + "44279": 1, + "44310": 1, + "44369": 1, + "44370": 1, + "44382": 1, + "44439": 1, + "44473": 1, + "44496": 1, + "44533": 1, + "44555": 1, + "44558": 1, + "44599": 1, + "44614": 1, + "44627": 1, + "44637": 1, + "44663": 1, + "44725": 1, + "44727": 1, + "44736": 1, + "44776": 1, + "44798": 1, + "44821": 1, + "44829": 1, + "44847": 1, + "44864": 1, + "44908": 1, + "44944": 1, + "44947": 1, + "44954": 1, + "45008": 1, + "45014": 1, + "45044": 1, + "45068": 1, + "45072": 1, + "45088": 1, + "45089": 1, + "45170": 1, + "45201": 1, + "45231": 1, + "45236": 1, + "45250": 1, + "45271": 1, + "45291": 1, + "45303": 1, + "45331": 1, + "45394": 1, + "45413": 1, + "45414": 1, + "45433": 1, + "45471": 1, + "45487": 1, + "45510": 1, + "45513": 1, + "45526": 1, + "45573": 1, + "45578": 1, + "45601": 1, + "45646": 1, + "45667": 1, + "45670": 1, + "45678": 1, + "45679": 1, + "45708": 1, + "45747": 1, + "45757": 1, + "45768": 1, + "45774": 1, + "45818": 1, + "45850": 1, + "45851": 1, + "45856": 1, + "45892": 1, + "45906": 1, + "45920": 1, + "45941": 1, + "45950": 1, + "45953": 1, + "45996": 1, + "46011": 1, + "46015": 1, + "46051": 1, + "46061": 1, + "46093": 1, + "46108": 1, + "46130": 2, + "46136": 1, + "46144": 1, + "46188": 1, + "46205": 1, + "46208": 1, + "46235": 1, + "46261": 1, + "46266": 1, + "46294": 1, + "46305": 1, + "46309": 1, + "46322": 1, + "46372": 2, + "46375": 1, + "46409": 1, + "46430": 1, + "46431": 1, + "46447": 1, + "46460": 1, + "46480": 1, + "46532": 1, + "46539": 1, + "46550": 1, + "46573": 1, + "46574": 1, + "46580": 1, + "46592": 1, + "46627": 1, + "46651": 1, + "46666": 1, + "46702": 1, + "46712": 1, + "46737": 1, + "46739": 1, + "46744": 1, + "46750": 1, + "46775": 1, + "46796": 1, + "46827": 1, + "46847": 1, + "46850": 1, + "46886": 1, + "46887": 1, + "46897": 1, + "46916": 1, + "46943": 1, + "46954": 1, + "46958": 1, + "46964": 1, + "47000": 1, + "47008": 1, + "47009": 1, + "47035": 1, + "47046": 1, + "47058": 1, + "47061": 2, + "47082": 1, + "47093": 1, + "47102": 1, + "47111": 1, + "47149": 1, + "47193": 1, + "47200": 1, + "47220": 1, + "47223": 1, + "47240": 1, + "47262": 1, + "47302": 1, + "47366": 1, + "47387": 1, + "47423": 1, + "47427": 1, + "47467": 1, + "47497": 1, + "47528": 1, + "47539": 1, + "47558": 1, + "47600": 1, + "47629": 1, + "47635": 1, + "47678": 1, + "47696": 1, + "47703": 1, + "47727": 1, + "47762": 1, + "47771": 1, + "47785": 1, + "47830": 1, + "47865": 1, + "47921": 1, + "47937": 1, + "47986": 2, + "48055": 1, + "48059": 1, + "48082": 1, + "48095": 1, + "48133": 1, + "48141": 1, + "48147": 1, + "48178": 1, + "48188": 1, + "48189": 1, + "48190": 1, + "48191": 1, + "48193": 1, + "48194": 2, + "48196": 3, + "48197": 2, + "48198": 2, + "48199": 2, + "48201": 1, + "48202": 2, + "48204": 1, + "48206": 1, + "48207": 1, + "48215": 1, + "48216": 1, + "48217": 1, + "48220": 1, + "48221": 1, + "48228": 1, + "48229": 1, + "48231": 1, + "48233": 1, + "48235": 2, + "48241": 1, + "48244": 1, + "48248": 1, + "48253": 1, + "48254": 1, + "48257": 1, + "48260": 1, + "48264": 1, + "48266": 1, + "48273": 1, + "48274": 2, + "48278": 1, + "48279": 1, + "48290": 1, + "48291": 2, + "48294": 1, + "48301": 1, + "48307": 1, + "48310": 1, + "48317": 1, + "48319": 1, + "48324": 1, + "48329": 1, + "48333": 2, + "48334": 1, + "48342": 1, + "48345": 1, + "48359": 1, + "48363": 1, + "48366": 2, + "48370": 2, + "48372": 1, + "48378": 1, + "48379": 1, + "48385": 1, + "48389": 1, + "48394": 1, + "48396": 1, + "48400": 2, + "48401": 1, + "48404": 1, + "48410": 1, + "48411": 1, + "48412": 1, + "48415": 1, + "48421": 1, + "48423": 1, + "48424": 1, + "48427": 1, + "48428": 1, + "48434": 1, + "48435": 1, + "48442": 1, + "48444": 1, + "48451": 2, + "48462": 1, + "48469": 1, + "48473": 1, + "48474": 1, + "48475": 2, + "48477": 1, + "48478": 1, + "48480": 1, + "48481": 1, + "48492": 1, + "48500": 1, + "48502": 1, + "48507": 1, + "48509": 1, + "48511": 1, + "48513": 1, + "48514": 1, + "48516": 2, + "48518": 2, + "48519": 2, + "48520": 1, + "48521": 1, + "48523": 1, + "48528": 1, + "48531": 2, + "48532": 2, + "48535": 1, + "48537": 1, + "48538": 1, + "48542": 1, + "48546": 2, + "48552": 1, + "48555": 2, + "48556": 1, + "48558": 1, + "48559": 1, + "48562": 1, + "48564": 1, + "48565": 2, + "48566": 1, + "48570": 1, + "48571": 3, + "48572": 1, + "48573": 3, + "48575": 2, + "48577": 1, + "48579": 2, + "48580": 3, + "48581": 1, + "48582": 1, + "48584": 1, + "48588": 3, + "48591": 1, + "48592": 2, + "48593": 4, + "48595": 1, + "48597": 1, + "48603": 1, + "48608": 1, + "48611": 1, + "48612": 2, + "48613": 2, + "48614": 1, + "48616": 1, + "48620": 3, + "48624": 1, + "48625": 1, + "48626": 1, + "48627": 2, + "48629": 1, + "48631": 1, + "48632": 1, + "48634": 2, + "48635": 1, + "48636": 1, + "48638": 2, + "48640": 1, + "48643": 2, + "48644": 1, + "48647": 2, + "48648": 1, + "48652": 2, + "48653": 1, + "48655": 1, + "48660": 1, + "48662": 1, + "48664": 2, + "48668": 1, + "48674": 1, + "48679": 1, + "48702": 1, + "48713": 1, + "48727": 1, + "48729": 1, + "48757": 1, + "48760": 1, + "48769": 1, + "48776": 1, + "48778": 1, + "48782": 1, + "48798": 1, + "48811": 2, + "48815": 1, + "48822": 1, + "48828": 1, + "48832": 1, + "48855": 1, + "48865": 1, + "48869": 1, + "48889": 1, + "48895": 1, + "48898": 1, + "48925": 1, + "48928": 1, + "48941": 1, + "48949": 1, + "48950": 1, + "48962": 1, + "48965": 1, + "48966": 1, + "48974": 1, + "48976": 1, + "48979": 1, + "48981": 1, + "48984": 2, + "48989": 1, + "48990": 2, + "48991": 1, + "48994": 2, + "48996": 1, + "48997": 1, + "48999": 4, + "49002": 2, + "49004": 1, + "49006": 1, + "49008": 1, + "49009": 1, + "49010": 1, + "49011": 2, + "49012": 3, + "49013": 4, + "49014": 2, + "49015": 1, + "49016": 1, + "49017": 3, + "49018": 4, + "49019": 1, + "49020": 2, + "49021": 5, + "49022": 1, + "49025": 2, + "49026": 3, + "49027": 2, + "49029": 2, + "49030": 2, + "49031": 3, + "49033": 2, + "49034": 1, + "49035": 2, + "49036": 1, + "49037": 4, + "49038": 2, + "49039": 2, + "49041": 2, + "49043": 3, + "49044": 1, + "49045": 1, + "49047": 1, + "49048": 2, + "49049": 1, + "49050": 1, + "49051": 1, + "49052": 1, + "49053": 1, + "49054": 1, + "49056": 1, + "49061": 1, + "49064": 2, + "49065": 1, + "49066": 1, + "49067": 1, + "49068": 1, + "49069": 2, + "49070": 1, + "49071": 1, + "49072": 1, + "49075": 1, + "49076": 1, + "49078": 2, + "49079": 2, + "49080": 1, + "49081": 1, + "49083": 2, + "49084": 1, + "49089": 2, + "49090": 2, + "49092": 2, + "49093": 2, + "49096": 2, + "49097": 1, + "49098": 1, + "49099": 2, + "49100": 1, + "49101": 2, + "49104": 1, + "49108": 1, + "49111": 1, + "49114": 1, + "49117": 2, + "49120": 1, + "49144": 1, + "51222": 1, + "57920": 2, + "65160": 36, + "65464": 15, + "65536": 947 + }, + "started": "2025-09-11T20:07:12.599Z", + "trafficStats": { + "incomingCompressionRatio": 0.8504757537841797, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 111473558, + "incomingOctetsWireLevel": 111487558, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00012559032160792787, + "outgoingCompressionRatio": 0.8504757537841797, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 111473558, + "outgoingOctetsWireLevel": 111583760, + "outgoingWebSocketFrames": 27554, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.000988593187274062, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 26554, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 2, + "20": 1, + "21": 1, + "66": 2, + "82": 1, + "102": 1, + "135": 1, + "165": 1, + "170": 1, + "184": 1, + "225": 2, + "237": 1, + "252": 1, + "265": 1, + "305": 1, + "328": 1, + "347": 1, + "348": 1, + "367": 1, + "405": 1, + "409": 1, + "421": 1, + "447": 1, + "499": 1, + "507": 1, + "512": 1, + "535": 1, + "580": 1, + "604": 1, + "612": 1, + "613": 1, + "642": 1, + "688": 1, + "691": 1, + "702": 1, + "708": 1, + "752": 1, + "763": 1, + "784": 1, + "790": 1, + "826": 1, + "840": 1, + "854": 1, + "863": 1, + "884": 1, + "887": 1, + "930": 2, + "945": 1, + "949": 1, + "985": 1, + "995": 1, + "1018": 1, + "1027": 1, + "1042": 1, + "1064": 1, + "1070": 1, + "1078": 1, + "1097": 1, + "1122": 1, + "1142": 1, + "1150": 1, + "1169": 1, + "1195": 1, + "1200": 1, + "1228": 1, + "1243": 1, + "1256": 1, + "1260": 1, + "1306": 1, + "1308": 1, + "1309": 1, + "1343": 1, + "1364": 1, + "1365": 1, + "1381": 1, + "1414": 1, + "1444": 1, + "1445": 1, + "1466": 1, + "1484": 1, + "1507": 1, + "1508": 1, + "1514": 1, + "1561": 1, + "1571": 1, + "1585": 1, + "1587": 1, + "1593": 2, + "1600": 1, + "1612": 1, + "1615": 1, + "1618": 1, + "1619": 1, + "1627": 2, + "1630": 1, + "1632": 2, + "1634": 1, + "1646": 1, + "1657": 1, + "1658": 1, + "1665": 1, + "1668": 1, + "1670": 1, + "1671": 3, + "1673": 1, + "1675": 1, + "1678": 1, + "1686": 1, + "1688": 1, + "1691": 1, + "1692": 1, + "1701": 1, + "1702": 1, + "1703": 1, + "1705": 1, + "1707": 2, + "1709": 1, + "1714": 1, + "1715": 1, + "1719": 1, + "1720": 1, + "1722": 1, + "1725": 1, + "1726": 1, + "1728": 2, + "1729": 1, + "1730": 1, + "1734": 1, + "1736": 1, + "1744": 1, + "1749": 1, + "1751": 1, + "1754": 1, + "1757": 1, + "1760": 1, + "1761": 1, + "1764": 1, + "1770": 1, + "1771": 1, + "1776": 1, + "1777": 2, + "1779": 1, + "1781": 1, + "1784": 1, + "1785": 2, + "1798": 1, + "1803": 1, + "1804": 1, + "1808": 1, + "1811": 1, + "1813": 1, + "1815": 1, + "1817": 1, + "1819": 2, + "1820": 1, + "1822": 1, + "1823": 1, + "1824": 2, + "1829": 1, + "1830": 1, + "1831": 1, + "1836": 1, + "1840": 1, + "1850": 1, + "1851": 2, + "1852": 1, + "1854": 2, + "1856": 1, + "1860": 3, + "1863": 1, + "1864": 2, + "1866": 1, + "1868": 1, + "1869": 2, + "1873": 1, + "1877": 4, + "1881": 2, + "1888": 1, + "1892": 2, + "1893": 1, + "1898": 1, + "1899": 1, + "1900": 1, + "1903": 2, + "1905": 1, + "1906": 2, + "1907": 1, + "1912": 2, + "1913": 1, + "1915": 1, + "1917": 1, + "1918": 1, + "1922": 2, + "1923": 1, + "1927": 1, + "1928": 3, + "1934": 1, + "1936": 2, + "1937": 1, + "1938": 1, + "1941": 1, + "1942": 3, + "1943": 1, + "1945": 1, + "1950": 2, + "1956": 1, + "1957": 1, + "1958": 1, + "1959": 1, + "1962": 1, + "1964": 2, + "1965": 1, + "1966": 2, + "1967": 1, + "1973": 1, + "1974": 1, + "1975": 1, + "1978": 2, + "1980": 1, + "1981": 2, + "1985": 2, + "1986": 1, + "1987": 1, + "1991": 1, + "1992": 1, + "1994": 1, + "1995": 2, + "2006": 1, + "2007": 1, + "2009": 3, + "2010": 1, + "2013": 1, + "2014": 1, + "2016": 2, + "2018": 1, + "2021": 2, + "2023": 1, + "2027": 1, + "2028": 1, + "2034": 1, + "2036": 1, + "2042": 1, + "2045": 1, + "2047": 1, + "2049": 1, + "2081": 2, + "2083": 1, + "2088": 1, + "2093": 1, + "2097": 1, + "2103": 1, + "2115": 1, + "2117": 1, + "2119": 1, + "2120": 1, + "2124": 1, + "2129": 2, + "2130": 1, + "2133": 1, + "2134": 1, + "2145": 1, + "2149": 1, + "2151": 1, + "2154": 1, + "2157": 3, + "2177": 1, + "2179": 1, + "2180": 1, + "2184": 1, + "2187": 1, + "2196": 1, + "2204": 1, + "2207": 1, + "2213": 1, + "2220": 2, + "2222": 2, + "2227": 1, + "2241": 1, + "2245": 2, + "2249": 1, + "2254": 1, + "2255": 1, + "2262": 2, + "2267": 1, + "2270": 1, + "2276": 1, + "2278": 1, + "2284": 1, + "2285": 2, + "2289": 1, + "2290": 1, + "2298": 1, + "2300": 1, + "2305": 1, + "2313": 2, + "2314": 1, + "2315": 1, + "2317": 1, + "2321": 2, + "2325": 1, + "2331": 1, + "2336": 1, + "2338": 1, + "2342": 1, + "2344": 1, + "2347": 1, + "2349": 1, + "2350": 3, + "2355": 1, + "2356": 2, + "2358": 1, + "2361": 1, + "2363": 1, + "2366": 1, + "2368": 1, + "2370": 1, + "2371": 1, + "2376": 1, + "2380": 1, + "2381": 2, + "2385": 1, + "2386": 2, + "2391": 1, + "2397": 1, + "2399": 2, + "2400": 1, + "2401": 1, + "2404": 1, + "2405": 1, + "2406": 1, + "2408": 1, + "2411": 1, + "2416": 1, + "2418": 2, + "2419": 1, + "2426": 1, + "2427": 1, + "2430": 1, + "2431": 1, + "2435": 1, + "2441": 1, + "2443": 1, + "2444": 2, + "2447": 1, + "2449": 1, + "2450": 1, + "2451": 1, + "2453": 1, + "2454": 2, + "2456": 2, + "2459": 1, + "2461": 1, + "2462": 2, + "2463": 1, + "2464": 2, + "2465": 1, + "2468": 1, + "2469": 1, + "2470": 2, + "2472": 1, + "2475": 1, + "2477": 1, + "2478": 1, + "2479": 1, + "2480": 2, + "2482": 1, + "2484": 1, + "2485": 1, + "2489": 3, + "2491": 1, + "2492": 1, + "2493": 1, + "2499": 1, + "2504": 1, + "2507": 2, + "2509": 1, + "2512": 1, + "2513": 1, + "2518": 1, + "2519": 1, + "2520": 3, + "2522": 1, + "2523": 1, + "2524": 2, + "2525": 2, + "2527": 2, + "2531": 2, + "2533": 2, + "2534": 3, + "2535": 2, + "2538": 2, + "2541": 1, + "2542": 1, + "2547": 1, + "2558": 1, + "2563": 1, + "2564": 1, + "2566": 1, + "2569": 1, + "2578": 1, + "2593": 1, + "2597": 1, + "2600": 1, + "2602": 1, + "2612": 1, + "2615": 2, + "2627": 2, + "2628": 1, + "2630": 1, + "2631": 1, + "2635": 2, + "2636": 1, + "2637": 1, + "2640": 1, + "2643": 1, + "2645": 1, + "2646": 1, + "2652": 1, + "2655": 1, + "2662": 1, + "2663": 1, + "2665": 1, + "2666": 1, + "2670": 1, + "2674": 1, + "2680": 1, + "2684": 1, + "2688": 1, + "2691": 1, + "2696": 1, + "2702": 1, + "2704": 1, + "2705": 2, + "2707": 1, + "2712": 1, + "2717": 1, + "2719": 1, + "2720": 1, + "2721": 1, + "2724": 1, + "2725": 1, + "2733": 1, + "2734": 2, + "2735": 1, + "2740": 1, + "2742": 1, + "2743": 3, + "2746": 1, + "2750": 1, + "2756": 1, + "2764": 1, + "2768": 1, + "2799": 1, + "2815": 1, + "2850": 1, + "2852": 1, + "2855": 1, + "2871": 1, + "2920": 2, + "2921": 1, + "2928": 1, + "2935": 1, + "2982": 1, + "2989": 1, + "2993": 1, + "2994": 1, + "3016": 2, + "3029": 1, + "3067": 1, + "3075": 1, + "3077": 1, + "3081": 1, + "3082": 1, + "3112": 1, + "3116": 1, + "3122": 1, + "3123": 1, + "3124": 1, + "3125": 1, + "3127": 1, + "3128": 3, + "3130": 3, + "3131": 2, + "3132": 2, + "3133": 2, + "3135": 1, + "3136": 3, + "3138": 1, + "3140": 1, + "3141": 1, + "3149": 1, + "3150": 1, + "3151": 1, + "3152": 1, + "3154": 1, + "3155": 1, + "3162": 1, + "3163": 1, + "3165": 1, + "3167": 1, + "3169": 2, + "3175": 2, + "3178": 1, + "3182": 1, + "3187": 1, + "3191": 1, + "3194": 1, + "3198": 1, + "3207": 1, + "3208": 1, + "3212": 1, + "3213": 1, + "3222": 1, + "3224": 1, + "3225": 2, + "3228": 1, + "3235": 1, + "3241": 1, + "3244": 1, + "3251": 1, + "3253": 1, + "3254": 1, + "3258": 1, + "3263": 1, + "3267": 2, + "3268": 1, + "3276": 1, + "3279": 1, + "3293": 1, + "3297": 1, + "3300": 2, + "3304": 1, + "3306": 1, + "3309": 1, + "3312": 1, + "3313": 1, + "3319": 1, + "3323": 1, + "3327": 1, + "3328": 1, + "3330": 1, + "3334": 2, + "3335": 1, + "3338": 1, + "3340": 1, + "3344": 1, + "3345": 1, + "3346": 1, + "3349": 1, + "3355": 1, + "3357": 1, + "3358": 1, + "3361": 1, + "3362": 1, + "3368": 1, + "3369": 1, + "3376": 1, + "3378": 1, + "3385": 2, + "3396": 1, + "3400": 1, + "3403": 1, + "3407": 1, + "3408": 1, + "3409": 2, + "3411": 1, + "3412": 2, + "3414": 1, + "3415": 1, + "3426": 1, + "3434": 1, + "3436": 1, + "3441": 1, + "3443": 1, + "3445": 1, + "3447": 1, + "3448": 1, + "3450": 2, + "3452": 2, + "3453": 2, + "3454": 1, + "3455": 1, + "3457": 1, + "3462": 1, + "3465": 2, + "3466": 2, + "3469": 2, + "3471": 1, + "3472": 1, + "3476": 1, + "3480": 2, + "3483": 1, + "3486": 1, + "3489": 2, + "3490": 1, + "3492": 1, + "3493": 1, + "3496": 1, + "3498": 1, + "3499": 2, + "3500": 1, + "3503": 1, + "3504": 1, + "3505": 3, + "3506": 1, + "3507": 3, + "3509": 2, + "3511": 1, + "3513": 2, + "3514": 3, + "3515": 1, + "3516": 1, + "3518": 1, + "3522": 4, + "3525": 1, + "3526": 3, + "3527": 4, + "3529": 1, + "3531": 1, + "3537": 1, + "3542": 1, + "3545": 1, + "3546": 2, + "3547": 2, + "3548": 1, + "3550": 1, + "3554": 3, + "3558": 1, + "3559": 1, + "3560": 1, + "3561": 2, + "3563": 2, + "3565": 1, + "3566": 1, + "3568": 2, + "3569": 1, + "3570": 1, + "3572": 2, + "3574": 1, + "3577": 2, + "3578": 1, + "3581": 2, + "3582": 1, + "3585": 1, + "3586": 2, + "3587": 1, + "3588": 1, + "3589": 1, + "3596": 1, + "3598": 2, + "3602": 1, + "3608": 1, + "3613": 1, + "3629": 1, + "3636": 1, + "3644": 1, + "3647": 1, + "3657": 1, + "3661": 1, + "3663": 1, + "3667": 1, + "3668": 1, + "3691": 1, + "3693": 1, + "3694": 1, + "3703": 1, + "3710": 1, + "3712": 1, + "3716": 1, + "3732": 1, + "3745": 2, + "3749": 1, + "3755": 1, + "3756": 1, + "3757": 1, + "3762": 1, + "3766": 2, + "3789": 1, + "3799": 1, + "3803": 1, + "3806": 1, + "3823": 1, + "3824": 1, + "3828": 1, + "3829": 1, + "3832": 1, + "3851": 1, + "3859": 1, + "3862": 1, + "3875": 1, + "3877": 1, + "3879": 1, + "3883": 1, + "3884": 1, + "3894": 1, + "3899": 1, + "3900": 1, + "3908": 1, + "3910": 1, + "3913": 1, + "3915": 1, + "3918": 2, + "3923": 1, + "3924": 2, + "3925": 2, + "3928": 2, + "3930": 2, + "3931": 1, + "3933": 4, + "3936": 2, + "3938": 2, + "3940": 1, + "3942": 1, + "3943": 1, + "3944": 1, + "3945": 2, + "3946": 3, + "3947": 4, + "3948": 2, + "3949": 1, + "3950": 1, + "3951": 2, + "3952": 4, + "3953": 1, + "3954": 2, + "3955": 5, + "3956": 1, + "3959": 3, + "3960": 3, + "3961": 2, + "3963": 2, + "3964": 2, + "3965": 3, + "3967": 2, + "3968": 1, + "3969": 2, + "3970": 1, + "3971": 4, + "3972": 2, + "3973": 2, + "3974": 1, + "3975": 2, + "3977": 4, + "3978": 1, + "3979": 1, + "3981": 1, + "3982": 2, + "3983": 1, + "3984": 2, + "3985": 1, + "3986": 1, + "3987": 1, + "3988": 1, + "3990": 1, + "3995": 1, + "3998": 2, + "3999": 1, + "4000": 1, + "4001": 1, + "4002": 1, + "4003": 2, + "4004": 1, + "4005": 1, + "4006": 2, + "4009": 1, + "4010": 1, + "4012": 2, + "4013": 2, + "4014": 1, + "4015": 1, + "4017": 2, + "4018": 1, + "4023": 2, + "4024": 2, + "4026": 2, + "4027": 2, + "4030": 2, + "4032": 1, + "4033": 2, + "4034": 1, + "4035": 2, + "4038": 2, + "4042": 1, + "4045": 1, + "4048": 1, + "4051": 2, + "4054": 1, + "4098": 1, + "4100": 26554 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333336266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882703f741473d7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "703f7414" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_18.html b/autobahn/client/tungstenite_case_12_2_18.html new file mode 100644 index 0000000..8c23c26 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_18.html @@ -0,0 +1,1933 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.18 : Pass - 12657 ms @ 2025-09-11T20:07:24.122Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=337&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: jR3mY3y+W4IEiVPc/mVTFQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0aYlhOUGMmM5PFdcQXE51zBVpuY=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
13406113406
42541142541
42557142557
42563142563
42582142582
42585142585
42588142588
42597285194
42600142600
42602285204
42604142604
42627142627
42628142628
42635142635
42638142638
42640142640
42641285282
42645142645
42656142656
42658142658
42661142661
42662142662
42671142671
42672142672
42673142673
42675142675
42677285354
42684142684
42685142685
42689142689
42690142690
42692142692
42695142695
42696142696
42698285396
42699142699
42704142704
42706142706
42714142714
42719142719
42724142724
42727142727
42730142730
42734142734
42740142740
42741142741
42746142746
42747285494
42755285510
42773142773
42774142774
42778142778
42781142781
42783142783
42785142785
42787142787
42789285578
42792142792
42793142793
42794285588
42799142799
42800142800
42806142806
42810142810
42821285642
42822142822
42824285648
42826142826
42830285660
42833142833
42834285668
42836142836
42838142838
42839285678
42843142843
428473128541
42851285702
42862285724
42863142863
42869142869
42870142870
42873285746
42875142875
42876285752
42877142877
42882142882
42883142883
42885142885
42887142887
42888142888
42892285784
42893142893
42897142897
428983128694
42906285812
42907142907
42908142908
42911142911
42912285824
42915142915
42920285840
42926142926
42927142927
42928142928
42929142929
42932142932
42934285868
42935142935
42936285872
42937142937
42943142943
42944142944
42945142945
42948285896
42951142951
42955285910
42956142956
42957142957
42961142961
42964142964
42965142965
42976142976
42977142977
429793128937
42980142980
42983142983
42984142984
42986142986
42988142988
42991285982
42993142993
42998142998
43004143004
43012143012
43017143017
43019143019
43051286102
43058143058
43063143063
43073143073
43085143085
43087143087
43089143089
43090143090
43094143094
43099286198
43100143100
43103143103
43115143115
43121143121
43125143125
43127286254
43147143147
43149143149
43154143154
43157143157
43174143174
43183143183
43190286380
43192286384
43197143197
43211143211
43215286430
43225143225
43232286464
43237143237
43240143240
43246143246
43248143248
43254143254
43255143255
43258143258
43260143260
43268143268
43275143275
43283286566
43284143284
43285143285
43287143287
43291143291
43295143295
43301143301
43306143306
43308143308
43314143314
43317143317
43319143319
433203129960
43325143325
43326286652
43328143328
43333143333
43336143336
43338143338
43340143340
43341143341
43346143346
43350143350
43351286702
43355143355
43356286712
43361143361
43367143367
43369286738
43374143374
43375143375
43376143376
43378143378
43381143381
43386143386
43388143388
43389143389
43396143396
43397143397
43405143405
43411143411
43413143413
43414143414
43417143417
43419143419
43421143421
43423143423
43424286848
43426286852
43429143429
43431143431
43432143432
43433143433
43434286868
43435143435
43438143438
43439143439
434403130320
43445143445
43448143448
43449143449
43450286900
43452143452
43454143454
43455143455
434593130377
43461143461
43463143463
43469143469
43474143474
43477286954
43482143482
43488143488
43489143489
434903130470
43492143492
43493143493
43494286988
434953130485
43497286994
43501287002
43503287006
43504143504
43505287010
43508287016
43511143511
43512143512
43517143517
43526143526
43528143528
43534143534
43536143536
43548143548
43553143553
43563143563
43567143567
43570143570
43572143572
43585287170
43595143595
43597287194
43598143598
43600143600
43601143601
43605287210
43606143606
43610143610
43613143613
43615143615
43616143616
43622143622
43625143625
43632143632
43633143633
43635287270
43636143636
43640143640
43644143644
43650143650
43654143654
43658143658
43661143661
43672143672
43674143674
43675143675
43677143677
43682143682
43687143687
43688143688
43690143690
43691143691
43694143694
43695143695
43703143703
43704287408
43705143705
43710143710
43712143712
437133131139
43716143716
43720143720
43726143726
43738143738
43746143746
43764143764
43776143776
43785143785
43790143790
43796143796
43818143818
43820143820
43822143822
43823143823
43855143855
43859143859
43880143880
43891143891
43905143905
43952143952
43964143964
43986143986
44047144047
44052144052
44122144122
44145144145
44192144192
44224144224
44279144279
44297144297
44310144310
44370144370
44382144382
44439144439
44453144453
44473144473
44496144496
44533144533
44555144555
44558144558
44599144599
44614144614
44627144627
44637144637
44638144638
44663144663
44725144725
44727144727
44736144736
44776144776
44798144798
44821144821
44847144847
44864144864
44908144908
44944144944
44947144947
44972144972
45008145008
45068145068
45072145072
45088145088
45089145089
45170145170
45201145201
45231145231
45236145236
45250145250
45271145271
45291145291
45303145303
45330145330
45331145331
45394145394
45413145413
45414145414
45433145433
45471145471
45487145487
45510145510
45513145513
45526145526
45573145573
45578145578
45601145601
45646145646
45667145667
45670145670
45678145678
45679145679
45708145708
45747145747
45757145757
45768145768
45774145774
45818145818
45850145850
45851145851
45856145856
45892145892
45906145906
45920145920
45941145941
45950145950
45953145953
45996145996
46011146011
46015146015
46051146051
46061146061
46093146093
46108146108
46130292260
46136146136
46144146144
46188146188
46205146205
46208146208
46235146235
46261146261
46266146266
46294146294
46305146305
46309146309
46322146322
46372292744
46375146375
46409146409
46430146430
46431146431
46447146447
46460146460
46480146480
46511146511
46532146532
46539146539
46550146550
46573146573
46574146574
46580146580
46592146592
46627146627
46651146651
46666146666
46702146702
46712146712
46737146737
46739146739
46744146744
46750146750
46775146775
46796146796
46827146827
46847146847
46850146850
46886293772
46897146897
46916146916
46943146943
46954146954
46964146964
47000147000
47008147008
47009147009
47035147035
47046147046
47058147058
47061294122
47082147082
47093147093
47102147102
47111147111
47149147149
47163147163
47193147193
47200147200
47220147220
47223147223
47240147240
47262147262
47302147302
47320147320
47351147351
47366147366
47387147387
47423147423
47427147427
47467147467
47497147497
47528147528
47558147558
47600147600
47629147629
47635147635
47678147678
47703147703
47762147762
47771147771
47785147785
47830147830
47865147865
47921147921
47937147937
47986295972
47994147994
48055148055
48059148059
48082148082
48095148095
48133148133
48141148141
48147148147
48178148178
48182148182
48188148188
48189148189
48190148190
48191148191
48193148193
481943144582
481963144588
48197296394
48198296396
48199296398
48201148201
482023144606
48204148204
48206148206
48207148207
48215148215
48216148216
48217148217
48220148220
48221148221
48228148228
48229148229
48231148231
48233148233
48235296470
48241148241
48244148244
48248148248
48253148253
48257148257
48260148260
48264148264
48273148273
48274148274
48278148278
48279148279
48290148290
48291296582
48294148294
48301148301
48307148307
48310148310
48317148317
48319148319
48324148324
48329148329
48333296666
48334148334
48342148342
48345148345
48359148359
48363148363
48366296732
48370148370
48372148372
48378148378
48379148379
48385148385
48389148389
48394148394
48396148396
48400296800
48401148401
48404148404
48410148410
48411148411
48412148412
48415148415
48421148421
48423148423
48424148424
48427148427
48428148428
48434148434
48435148435
48442148442
48444148444
48451296902
48462148462
48469148469
48473148473
48474148474
48475296950
48477148477
48478148478
48480148480
48481148481
48492148492
48500148500
48502148502
48507148507
48509148509
48511148511
48513148513
48516297032
48518297036
48519297038
48521148521
48523148523
48528148528
48531297062
48532297064
48537148537
48538148538
48542148542
48546297092
48552148552
48555297110
48556148556
48558148558
48559148559
48562148562
48564148564
48565148565
48566148566
48570148570
485713145713
48572148572
485733145719
48575297150
48579297158
485803145740
48581148581
48582148582
48584148584
48588297176
48591148591
48592297184
485933145779
48595148595
48597148597
48608148608
48611148611
48612297224
48613148613
48614148614
48616148616
486203145860
48624148624
48625148625
48626148626
48627297254
48629148629
48631148631
48632148632
48634148634
48635148635
48636148636
48638297276
48640148640
48643297286
48647297294
48648148648
48652148652
48653148653
48655148655
48662148662
48664297328
48668148668
48674148674
48679148679
48702148702
48713148713
48727148727
48729148729
48757148757
48760148760
48769148769
48776148776
48778148778
48782148782
48798148798
48811297622
48815148815
48822148822
48828148828
48832148832
48865148865
48869148869
48889148889
48890297780
48895148895
48896148896
48898148898
48911148911
48925148925
48928148928
48941297882
48945148945
48949148949
48950148950
48953148953
48964297928
48965148965
48966148966
48969148969
48974148974
48976148976
48979297958
48981148981
48984297968
48989297978
48990297980
48991148991
48994297988
48996297992
48997148997
489994195996
49002298004
49004149004
49006149006
49008149008
49009149009
49010298020
49011298022
490123147036
490134196052
49014298028
49015149015
49016149016
49017298034
490184196072
49019149019
490203147060
490215245105
49022149022
490253147075
490263147078
49027298054
49028149028
49029298058
49030298060
490313147093
49033298066
49034149034
49035298070
49036149036
490374196148
49038298076
49039298078
49041298082
490433147129
49045149045
49047149047
49048298096
49049149049
49050149050
49051149051
49052149052
49053149053
49054149054
49056149056
49061149061
49064298128
49065149065
49066149066
49067149067
49069149069
49070149070
49071149071
49072298144
49075149075
49076149076
49078298156
49079298158
49080149080
49081149081
49083298166
49084149084
49089298178
49090298180
49092298184
49093298186
49096298192
49098149098
49099298198
49100149100
49101298202
49104149104
49108149108
49111149111
49114149114
49116149116
49117298234
49120149120
49231149231
49445149445
57920157920
65160573714120
65464165464
6553694161669376
Total2003111487823
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
976319763
977919779
978519785
980419804
980719807
981019810
9819219638
982219822
9824219648
982619826
984919849
985019850
985719857
986019860
986219862
9863219726
986719867
987819878
988019880
988319883
988419884
989319893
989419894
989519895
989719897
9899219798
990619906
990719907
991119911
991219912
991419914
991719917
991819918
9920219840
992119921
992619926
992819928
993619936
994119941
994619946
994919949
995219952
995619956
996219962
996319963
996819968
9969219938
997119971
9977219954
999519995
999619996
10000110000
10003110003
10005110005
10007110007
10009110009
10011220022
10014110014
10015110015
10016220032
10021110021
10022110022
10028110028
10032110032
10043220086
10044110044
10046220092
10048110048
10052220104
10055110055
10056220112
10058110058
10060110060
10061220122
10065110065
10069330207
10073220146
10084220168
10085110085
10091110091
10092110092
10095220190
10097110097
10098220196
10099110099
10104220208
10105110105
10107110107
10109110109
10110110110
10114220228
10115110115
10119110119
10120330360
10128220256
10129110129
10130110130
10133110133
10134220268
10137110137
10142220284
10148110148
10149110149
10150110150
10151110151
10154110154
10156220312
10157110157
10158220316
10159110159
10165110165
10166110166
10167110167
10170220340
10173110173
10177220354
10178110178
10179110179
10183110183
10186110186
10187110187
10198110198
10199110199
10201330603
10202110202
10205110205
10206110206
10208110208
10210110210
10213220426
10215110215
10220110220
10226110226
10234110234
10239110239
10241110241
10273220546
10280110280
10285110285
10295110295
10307110307
10309110309
10311110311
10312110312
10316110316
10321220642
10322110322
10325110325
10337110337
10341110341
10343110343
10349220698
10369110369
10371110371
10372110372
10376110376
10379110379
10396110396
10399110399
10405110405
10412220824
10414220828
10419110419
10433110433
10437220874
10441110441
10447110447
10454220908
10459110459
10462110462
10468110468
10470110470
10476110476
10477110477
10481110481
10482110482
10490110490
10497110497
10505221010
10506110506
10507110507
10509110509
10513110513
10517110517
10523110523
10528110528
10530110530
10534110534
10536110536
10539110539
10541110541
10542331626
10547110547
10548221096
10550110550
10555110555
10558110558
10560110560
10562110562
10563110563
10568110568
10572110572
10573221146
10577110577
10578221156
10583110583
10589110589
10591221182
10592110592
10596110596
10597110597
10598110598
10600110600
10603110603
10608110608
10610221220
10611110611
10618110618
10619110619
10622110622
10627110627
10633110633
10635110635
10636221272
10639110639
10641110641
10642110642
10643110643
10645110645
10646221292
10648221296
10651110651
10653110653
10654110654
10655110655
10656221312
10657110657
10660110660
10661110661
10662221324
10664110664
10667110667
10669110669
10670110670
10671110671
10672221344
10674110674
10676110676
10677110677
10681332043
10683110683
10685110685
10691110691
10696110696
10699221398
10701110701
10704110704
10705110705
10710110710
10711110711
10712332136
10714110714
10715110715
10716221432
10717221434
10719221438
10723221446
10725221450
10726221452
10727221454
10730221460
10733110733
10734110734
10739110739
10750110750
10756110756
10758110758
10770110770
10785110785
10789110789
10792110792
10794110794
10807221614
10819221638
10820110820
10822110822
10823110823
10827221654
10828110828
10832110832
10835110835
10837110837
10838110838
10844110844
10847110847
10854110854
10855110855
10857110857
10858110858
10862110862
10866110866
10872110872
10876110876
10880110880
10883110883
10894110894
10896110896
10897110897
10899110899
10904110904
10909110909
10912110912
10913110913
10916110916
10917110917
10925110925
10926221852
10927110927
10932110932
10934110934
10935332805
10938110938
10942110942
10948110948
10960110960
11007111007
11042111042
11044111044
11113111113
11127111127
11174111174
11186111186
11208111208
11269111269
11274111274
11344111344
11367111367
11414111414
11446111446
11501111501
11519111519
11532111532
11592111592
11604111604
11661111661
11675111675
11695111695
11718111718
11755111755
11777111777
11780111780
11821111821
11836111836
11849111849
11859111859
11860111860
11885111885
11947111947
11949111949
11958111958
11998111998
12020112020
12043112043
12069112069
12086112086
12117112117
12130112130
12166112166
12169112169
12176112176
12194112194
12230112230
12290112290
12294112294
12310112310
12311112311
12356112356
12372112372
12392112392
12423112423
12453112453
12458112458
12472112472
12513225026
12525112525
12553112553
12593112593
12616112616
12635112635
12636112636
12655112655
12693112693
12697112697
12709112709
12735112735
12787112787
12795112795
12800112800
12823112823
12868112868
12892112892
12900112900
12901112901
12930112930
12976112976
12979112979
12990112990
12996112996
13040113040
13051113051
13072113072
13078113078
13114113114
13128113128
13142113142
13151113151
13172113172
13175113175
13218226436
13233113233
13237113237
13273113273
13283113283
13306113306
13315113315
13330113330
13352113352
13358113358
13366113366
13385113385
13410113410
13430113430
13438113438
13457113457
13483113483
13488113488
13516113516
13531113531
13544113544
13548113548
13594113594
13596113596
13597113597
13631113631
13652113652
13653113653
13669113669
13702113702
13732113732
13733113733
13754113754
13772113772
13795113795
13796113796
13802113802
13849113849
13873113873
13881113881
13888113888
13907113907
13934113934
13959113959
13961113961
13966113966
13997113997
14018114018
14039114039
14049114049
14069114069
14072114072
14086114086
14108114108
14119114119
14138114138
14148114148
14165114165
14176114176
14186114186
14222114222
14230114230
14231114231
14268114268
14269114269
14280114280
14283114283
14304114304
14315114315
14324114324
14333114333
14371114371
14385114385
14422114422
14442114442
14445114445
14484114484
14542114542
14573114573
14588114588
14609114609
14649114649
14689114689
14719114719
14750114750
14780114780
14822114822
14851114851
14857114857
14900114900
14925114925
14984114984
14993114993
15007115007
15052115052
15087115087
15143115143
15159115159
15208230416
15216115216
15277115277
15281115281
15304115304
15317115317
15355115355
15363115363
15369115369
15400115400
15404115404
15410115410
15411115411
15412115412
15413115413
15415115415
15416346248
15418346254
15419230838
15420230840
15421230842
15423115423
15424346272
15426115426
15428115428
15429115429
15437115437
15438115438
15439115439
15442115442
15443115443
15450115450
15451115451
15453115453
15455115455
15457230914
15463115463
15466115466
15470115470
15475115475
15479115479
15482115482
15486115486
15495115495
15496115496
15500115500
15501115501
15512115512
15513231026
15516115516
15523115523
15529115529
15532115532
15539115539
15541115541
15546115546
15551115551
15555231110
15556115556
15564115564
15567115567
15581115581
15585115585
15588231176
15592115592
15594115594
15600115600
15601115601
15607115607
15611115611
15616115616
15618115618
15622231244
15623115623
15626115626
15632115632
15633115633
15634115634
15637115637
15643115643
15645115645
15646115646
15649115649
15650115650
15656115656
15657115657
15664115664
15666115666
15673231346
15684115684
15691115691
15695115695
15696115696
15697231394
15699115699
15700115700
15702115702
15703115703
15714115714
15722115722
15724115724
15729115729
15731115731
15733115733
15735115735
15736115736
15738231476
15740231480
15741231482
15742115742
15743115743
15745115745
15750115750
15753231506
15754231508
15757115757
15759115759
15760115760
15764115764
15768231536
15774115774
15777231554
15778115778
15780115780
15781115781
15784115784
15786115786
15787231574
15788115788
15792115792
15793347379
15794115794
15795347385
15797231594
15799115799
15801231602
15802347406
15803115803
15804115804
15806115806
15810463240
15813115813
15814231628
15815463260
15817115817
15819115819
15825115825
15830115830
15833115833
15834231668
15835231670
15836115836
15838115838
15842347526
15846115846
15847115847
15848115848
15849231698
15851115851
15853115853
15854115854
15856231712
15857115857
15858115858
15860231720
15862115862
15865231730
15866115866
15869231738
15870115870
15874231748
15875115875
15877115877
15884115884
15886231772
15890115890
15896115896
15901115901
15924115924
15935115935
15949115949
15951115951
15979115979
15982115982
15991115991
15998115998
16000116000
16004116004
16020116020
16033232066
16037116037
16044116044
16050116050
16054116054
16077116077
16087116087
16091116091
16111116111
16112116112
16117116117
16120116120
16147116147
16150116150
16163116163
16167116167
16171116171
16172116172
16187116187
16188116188
16196116196
16198116198
16201116201
16203116203
16206232412
16211116211
16212232424
16213116213
16216232432
16218232436
16219116219
16221464884
16224232448
16226116226
16228116228
16230116230
16231116231
16232116232
16233232466
16234348702
16235464940
16236232472
16237116237
16238116238
16239232478
16240464960
16241116241
16242232484
16243581215
16244116244
16247348741
16248348744
16249232498
16251232502
16252232504
16253348759
16255232510
16256116256
16257232514
16258116258
16259465036
16260232520
16261232522
16263232526
16265348795
16266116266
16267116267
16269116269
16270232540
16271116271
16272116272
16273116273
16274116274
16275116275
16276116276
16278116278
16283116283
16286232572
16287116287
16288116288
16289116289
16291232582
16292116292
16293116293
16294232588
16297116297
16298116298
16300232600
16301232602
16302116302
16303116303
16305232610
16306116306
16311232622
16312232624
16314232628
16315232630
16318232636
16320116320
16321232642
16322116322
16323232646
16326116326
16330116330
16333116333
16336116336
16339232678
16342116342
16452116452
32772300098316000
Total4002111489814
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
03000
21000
81
Total4001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333337266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882ead73112e93f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6561643733313132
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_18.json b/autobahn/client/tungstenite_case_12_2_18.json new file mode 100644 index 0000000..63f7204 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_18.json @@ -0,0 +1,1780 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 337, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 12657, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=337&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: jR3mY3y+W4IEiVPc/mVTFQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0aYlhOUGMmM5PFdcQXE51zBVpuY=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "13406": 1, + "42541": 1, + "42557": 1, + "42563": 1, + "42582": 1, + "42585": 1, + "42588": 1, + "42597": 2, + "42600": 1, + "42602": 2, + "42604": 1, + "42627": 1, + "42628": 1, + "42635": 1, + "42638": 1, + "42640": 1, + "42641": 2, + "42645": 1, + "42656": 1, + "42658": 1, + "42661": 1, + "42662": 1, + "42671": 1, + "42672": 1, + "42673": 1, + "42675": 1, + "42677": 2, + "42684": 1, + "42685": 1, + "42689": 1, + "42690": 1, + "42692": 1, + "42695": 1, + "42696": 1, + "42698": 2, + "42699": 1, + "42704": 1, + "42706": 1, + "42714": 1, + "42719": 1, + "42724": 1, + "42727": 1, + "42730": 1, + "42734": 1, + "42740": 1, + "42741": 1, + "42746": 1, + "42747": 2, + "42755": 2, + "42773": 1, + "42774": 1, + "42778": 1, + "42781": 1, + "42783": 1, + "42785": 1, + "42787": 1, + "42789": 2, + "42792": 1, + "42793": 1, + "42794": 2, + "42799": 1, + "42800": 1, + "42806": 1, + "42810": 1, + "42821": 2, + "42822": 1, + "42824": 2, + "42826": 1, + "42830": 2, + "42833": 1, + "42834": 2, + "42836": 1, + "42838": 1, + "42839": 2, + "42843": 1, + "42847": 3, + "42851": 2, + "42862": 2, + "42863": 1, + "42869": 1, + "42870": 1, + "42873": 2, + "42875": 1, + "42876": 2, + "42877": 1, + "42882": 1, + "42883": 1, + "42885": 1, + "42887": 1, + "42888": 1, + "42892": 2, + "42893": 1, + "42897": 1, + "42898": 3, + "42906": 2, + "42907": 1, + "42908": 1, + "42911": 1, + "42912": 2, + "42915": 1, + "42920": 2, + "42926": 1, + "42927": 1, + "42928": 1, + "42929": 1, + "42932": 1, + "42934": 2, + "42935": 1, + "42936": 2, + "42937": 1, + "42943": 1, + "42944": 1, + "42945": 1, + "42948": 2, + "42951": 1, + "42955": 2, + "42956": 1, + "42957": 1, + "42961": 1, + "42964": 1, + "42965": 1, + "42976": 1, + "42977": 1, + "42979": 3, + "42980": 1, + "42983": 1, + "42984": 1, + "42986": 1, + "42988": 1, + "42991": 2, + "42993": 1, + "42998": 1, + "43004": 1, + "43012": 1, + "43017": 1, + "43019": 1, + "43051": 2, + "43058": 1, + "43063": 1, + "43073": 1, + "43085": 1, + "43087": 1, + "43089": 1, + "43090": 1, + "43094": 1, + "43099": 2, + "43100": 1, + "43103": 1, + "43115": 1, + "43121": 1, + "43125": 1, + "43127": 2, + "43147": 1, + "43149": 1, + "43154": 1, + "43157": 1, + "43174": 1, + "43183": 1, + "43190": 2, + "43192": 2, + "43197": 1, + "43211": 1, + "43215": 2, + "43225": 1, + "43232": 2, + "43237": 1, + "43240": 1, + "43246": 1, + "43248": 1, + "43254": 1, + "43255": 1, + "43258": 1, + "43260": 1, + "43268": 1, + "43275": 1, + "43283": 2, + "43284": 1, + "43285": 1, + "43287": 1, + "43291": 1, + "43295": 1, + "43301": 1, + "43306": 1, + "43308": 1, + "43314": 1, + "43317": 1, + "43319": 1, + "43320": 3, + "43325": 1, + "43326": 2, + "43328": 1, + "43333": 1, + "43336": 1, + "43338": 1, + "43340": 1, + "43341": 1, + "43346": 1, + "43350": 1, + "43351": 2, + "43355": 1, + "43356": 2, + "43361": 1, + "43367": 1, + "43369": 2, + "43374": 1, + "43375": 1, + "43376": 1, + "43378": 1, + "43381": 1, + "43386": 1, + "43388": 1, + "43389": 1, + "43396": 1, + "43397": 1, + "43405": 1, + "43411": 1, + "43413": 1, + "43414": 1, + "43417": 1, + "43419": 1, + "43421": 1, + "43423": 1, + "43424": 2, + "43426": 2, + "43429": 1, + "43431": 1, + "43432": 1, + "43433": 1, + "43434": 2, + "43435": 1, + "43438": 1, + "43439": 1, + "43440": 3, + "43445": 1, + "43448": 1, + "43449": 1, + "43450": 2, + "43452": 1, + "43454": 1, + "43455": 1, + "43459": 3, + "43461": 1, + "43463": 1, + "43469": 1, + "43474": 1, + "43477": 2, + "43482": 1, + "43488": 1, + "43489": 1, + "43490": 3, + "43492": 1, + "43493": 1, + "43494": 2, + "43495": 3, + "43497": 2, + "43501": 2, + "43503": 2, + "43504": 1, + "43505": 2, + "43508": 2, + "43511": 1, + "43512": 1, + "43517": 1, + "43526": 1, + "43528": 1, + "43534": 1, + "43536": 1, + "43548": 1, + "43553": 1, + "43563": 1, + "43567": 1, + "43570": 1, + "43572": 1, + "43585": 2, + "43595": 1, + "43597": 2, + "43598": 1, + "43600": 1, + "43601": 1, + "43605": 2, + "43606": 1, + "43610": 1, + "43613": 1, + "43615": 1, + "43616": 1, + "43622": 1, + "43625": 1, + "43632": 1, + "43633": 1, + "43635": 2, + "43636": 1, + "43640": 1, + "43644": 1, + "43650": 1, + "43654": 1, + "43658": 1, + "43661": 1, + "43672": 1, + "43674": 1, + "43675": 1, + "43677": 1, + "43682": 1, + "43687": 1, + "43688": 1, + "43690": 1, + "43691": 1, + "43694": 1, + "43695": 1, + "43703": 1, + "43704": 2, + "43705": 1, + "43710": 1, + "43712": 1, + "43713": 3, + "43716": 1, + "43720": 1, + "43726": 1, + "43738": 1, + "43746": 1, + "43764": 1, + "43776": 1, + "43785": 1, + "43790": 1, + "43796": 1, + "43818": 1, + "43820": 1, + "43822": 1, + "43823": 1, + "43855": 1, + "43859": 1, + "43880": 1, + "43891": 1, + "43905": 1, + "43952": 1, + "43964": 1, + "43986": 1, + "44047": 1, + "44052": 1, + "44122": 1, + "44145": 1, + "44192": 1, + "44224": 1, + "44279": 1, + "44297": 1, + "44310": 1, + "44370": 1, + "44382": 1, + "44439": 1, + "44453": 1, + "44473": 1, + "44496": 1, + "44533": 1, + "44555": 1, + "44558": 1, + "44599": 1, + "44614": 1, + "44627": 1, + "44637": 1, + "44638": 1, + "44663": 1, + "44725": 1, + "44727": 1, + "44736": 1, + "44776": 1, + "44798": 1, + "44821": 1, + "44847": 1, + "44864": 1, + "44908": 1, + "44944": 1, + "44947": 1, + "44972": 1, + "45008": 1, + "45068": 1, + "45072": 1, + "45088": 1, + "45089": 1, + "45170": 1, + "45201": 1, + "45231": 1, + "45236": 1, + "45250": 1, + "45271": 1, + "45291": 1, + "45303": 1, + "45330": 1, + "45331": 1, + "45394": 1, + "45413": 1, + "45414": 1, + "45433": 1, + "45471": 1, + "45487": 1, + "45510": 1, + "45513": 1, + "45526": 1, + "45573": 1, + "45578": 1, + "45601": 1, + "45646": 1, + "45667": 1, + "45670": 1, + "45678": 1, + "45679": 1, + "45708": 1, + "45747": 1, + "45757": 1, + "45768": 1, + "45774": 1, + "45818": 1, + "45850": 1, + "45851": 1, + "45856": 1, + "45892": 1, + "45906": 1, + "45920": 1, + "45941": 1, + "45950": 1, + "45953": 1, + "45996": 1, + "46011": 1, + "46015": 1, + "46051": 1, + "46061": 1, + "46093": 1, + "46108": 1, + "46130": 2, + "46136": 1, + "46144": 1, + "46188": 1, + "46205": 1, + "46208": 1, + "46235": 1, + "46261": 1, + "46266": 1, + "46294": 1, + "46305": 1, + "46309": 1, + "46322": 1, + "46372": 2, + "46375": 1, + "46409": 1, + "46430": 1, + "46431": 1, + "46447": 1, + "46460": 1, + "46480": 1, + "46511": 1, + "46532": 1, + "46539": 1, + "46550": 1, + "46573": 1, + "46574": 1, + "46580": 1, + "46592": 1, + "46627": 1, + "46651": 1, + "46666": 1, + "46702": 1, + "46712": 1, + "46737": 1, + "46739": 1, + "46744": 1, + "46750": 1, + "46775": 1, + "46796": 1, + "46827": 1, + "46847": 1, + "46850": 1, + "46886": 2, + "46897": 1, + "46916": 1, + "46943": 1, + "46954": 1, + "46964": 1, + "47000": 1, + "47008": 1, + "47009": 1, + "47035": 1, + "47046": 1, + "47058": 1, + "47061": 2, + "47082": 1, + "47093": 1, + "47102": 1, + "47111": 1, + "47149": 1, + "47163": 1, + "47193": 1, + "47200": 1, + "47220": 1, + "47223": 1, + "47240": 1, + "47262": 1, + "47302": 1, + "47320": 1, + "47351": 1, + "47366": 1, + "47387": 1, + "47423": 1, + "47427": 1, + "47467": 1, + "47497": 1, + "47528": 1, + "47558": 1, + "47600": 1, + "47629": 1, + "47635": 1, + "47678": 1, + "47703": 1, + "47762": 1, + "47771": 1, + "47785": 1, + "47830": 1, + "47865": 1, + "47921": 1, + "47937": 1, + "47986": 2, + "47994": 1, + "48055": 1, + "48059": 1, + "48082": 1, + "48095": 1, + "48133": 1, + "48141": 1, + "48147": 1, + "48178": 1, + "48182": 1, + "48188": 1, + "48189": 1, + "48190": 1, + "48191": 1, + "48193": 1, + "48194": 3, + "48196": 3, + "48197": 2, + "48198": 2, + "48199": 2, + "48201": 1, + "48202": 3, + "48204": 1, + "48206": 1, + "48207": 1, + "48215": 1, + "48216": 1, + "48217": 1, + "48220": 1, + "48221": 1, + "48228": 1, + "48229": 1, + "48231": 1, + "48233": 1, + "48235": 2, + "48241": 1, + "48244": 1, + "48248": 1, + "48253": 1, + "48257": 1, + "48260": 1, + "48264": 1, + "48273": 1, + "48274": 1, + "48278": 1, + "48279": 1, + "48290": 1, + "48291": 2, + "48294": 1, + "48301": 1, + "48307": 1, + "48310": 1, + "48317": 1, + "48319": 1, + "48324": 1, + "48329": 1, + "48333": 2, + "48334": 1, + "48342": 1, + "48345": 1, + "48359": 1, + "48363": 1, + "48366": 2, + "48370": 1, + "48372": 1, + "48378": 1, + "48379": 1, + "48385": 1, + "48389": 1, + "48394": 1, + "48396": 1, + "48400": 2, + "48401": 1, + "48404": 1, + "48410": 1, + "48411": 1, + "48412": 1, + "48415": 1, + "48421": 1, + "48423": 1, + "48424": 1, + "48427": 1, + "48428": 1, + "48434": 1, + "48435": 1, + "48442": 1, + "48444": 1, + "48451": 2, + "48462": 1, + "48469": 1, + "48473": 1, + "48474": 1, + "48475": 2, + "48477": 1, + "48478": 1, + "48480": 1, + "48481": 1, + "48492": 1, + "48500": 1, + "48502": 1, + "48507": 1, + "48509": 1, + "48511": 1, + "48513": 1, + "48516": 2, + "48518": 2, + "48519": 2, + "48521": 1, + "48523": 1, + "48528": 1, + "48531": 2, + "48532": 2, + "48537": 1, + "48538": 1, + "48542": 1, + "48546": 2, + "48552": 1, + "48555": 2, + "48556": 1, + "48558": 1, + "48559": 1, + "48562": 1, + "48564": 1, + "48565": 1, + "48566": 1, + "48570": 1, + "48571": 3, + "48572": 1, + "48573": 3, + "48575": 2, + "48579": 2, + "48580": 3, + "48581": 1, + "48582": 1, + "48584": 1, + "48588": 2, + "48591": 1, + "48592": 2, + "48593": 3, + "48595": 1, + "48597": 1, + "48608": 1, + "48611": 1, + "48612": 2, + "48613": 1, + "48614": 1, + "48616": 1, + "48620": 3, + "48624": 1, + "48625": 1, + "48626": 1, + "48627": 2, + "48629": 1, + "48631": 1, + "48632": 1, + "48634": 1, + "48635": 1, + "48636": 1, + "48638": 2, + "48640": 1, + "48643": 2, + "48647": 2, + "48648": 1, + "48652": 1, + "48653": 1, + "48655": 1, + "48662": 1, + "48664": 2, + "48668": 1, + "48674": 1, + "48679": 1, + "48702": 1, + "48713": 1, + "48727": 1, + "48729": 1, + "48757": 1, + "48760": 1, + "48769": 1, + "48776": 1, + "48778": 1, + "48782": 1, + "48798": 1, + "48811": 2, + "48815": 1, + "48822": 1, + "48828": 1, + "48832": 1, + "48865": 1, + "48869": 1, + "48889": 1, + "48890": 2, + "48895": 1, + "48896": 1, + "48898": 1, + "48911": 1, + "48925": 1, + "48928": 1, + "48941": 2, + "48945": 1, + "48949": 1, + "48950": 1, + "48953": 1, + "48964": 2, + "48965": 1, + "48966": 1, + "48969": 1, + "48974": 1, + "48976": 1, + "48979": 2, + "48981": 1, + "48984": 2, + "48989": 2, + "48990": 2, + "48991": 1, + "48994": 2, + "48996": 2, + "48997": 1, + "48999": 4, + "49002": 2, + "49004": 1, + "49006": 1, + "49008": 1, + "49009": 1, + "49010": 2, + "49011": 2, + "49012": 3, + "49013": 4, + "49014": 2, + "49015": 1, + "49016": 1, + "49017": 2, + "49018": 4, + "49019": 1, + "49020": 3, + "49021": 5, + "49022": 1, + "49025": 3, + "49026": 3, + "49027": 2, + "49028": 1, + "49029": 2, + "49030": 2, + "49031": 3, + "49033": 2, + "49034": 1, + "49035": 2, + "49036": 1, + "49037": 4, + "49038": 2, + "49039": 2, + "49041": 2, + "49043": 3, + "49045": 1, + "49047": 1, + "49048": 2, + "49049": 1, + "49050": 1, + "49051": 1, + "49052": 1, + "49053": 1, + "49054": 1, + "49056": 1, + "49061": 1, + "49064": 2, + "49065": 1, + "49066": 1, + "49067": 1, + "49069": 1, + "49070": 1, + "49071": 1, + "49072": 2, + "49075": 1, + "49076": 1, + "49078": 2, + "49079": 2, + "49080": 1, + "49081": 1, + "49083": 2, + "49084": 1, + "49089": 2, + "49090": 2, + "49092": 2, + "49093": 2, + "49096": 2, + "49098": 1, + "49099": 2, + "49100": 1, + "49101": 2, + "49104": 1, + "49108": 1, + "49111": 1, + "49114": 1, + "49116": 1, + "49117": 2, + "49120": 1, + "49231": 1, + "49445": 1, + "57920": 1, + "65160": 57, + "65464": 1, + "65536": 941 + }, + "started": "2025-09-11T20:07:24.122Z", + "trafficStats": { + "incomingCompressionRatio": 0.8504757537841797, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 111473558, + "incomingOctetsWireLevel": 111487558, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00012559032160792787, + "outgoingCompressionRatio": 0.8504757537841797, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 111473558, + "outgoingOctetsWireLevel": 111489558, + "outgoingWebSocketFrames": 4000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.00014353179612334614, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 3000, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "9763": 1, + "9779": 1, + "9785": 1, + "9804": 1, + "9807": 1, + "9810": 1, + "9819": 2, + "9822": 1, + "9824": 2, + "9826": 1, + "9849": 1, + "9850": 1, + "9857": 1, + "9860": 1, + "9862": 1, + "9863": 2, + "9867": 1, + "9878": 1, + "9880": 1, + "9883": 1, + "9884": 1, + "9893": 1, + "9894": 1, + "9895": 1, + "9897": 1, + "9899": 2, + "9906": 1, + "9907": 1, + "9911": 1, + "9912": 1, + "9914": 1, + "9917": 1, + "9918": 1, + "9920": 2, + "9921": 1, + "9926": 1, + "9928": 1, + "9936": 1, + "9941": 1, + "9946": 1, + "9949": 1, + "9952": 1, + "9956": 1, + "9962": 1, + "9963": 1, + "9968": 1, + "9969": 2, + "9971": 1, + "9977": 2, + "9995": 1, + "9996": 1, + "10000": 1, + "10003": 1, + "10005": 1, + "10007": 1, + "10009": 1, + "10011": 2, + "10014": 1, + "10015": 1, + "10016": 2, + "10021": 1, + "10022": 1, + "10028": 1, + "10032": 1, + "10043": 2, + "10044": 1, + "10046": 2, + "10048": 1, + "10052": 2, + "10055": 1, + "10056": 2, + "10058": 1, + "10060": 1, + "10061": 2, + "10065": 1, + "10069": 3, + "10073": 2, + "10084": 2, + "10085": 1, + "10091": 1, + "10092": 1, + "10095": 2, + "10097": 1, + "10098": 2, + "10099": 1, + "10104": 2, + "10105": 1, + "10107": 1, + "10109": 1, + "10110": 1, + "10114": 2, + "10115": 1, + "10119": 1, + "10120": 3, + "10128": 2, + "10129": 1, + "10130": 1, + "10133": 1, + "10134": 2, + "10137": 1, + "10142": 2, + "10148": 1, + "10149": 1, + "10150": 1, + "10151": 1, + "10154": 1, + "10156": 2, + "10157": 1, + "10158": 2, + "10159": 1, + "10165": 1, + "10166": 1, + "10167": 1, + "10170": 2, + "10173": 1, + "10177": 2, + "10178": 1, + "10179": 1, + "10183": 1, + "10186": 1, + "10187": 1, + "10198": 1, + "10199": 1, + "10201": 3, + "10202": 1, + "10205": 1, + "10206": 1, + "10208": 1, + "10210": 1, + "10213": 2, + "10215": 1, + "10220": 1, + "10226": 1, + "10234": 1, + "10239": 1, + "10241": 1, + "10273": 2, + "10280": 1, + "10285": 1, + "10295": 1, + "10307": 1, + "10309": 1, + "10311": 1, + "10312": 1, + "10316": 1, + "10321": 2, + "10322": 1, + "10325": 1, + "10337": 1, + "10341": 1, + "10343": 1, + "10349": 2, + "10369": 1, + "10371": 1, + "10372": 1, + "10376": 1, + "10379": 1, + "10396": 1, + "10399": 1, + "10405": 1, + "10412": 2, + "10414": 2, + "10419": 1, + "10433": 1, + "10437": 2, + "10441": 1, + "10447": 1, + "10454": 2, + "10459": 1, + "10462": 1, + "10468": 1, + "10470": 1, + "10476": 1, + "10477": 1, + "10481": 1, + "10482": 1, + "10490": 1, + "10497": 1, + "10505": 2, + "10506": 1, + "10507": 1, + "10509": 1, + "10513": 1, + "10517": 1, + "10523": 1, + "10528": 1, + "10530": 1, + "10534": 1, + "10536": 1, + "10539": 1, + "10541": 1, + "10542": 3, + "10547": 1, + "10548": 2, + "10550": 1, + "10555": 1, + "10558": 1, + "10560": 1, + "10562": 1, + "10563": 1, + "10568": 1, + "10572": 1, + "10573": 2, + "10577": 1, + "10578": 2, + "10583": 1, + "10589": 1, + "10591": 2, + "10592": 1, + "10596": 1, + "10597": 1, + "10598": 1, + "10600": 1, + "10603": 1, + "10608": 1, + "10610": 2, + "10611": 1, + "10618": 1, + "10619": 1, + "10622": 1, + "10627": 1, + "10633": 1, + "10635": 1, + "10636": 2, + "10639": 1, + "10641": 1, + "10642": 1, + "10643": 1, + "10645": 1, + "10646": 2, + "10648": 2, + "10651": 1, + "10653": 1, + "10654": 1, + "10655": 1, + "10656": 2, + "10657": 1, + "10660": 1, + "10661": 1, + "10662": 2, + "10664": 1, + "10667": 1, + "10669": 1, + "10670": 1, + "10671": 1, + "10672": 2, + "10674": 1, + "10676": 1, + "10677": 1, + "10681": 3, + "10683": 1, + "10685": 1, + "10691": 1, + "10696": 1, + "10699": 2, + "10701": 1, + "10704": 1, + "10705": 1, + "10710": 1, + "10711": 1, + "10712": 3, + "10714": 1, + "10715": 1, + "10716": 2, + "10717": 2, + "10719": 2, + "10723": 2, + "10725": 2, + "10726": 2, + "10727": 2, + "10730": 2, + "10733": 1, + "10734": 1, + "10739": 1, + "10750": 1, + "10756": 1, + "10758": 1, + "10770": 1, + "10785": 1, + "10789": 1, + "10792": 1, + "10794": 1, + "10807": 2, + "10819": 2, + "10820": 1, + "10822": 1, + "10823": 1, + "10827": 2, + "10828": 1, + "10832": 1, + "10835": 1, + "10837": 1, + "10838": 1, + "10844": 1, + "10847": 1, + "10854": 1, + "10855": 1, + "10857": 1, + "10858": 1, + "10862": 1, + "10866": 1, + "10872": 1, + "10876": 1, + "10880": 1, + "10883": 1, + "10894": 1, + "10896": 1, + "10897": 1, + "10899": 1, + "10904": 1, + "10909": 1, + "10912": 1, + "10913": 1, + "10916": 1, + "10917": 1, + "10925": 1, + "10926": 2, + "10927": 1, + "10932": 1, + "10934": 1, + "10935": 3, + "10938": 1, + "10942": 1, + "10948": 1, + "10960": 1, + "11007": 1, + "11042": 1, + "11044": 1, + "11113": 1, + "11127": 1, + "11174": 1, + "11186": 1, + "11208": 1, + "11269": 1, + "11274": 1, + "11344": 1, + "11367": 1, + "11414": 1, + "11446": 1, + "11501": 1, + "11519": 1, + "11532": 1, + "11592": 1, + "11604": 1, + "11661": 1, + "11675": 1, + "11695": 1, + "11718": 1, + "11755": 1, + "11777": 1, + "11780": 1, + "11821": 1, + "11836": 1, + "11849": 1, + "11859": 1, + "11860": 1, + "11885": 1, + "11947": 1, + "11949": 1, + "11958": 1, + "11998": 1, + "12020": 1, + "12043": 1, + "12069": 1, + "12086": 1, + "12117": 1, + "12130": 1, + "12166": 1, + "12169": 1, + "12176": 1, + "12194": 1, + "12230": 1, + "12290": 1, + "12294": 1, + "12310": 1, + "12311": 1, + "12356": 1, + "12372": 1, + "12392": 1, + "12423": 1, + "12453": 1, + "12458": 1, + "12472": 1, + "12513": 2, + "12525": 1, + "12553": 1, + "12593": 1, + "12616": 1, + "12635": 1, + "12636": 1, + "12655": 1, + "12693": 1, + "12697": 1, + "12709": 1, + "12735": 1, + "12787": 1, + "12795": 1, + "12800": 1, + "12823": 1, + "12868": 1, + "12892": 1, + "12900": 1, + "12901": 1, + "12930": 1, + "12976": 1, + "12979": 1, + "12990": 1, + "12996": 1, + "13040": 1, + "13051": 1, + "13072": 1, + "13078": 1, + "13114": 1, + "13128": 1, + "13142": 1, + "13151": 1, + "13172": 1, + "13175": 1, + "13218": 2, + "13233": 1, + "13237": 1, + "13273": 1, + "13283": 1, + "13306": 1, + "13315": 1, + "13330": 1, + "13352": 1, + "13358": 1, + "13366": 1, + "13385": 1, + "13410": 1, + "13430": 1, + "13438": 1, + "13457": 1, + "13483": 1, + "13488": 1, + "13516": 1, + "13531": 1, + "13544": 1, + "13548": 1, + "13594": 1, + "13596": 1, + "13597": 1, + "13631": 1, + "13652": 1, + "13653": 1, + "13669": 1, + "13702": 1, + "13732": 1, + "13733": 1, + "13754": 1, + "13772": 1, + "13795": 1, + "13796": 1, + "13802": 1, + "13849": 1, + "13873": 1, + "13881": 1, + "13888": 1, + "13907": 1, + "13934": 1, + "13959": 1, + "13961": 1, + "13966": 1, + "13997": 1, + "14018": 1, + "14039": 1, + "14049": 1, + "14069": 1, + "14072": 1, + "14086": 1, + "14108": 1, + "14119": 1, + "14138": 1, + "14148": 1, + "14165": 1, + "14176": 1, + "14186": 1, + "14222": 1, + "14230": 1, + "14231": 1, + "14268": 1, + "14269": 1, + "14280": 1, + "14283": 1, + "14304": 1, + "14315": 1, + "14324": 1, + "14333": 1, + "14371": 1, + "14385": 1, + "14422": 1, + "14442": 1, + "14445": 1, + "14484": 1, + "14542": 1, + "14573": 1, + "14588": 1, + "14609": 1, + "14649": 1, + "14689": 1, + "14719": 1, + "14750": 1, + "14780": 1, + "14822": 1, + "14851": 1, + "14857": 1, + "14900": 1, + "14925": 1, + "14984": 1, + "14993": 1, + "15007": 1, + "15052": 1, + "15087": 1, + "15143": 1, + "15159": 1, + "15208": 2, + "15216": 1, + "15277": 1, + "15281": 1, + "15304": 1, + "15317": 1, + "15355": 1, + "15363": 1, + "15369": 1, + "15400": 1, + "15404": 1, + "15410": 1, + "15411": 1, + "15412": 1, + "15413": 1, + "15415": 1, + "15416": 3, + "15418": 3, + "15419": 2, + "15420": 2, + "15421": 2, + "15423": 1, + "15424": 3, + "15426": 1, + "15428": 1, + "15429": 1, + "15437": 1, + "15438": 1, + "15439": 1, + "15442": 1, + "15443": 1, + "15450": 1, + "15451": 1, + "15453": 1, + "15455": 1, + "15457": 2, + "15463": 1, + "15466": 1, + "15470": 1, + "15475": 1, + "15479": 1, + "15482": 1, + "15486": 1, + "15495": 1, + "15496": 1, + "15500": 1, + "15501": 1, + "15512": 1, + "15513": 2, + "15516": 1, + "15523": 1, + "15529": 1, + "15532": 1, + "15539": 1, + "15541": 1, + "15546": 1, + "15551": 1, + "15555": 2, + "15556": 1, + "15564": 1, + "15567": 1, + "15581": 1, + "15585": 1, + "15588": 2, + "15592": 1, + "15594": 1, + "15600": 1, + "15601": 1, + "15607": 1, + "15611": 1, + "15616": 1, + "15618": 1, + "15622": 2, + "15623": 1, + "15626": 1, + "15632": 1, + "15633": 1, + "15634": 1, + "15637": 1, + "15643": 1, + "15645": 1, + "15646": 1, + "15649": 1, + "15650": 1, + "15656": 1, + "15657": 1, + "15664": 1, + "15666": 1, + "15673": 2, + "15684": 1, + "15691": 1, + "15695": 1, + "15696": 1, + "15697": 2, + "15699": 1, + "15700": 1, + "15702": 1, + "15703": 1, + "15714": 1, + "15722": 1, + "15724": 1, + "15729": 1, + "15731": 1, + "15733": 1, + "15735": 1, + "15736": 1, + "15738": 2, + "15740": 2, + "15741": 2, + "15742": 1, + "15743": 1, + "15745": 1, + "15750": 1, + "15753": 2, + "15754": 2, + "15757": 1, + "15759": 1, + "15760": 1, + "15764": 1, + "15768": 2, + "15774": 1, + "15777": 2, + "15778": 1, + "15780": 1, + "15781": 1, + "15784": 1, + "15786": 1, + "15787": 2, + "15788": 1, + "15792": 1, + "15793": 3, + "15794": 1, + "15795": 3, + "15797": 2, + "15799": 1, + "15801": 2, + "15802": 3, + "15803": 1, + "15804": 1, + "15806": 1, + "15810": 4, + "15813": 1, + "15814": 2, + "15815": 4, + "15817": 1, + "15819": 1, + "15825": 1, + "15830": 1, + "15833": 1, + "15834": 2, + "15835": 2, + "15836": 1, + "15838": 1, + "15842": 3, + "15846": 1, + "15847": 1, + "15848": 1, + "15849": 2, + "15851": 1, + "15853": 1, + "15854": 1, + "15856": 2, + "15857": 1, + "15858": 1, + "15860": 2, + "15862": 1, + "15865": 2, + "15866": 1, + "15869": 2, + "15870": 1, + "15874": 2, + "15875": 1, + "15877": 1, + "15884": 1, + "15886": 2, + "15890": 1, + "15896": 1, + "15901": 1, + "15924": 1, + "15935": 1, + "15949": 1, + "15951": 1, + "15979": 1, + "15982": 1, + "15991": 1, + "15998": 1, + "16000": 1, + "16004": 1, + "16020": 1, + "16033": 2, + "16037": 1, + "16044": 1, + "16050": 1, + "16054": 1, + "16077": 1, + "16087": 1, + "16091": 1, + "16111": 1, + "16112": 1, + "16117": 1, + "16120": 1, + "16147": 1, + "16150": 1, + "16163": 1, + "16167": 1, + "16171": 1, + "16172": 1, + "16187": 1, + "16188": 1, + "16196": 1, + "16198": 1, + "16201": 1, + "16203": 1, + "16206": 2, + "16211": 1, + "16212": 2, + "16213": 1, + "16216": 2, + "16218": 2, + "16219": 1, + "16221": 4, + "16224": 2, + "16226": 1, + "16228": 1, + "16230": 1, + "16231": 1, + "16232": 1, + "16233": 2, + "16234": 3, + "16235": 4, + "16236": 2, + "16237": 1, + "16238": 1, + "16239": 2, + "16240": 4, + "16241": 1, + "16242": 2, + "16243": 5, + "16244": 1, + "16247": 3, + "16248": 3, + "16249": 2, + "16251": 2, + "16252": 2, + "16253": 3, + "16255": 2, + "16256": 1, + "16257": 2, + "16258": 1, + "16259": 4, + "16260": 2, + "16261": 2, + "16263": 2, + "16265": 3, + "16266": 1, + "16267": 1, + "16269": 1, + "16270": 2, + "16271": 1, + "16272": 1, + "16273": 1, + "16274": 1, + "16275": 1, + "16276": 1, + "16278": 1, + "16283": 1, + "16286": 2, + "16287": 1, + "16288": 1, + "16289": 1, + "16291": 2, + "16292": 1, + "16293": 1, + "16294": 2, + "16297": 1, + "16298": 1, + "16300": 2, + "16301": 2, + "16302": 1, + "16303": 1, + "16305": 2, + "16306": 1, + "16311": 2, + "16312": 2, + "16314": 2, + "16315": 2, + "16318": 2, + "16320": 1, + "16321": 2, + "16322": 1, + "16323": 2, + "16326": 1, + "16330": 1, + "16333": 1, + "16336": 1, + "16339": 2, + "16342": 1, + "16452": 1, + "32772": 3000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333337266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ead73112e93f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ead73112" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_2.html b/autobahn/client/tungstenite_case_12_2_2.html new file mode 100644 index 0000000..94654b1 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_2.html @@ -0,0 +1,344 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.2 : Pass - 59 ms @ 2025-09-11T20:06:14.479Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=321&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: UGibm7uC5ZcXSukL0J/VmQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: w+RHcfgUlcm7MV6VQI6VsygOdTM=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
11666
13113
20120
40140
562112
5812696
59159
60160
61161
624248
635315
6410640
65211365
66342244
67392613
68865848
691268694
701299030
7117012070
7219213824
73765548
74191406
76634788
2571257
Total100270025
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
7642
919
16116
36136
522104
5412648
55155
56156
57157
584232
595295
6010600
61211281
62342108
63392457
64865504
651268190
661298514
6717011390
6819213056
69765244
70191330
72634536
2521252
Total100266016
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333231266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882736bb0a07083
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3733366262306130
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_2.json b/autobahn/client/tungstenite_case_12_2_2.json new file mode 100644 index 0000000..b9538f5 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_2.json @@ -0,0 +1,191 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 321, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 59, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=321&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: UGibm7uC5ZcXSukL0J/VmQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: w+RHcfgUlcm7MV6VQI6VsygOdTM=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 6, + "13": 1, + "20": 1, + "40": 1, + "56": 2, + "58": 12, + "59": 1, + "60": 1, + "61": 1, + "62": 4, + "63": 5, + "64": 10, + "65": 21, + "66": 34, + "67": 39, + "68": 86, + "69": 126, + "70": 129, + "71": 170, + "72": 192, + "73": 76, + "74": 19, + "76": 63, + "257": 1 + }, + "started": "2025-09-11T20:06:14.479Z", + "trafficStats": { + "incomingCompressionRatio": 0.99625, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 63760, + "incomingOctetsWireLevel": 69760, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.09410288582183186, + "outgoingCompressionRatio": 0.99625, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 63760, + "outgoingOctetsWireLevel": 65760, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.03136762860727729, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 6, + "9": 1, + "16": 1, + "36": 1, + "52": 2, + "54": 12, + "55": 1, + "56": 1, + "57": 1, + "58": 4, + "59": 5, + "60": 10, + "61": 21, + "62": 34, + "63": 39, + "64": 86, + "65": 126, + "66": 129, + "67": 170, + "68": 192, + "69": 76, + "70": 19, + "72": 63, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333231266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882736bb0a07083" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "736bb0a0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_3.html b/autobahn/client/tungstenite_case_12_2_3.html new file mode 100644 index 0000000..70b7f21 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_3.html @@ -0,0 +1,410 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.3 : Pass - 128 ms @ 2025-09-11T20:06:14.538Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=322&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: an+1OIjT3cp6u1mC8ojOTA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 6eJnkseZwY61xMEGEhK0Lu7izRc=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
11111
72172
1901190
2092418
2112422
2121212
2161216
2171217
2192438
2204880
2212442
22251110
2243672
2254900
22651130
2271227
2282456
2292458
2304920
2312462
23261392
2331233
2342468
23551175
2363708
2374948
2384952
2401240
2412482
2422484
243102430
24461464
245102450
246174182
247245928
248225456
249204980
250276750
251287028
252276804
2534711891
2544711938
2555514025
2565012800
2574812336
2584411352
2594712173
2604611960
2615514355
2625714934
2634110783
2645013200
265369540
266379842
267246408
26861608
2704411880
Total1002255440
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
717
68168
1861186
2052410
2072414
2081208
2121212
2131213
2152430
2164864
2172434
21851090
2203660
2214884
22251110
2231223
2242448
2252450
2264904
2272454
22861368
2291229
2302460
23151155
2323696
2334932
2344936
2361236
2372474
2382476
239102390
24061440
241102410
242174114
243245832
244225368
245204900
246276642
247286916
248276696
2494711703
2504711750
2515513805
2525112852
2534711891
2544411176
2554711985
2564611776
2575514135
2585714706
2594110619
2605013000
261369396
262379694
263246312
26461584
2664411704
Total1002251431
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333232266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882405c435043b4
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3430356334333530
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_3.json b/autobahn/client/tungstenite_case_12_2_3.json new file mode 100644 index 0000000..b4876be --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_3.json @@ -0,0 +1,257 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 322, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 128, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=322&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: an+1OIjT3cp6u1mC8ojOTA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 6eJnkseZwY61xMEGEhK0Lu7izRc=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 1, + "72": 1, + "190": 1, + "209": 2, + "211": 2, + "212": 1, + "216": 1, + "217": 1, + "219": 2, + "220": 4, + "221": 2, + "222": 5, + "224": 3, + "225": 4, + "226": 5, + "227": 1, + "228": 2, + "229": 2, + "230": 4, + "231": 2, + "232": 6, + "233": 1, + "234": 2, + "235": 5, + "236": 3, + "237": 4, + "238": 4, + "240": 1, + "241": 2, + "242": 2, + "243": 10, + "244": 6, + "245": 10, + "246": 17, + "247": 24, + "248": 22, + "249": 20, + "250": 27, + "251": 28, + "252": 27, + "253": 47, + "254": 47, + "255": 55, + "256": 50, + "257": 48, + "258": 44, + "259": 47, + "260": 46, + "261": 55, + "262": 57, + "263": 41, + "264": 50, + "265": 36, + "266": 37, + "267": 24, + "268": 6, + "270": 44 + }, + "started": "2025-09-11T20:06:14.538Z", + "trafficStats": { + "incomingCompressionRatio": 0.96554296875, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 247179, + "incomingOctetsWireLevel": 255175, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.03234902641405621, + "outgoingCompressionRatio": 0.96554296875, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 247179, + "outgoingOctetsWireLevel": 251175, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016166421904773465, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 1, + "68": 1, + "186": 1, + "205": 2, + "207": 2, + "208": 1, + "212": 1, + "213": 1, + "215": 2, + "216": 4, + "217": 2, + "218": 5, + "220": 3, + "221": 4, + "222": 5, + "223": 1, + "224": 2, + "225": 2, + "226": 4, + "227": 2, + "228": 6, + "229": 1, + "230": 2, + "231": 5, + "232": 3, + "233": 4, + "234": 4, + "236": 1, + "237": 2, + "238": 2, + "239": 10, + "240": 6, + "241": 10, + "242": 17, + "243": 24, + "244": 22, + "245": 20, + "246": 27, + "247": 28, + "248": 27, + "249": 47, + "250": 47, + "251": 55, + "252": 51, + "253": 47, + "254": 44, + "255": 47, + "256": 46, + "257": 55, + "258": 57, + "259": 41, + "260": 50, + "261": 36, + "262": 37, + "263": 24, + "264": 6, + "266": 44 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333232266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882405c435043b4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "405c4350" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_4.html b/autobahn/client/tungstenite_case_12_2_4.html new file mode 100644 index 0000000..d35dc20 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_4.html @@ -0,0 +1,596 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.4 : Pass - 215 ms @ 2025-09-11T20:06:14.668Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=323&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: IhPMp7P+XjrC3LvEgNXb1w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: CYx2uM9puzpIJV0RW9E6MxhTTlw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
19357
64164
1101110
1561156
2571257
6061606
6321632
6851685
7301730
7311731
7751775
7781778
78121562
7821782
78321566
78432352
7851785
78621572
7871787
78821576
79053950
79121582
79232376
7951795
7971797
79932397
8001800
80221604
80321606
8041804
80521610
8061806
8081808
8121812
8141814
81554075
8161816
8171817
81821636
8191819
82321646
82521650
82832484
8321832
8331833
8341834
8351835
8361836
8401840
8591859
8621862
8641864
8671867
8681868
8691869
8721872
8731873
8741874
8781878
8811881
8841884
8851885
8891889
8981898
9011901
9021902
90321806
90521810
9061906
91121822
9131913
9141914
91543660
9171917
91821836
91921838
92032760
92232766
92321846
92454620
9251925
92687408
92765562
92821856
92965574
9301930
93154655
93276524
93354665
934109340
9351110285
93632808
93787496
93876566
93998451
94032820
94198469
9421413188
94398487
9441312272
9451312285
946109460
94798523
9481312324
9491312337
9502119950
951109510
9522422848
9532220966
9542321942
9551918145
9562019120
9573634452
9583129698
9593533565
9603432640
9612927869
9623432708
9631413482
9643533740
9652019300
9662524150
9673129977
9682423232
9692322287
9702019400
9711716507
9721211664
9732524325
9741312662
975109750
97687808
9771211724
97843912
979109790
98087840
98143924
98221964
98332949
98432952
98643944
98721974
98832964
9891989
9901990
9931993
99421988
99521990
9971997
99821996
Total1002939212
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
15345
60160
1061106
1521152
2521252
6021602
6281628
6811681
7261726
7271727
7711771
7741774
77721554
7781778
77921558
78032340
7811781
78221564
7831783
78421568
78653930
78721574
78832364
7911791
7931793
79532385
7961796
79821596
79921598
8001800
80121602
8021802
8041804
8081808
8101810
81154055
8121812
8131813
81421628
8151815
81921638
82121642
82432472
8281828
8291829
8301830
8311831
8321832
8361836
8551855
8581858
8601860
8631863
8641864
8651865
8681868
8691869
8701870
8741874
8771877
8801880
8811881
8851885
8941894
8971897
8981898
89921798
90121802
9021902
90721814
9091909
9101910
91143644
9131913
91421828
91521830
91632748
91832754
91921838
92054600
9211921
92287376
92365538
92421848
92565550
9261926
92754635
92876496
92954645
930109300
9311110241
93232796
93387464
93476538
93598415
93632808
93798433
9381413132
93998451
9401312220
9411312233
942109420
94398487
9441312272
9451312285
9462119866
947109470
9482422752
9492220878
9502321850
9511918069
9522019040
9533634308
9543129574
9553533425
9563432504
9572927753
9583432572
9591413426
9603533600
9612019220
9622524050
9633129853
9642423136
9652322195
9662019320
9671716439
9681211616
9692524225
9701312610
971109710
97287776
9731211676
97443896
975109750
97687808
97743908
97821956
97932937
98032940
98243928
98321966
98432952
9851985
9861986
9891989
99021980
99121982
9931993
99421988
Total1002935203
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333233266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882fda00a39fe48
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6664613030613339
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_4.json b/autobahn/client/tungstenite_case_12_2_4.json new file mode 100644 index 0000000..16eae40 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_4.json @@ -0,0 +1,443 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 323, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 215, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=323&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: IhPMp7P+XjrC3LvEgNXb1w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: CYx2uM9puzpIJV0RW9E6MxhTTlw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "19": 3, + "64": 1, + "110": 1, + "156": 1, + "257": 1, + "606": 1, + "632": 1, + "685": 1, + "730": 1, + "731": 1, + "775": 1, + "778": 1, + "781": 2, + "782": 1, + "783": 2, + "784": 3, + "785": 1, + "786": 2, + "787": 1, + "788": 2, + "790": 5, + "791": 2, + "792": 3, + "795": 1, + "797": 1, + "799": 3, + "800": 1, + "802": 2, + "803": 2, + "804": 1, + "805": 2, + "806": 1, + "808": 1, + "812": 1, + "814": 1, + "815": 5, + "816": 1, + "817": 1, + "818": 2, + "819": 1, + "823": 2, + "825": 2, + "828": 3, + "832": 1, + "833": 1, + "834": 1, + "835": 1, + "836": 1, + "840": 1, + "859": 1, + "862": 1, + "864": 1, + "867": 1, + "868": 1, + "869": 1, + "872": 1, + "873": 1, + "874": 1, + "878": 1, + "881": 1, + "884": 1, + "885": 1, + "889": 1, + "898": 1, + "901": 1, + "902": 1, + "903": 2, + "905": 2, + "906": 1, + "911": 2, + "913": 1, + "914": 1, + "915": 4, + "917": 1, + "918": 2, + "919": 2, + "920": 3, + "922": 3, + "923": 2, + "924": 5, + "925": 1, + "926": 8, + "927": 6, + "928": 2, + "929": 6, + "930": 1, + "931": 5, + "932": 7, + "933": 5, + "934": 10, + "935": 11, + "936": 3, + "937": 8, + "938": 7, + "939": 9, + "940": 3, + "941": 9, + "942": 14, + "943": 9, + "944": 13, + "945": 13, + "946": 10, + "947": 9, + "948": 13, + "949": 13, + "950": 21, + "951": 10, + "952": 24, + "953": 22, + "954": 23, + "955": 19, + "956": 20, + "957": 36, + "958": 31, + "959": 35, + "960": 34, + "961": 29, + "962": 34, + "963": 14, + "964": 35, + "965": 20, + "966": 25, + "967": 31, + "968": 24, + "969": 23, + "970": 20, + "971": 17, + "972": 12, + "973": 25, + "974": 13, + "975": 10, + "976": 8, + "977": 12, + "978": 4, + "979": 10, + "980": 8, + "981": 4, + "982": 2, + "983": 3, + "984": 3, + "986": 4, + "987": 2, + "988": 3, + "989": 1, + "990": 1, + "993": 1, + "994": 2, + "995": 2, + "997": 1, + "998": 2 + }, + "started": "2025-09-11T20:06:14.668Z", + "trafficStats": { + "incomingCompressionRatio": 0.9091376953125, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 930957, + "incomingOctetsWireLevel": 938947, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.008582566112076069, + "outgoingCompressionRatio": 0.9091376953125, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 930957, + "outgoingOctetsWireLevel": 934947, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0042859122386963095, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "15": 3, + "60": 1, + "106": 1, + "152": 1, + "252": 1, + "602": 1, + "628": 1, + "681": 1, + "726": 1, + "727": 1, + "771": 1, + "774": 1, + "777": 2, + "778": 1, + "779": 2, + "780": 3, + "781": 1, + "782": 2, + "783": 1, + "784": 2, + "786": 5, + "787": 2, + "788": 3, + "791": 1, + "793": 1, + "795": 3, + "796": 1, + "798": 2, + "799": 2, + "800": 1, + "801": 2, + "802": 1, + "804": 1, + "808": 1, + "810": 1, + "811": 5, + "812": 1, + "813": 1, + "814": 2, + "815": 1, + "819": 2, + "821": 2, + "824": 3, + "828": 1, + "829": 1, + "830": 1, + "831": 1, + "832": 1, + "836": 1, + "855": 1, + "858": 1, + "860": 1, + "863": 1, + "864": 1, + "865": 1, + "868": 1, + "869": 1, + "870": 1, + "874": 1, + "877": 1, + "880": 1, + "881": 1, + "885": 1, + "894": 1, + "897": 1, + "898": 1, + "899": 2, + "901": 2, + "902": 1, + "907": 2, + "909": 1, + "910": 1, + "911": 4, + "913": 1, + "914": 2, + "915": 2, + "916": 3, + "918": 3, + "919": 2, + "920": 5, + "921": 1, + "922": 8, + "923": 6, + "924": 2, + "925": 6, + "926": 1, + "927": 5, + "928": 7, + "929": 5, + "930": 10, + "931": 11, + "932": 3, + "933": 8, + "934": 7, + "935": 9, + "936": 3, + "937": 9, + "938": 14, + "939": 9, + "940": 13, + "941": 13, + "942": 10, + "943": 9, + "944": 13, + "945": 13, + "946": 21, + "947": 10, + "948": 24, + "949": 22, + "950": 23, + "951": 19, + "952": 20, + "953": 36, + "954": 31, + "955": 35, + "956": 34, + "957": 29, + "958": 34, + "959": 14, + "960": 35, + "961": 20, + "962": 25, + "963": 31, + "964": 24, + "965": 23, + "966": 20, + "967": 17, + "968": 12, + "969": 25, + "970": 13, + "971": 10, + "972": 8, + "973": 12, + "974": 4, + "975": 10, + "976": 8, + "977": 4, + "978": 2, + "979": 3, + "980": 3, + "982": 4, + "983": 2, + "984": 3, + "985": 1, + "986": 1, + "989": 1, + "990": 2, + "991": 2, + "993": 1, + "994": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333233266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fda00a39fe48" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fda00a39" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_5.html b/autobahn/client/tungstenite_case_12_2_5.html new file mode 100644 index 0000000..4712a8f --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_5.html @@ -0,0 +1,970 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.5 : Pass - 481 ms @ 2025-09-11T20:06:14.885Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=324&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Wq9dl3GDB7joWB+eNBY45g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1SSvU/+uEDHHlQUehs4fJJ7xrIk=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
158011580
159611596
165311653
165911659
168411684
170211702
173711737
174611746
180911809
182111821
182811828
194011940
198211982
214912149
227912279
235112351
242512425
257812578
272112721
273312733
291912919
294612946
294812948
294912949
295225904
295312953
295412954
295512955
295625912
295712957
295812958
296012960
296112961
296512965
297912979
298212982
298412984
298612986
299512995
299612996
299912999
300013000
300239006
300326006
300426008
300513005
300613006
3007412028
300813008
301126022
301313013
301613016
302813028
303513035
303813038
304113041
304513045
304926098
305013050
306413064
306713067
307813078
308013080
308213082
308313083
308713087
309013090
309513095
309613096
310313103
310613106
310713107
311013110
311213112
311613116
311813118
313213132
313713137
315113151
316513165
318613186
318813188
320913209
321213212
321413214
322926458
323513235
325413254
327313273
327713277
327913279
328113281
328313283
328513285
329413294
329513295
330613306
331713317
332413324
332513325
333313333
334126682
334813348
335213352
335713357
336613366
339113391
339813398
340813408
341726834
343113431
343313433
343413434
343713437
345413454
345713457
346426928
346513465
346613466
346813468
347213472
347613476
3477310431
347813478
347913479
348213482
348426968
348513485
348613486
348726974
348813488
349013490
349213492
349313493
349413494
349613496
349713497
3498413992
349913499
350027000
350113501
3503310509
350427008
3505310515
350613506
350727014
350827016
351113511
351227024
351613516
351713517
351813518
351927038
352013520
3521310563
352213522
3523310569
352427048
3525310575
352727054
352827056
3529310587
353027060
353113531
3532414128
3533414132
353427068
3535310605
353613536
3537724759
3538414152
353913539
354027080
354113541
354213542
354313543
3544414176
354613546
3547414188
354813548
3549310647
355013550
355113551
3552310656
355313553
355513555
355613556
355827116
356227124
3563310689
3564414256
3565621390
3566517830
356713567
356813568
3569310707
3570517850
3571414284
3572517860
3573310719
357427148
3575517875
3576310728
3577414308
3578517890
3579310737
3580414320
3581932229
3582414328
3583828664
3584310752
3585725095
3586621516
3587414348
3588725116
3589621534
3590517950
3591828728
3592517960
3593414372
35941657504
3595828760
3596828768
3597725179
3598725186
3599414396
3600518000
3601621606
3602828816
36031036030
3604828832
3605828840
3606828848
3607621642
3608725256
36091346917
3610518050
3611621666
3612518060
36131346969
3614518070
3615518075
36161036160
3617621702
3618828944
3619518095
3620310860
3621621726
3622725354
36231036230
3624518120
3625932625
3626621756
3627725389
3628932652
3629932661
3630932670
3631414524
3632932688
3633932697
3634725438
3635725445
3636932724
36371036370
3638932742
3639725473
3640621840
3641518205
3642621852
3643414572
3644829152
3645518225
3646518230
3647310941
3648621888
3649725543
36501036500
3651518255
36521036520
3653725571
36541036540
365527310
3656621936
3657725599
3658621948
3659932931
366027320
3661518305
3662621972
366327326
3664414656
366513665
366627332
366727334
3668518340
3669725683
3670518350
3671414684
3672414688
3673622038
367427348
3675829400
367627352
3677622062
3678414712
367927358
368027360
368227364
368313683
368413684
368513685
368613686
368727374
369213692
369413694
369513695
369727394
369813698
369913699
3702311106
370313703
370513705
370627412
370927418
371113711
371413714
371813718
371913719
372313723
372813728
372927458
373113731
373313733
373713737
373927478
374113741
Total10023524869
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
157611576
159211592
164911649
165511655
168011680
169811698
173311733
174211742
180511805
181711817
182411824
193611936
197811978
214512145
227512275
234712347
242112421
257412574
271712717
272912729
291512915
294212942
294412944
294512945
294825896
294912949
295012950
295112951
295225904
295312953
295412954
295612956
295712957
296112961
297512975
297812978
298012980
298212982
299112991
299212992
299512995
299612996
299838994
299925998
300026000
300113001
300213002
3003412012
300413004
300726014
300913009
301213012
302413024
303113031
303413034
303713037
304113041
304526090
304613046
306013060
306313063
307413074
307613076
307813078
307913079
308313083
308613086
309113091
309213092
309913099
310213102
310313103
310613106
310813108
311213112
311413114
312813128
313313133
314713147
316113161
318213182
318413184
320513205
320813208
321013210
322526450
323113231
325013250
326913269
327313273
327513275
327713277
327913279
328113281
329013290
329113291
330213302
331313313
332013320
332113321
332913329
333726674
334413344
334813348
335313353
336213362
338713387
339413394
340413404
341326826
342713427
342913429
343013430
343313433
345013450
345313453
346026920
346113461
346213462
346413464
346813468
347213472
3473310419
347413474
347513475
347813478
348026960
348113481
348213482
348326966
348413484
348613486
348813488
348913489
349013490
349213492
349313493
3494413976
349513495
349626992
349713497
3499310497
350027000
3501310503
350213502
350327006
350427008
350713507
350827016
351213512
351313513
351413514
351527030
351613516
3517310551
351813518
3519310557
352027040
3521310563
352327046
352427048
3525310575
352627052
352713527
3528414112
3529414116
353027060
3531310593
353213532
3533724731
3534414136
353513535
353627072
353713537
353813538
353913539
3540414160
354213542
3543414172
354413544
3545310635
354613546
354713547
3548310644
354913549
355113551
355213552
355427108
355827116
3559310677
3560414240
3561621366
3562517810
356313563
356413564
3565310695
3566517830
3567414268
3568517840
3569310707
357027140
3571517855
3572310716
3573414292
3574517870
3575310725
3576414304
3577932193
3578414312
3579828632
3580310740
3581725067
3582621492
3583414332
3584725088
3585621510
3586517930
3587828696
3588517940
3589414356
35901657440
3591828728
3592828736
3593725151
3594725158
3595414380
3596517980
3597621582
3598828784
35991035990
3600828800
3601828808
3602828816
3603621618
3604725228
36051346865
3606518030
3607621642
3608518040
36091346917
3610518050
3611518055
36121036120
3613621678
3614828912
3615518075
3616310848
3617621702
3618725326
36191036190
3620518100
3621932589
3622621732
3623725361
3624932616
3625932625
3626932634
3627414508
3628932652
3629932661
3630725410
3631725417
3632932688
36331036330
3634932706
3635725445
3636621816
3637518185
3638621828
3639414556
3640829120
3641518205
3642518210
3643310929
3644621864
3645725515
36461036460
3647518235
36481036480
3649725543
36501036500
365127302
3652621912
3653725571
3654621924
3655932895
365627312
3657518285
3658621948
365927318
3660414640
366113661
366227324
366327326
3664518320
3665725655
3666518330
3667414668
3668414672
3669622014
367027340
3671829368
367227344
3673622038
3674414696
367527350
367627352
367827356
367913679
368013680
368113681
368213682
368327366
368813688
369013690
369113691
369327386
369413694
369513695
3698311094
369913699
370113701
370227404
370527410
370713707
371013710
371413714
371513715
371913719
372413724
372527450
372713727
372913729
373313733
373527470
373713737
Total10023520860
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333234266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882ac51cf06afb9
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6163353163663036
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_5.json b/autobahn/client/tungstenite_case_12_2_5.json new file mode 100644 index 0000000..e527fc9 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_5.json @@ -0,0 +1,817 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 324, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 481, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=324&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Wq9dl3GDB7joWB+eNBY45g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1SSvU/+uEDHHlQUehs4fJJ7xrIk=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1580": 1, + "1596": 1, + "1653": 1, + "1659": 1, + "1684": 1, + "1702": 1, + "1737": 1, + "1746": 1, + "1809": 1, + "1821": 1, + "1828": 1, + "1940": 1, + "1982": 1, + "2149": 1, + "2279": 1, + "2351": 1, + "2425": 1, + "2578": 1, + "2721": 1, + "2733": 1, + "2919": 1, + "2946": 1, + "2948": 1, + "2949": 1, + "2952": 2, + "2953": 1, + "2954": 1, + "2955": 1, + "2956": 2, + "2957": 1, + "2958": 1, + "2960": 1, + "2961": 1, + "2965": 1, + "2979": 1, + "2982": 1, + "2984": 1, + "2986": 1, + "2995": 1, + "2996": 1, + "2999": 1, + "3000": 1, + "3002": 3, + "3003": 2, + "3004": 2, + "3005": 1, + "3006": 1, + "3007": 4, + "3008": 1, + "3011": 2, + "3013": 1, + "3016": 1, + "3028": 1, + "3035": 1, + "3038": 1, + "3041": 1, + "3045": 1, + "3049": 2, + "3050": 1, + "3064": 1, + "3067": 1, + "3078": 1, + "3080": 1, + "3082": 1, + "3083": 1, + "3087": 1, + "3090": 1, + "3095": 1, + "3096": 1, + "3103": 1, + "3106": 1, + "3107": 1, + "3110": 1, + "3112": 1, + "3116": 1, + "3118": 1, + "3132": 1, + "3137": 1, + "3151": 1, + "3165": 1, + "3186": 1, + "3188": 1, + "3209": 1, + "3212": 1, + "3214": 1, + "3229": 2, + "3235": 1, + "3254": 1, + "3273": 1, + "3277": 1, + "3279": 1, + "3281": 1, + "3283": 1, + "3285": 1, + "3294": 1, + "3295": 1, + "3306": 1, + "3317": 1, + "3324": 1, + "3325": 1, + "3333": 1, + "3341": 2, + "3348": 1, + "3352": 1, + "3357": 1, + "3366": 1, + "3391": 1, + "3398": 1, + "3408": 1, + "3417": 2, + "3431": 1, + "3433": 1, + "3434": 1, + "3437": 1, + "3454": 1, + "3457": 1, + "3464": 2, + "3465": 1, + "3466": 1, + "3468": 1, + "3472": 1, + "3476": 1, + "3477": 3, + "3478": 1, + "3479": 1, + "3482": 1, + "3484": 2, + "3485": 1, + "3486": 1, + "3487": 2, + "3488": 1, + "3490": 1, + "3492": 1, + "3493": 1, + "3494": 1, + "3496": 1, + "3497": 1, + "3498": 4, + "3499": 1, + "3500": 2, + "3501": 1, + "3503": 3, + "3504": 2, + "3505": 3, + "3506": 1, + "3507": 2, + "3508": 2, + "3511": 1, + "3512": 2, + "3516": 1, + "3517": 1, + "3518": 1, + "3519": 2, + "3520": 1, + "3521": 3, + "3522": 1, + "3523": 3, + "3524": 2, + "3525": 3, + "3527": 2, + "3528": 2, + "3529": 3, + "3530": 2, + "3531": 1, + "3532": 4, + "3533": 4, + "3534": 2, + "3535": 3, + "3536": 1, + "3537": 7, + "3538": 4, + "3539": 1, + "3540": 2, + "3541": 1, + "3542": 1, + "3543": 1, + "3544": 4, + "3546": 1, + "3547": 4, + "3548": 1, + "3549": 3, + "3550": 1, + "3551": 1, + "3552": 3, + "3553": 1, + "3555": 1, + "3556": 1, + "3558": 2, + "3562": 2, + "3563": 3, + "3564": 4, + "3565": 6, + "3566": 5, + "3567": 1, + "3568": 1, + "3569": 3, + "3570": 5, + "3571": 4, + "3572": 5, + "3573": 3, + "3574": 2, + "3575": 5, + "3576": 3, + "3577": 4, + "3578": 5, + "3579": 3, + "3580": 4, + "3581": 9, + "3582": 4, + "3583": 8, + "3584": 3, + "3585": 7, + "3586": 6, + "3587": 4, + "3588": 7, + "3589": 6, + "3590": 5, + "3591": 8, + "3592": 5, + "3593": 4, + "3594": 16, + "3595": 8, + "3596": 8, + "3597": 7, + "3598": 7, + "3599": 4, + "3600": 5, + "3601": 6, + "3602": 8, + "3603": 10, + "3604": 8, + "3605": 8, + "3606": 8, + "3607": 6, + "3608": 7, + "3609": 13, + "3610": 5, + "3611": 6, + "3612": 5, + "3613": 13, + "3614": 5, + "3615": 5, + "3616": 10, + "3617": 6, + "3618": 8, + "3619": 5, + "3620": 3, + "3621": 6, + "3622": 7, + "3623": 10, + "3624": 5, + "3625": 9, + "3626": 6, + "3627": 7, + "3628": 9, + "3629": 9, + "3630": 9, + "3631": 4, + "3632": 9, + "3633": 9, + "3634": 7, + "3635": 7, + "3636": 9, + "3637": 10, + "3638": 9, + "3639": 7, + "3640": 6, + "3641": 5, + "3642": 6, + "3643": 4, + "3644": 8, + "3645": 5, + "3646": 5, + "3647": 3, + "3648": 6, + "3649": 7, + "3650": 10, + "3651": 5, + "3652": 10, + "3653": 7, + "3654": 10, + "3655": 2, + "3656": 6, + "3657": 7, + "3658": 6, + "3659": 9, + "3660": 2, + "3661": 5, + "3662": 6, + "3663": 2, + "3664": 4, + "3665": 1, + "3666": 2, + "3667": 2, + "3668": 5, + "3669": 7, + "3670": 5, + "3671": 4, + "3672": 4, + "3673": 6, + "3674": 2, + "3675": 8, + "3676": 2, + "3677": 6, + "3678": 4, + "3679": 2, + "3680": 2, + "3682": 2, + "3683": 1, + "3684": 1, + "3685": 1, + "3686": 1, + "3687": 2, + "3692": 1, + "3694": 1, + "3695": 1, + "3697": 2, + "3698": 1, + "3699": 1, + "3702": 3, + "3703": 1, + "3705": 1, + "3706": 2, + "3709": 2, + "3711": 1, + "3714": 1, + "3718": 1, + "3719": 1, + "3723": 1, + "3728": 1, + "3729": 2, + "3731": 1, + "3733": 1, + "3737": 1, + "3739": 2, + "3741": 1 + }, + "started": "2025-09-11T20:06:14.885Z", + "trafficStats": { + "incomingCompressionRatio": 0.8585458984375, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 3516604, + "incomingOctetsWireLevel": 3524604, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.002274922055483074, + "outgoingCompressionRatio": 0.8585458984375, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 3516604, + "outgoingOctetsWireLevel": 3520604, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.001137461027741537, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "1576": 1, + "1592": 1, + "1649": 1, + "1655": 1, + "1680": 1, + "1698": 1, + "1733": 1, + "1742": 1, + "1805": 1, + "1817": 1, + "1824": 1, + "1936": 1, + "1978": 1, + "2145": 1, + "2275": 1, + "2347": 1, + "2421": 1, + "2574": 1, + "2717": 1, + "2729": 1, + "2915": 1, + "2942": 1, + "2944": 1, + "2945": 1, + "2948": 2, + "2949": 1, + "2950": 1, + "2951": 1, + "2952": 2, + "2953": 1, + "2954": 1, + "2956": 1, + "2957": 1, + "2961": 1, + "2975": 1, + "2978": 1, + "2980": 1, + "2982": 1, + "2991": 1, + "2992": 1, + "2995": 1, + "2996": 1, + "2998": 3, + "2999": 2, + "3000": 2, + "3001": 1, + "3002": 1, + "3003": 4, + "3004": 1, + "3007": 2, + "3009": 1, + "3012": 1, + "3024": 1, + "3031": 1, + "3034": 1, + "3037": 1, + "3041": 1, + "3045": 2, + "3046": 1, + "3060": 1, + "3063": 1, + "3074": 1, + "3076": 1, + "3078": 1, + "3079": 1, + "3083": 1, + "3086": 1, + "3091": 1, + "3092": 1, + "3099": 1, + "3102": 1, + "3103": 1, + "3106": 1, + "3108": 1, + "3112": 1, + "3114": 1, + "3128": 1, + "3133": 1, + "3147": 1, + "3161": 1, + "3182": 1, + "3184": 1, + "3205": 1, + "3208": 1, + "3210": 1, + "3225": 2, + "3231": 1, + "3250": 1, + "3269": 1, + "3273": 1, + "3275": 1, + "3277": 1, + "3279": 1, + "3281": 1, + "3290": 1, + "3291": 1, + "3302": 1, + "3313": 1, + "3320": 1, + "3321": 1, + "3329": 1, + "3337": 2, + "3344": 1, + "3348": 1, + "3353": 1, + "3362": 1, + "3387": 1, + "3394": 1, + "3404": 1, + "3413": 2, + "3427": 1, + "3429": 1, + "3430": 1, + "3433": 1, + "3450": 1, + "3453": 1, + "3460": 2, + "3461": 1, + "3462": 1, + "3464": 1, + "3468": 1, + "3472": 1, + "3473": 3, + "3474": 1, + "3475": 1, + "3478": 1, + "3480": 2, + "3481": 1, + "3482": 1, + "3483": 2, + "3484": 1, + "3486": 1, + "3488": 1, + "3489": 1, + "3490": 1, + "3492": 1, + "3493": 1, + "3494": 4, + "3495": 1, + "3496": 2, + "3497": 1, + "3499": 3, + "3500": 2, + "3501": 3, + "3502": 1, + "3503": 2, + "3504": 2, + "3507": 1, + "3508": 2, + "3512": 1, + "3513": 1, + "3514": 1, + "3515": 2, + "3516": 1, + "3517": 3, + "3518": 1, + "3519": 3, + "3520": 2, + "3521": 3, + "3523": 2, + "3524": 2, + "3525": 3, + "3526": 2, + "3527": 1, + "3528": 4, + "3529": 4, + "3530": 2, + "3531": 3, + "3532": 1, + "3533": 7, + "3534": 4, + "3535": 1, + "3536": 2, + "3537": 1, + "3538": 1, + "3539": 1, + "3540": 4, + "3542": 1, + "3543": 4, + "3544": 1, + "3545": 3, + "3546": 1, + "3547": 1, + "3548": 3, + "3549": 1, + "3551": 1, + "3552": 1, + "3554": 2, + "3558": 2, + "3559": 3, + "3560": 4, + "3561": 6, + "3562": 5, + "3563": 1, + "3564": 1, + "3565": 3, + "3566": 5, + "3567": 4, + "3568": 5, + "3569": 3, + "3570": 2, + "3571": 5, + "3572": 3, + "3573": 4, + "3574": 5, + "3575": 3, + "3576": 4, + "3577": 9, + "3578": 4, + "3579": 8, + "3580": 3, + "3581": 7, + "3582": 6, + "3583": 4, + "3584": 7, + "3585": 6, + "3586": 5, + "3587": 8, + "3588": 5, + "3589": 4, + "3590": 16, + "3591": 8, + "3592": 8, + "3593": 7, + "3594": 7, + "3595": 4, + "3596": 5, + "3597": 6, + "3598": 8, + "3599": 10, + "3600": 8, + "3601": 8, + "3602": 8, + "3603": 6, + "3604": 7, + "3605": 13, + "3606": 5, + "3607": 6, + "3608": 5, + "3609": 13, + "3610": 5, + "3611": 5, + "3612": 10, + "3613": 6, + "3614": 8, + "3615": 5, + "3616": 3, + "3617": 6, + "3618": 7, + "3619": 10, + "3620": 5, + "3621": 9, + "3622": 6, + "3623": 7, + "3624": 9, + "3625": 9, + "3626": 9, + "3627": 4, + "3628": 9, + "3629": 9, + "3630": 7, + "3631": 7, + "3632": 9, + "3633": 10, + "3634": 9, + "3635": 7, + "3636": 6, + "3637": 5, + "3638": 6, + "3639": 4, + "3640": 8, + "3641": 5, + "3642": 5, + "3643": 3, + "3644": 6, + "3645": 7, + "3646": 10, + "3647": 5, + "3648": 10, + "3649": 7, + "3650": 10, + "3651": 2, + "3652": 6, + "3653": 7, + "3654": 6, + "3655": 9, + "3656": 2, + "3657": 5, + "3658": 6, + "3659": 2, + "3660": 4, + "3661": 1, + "3662": 2, + "3663": 2, + "3664": 5, + "3665": 7, + "3666": 5, + "3667": 4, + "3668": 4, + "3669": 6, + "3670": 2, + "3671": 8, + "3672": 2, + "3673": 6, + "3674": 4, + "3675": 2, + "3676": 2, + "3678": 2, + "3679": 1, + "3680": 1, + "3681": 1, + "3682": 1, + "3683": 2, + "3688": 1, + "3690": 1, + "3691": 1, + "3693": 2, + "3694": 1, + "3695": 1, + "3698": 3, + "3699": 1, + "3701": 1, + "3702": 2, + "3705": 2, + "3707": 1, + "3710": 1, + "3714": 1, + "3715": 1, + "3719": 1, + "3724": 1, + "3725": 2, + "3727": 1, + "3729": 1, + "3733": 1, + "3735": 2, + "3737": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333234266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ac51cf06afb9" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ac51cf06" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_6.html b/autobahn/client/tungstenite_case_12_2_6.html new file mode 100644 index 0000000..f18692c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_6.html @@ -0,0 +1,1224 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.6 : Pass - 860 ms @ 2025-09-11T20:06:15.367Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=325&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: FInmlx1qTmUxYHr5BFGKZA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BcM93KfAvi+Rr5J6m0ep4/gZqsE=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
449914499
457014570
457614576
459214592
460514605
460914609
462514625
465814658
467514675
470014700
470714707
476714767
476814768
479914799
481814818
483914839
484814848
487514875
489114891
495314953
498514985
501415014
501515015
503515035
509615096
512015120
514215142
516515165
524715247
531315313
546515465
561315613
575915759
581215812
585615856
5860211720
586515865
587515875
5876211752
587715877
5886423544
588915889
589515895
590115901
590515905
5906317718
592315923
5924211848
593915939
594115941
594615946
5950211900
596115961
5964211928
596915969
597415974
597515975
598015980
598215982
598515985
599115991
599315993
600916009
601216012
601316013
601716017
602116021
604216042
604516045
605516055
606816068
6073212146
607516075
609316093
610216102
611816118
613216132
614816148
616816168
618416184
618716187
619516195
622616226
622916229
624216242
626116261
628716287
629216292
632216322
632716327
635116351
635916359
636116361
638116381
638916389
641916419
642616426
645916459
646316463
649416494
651416514
651816518
652516525
655516555
657916579
660816608
662716627
663216632
665716657
667616676
668116681
669216692
671716717
673316733
673416734
674316743
674516745
675416754
675616756
676616766
677516775
678116781
679416794
680616806
682116821
683516835
684916849
686016860
686416864
687416874
688216882
688316883
688916889
689116891
689316893
689416894
689716897
689816898
689916899
6903213806
6904213808
690516905
690716907
690916909
691816918
692116921
6922213844
692316923
6924213848
692516925
692616926
692816928
693116931
693316933
6934213868
6935213870
693916939
6940213880
6941320823
694216942
694316943
6944213888
694616946
695216952
695616956
6959213918
696216962
696516965
696616966
6969213938
697016970
697316973
6974213948
6975213950
6976213952
697716977
697816978
6981427924
698316983
698416984
6991213982
699216992
6993320979
6994213988
699516995
699616996
699716997
6999213998
7000321000
700217002
7003214006
700517005
700817008
7010214020
7011214022
701217012
701317013
7014214028
701517015
7016535080
702117021
7023321069
7024214048
702517025
7026321078
7027321081
7028321084
703017030
7032214064
703317033
7034214068
703517035
7036214072
703817038
703917039
704117041
704217042
7044321132
704517045
704717047
7048214096
7049214098
705117051
705217052
705517055
7056214112
7057214114
706017060
706117061
706217062
706317063
706417064
7067214134
706817068
707017070
707117071
707217072
707417074
707517075
7077214154
707817078
7079321237
7081214162
7082214164
7083214166
7084321252
7085321255
7088321264
7089321267
7090428360
7091428364
709217092
709317093
7094214188
7095214190
7096428384
709717097
7098214196
7099642594
710017100
7102642612
710317103
710417104
710517105
710617106
7107214214
7108214216
710917109
7110214220
7111321333
7112214224
7113856904
7114535570
7115964035
7116642696
7117321351
7118214236
7119321357
7120321360
7121214242
7122535610
7123321369
712417124
7126535630
712717127
712817128
7129214258
713117131
7132214264
7133321399
713417134
7135214270
713617136
713717137
713817138
7139321417
7140321420
7141214282
7143321429
7144964296
7145321435
714617146
7147214294
7148321444
714917149
7150321450
7151321453
7152214304
7153535765
7154535770
7155857240
7156964404
7157642942
7158642948
7159428636
7160428640
7161535805
7163428652
7164857312
71651178815
7166535830
7167428668
7168750176
7169535845
7170321510
7171750197
7172643032
7173428692
7174857392
7175857400
71761178936
7177750239
717814100492
7179857432
718017180
7181321543
7182857456
7183535915
7184535920
7185428740
7186214372
7187535935
7188535940
7189214378
7190214380
7191428764
7192857536
7193214386
7194428776
7195643170
719617196
7197214394
7198214396
719917199
720117201
720217202
720417204
720517205
7206536030
7209536045
7210321630
721117211
7213321639
721417214
7215214430
7216214432
721717217
7218214436
7219214438
7220321660
7221428884
7222214444
7223643338
7224321672
7225643350
722617226
7227321681
722817228
7229428916
7230214460
7231428924
7233321699
7234428936
7235536175
723617236
7237536185
7238321714
7239214478
7240428960
7241643446
7242428968
7243214486
7244428976
7245536225
7246428984
72471394211
7248428992
7249321747
7250321750
725117251
7252858016
725317253
7254750778
7255321765
725617256
7257214514
7258214516
725917259
7260214520
7261429044
7263214526
7264214528
7265321795
726617266
726717267
726817268
7269321807
727117271
727217272
7275214550
7276321828
7277214554
7278429112
7279321837
7280321840
7281321843
7282321846
7283214566
7284214568
728517285
7286321858
7287214574
7289321867
729017290
7291214582
7300214600
7301214602
7303321909
7304214608
730617306
730717307
730917309
731017310
731117311
7312214624
731517315
731717317
7318321954
7320214640
732217322
732317323
732517325
7327321981
732817328
732917329
733117331
733217332
733717337
734017340
734217342
7343214686
734417344
734517345
Total10026981484
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
449514495
456614566
457214572
458814588
460114601
460514605
462114621
465414654
467114671
469614696
470314703
476314763
476414764
479514795
481414814
483514835
484414844
487114871
488714887
494914949
498114981
501015010
501115011
503115031
509215092
511615116
513815138
516115161
524315243
530915309
546115461
560915609
575515755
580815808
585215852
5856211712
586115861
587115871
5872211744
587315873
5882423528
588515885
589115891
589715897
590115901
5902317706
591915919
5920211840
593515935
593715937
594215942
5946211892
595715957
5960211920
596515965
597015970
597115971
597615976
597815978
598115981
598715987
598915989
600516005
600816008
600916009
601316013
601716017
603816038
604116041
605116051
606416064
6069212138
607116071
608916089
609816098
611416114
612816128
614416144
616416164
618016180
618316183
619116191
622216222
622516225
623816238
625716257
628316283
628816288
631816318
632316323
634716347
635516355
635716357
637716377
638516385
641516415
642216422
645516455
645916459
649016490
651016510
651416514
652116521
655116551
657516575
660416604
662316623
662816628
665316653
667216672
667716677
668816688
671316713
672916729
673016730
673916739
674116741
675016750
675216752
676216762
677116771
677716777
679016790
680216802
681716817
683116831
684516845
685616856
686016860
687016870
687816878
687916879
688516885
688716887
688916889
689016890
689316893
689416894
689516895
6899213798
6900213800
690116901
690316903
690516905
691416914
691716917
6918213836
691916919
6920213840
692116921
692216922
692416924
692716927
692916929
6930213860
6931213862
693516935
6936213872
6937320811
693816938
693916939
6940213880
694216942
694816948
695216952
6955213910
695816958
696116961
696216962
6965213930
696616966
696916969
6970213940
6971213942
6972213944
697316973
697416974
6977427908
697916979
698016980
6987213974
698816988
6989320967
6990213980
699116991
699216992
699316993
6995213990
6996320988
699816998
6999213998
700117001
700417004
7006214012
7007214014
700817008
700917009
7010214020
701117011
7012535060
701717017
7019321057
7020214040
702117021
7022321066
7023321069
7024321072
702617026
7028214056
702917029
7030214060
703117031
7032214064
703417034
703517035
703717037
703817038
7040321120
704117041
704317043
7044214088
7045214090
704717047
704817048
705117051
7052214104
7053214106
705617056
705717057
705817058
705917059
706017060
7063214126
706417064
706617066
706717067
706817068
707017070
707117071
7073214146
707417074
7075321225
7077214154
7078214156
7079214158
7080321240
7081321243
7084321252
7085321255
7086428344
7087428348
708817088
708917089
7090214180
7091214182
7092428368
709317093
7094214188
7095642570
709617096
7098642588
709917099
710017100
710117101
710217102
7103214206
7104214208
710517105
7106214212
7107321321
7108214216
7109856872
7110535550
7111963999
7112642672
7113321339
7114214228
7115321345
7116321348
7117214234
7118535590
7119321357
712017120
7122535610
712317123
712417124
7125214250
712717127
7128214256
7129321387
713017130
7131214262
713217132
713317133
713417134
7135321405
7136321408
7137214274
7139321417
7140964260
7141321423
714217142
7143214286
7144321432
714517145
7146321438
7147321441
7148214296
7149535745
7150535750
7151857208
7152964368
7153642918
7154642924
7155428620
7156428624
7157535785
7159428636
7160857280
71611178771
7162535810
7163428652
7164750148
7165535825
7166321498
7167750169
7168643008
7169428676
7170857360
7171857368
71721178892
7173750211
717414100436
7175857400
717617176
7177321531
7178857424
7179535895
7180535900
7181428724
7182214364
7183535915
7184535920
7185214370
7186214372
7187428748
7188857504
7189214378
7190428760
7191643146
719217192
7193214386
7194214388
719517195
719717197
719817198
720017200
720117201
7202536010
7205536025
7206321618
720717207
7209321627
721017210
7211214422
7212214424
721317213
7214214428
7215214430
7216321648
7217428868
7218214436
7219643314
7220321660
7221643326
722217222
7223321669
722417224
7225428900
7226214452
7227428908
7229321687
7230428920
7231536155
723217232
7233536165
7234321702
7235214470
7236428944
7237643422
7238428952
7239214478
7240428960
7241536205
7242428968
72431394159
7244428976
7245321735
7246321738
724717247
7248857984
724917249
7250750750
7251321753
725217252
7253214506
7254214508
725517255
7256214512
7257429028
7259214518
7260214520
7261321783
726217262
726317263
726417264
7265321795
726717267
726817268
7271214542
7272321816
7273214546
7274429096
7275321825
7276321828
7277321831
7278321834
7279214558
7280214560
728117281
7282321846
7283214566
7285321855
728617286
7287214574
7296214592
7297214594
7299321897
7300214600
730217302
730317303
730517305
730617306
730717307
7308214616
731117311
731317313
7314321942
7316214632
731817318
731917319
732117321
7323321969
732417324
732517325
732717327
732817328
733317333
733617336
733817338
7339214678
734017340
734117341
Total10026977475
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333235266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d1fbb3ced213
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6431666262336365
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_6.json b/autobahn/client/tungstenite_case_12_2_6.json new file mode 100644 index 0000000..198e519 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_6.json @@ -0,0 +1,1071 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 325, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 860, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=325&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: FInmlx1qTmUxYHr5BFGKZA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BcM93KfAvi+Rr5J6m0ep4/gZqsE=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4499": 1, + "4570": 1, + "4576": 1, + "4592": 1, + "4605": 1, + "4609": 1, + "4625": 1, + "4658": 1, + "4675": 1, + "4700": 1, + "4707": 1, + "4767": 1, + "4768": 1, + "4799": 1, + "4818": 1, + "4839": 1, + "4848": 1, + "4875": 1, + "4891": 1, + "4953": 1, + "4985": 1, + "5014": 1, + "5015": 1, + "5035": 1, + "5096": 1, + "5120": 1, + "5142": 1, + "5165": 1, + "5247": 1, + "5313": 1, + "5465": 1, + "5613": 1, + "5759": 1, + "5812": 1, + "5856": 1, + "5860": 2, + "5865": 1, + "5875": 1, + "5876": 2, + "5877": 1, + "5886": 4, + "5889": 1, + "5895": 1, + "5901": 1, + "5905": 1, + "5906": 3, + "5923": 1, + "5924": 2, + "5939": 1, + "5941": 1, + "5946": 1, + "5950": 2, + "5961": 1, + "5964": 2, + "5969": 1, + "5974": 1, + "5975": 1, + "5980": 1, + "5982": 1, + "5985": 1, + "5991": 1, + "5993": 1, + "6009": 1, + "6012": 1, + "6013": 1, + "6017": 1, + "6021": 1, + "6042": 1, + "6045": 1, + "6055": 1, + "6068": 1, + "6073": 2, + "6075": 1, + "6093": 1, + "6102": 1, + "6118": 1, + "6132": 1, + "6148": 1, + "6168": 1, + "6184": 1, + "6187": 1, + "6195": 1, + "6226": 1, + "6229": 1, + "6242": 1, + "6261": 1, + "6287": 1, + "6292": 1, + "6322": 1, + "6327": 1, + "6351": 1, + "6359": 1, + "6361": 1, + "6381": 1, + "6389": 1, + "6419": 1, + "6426": 1, + "6459": 1, + "6463": 1, + "6494": 1, + "6514": 1, + "6518": 1, + "6525": 1, + "6555": 1, + "6579": 1, + "6608": 1, + "6627": 1, + "6632": 1, + "6657": 1, + "6676": 1, + "6681": 1, + "6692": 1, + "6717": 1, + "6733": 1, + "6734": 1, + "6743": 1, + "6745": 1, + "6754": 1, + "6756": 1, + "6766": 1, + "6775": 1, + "6781": 1, + "6794": 1, + "6806": 1, + "6821": 1, + "6835": 1, + "6849": 1, + "6860": 1, + "6864": 1, + "6874": 1, + "6882": 1, + "6883": 1, + "6889": 1, + "6891": 1, + "6893": 1, + "6894": 1, + "6897": 1, + "6898": 1, + "6899": 1, + "6903": 2, + "6904": 2, + "6905": 1, + "6907": 1, + "6909": 1, + "6918": 1, + "6921": 1, + "6922": 2, + "6923": 1, + "6924": 2, + "6925": 1, + "6926": 1, + "6928": 1, + "6931": 1, + "6933": 1, + "6934": 2, + "6935": 2, + "6939": 1, + "6940": 2, + "6941": 3, + "6942": 1, + "6943": 1, + "6944": 2, + "6946": 1, + "6952": 1, + "6956": 1, + "6959": 2, + "6962": 1, + "6965": 1, + "6966": 1, + "6969": 2, + "6970": 1, + "6973": 1, + "6974": 2, + "6975": 2, + "6976": 2, + "6977": 1, + "6978": 1, + "6981": 4, + "6983": 1, + "6984": 1, + "6991": 2, + "6992": 1, + "6993": 3, + "6994": 2, + "6995": 1, + "6996": 1, + "6997": 1, + "6999": 2, + "7000": 3, + "7002": 1, + "7003": 2, + "7005": 1, + "7008": 1, + "7010": 2, + "7011": 2, + "7012": 1, + "7013": 1, + "7014": 2, + "7015": 1, + "7016": 5, + "7021": 1, + "7023": 3, + "7024": 2, + "7025": 1, + "7026": 3, + "7027": 3, + "7028": 3, + "7030": 1, + "7032": 2, + "7033": 1, + "7034": 2, + "7035": 1, + "7036": 2, + "7038": 1, + "7039": 1, + "7041": 1, + "7042": 1, + "7044": 3, + "7045": 1, + "7047": 1, + "7048": 2, + "7049": 2, + "7051": 1, + "7052": 1, + "7055": 1, + "7056": 2, + "7057": 2, + "7060": 1, + "7061": 1, + "7062": 1, + "7063": 1, + "7064": 1, + "7067": 2, + "7068": 1, + "7070": 1, + "7071": 1, + "7072": 1, + "7074": 1, + "7075": 1, + "7077": 2, + "7078": 1, + "7079": 3, + "7081": 2, + "7082": 2, + "7083": 2, + "7084": 3, + "7085": 3, + "7088": 3, + "7089": 3, + "7090": 4, + "7091": 4, + "7092": 1, + "7093": 1, + "7094": 2, + "7095": 2, + "7096": 4, + "7097": 1, + "7098": 2, + "7099": 6, + "7100": 1, + "7102": 6, + "7103": 1, + "7104": 1, + "7105": 1, + "7106": 1, + "7107": 2, + "7108": 2, + "7109": 1, + "7110": 2, + "7111": 3, + "7112": 2, + "7113": 8, + "7114": 5, + "7115": 9, + "7116": 6, + "7117": 3, + "7118": 2, + "7119": 3, + "7120": 3, + "7121": 2, + "7122": 5, + "7123": 3, + "7124": 1, + "7126": 5, + "7127": 1, + "7128": 1, + "7129": 2, + "7131": 1, + "7132": 2, + "7133": 3, + "7134": 1, + "7135": 2, + "7136": 1, + "7137": 1, + "7138": 1, + "7139": 3, + "7140": 3, + "7141": 2, + "7143": 3, + "7144": 9, + "7145": 3, + "7146": 1, + "7147": 2, + "7148": 3, + "7149": 1, + "7150": 3, + "7151": 3, + "7152": 2, + "7153": 5, + "7154": 5, + "7155": 8, + "7156": 9, + "7157": 6, + "7158": 6, + "7159": 4, + "7160": 4, + "7161": 5, + "7163": 4, + "7164": 8, + "7165": 11, + "7166": 5, + "7167": 4, + "7168": 7, + "7169": 5, + "7170": 3, + "7171": 7, + "7172": 6, + "7173": 4, + "7174": 8, + "7175": 8, + "7176": 11, + "7177": 7, + "7178": 14, + "7179": 8, + "7180": 1, + "7181": 3, + "7182": 8, + "7183": 5, + "7184": 5, + "7185": 4, + "7186": 2, + "7187": 5, + "7188": 5, + "7189": 2, + "7190": 2, + "7191": 4, + "7192": 8, + "7193": 2, + "7194": 4, + "7195": 6, + "7196": 1, + "7197": 2, + "7198": 2, + "7199": 1, + "7201": 1, + "7202": 1, + "7204": 1, + "7205": 1, + "7206": 5, + "7209": 5, + "7210": 3, + "7211": 1, + "7213": 3, + "7214": 1, + "7215": 2, + "7216": 2, + "7217": 1, + "7218": 2, + "7219": 2, + "7220": 3, + "7221": 4, + "7222": 2, + "7223": 6, + "7224": 3, + "7225": 6, + "7226": 1, + "7227": 3, + "7228": 1, + "7229": 4, + "7230": 2, + "7231": 4, + "7233": 3, + "7234": 4, + "7235": 5, + "7236": 1, + "7237": 5, + "7238": 3, + "7239": 2, + "7240": 4, + "7241": 6, + "7242": 4, + "7243": 2, + "7244": 4, + "7245": 5, + "7246": 4, + "7247": 13, + "7248": 4, + "7249": 3, + "7250": 3, + "7251": 1, + "7252": 8, + "7253": 1, + "7254": 7, + "7255": 3, + "7256": 1, + "7257": 2, + "7258": 2, + "7259": 1, + "7260": 2, + "7261": 4, + "7263": 2, + "7264": 2, + "7265": 3, + "7266": 1, + "7267": 1, + "7268": 1, + "7269": 3, + "7271": 1, + "7272": 1, + "7275": 2, + "7276": 3, + "7277": 2, + "7278": 4, + "7279": 3, + "7280": 3, + "7281": 3, + "7282": 3, + "7283": 2, + "7284": 2, + "7285": 1, + "7286": 3, + "7287": 2, + "7289": 3, + "7290": 1, + "7291": 2, + "7300": 2, + "7301": 2, + "7303": 3, + "7304": 2, + "7306": 1, + "7307": 1, + "7309": 1, + "7310": 1, + "7311": 1, + "7312": 2, + "7315": 1, + "7317": 1, + "7318": 3, + "7320": 2, + "7322": 1, + "7323": 1, + "7325": 1, + "7327": 3, + "7328": 1, + "7329": 1, + "7331": 1, + "7332": 1, + "7337": 1, + "7340": 1, + "7342": 1, + "7343": 2, + "7344": 1, + "7345": 1 + }, + "started": "2025-09-11T20:06:15.367Z", + "trafficStats": { + "incomingCompressionRatio": 0.8512230224609375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 6973219, + "incomingOctetsWireLevel": 6981219, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0011472463434749431, + "outgoingCompressionRatio": 0.8512230224609375, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 6973219, + "outgoingOctetsWireLevel": 6977219, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0005736231717374716, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "4495": 1, + "4566": 1, + "4572": 1, + "4588": 1, + "4601": 1, + "4605": 1, + "4621": 1, + "4654": 1, + "4671": 1, + "4696": 1, + "4703": 1, + "4763": 1, + "4764": 1, + "4795": 1, + "4814": 1, + "4835": 1, + "4844": 1, + "4871": 1, + "4887": 1, + "4949": 1, + "4981": 1, + "5010": 1, + "5011": 1, + "5031": 1, + "5092": 1, + "5116": 1, + "5138": 1, + "5161": 1, + "5243": 1, + "5309": 1, + "5461": 1, + "5609": 1, + "5755": 1, + "5808": 1, + "5852": 1, + "5856": 2, + "5861": 1, + "5871": 1, + "5872": 2, + "5873": 1, + "5882": 4, + "5885": 1, + "5891": 1, + "5897": 1, + "5901": 1, + "5902": 3, + "5919": 1, + "5920": 2, + "5935": 1, + "5937": 1, + "5942": 1, + "5946": 2, + "5957": 1, + "5960": 2, + "5965": 1, + "5970": 1, + "5971": 1, + "5976": 1, + "5978": 1, + "5981": 1, + "5987": 1, + "5989": 1, + "6005": 1, + "6008": 1, + "6009": 1, + "6013": 1, + "6017": 1, + "6038": 1, + "6041": 1, + "6051": 1, + "6064": 1, + "6069": 2, + "6071": 1, + "6089": 1, + "6098": 1, + "6114": 1, + "6128": 1, + "6144": 1, + "6164": 1, + "6180": 1, + "6183": 1, + "6191": 1, + "6222": 1, + "6225": 1, + "6238": 1, + "6257": 1, + "6283": 1, + "6288": 1, + "6318": 1, + "6323": 1, + "6347": 1, + "6355": 1, + "6357": 1, + "6377": 1, + "6385": 1, + "6415": 1, + "6422": 1, + "6455": 1, + "6459": 1, + "6490": 1, + "6510": 1, + "6514": 1, + "6521": 1, + "6551": 1, + "6575": 1, + "6604": 1, + "6623": 1, + "6628": 1, + "6653": 1, + "6672": 1, + "6677": 1, + "6688": 1, + "6713": 1, + "6729": 1, + "6730": 1, + "6739": 1, + "6741": 1, + "6750": 1, + "6752": 1, + "6762": 1, + "6771": 1, + "6777": 1, + "6790": 1, + "6802": 1, + "6817": 1, + "6831": 1, + "6845": 1, + "6856": 1, + "6860": 1, + "6870": 1, + "6878": 1, + "6879": 1, + "6885": 1, + "6887": 1, + "6889": 1, + "6890": 1, + "6893": 1, + "6894": 1, + "6895": 1, + "6899": 2, + "6900": 2, + "6901": 1, + "6903": 1, + "6905": 1, + "6914": 1, + "6917": 1, + "6918": 2, + "6919": 1, + "6920": 2, + "6921": 1, + "6922": 1, + "6924": 1, + "6927": 1, + "6929": 1, + "6930": 2, + "6931": 2, + "6935": 1, + "6936": 2, + "6937": 3, + "6938": 1, + "6939": 1, + "6940": 2, + "6942": 1, + "6948": 1, + "6952": 1, + "6955": 2, + "6958": 1, + "6961": 1, + "6962": 1, + "6965": 2, + "6966": 1, + "6969": 1, + "6970": 2, + "6971": 2, + "6972": 2, + "6973": 1, + "6974": 1, + "6977": 4, + "6979": 1, + "6980": 1, + "6987": 2, + "6988": 1, + "6989": 3, + "6990": 2, + "6991": 1, + "6992": 1, + "6993": 1, + "6995": 2, + "6996": 3, + "6998": 1, + "6999": 2, + "7001": 1, + "7004": 1, + "7006": 2, + "7007": 2, + "7008": 1, + "7009": 1, + "7010": 2, + "7011": 1, + "7012": 5, + "7017": 1, + "7019": 3, + "7020": 2, + "7021": 1, + "7022": 3, + "7023": 3, + "7024": 3, + "7026": 1, + "7028": 2, + "7029": 1, + "7030": 2, + "7031": 1, + "7032": 2, + "7034": 1, + "7035": 1, + "7037": 1, + "7038": 1, + "7040": 3, + "7041": 1, + "7043": 1, + "7044": 2, + "7045": 2, + "7047": 1, + "7048": 1, + "7051": 1, + "7052": 2, + "7053": 2, + "7056": 1, + "7057": 1, + "7058": 1, + "7059": 1, + "7060": 1, + "7063": 2, + "7064": 1, + "7066": 1, + "7067": 1, + "7068": 1, + "7070": 1, + "7071": 1, + "7073": 2, + "7074": 1, + "7075": 3, + "7077": 2, + "7078": 2, + "7079": 2, + "7080": 3, + "7081": 3, + "7084": 3, + "7085": 3, + "7086": 4, + "7087": 4, + "7088": 1, + "7089": 1, + "7090": 2, + "7091": 2, + "7092": 4, + "7093": 1, + "7094": 2, + "7095": 6, + "7096": 1, + "7098": 6, + "7099": 1, + "7100": 1, + "7101": 1, + "7102": 1, + "7103": 2, + "7104": 2, + "7105": 1, + "7106": 2, + "7107": 3, + "7108": 2, + "7109": 8, + "7110": 5, + "7111": 9, + "7112": 6, + "7113": 3, + "7114": 2, + "7115": 3, + "7116": 3, + "7117": 2, + "7118": 5, + "7119": 3, + "7120": 1, + "7122": 5, + "7123": 1, + "7124": 1, + "7125": 2, + "7127": 1, + "7128": 2, + "7129": 3, + "7130": 1, + "7131": 2, + "7132": 1, + "7133": 1, + "7134": 1, + "7135": 3, + "7136": 3, + "7137": 2, + "7139": 3, + "7140": 9, + "7141": 3, + "7142": 1, + "7143": 2, + "7144": 3, + "7145": 1, + "7146": 3, + "7147": 3, + "7148": 2, + "7149": 5, + "7150": 5, + "7151": 8, + "7152": 9, + "7153": 6, + "7154": 6, + "7155": 4, + "7156": 4, + "7157": 5, + "7159": 4, + "7160": 8, + "7161": 11, + "7162": 5, + "7163": 4, + "7164": 7, + "7165": 5, + "7166": 3, + "7167": 7, + "7168": 6, + "7169": 4, + "7170": 8, + "7171": 8, + "7172": 11, + "7173": 7, + "7174": 14, + "7175": 8, + "7176": 1, + "7177": 3, + "7178": 8, + "7179": 5, + "7180": 5, + "7181": 4, + "7182": 2, + "7183": 5, + "7184": 5, + "7185": 2, + "7186": 2, + "7187": 4, + "7188": 8, + "7189": 2, + "7190": 4, + "7191": 6, + "7192": 1, + "7193": 2, + "7194": 2, + "7195": 1, + "7197": 1, + "7198": 1, + "7200": 1, + "7201": 1, + "7202": 5, + "7205": 5, + "7206": 3, + "7207": 1, + "7209": 3, + "7210": 1, + "7211": 2, + "7212": 2, + "7213": 1, + "7214": 2, + "7215": 2, + "7216": 3, + "7217": 4, + "7218": 2, + "7219": 6, + "7220": 3, + "7221": 6, + "7222": 1, + "7223": 3, + "7224": 1, + "7225": 4, + "7226": 2, + "7227": 4, + "7229": 3, + "7230": 4, + "7231": 5, + "7232": 1, + "7233": 5, + "7234": 3, + "7235": 2, + "7236": 4, + "7237": 6, + "7238": 4, + "7239": 2, + "7240": 4, + "7241": 5, + "7242": 4, + "7243": 13, + "7244": 4, + "7245": 3, + "7246": 3, + "7247": 1, + "7248": 8, + "7249": 1, + "7250": 7, + "7251": 3, + "7252": 1, + "7253": 2, + "7254": 2, + "7255": 1, + "7256": 2, + "7257": 4, + "7259": 2, + "7260": 2, + "7261": 3, + "7262": 1, + "7263": 1, + "7264": 1, + "7265": 3, + "7267": 1, + "7268": 1, + "7271": 2, + "7272": 3, + "7273": 2, + "7274": 4, + "7275": 3, + "7276": 3, + "7277": 3, + "7278": 3, + "7279": 2, + "7280": 2, + "7281": 1, + "7282": 3, + "7283": 2, + "7285": 3, + "7286": 1, + "7287": 2, + "7296": 2, + "7297": 2, + "7299": 3, + "7300": 2, + "7302": 1, + "7303": 1, + "7305": 1, + "7306": 1, + "7307": 1, + "7308": 2, + "7311": 1, + "7313": 1, + "7314": 3, + "7316": 2, + "7318": 1, + "7319": 1, + "7321": 1, + "7323": 3, + "7324": 1, + "7325": 1, + "7327": 1, + "7328": 1, + "7333": 1, + "7336": 1, + "7338": 1, + "7339": 2, + "7340": 1, + "7341": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333235266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d1fbb3ced213" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d1fbb3ce" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_7.html b/autobahn/client/tungstenite_case_12_2_7.html new file mode 100644 index 0000000..76d1377 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_7.html @@ -0,0 +1,1488 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.7 : Pass - 1546 ms @ 2025-09-11T20:06:16.228Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=326&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Tknt/fKk+gciYhmazDFFPw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: yjidxSauX8TeJnMlznxzIkp/WTU=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
10394110394
10445110445
10487110487
10500110500
10532110532
10555110555
10572110572
10579110579
10587110587
10656110656
10674110674
10716110716
10755110755
10757110757
10770110770
10779110779
10815110815
10867110867
10888110888
10893110893
10993110993
11023111023
11059111059
11072111072
11083111083
11156111156
11202111202
11218111218
11235111235
11250111250
11311111311
11366111366
11368111368
11385111385
11428111428
11477111477
11525111525
11537111537
11540111540
11584111584
11651111651
11669111669
11689111689
11721111721
11761111761
11767111767
11769111769
11771111771
11777111777
11792111792
11813111813
11814111814
11816111816
11823111823
11829111829
11841111841
11844111844
11848111848
11863111863
11867111867
11868111868
11896111896
11901111901
11905111905
11910111910
11912111912
11929111929
11945111945
11958111958
11967111967
11973111973
11988111988
12015112015
12021112021
12023112023
12038112038
12045112045
12066112066
12111224222
12127112127
12130112130
12144112144
12160224320
12173112173
12199224398
12225112225
12228112228
12239112239
12241112241
12273112273
12278112278
12280112280
12292112292
12321112321
12326112326
12345112345
12391112391
12400112400
12434112434
12437112437
12449112449
12504112504
12528112528
12555112555
12565112565
12620112620
12636112636
12667112667
12691112691
12709112709
12750112750
12786112786
12800112800
12805112805
12834112834
12876112876
12913112913
12922112922
12955112955
12974112974
12986112986
12990112990
13017113017
13033113033
13063113063
13074113074
13141113141
13155113155
13181113181
13186113186
13187113187
13227113227
13253113253
13273113273
13293113293
13338113338
13374113374
13375113375
13388113388
13410113410
13427113427
13469113469
13483113483
13519113519
13551113551
13566113566
13579113579
13592113592
13617113617
13642113642
13662113662
13672113672
13697113697
13722113722
13745113745
13747113747
13759113759
13770113770
13809113809
13827113827
13841113841
13845113845
13848113848
13850113850
13853227706
13854227708
13856113856
13857113857
13860113860
13861113861
13863113863
13866113866
13869227738
13870113870
13871227742
13873113873
13874113874
13880113880
13881113881
13882113882
13883113883
13887227774
13889113889
13890113890
13891113891
13896113896
13897113897
13898113898
13900113900
13901113901
13903113903
13907113907
13909113909
13912113912
13913113913
13914113914
13919113919
13929113929
13930227860
13932113932
13935113935
13936113936
13937113937
13940227880
13942227884
13950113950
13953113953
13959227918
13960113960
13967113967
13970113970
13972341916
13979113979
13981227962
13982113982
13986227972
13988113988
13990113990
13997227994
14001114001
14006114006
14007114007
14012114012
14014114014
14016228032
14017114017
14019114019
14023114023
14024570120
14029228058
14030114030
14031342093
14034228068
14035456140
14041114041
14043114043
14044342132
14047114047
14048114048
14049228098
14050228100
14051114051
14053228106
14055342165
14056228112
14057228114
14058456232
14060114060
14061228122
14062114062
14063228126
14064114064
14066114066
14067228134
14068342204
14069228138
14070114070
14071342213
14072114072
14073114073
14075114075
14077114077
14082114082
14083228166
14085228170
14091114091
14092114092
14093114093
14094114094
14096228192
14097114097
14098342294
14101114101
14104114104
14108228216
14109114109
14113114113
14115114115
14116114116
14117114117
14118114118
14121114121
14123114123
14126114126
14127114127
14128114128
14129114129
14130114130
14132228264
14133114133
14135114135
14136228272
14137114137
14139114139
14140228280
14141114141
14142228284
14144114144
14145114145
14146114146
14148114148
14150114150
14151114151
14153114153
14154114154
14155114155
14156342468
14157342471
14158342474
14159228318
14160228320
14161114161
14162114162
14164114164
14166342498
14168228336
14170114170
14173228346
14177342531
14178114178
14180228360
14181342543
14182456728
14183114183
14184114184
14186114186
14187114187
14188228376
14190228380
14195114195
14197114197
14198114198
14199114199
14201114201
14203114203
14205114205
14206114206
14208114208
14209114209
14210114210
14211114211
14212114212
14213114213
14214114214
14216228432
14217228434
14218228436
14219114219
14221114221
14222228444
14223228446
14224114224
14226114226
14228114228
14230114230
14233114233
14234228468
14235114235
14236114236
14237228474
14238342714
14240114240
14242114242
14247114247
14248114248
14250228500
14251342753
14253114253
14255342765
14256114256
14257342771
14258228516
14259114259
14260228520
14261342783
14264228528
14267228534
14268342804
14269457076
14270342810
14271457084
14272228544
14273114273
14275228550
14276114276
14277571385
14278342834
14279457116
14280114280
14281342843
14282342846
14283457132
14285457140
14286342858
14287571435
14288228576
14289457156
14290114290
14291114291
14293571465
14294114294
14295342885
14296342888
142977100079
14298457192
14299571495
143009128700
14301342903
14302685812
14303571515
14304228608
1430510143050
14306114306
14307342921
14308457232
14309342927
14310571550
14311228622
14312228624
14313457252
14314114314
14315457260
14316228632
14317571585
14318457272
14320342960
14321685926
14322342966
14323571615
14324457296
14325228650
14326228652
14327342981
14328457312
14329114329
14330114330
14331228662
14332342996
14333457332
14334343002
14335228670
14336228672
14338114338
14340114340
14341114341
14342228684
14343571715
14344114344
14345228690
14346571730
14347343041
14348228696
14349114349
14350228700
14351228702
14352228704
14353114353
14355343065
14357114357
14358114358
14360114360
14363228726
14367228734
14368228736
14369114369
14373228746
14374343122
14375114375
14377343131
14379114379
14380228760
14381114381
14383228766
14384228768
14387228774
14390114390
14392114392
14393228786
14394228788
14395114395
14396114396
14397228794
14398343194
14399114399
14400228800
14402114402
14403114403
14404343212
14406572030
14409457636
14410228820
14411114411
14412343236
14413228826
14414343242
14416228832
14417572085
14418228836
14419114419
14420114420
14421572105
14422343266
14423457692
14424114424
14425114425
14426114426
14427343281
14428228856
14429228858
14430114430
14431228862
14432114432
14434114434
14435228870
14436228872
14437343311
14438228876
14440457760
14441228882
14443228886
14444343332
14445114445
14446343338
14447114447
14448114448
14449228898
14450686700
14451343353
14452228904
14453457812
14454114454
144557101185
14456343368
14457457828
14458572290
14459114459
14460114460
14461343383
14462228924
14463343389
14464343392
14465114465
14466228932
14468343404
14470343410
14472114472
14473114473
14475114475
14476228952
14477343431
14478343434
14479228958
14481572405
14482114482
14483114483
14484228968
14485343455
14486114486
14487114487
14488114488
14489114489
14490114490
14491114491
14492114492
14494114494
14498114498
14499343497
14500229000
14501114501
14503229006
14504114504
14505229010
14507114507
14508343524
14510229020
14511229022
14512114512
14513114513
14514229028
14518114518
14519229038
14520114520
14524114524
14525114525
14526114526
14527229054
14528229056
14529114529
14533114533
14534114534
14535229070
14536114536
14538114538
14541114541
14543114543
Total100213931447
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
10390110390
10441110441
10483110483
10496110496
10528110528
10551110551
10568110568
10575110575
10583110583
10652110652
10670110670
10712110712
10751110751
10753110753
10766110766
10775110775
10811110811
10863110863
10884110884
10889110889
10989110989
11019111019
11055111055
11068111068
11079111079
11152111152
11198111198
11214111214
11231111231
11246111246
11307111307
11362111362
11364111364
11381111381
11424111424
11473111473
11521111521
11533111533
11536111536
11580111580
11647111647
11665111665
11685111685
11717111717
11757111757
11763111763
11765111765
11767111767
11773111773
11788111788
11809111809
11810111810
11812111812
11819111819
11825111825
11837111837
11840111840
11844111844
11859111859
11863111863
11864111864
11892111892
11897111897
11901111901
11906111906
11908111908
11925111925
11941111941
11954111954
11963111963
11969111969
11984111984
12011112011
12017112017
12019112019
12034112034
12041112041
12062112062
12107224214
12123112123
12126112126
12140112140
12156224312
12169112169
12195224390
12221112221
12224112224
12235112235
12237112237
12269112269
12274112274
12276112276
12288112288
12317112317
12322112322
12341112341
12387112387
12396112396
12430112430
12433112433
12445112445
12500112500
12524112524
12551112551
12561112561
12616112616
12632112632
12663112663
12687112687
12705112705
12746112746
12782112782
12796112796
12801112801
12830112830
12872112872
12909112909
12918112918
12951112951
12970112970
12982112982
12986112986
13013113013
13029113029
13059113059
13070113070
13137113137
13151113151
13177113177
13182113182
13183113183
13223113223
13249113249
13269113269
13289113289
13334113334
13370113370
13371113371
13384113384
13406113406
13423113423
13465113465
13479113479
13515113515
13547113547
13562113562
13575113575
13588113588
13613113613
13638113638
13658113658
13668113668
13693113693
13718113718
13741113741
13743113743
13755113755
13766113766
13805113805
13823113823
13837113837
13841113841
13844113844
13846113846
13849227698
13850227700
13852113852
13853113853
13856113856
13857113857
13859113859
13862113862
13865227730
13866113866
13867227734
13869113869
13870113870
13876113876
13877113877
13878113878
13879113879
13883227766
13885113885
13886113886
13887113887
13892113892
13893113893
13894113894
13896113896
13897113897
13899113899
13903113903
13905113905
13908113908
13909113909
13910113910
13915113915
13925113925
13926227852
13928113928
13931113931
13932113932
13933113933
13936227872
13938227876
13946113946
13949113949
13955227910
13956113956
13963113963
13966113966
13968341904
13975113975
13977227954
13978113978
13982227964
13984113984
13986113986
13993227986
13997113997
14002114002
14003114003
14008114008
14010114010
14012228024
14013114013
14015114015
14019114019
14020570100
14025228050
14026114026
14027342081
14030228060
14031456124
14037114037
14039114039
14040342120
14043114043
14044114044
14045228090
14046228092
14047114047
14049228098
14051342153
14052228104
14053228106
14054456216
14056114056
14057228114
14058114058
14059228118
14060114060
14062114062
14063228126
14064342192
14065228130
14066114066
14067342201
14068114068
14069114069
14071114071
14073114073
14078114078
14079228158
14081228162
14087114087
14088114088
14089114089
14090114090
14092228184
14093114093
14094342282
14097114097
14100114100
14104228208
14105114105
14109114109
14111114111
14112114112
14113114113
14114114114
14117114117
14119114119
14122114122
14123114123
14124114124
14125114125
14126114126
14128228256
14129114129
14131114131
14132228264
14133114133
14135114135
14136228272
14137114137
14138228276
14140114140
14141114141
14142114142
14144114144
14146114146
14147114147
14149114149
14150114150
14151114151
14152342456
14153342459
14154342462
14155228310
14156228312
14157114157
14158114158
14160114160
14162342486
14164228328
14166114166
14169228338
14173342519
14174114174
14176228352
14177342531
14178456712
14179114179
14180114180
14182114182
14183114183
14184228368
14186228372
14191114191
14193114193
14194114194
14195114195
14197114197
14199114199
14201114201
14202114202
14204114204
14205114205
14206114206
14207114207
14208114208
14209114209
14210114210
14212228424
14213228426
14214228428
14215114215
14217114217
14218228436
14219228438
14220114220
14222114222
14224114224
14226114226
14229114229
14230228460
14231114231
14232114232
14233228466
14234342702
14236114236
14238114238
14243114243
14244114244
14246228492
14247342741
14249114249
14251342753
14252114252
14253342759
14254228508
14255114255
14256228512
14257342771
14260228520
14263228526
14264342792
14265457060
14266342798
14267457068
14268228536
14269114269
14271228542
14272114272
14273571365
14274342822
14275457100
14276114276
14277342831
14278342834
14279457116
14281457124
14282342846
14283571415
14284228568
14285457140
14286114286
14287114287
14289571445
14290114290
14291342873
14292342876
142937100051
14294457176
14295571475
142969128664
14297342891
14298685788
14299571495
14300228600
1430110143010
14302114302
14303342909
14304457216
14305342915
14306571530
14307228614
14308228616
14309457236
14310114310
14311457244
14312228624
14313571565
14314457256
14316342948
14317685902
14318342954
14319571595
14320457280
14321228642
14322228644
14323342969
14324457296
14325114325
14326114326
14327228654
14328342984
14329457316
14330342990
14331228662
14332228664
14334114334
14336114336
14337114337
14338228676
14339571695
14340114340
14341228682
14342571710
14343343029
14344228688
14345114345
14346228692
14347228694
14348228696
14349114349
14351343053
14353114353
14354114354
14356114356
14359228718
14363228726
14364228728
14365114365
14369228738
14370343110
14371114371
14373343119
14375114375
14376228752
14377114377
14379228758
14380228760
14383228766
14386114386
14388114388
14389228778
14390228780
14391114391
14392114392
14393228786
14394343182
14395114395
14396228792
14398114398
14399114399
14400343200
14402572010
14405457620
14406228812
14407114407
14408343224
14409228818
14410343230
14412228824
14413572065
14414228828
14415114415
14416114416
14417572085
14418343254
14419457676
14420114420
14421114421
14422114422
14423343269
14424228848
14425228850
14426114426
14427228854
14428114428
14430114430
14431228862
14432228864
14433343299
14434228868
14436457744
14437228874
14439228878
14440343320
14441114441
14442343326
14443114443
14444114444
14445228890
14446686676
14447343341
14448228896
14449457796
14450114450
144517101157
14452343356
14453457812
14454572270
14455114455
14456114456
14457343371
14458228916
14459343377
14460343380
14461114461
14462228924
14464343392
14466343398
14468114468
14469114469
14471114471
14472228944
14473343419
14474343422
14475228950
14477572385
14478114478
14479114479
14480228960
14481343443
14482114482
14483114483
14484114484
14485114485
14486114486
14487114487
14488114488
14490114490
14494114494
14495343485
14496228992
14497114497
14499228998
14500114500
14501229002
14503114503
14504343512
14506229012
14507229014
14508114508
14509114509
14510229020
14514114514
14515229030
14516114516
14520114520
14521114521
14522114522
14523229046
14524229048
14525114525
14529114529
14530114530
14531229062
14532114532
14534114534
14537114537
14539114539
Total100213927438
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333236266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88823719c92434f1
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3337313963393234
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_7.json b/autobahn/client/tungstenite_case_12_2_7.json new file mode 100644 index 0000000..cf221a6 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_7.json @@ -0,0 +1,1335 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 326, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1546, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=326&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Tknt/fKk+gciYhmazDFFPw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: yjidxSauX8TeJnMlznxzIkp/WTU=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "10394": 1, + "10445": 1, + "10487": 1, + "10500": 1, + "10532": 1, + "10555": 1, + "10572": 1, + "10579": 1, + "10587": 1, + "10656": 1, + "10674": 1, + "10716": 1, + "10755": 1, + "10757": 1, + "10770": 1, + "10779": 1, + "10815": 1, + "10867": 1, + "10888": 1, + "10893": 1, + "10993": 1, + "11023": 1, + "11059": 1, + "11072": 1, + "11083": 1, + "11156": 1, + "11202": 1, + "11218": 1, + "11235": 1, + "11250": 1, + "11311": 1, + "11366": 1, + "11368": 1, + "11385": 1, + "11428": 1, + "11477": 1, + "11525": 1, + "11537": 1, + "11540": 1, + "11584": 1, + "11651": 1, + "11669": 1, + "11689": 1, + "11721": 1, + "11761": 1, + "11767": 1, + "11769": 1, + "11771": 1, + "11777": 1, + "11792": 1, + "11813": 1, + "11814": 1, + "11816": 1, + "11823": 1, + "11829": 1, + "11841": 1, + "11844": 1, + "11848": 1, + "11863": 1, + "11867": 1, + "11868": 1, + "11896": 1, + "11901": 1, + "11905": 1, + "11910": 1, + "11912": 1, + "11929": 1, + "11945": 1, + "11958": 1, + "11967": 1, + "11973": 1, + "11988": 1, + "12015": 1, + "12021": 1, + "12023": 1, + "12038": 1, + "12045": 1, + "12066": 1, + "12111": 2, + "12127": 1, + "12130": 1, + "12144": 1, + "12160": 2, + "12173": 1, + "12199": 2, + "12225": 1, + "12228": 1, + "12239": 1, + "12241": 1, + "12273": 1, + "12278": 1, + "12280": 1, + "12292": 1, + "12321": 1, + "12326": 1, + "12345": 1, + "12391": 1, + "12400": 1, + "12434": 1, + "12437": 1, + "12449": 1, + "12504": 1, + "12528": 1, + "12555": 1, + "12565": 1, + "12620": 1, + "12636": 1, + "12667": 1, + "12691": 1, + "12709": 1, + "12750": 1, + "12786": 1, + "12800": 1, + "12805": 1, + "12834": 1, + "12876": 1, + "12913": 1, + "12922": 1, + "12955": 1, + "12974": 1, + "12986": 1, + "12990": 1, + "13017": 1, + "13033": 1, + "13063": 1, + "13074": 1, + "13141": 1, + "13155": 1, + "13181": 1, + "13186": 1, + "13187": 1, + "13227": 1, + "13253": 1, + "13273": 1, + "13293": 1, + "13338": 1, + "13374": 1, + "13375": 1, + "13388": 1, + "13410": 1, + "13427": 1, + "13469": 1, + "13483": 1, + "13519": 1, + "13551": 1, + "13566": 1, + "13579": 1, + "13592": 1, + "13617": 1, + "13642": 1, + "13662": 1, + "13672": 1, + "13697": 1, + "13722": 1, + "13745": 1, + "13747": 1, + "13759": 1, + "13770": 1, + "13809": 1, + "13827": 1, + "13841": 1, + "13845": 1, + "13848": 1, + "13850": 1, + "13853": 2, + "13854": 2, + "13856": 1, + "13857": 1, + "13860": 1, + "13861": 1, + "13863": 1, + "13866": 1, + "13869": 2, + "13870": 1, + "13871": 2, + "13873": 1, + "13874": 1, + "13880": 1, + "13881": 1, + "13882": 1, + "13883": 1, + "13887": 2, + "13889": 1, + "13890": 1, + "13891": 1, + "13896": 1, + "13897": 1, + "13898": 1, + "13900": 1, + "13901": 1, + "13903": 1, + "13907": 1, + "13909": 1, + "13912": 1, + "13913": 1, + "13914": 1, + "13919": 1, + "13929": 1, + "13930": 2, + "13932": 1, + "13935": 1, + "13936": 1, + "13937": 1, + "13940": 2, + "13942": 2, + "13950": 1, + "13953": 1, + "13959": 2, + "13960": 1, + "13967": 1, + "13970": 1, + "13972": 3, + "13979": 1, + "13981": 2, + "13982": 1, + "13986": 2, + "13988": 1, + "13990": 1, + "13997": 2, + "14001": 1, + "14006": 1, + "14007": 1, + "14012": 1, + "14014": 1, + "14016": 2, + "14017": 1, + "14019": 1, + "14023": 1, + "14024": 5, + "14029": 2, + "14030": 1, + "14031": 3, + "14034": 2, + "14035": 4, + "14041": 1, + "14043": 1, + "14044": 3, + "14047": 1, + "14048": 1, + "14049": 2, + "14050": 2, + "14051": 1, + "14053": 2, + "14055": 3, + "14056": 2, + "14057": 2, + "14058": 4, + "14060": 1, + "14061": 2, + "14062": 1, + "14063": 2, + "14064": 1, + "14066": 1, + "14067": 2, + "14068": 3, + "14069": 2, + "14070": 1, + "14071": 3, + "14072": 1, + "14073": 1, + "14075": 1, + "14077": 1, + "14082": 1, + "14083": 2, + "14085": 2, + "14091": 1, + "14092": 1, + "14093": 1, + "14094": 1, + "14096": 2, + "14097": 1, + "14098": 3, + "14101": 1, + "14104": 1, + "14108": 2, + "14109": 1, + "14113": 1, + "14115": 1, + "14116": 1, + "14117": 1, + "14118": 1, + "14121": 1, + "14123": 1, + "14126": 1, + "14127": 1, + "14128": 1, + "14129": 1, + "14130": 1, + "14132": 2, + "14133": 1, + "14135": 1, + "14136": 2, + "14137": 1, + "14139": 1, + "14140": 2, + "14141": 1, + "14142": 2, + "14144": 1, + "14145": 1, + "14146": 1, + "14148": 1, + "14150": 1, + "14151": 1, + "14153": 1, + "14154": 1, + "14155": 1, + "14156": 3, + "14157": 3, + "14158": 3, + "14159": 2, + "14160": 2, + "14161": 1, + "14162": 1, + "14164": 1, + "14166": 3, + "14168": 2, + "14170": 1, + "14173": 2, + "14177": 3, + "14178": 1, + "14180": 2, + "14181": 3, + "14182": 4, + "14183": 1, + "14184": 1, + "14186": 1, + "14187": 1, + "14188": 2, + "14190": 2, + "14195": 1, + "14197": 1, + "14198": 1, + "14199": 1, + "14201": 1, + "14203": 1, + "14205": 1, + "14206": 1, + "14208": 1, + "14209": 1, + "14210": 1, + "14211": 1, + "14212": 1, + "14213": 1, + "14214": 1, + "14216": 2, + "14217": 2, + "14218": 2, + "14219": 1, + "14221": 1, + "14222": 2, + "14223": 2, + "14224": 1, + "14226": 1, + "14228": 1, + "14230": 1, + "14233": 1, + "14234": 2, + "14235": 1, + "14236": 1, + "14237": 2, + "14238": 3, + "14240": 1, + "14242": 1, + "14247": 1, + "14248": 1, + "14250": 2, + "14251": 3, + "14253": 1, + "14255": 3, + "14256": 1, + "14257": 3, + "14258": 2, + "14259": 1, + "14260": 2, + "14261": 3, + "14264": 2, + "14267": 2, + "14268": 3, + "14269": 4, + "14270": 3, + "14271": 4, + "14272": 2, + "14273": 1, + "14275": 2, + "14276": 1, + "14277": 5, + "14278": 3, + "14279": 4, + "14280": 1, + "14281": 3, + "14282": 3, + "14283": 4, + "14285": 4, + "14286": 3, + "14287": 5, + "14288": 2, + "14289": 4, + "14290": 1, + "14291": 1, + "14293": 5, + "14294": 1, + "14295": 3, + "14296": 3, + "14297": 7, + "14298": 4, + "14299": 5, + "14300": 9, + "14301": 3, + "14302": 6, + "14303": 5, + "14304": 2, + "14305": 10, + "14306": 1, + "14307": 3, + "14308": 4, + "14309": 3, + "14310": 5, + "14311": 2, + "14312": 2, + "14313": 4, + "14314": 1, + "14315": 4, + "14316": 2, + "14317": 5, + "14318": 4, + "14320": 3, + "14321": 6, + "14322": 3, + "14323": 5, + "14324": 4, + "14325": 2, + "14326": 2, + "14327": 3, + "14328": 4, + "14329": 1, + "14330": 1, + "14331": 2, + "14332": 3, + "14333": 4, + "14334": 3, + "14335": 2, + "14336": 2, + "14338": 1, + "14340": 1, + "14341": 1, + "14342": 2, + "14343": 5, + "14344": 1, + "14345": 2, + "14346": 5, + "14347": 3, + "14348": 2, + "14349": 1, + "14350": 2, + "14351": 2, + "14352": 2, + "14353": 1, + "14355": 3, + "14357": 1, + "14358": 1, + "14360": 1, + "14363": 2, + "14367": 2, + "14368": 2, + "14369": 1, + "14373": 2, + "14374": 3, + "14375": 1, + "14377": 3, + "14379": 1, + "14380": 2, + "14381": 1, + "14383": 2, + "14384": 2, + "14387": 2, + "14390": 1, + "14392": 1, + "14393": 2, + "14394": 2, + "14395": 1, + "14396": 1, + "14397": 2, + "14398": 3, + "14399": 1, + "14400": 2, + "14402": 1, + "14403": 1, + "14404": 3, + "14406": 5, + "14409": 4, + "14410": 2, + "14411": 1, + "14412": 3, + "14413": 2, + "14414": 3, + "14416": 2, + "14417": 5, + "14418": 2, + "14419": 1, + "14420": 1, + "14421": 5, + "14422": 3, + "14423": 4, + "14424": 1, + "14425": 1, + "14426": 1, + "14427": 3, + "14428": 2, + "14429": 2, + "14430": 1, + "14431": 2, + "14432": 1, + "14434": 1, + "14435": 2, + "14436": 2, + "14437": 3, + "14438": 2, + "14440": 4, + "14441": 2, + "14443": 2, + "14444": 3, + "14445": 1, + "14446": 3, + "14447": 1, + "14448": 1, + "14449": 2, + "14450": 6, + "14451": 3, + "14452": 2, + "14453": 4, + "14454": 1, + "14455": 7, + "14456": 3, + "14457": 4, + "14458": 5, + "14459": 1, + "14460": 1, + "14461": 3, + "14462": 2, + "14463": 3, + "14464": 3, + "14465": 1, + "14466": 2, + "14468": 3, + "14470": 3, + "14472": 1, + "14473": 1, + "14475": 1, + "14476": 2, + "14477": 3, + "14478": 3, + "14479": 2, + "14481": 5, + "14482": 1, + "14483": 1, + "14484": 2, + "14485": 3, + "14486": 1, + "14487": 1, + "14488": 1, + "14489": 1, + "14490": 1, + "14491": 1, + "14492": 1, + "14494": 1, + "14498": 1, + "14499": 3, + "14500": 2, + "14501": 1, + "14503": 2, + "14504": 1, + "14505": 2, + "14507": 1, + "14508": 3, + "14510": 2, + "14511": 2, + "14512": 1, + "14513": 1, + "14514": 2, + "14518": 1, + "14519": 2, + "14520": 1, + "14524": 1, + "14525": 1, + "14526": 1, + "14527": 2, + "14528": 2, + "14529": 1, + "14533": 1, + "14534": 1, + "14535": 2, + "14536": 1, + "14538": 1, + "14541": 1, + "14543": 1 + }, + "started": "2025-09-11T20:06:16.228Z", + "trafficStats": { + "incomingCompressionRatio": 0.8498035888671875, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 13923182, + "incomingOctetsWireLevel": 13931182, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0005745812990162738, + "outgoingCompressionRatio": 0.8498035888671875, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 13923182, + "outgoingOctetsWireLevel": 13927182, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0002872906495081369, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "10390": 1, + "10441": 1, + "10483": 1, + "10496": 1, + "10528": 1, + "10551": 1, + "10568": 1, + "10575": 1, + "10583": 1, + "10652": 1, + "10670": 1, + "10712": 1, + "10751": 1, + "10753": 1, + "10766": 1, + "10775": 1, + "10811": 1, + "10863": 1, + "10884": 1, + "10889": 1, + "10989": 1, + "11019": 1, + "11055": 1, + "11068": 1, + "11079": 1, + "11152": 1, + "11198": 1, + "11214": 1, + "11231": 1, + "11246": 1, + "11307": 1, + "11362": 1, + "11364": 1, + "11381": 1, + "11424": 1, + "11473": 1, + "11521": 1, + "11533": 1, + "11536": 1, + "11580": 1, + "11647": 1, + "11665": 1, + "11685": 1, + "11717": 1, + "11757": 1, + "11763": 1, + "11765": 1, + "11767": 1, + "11773": 1, + "11788": 1, + "11809": 1, + "11810": 1, + "11812": 1, + "11819": 1, + "11825": 1, + "11837": 1, + "11840": 1, + "11844": 1, + "11859": 1, + "11863": 1, + "11864": 1, + "11892": 1, + "11897": 1, + "11901": 1, + "11906": 1, + "11908": 1, + "11925": 1, + "11941": 1, + "11954": 1, + "11963": 1, + "11969": 1, + "11984": 1, + "12011": 1, + "12017": 1, + "12019": 1, + "12034": 1, + "12041": 1, + "12062": 1, + "12107": 2, + "12123": 1, + "12126": 1, + "12140": 1, + "12156": 2, + "12169": 1, + "12195": 2, + "12221": 1, + "12224": 1, + "12235": 1, + "12237": 1, + "12269": 1, + "12274": 1, + "12276": 1, + "12288": 1, + "12317": 1, + "12322": 1, + "12341": 1, + "12387": 1, + "12396": 1, + "12430": 1, + "12433": 1, + "12445": 1, + "12500": 1, + "12524": 1, + "12551": 1, + "12561": 1, + "12616": 1, + "12632": 1, + "12663": 1, + "12687": 1, + "12705": 1, + "12746": 1, + "12782": 1, + "12796": 1, + "12801": 1, + "12830": 1, + "12872": 1, + "12909": 1, + "12918": 1, + "12951": 1, + "12970": 1, + "12982": 1, + "12986": 1, + "13013": 1, + "13029": 1, + "13059": 1, + "13070": 1, + "13137": 1, + "13151": 1, + "13177": 1, + "13182": 1, + "13183": 1, + "13223": 1, + "13249": 1, + "13269": 1, + "13289": 1, + "13334": 1, + "13370": 1, + "13371": 1, + "13384": 1, + "13406": 1, + "13423": 1, + "13465": 1, + "13479": 1, + "13515": 1, + "13547": 1, + "13562": 1, + "13575": 1, + "13588": 1, + "13613": 1, + "13638": 1, + "13658": 1, + "13668": 1, + "13693": 1, + "13718": 1, + "13741": 1, + "13743": 1, + "13755": 1, + "13766": 1, + "13805": 1, + "13823": 1, + "13837": 1, + "13841": 1, + "13844": 1, + "13846": 1, + "13849": 2, + "13850": 2, + "13852": 1, + "13853": 1, + "13856": 1, + "13857": 1, + "13859": 1, + "13862": 1, + "13865": 2, + "13866": 1, + "13867": 2, + "13869": 1, + "13870": 1, + "13876": 1, + "13877": 1, + "13878": 1, + "13879": 1, + "13883": 2, + "13885": 1, + "13886": 1, + "13887": 1, + "13892": 1, + "13893": 1, + "13894": 1, + "13896": 1, + "13897": 1, + "13899": 1, + "13903": 1, + "13905": 1, + "13908": 1, + "13909": 1, + "13910": 1, + "13915": 1, + "13925": 1, + "13926": 2, + "13928": 1, + "13931": 1, + "13932": 1, + "13933": 1, + "13936": 2, + "13938": 2, + "13946": 1, + "13949": 1, + "13955": 2, + "13956": 1, + "13963": 1, + "13966": 1, + "13968": 3, + "13975": 1, + "13977": 2, + "13978": 1, + "13982": 2, + "13984": 1, + "13986": 1, + "13993": 2, + "13997": 1, + "14002": 1, + "14003": 1, + "14008": 1, + "14010": 1, + "14012": 2, + "14013": 1, + "14015": 1, + "14019": 1, + "14020": 5, + "14025": 2, + "14026": 1, + "14027": 3, + "14030": 2, + "14031": 4, + "14037": 1, + "14039": 1, + "14040": 3, + "14043": 1, + "14044": 1, + "14045": 2, + "14046": 2, + "14047": 1, + "14049": 2, + "14051": 3, + "14052": 2, + "14053": 2, + "14054": 4, + "14056": 1, + "14057": 2, + "14058": 1, + "14059": 2, + "14060": 1, + "14062": 1, + "14063": 2, + "14064": 3, + "14065": 2, + "14066": 1, + "14067": 3, + "14068": 1, + "14069": 1, + "14071": 1, + "14073": 1, + "14078": 1, + "14079": 2, + "14081": 2, + "14087": 1, + "14088": 1, + "14089": 1, + "14090": 1, + "14092": 2, + "14093": 1, + "14094": 3, + "14097": 1, + "14100": 1, + "14104": 2, + "14105": 1, + "14109": 1, + "14111": 1, + "14112": 1, + "14113": 1, + "14114": 1, + "14117": 1, + "14119": 1, + "14122": 1, + "14123": 1, + "14124": 1, + "14125": 1, + "14126": 1, + "14128": 2, + "14129": 1, + "14131": 1, + "14132": 2, + "14133": 1, + "14135": 1, + "14136": 2, + "14137": 1, + "14138": 2, + "14140": 1, + "14141": 1, + "14142": 1, + "14144": 1, + "14146": 1, + "14147": 1, + "14149": 1, + "14150": 1, + "14151": 1, + "14152": 3, + "14153": 3, + "14154": 3, + "14155": 2, + "14156": 2, + "14157": 1, + "14158": 1, + "14160": 1, + "14162": 3, + "14164": 2, + "14166": 1, + "14169": 2, + "14173": 3, + "14174": 1, + "14176": 2, + "14177": 3, + "14178": 4, + "14179": 1, + "14180": 1, + "14182": 1, + "14183": 1, + "14184": 2, + "14186": 2, + "14191": 1, + "14193": 1, + "14194": 1, + "14195": 1, + "14197": 1, + "14199": 1, + "14201": 1, + "14202": 1, + "14204": 1, + "14205": 1, + "14206": 1, + "14207": 1, + "14208": 1, + "14209": 1, + "14210": 1, + "14212": 2, + "14213": 2, + "14214": 2, + "14215": 1, + "14217": 1, + "14218": 2, + "14219": 2, + "14220": 1, + "14222": 1, + "14224": 1, + "14226": 1, + "14229": 1, + "14230": 2, + "14231": 1, + "14232": 1, + "14233": 2, + "14234": 3, + "14236": 1, + "14238": 1, + "14243": 1, + "14244": 1, + "14246": 2, + "14247": 3, + "14249": 1, + "14251": 3, + "14252": 1, + "14253": 3, + "14254": 2, + "14255": 1, + "14256": 2, + "14257": 3, + "14260": 2, + "14263": 2, + "14264": 3, + "14265": 4, + "14266": 3, + "14267": 4, + "14268": 2, + "14269": 1, + "14271": 2, + "14272": 1, + "14273": 5, + "14274": 3, + "14275": 4, + "14276": 1, + "14277": 3, + "14278": 3, + "14279": 4, + "14281": 4, + "14282": 3, + "14283": 5, + "14284": 2, + "14285": 4, + "14286": 1, + "14287": 1, + "14289": 5, + "14290": 1, + "14291": 3, + "14292": 3, + "14293": 7, + "14294": 4, + "14295": 5, + "14296": 9, + "14297": 3, + "14298": 6, + "14299": 5, + "14300": 2, + "14301": 10, + "14302": 1, + "14303": 3, + "14304": 4, + "14305": 3, + "14306": 5, + "14307": 2, + "14308": 2, + "14309": 4, + "14310": 1, + "14311": 4, + "14312": 2, + "14313": 5, + "14314": 4, + "14316": 3, + "14317": 6, + "14318": 3, + "14319": 5, + "14320": 4, + "14321": 2, + "14322": 2, + "14323": 3, + "14324": 4, + "14325": 1, + "14326": 1, + "14327": 2, + "14328": 3, + "14329": 4, + "14330": 3, + "14331": 2, + "14332": 2, + "14334": 1, + "14336": 1, + "14337": 1, + "14338": 2, + "14339": 5, + "14340": 1, + "14341": 2, + "14342": 5, + "14343": 3, + "14344": 2, + "14345": 1, + "14346": 2, + "14347": 2, + "14348": 2, + "14349": 1, + "14351": 3, + "14353": 1, + "14354": 1, + "14356": 1, + "14359": 2, + "14363": 2, + "14364": 2, + "14365": 1, + "14369": 2, + "14370": 3, + "14371": 1, + "14373": 3, + "14375": 1, + "14376": 2, + "14377": 1, + "14379": 2, + "14380": 2, + "14383": 2, + "14386": 1, + "14388": 1, + "14389": 2, + "14390": 2, + "14391": 1, + "14392": 1, + "14393": 2, + "14394": 3, + "14395": 1, + "14396": 2, + "14398": 1, + "14399": 1, + "14400": 3, + "14402": 5, + "14405": 4, + "14406": 2, + "14407": 1, + "14408": 3, + "14409": 2, + "14410": 3, + "14412": 2, + "14413": 5, + "14414": 2, + "14415": 1, + "14416": 1, + "14417": 5, + "14418": 3, + "14419": 4, + "14420": 1, + "14421": 1, + "14422": 1, + "14423": 3, + "14424": 2, + "14425": 2, + "14426": 1, + "14427": 2, + "14428": 1, + "14430": 1, + "14431": 2, + "14432": 2, + "14433": 3, + "14434": 2, + "14436": 4, + "14437": 2, + "14439": 2, + "14440": 3, + "14441": 1, + "14442": 3, + "14443": 1, + "14444": 1, + "14445": 2, + "14446": 6, + "14447": 3, + "14448": 2, + "14449": 4, + "14450": 1, + "14451": 7, + "14452": 3, + "14453": 4, + "14454": 5, + "14455": 1, + "14456": 1, + "14457": 3, + "14458": 2, + "14459": 3, + "14460": 3, + "14461": 1, + "14462": 2, + "14464": 3, + "14466": 3, + "14468": 1, + "14469": 1, + "14471": 1, + "14472": 2, + "14473": 3, + "14474": 3, + "14475": 2, + "14477": 5, + "14478": 1, + "14479": 1, + "14480": 2, + "14481": 3, + "14482": 1, + "14483": 1, + "14484": 1, + "14485": 1, + "14486": 1, + "14487": 1, + "14488": 1, + "14490": 1, + "14494": 1, + "14495": 3, + "14496": 2, + "14497": 1, + "14499": 2, + "14500": 1, + "14501": 2, + "14503": 1, + "14504": 3, + "14506": 2, + "14507": 2, + "14508": 1, + "14509": 1, + "14510": 2, + "14514": 1, + "14515": 2, + "14516": 1, + "14520": 1, + "14521": 1, + "14522": 1, + "14523": 2, + "14524": 2, + "14525": 1, + "14529": 1, + "14530": 1, + "14531": 2, + "14532": 1, + "14534": 1, + "14537": 1, + "14539": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333236266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823719c92434f1" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3719c924" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_8.html b/autobahn/client/tungstenite_case_12_2_8.html new file mode 100644 index 0000000..38e78b0 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_8.html @@ -0,0 +1,1701 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.8 : Pass - 3184 ms @ 2025-09-11T20:06:17.775Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=327&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: VWvT8nHStebWtl26q78pDw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: DLixe7BVrUtwTiqaHRGHGYufBVQ=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
724017240
14401114401
14480114480
21524121524
22873122873
22876122876
22885122885
22975122975
23046123046
23087123087
23102123102
23122123122
23162123162
23236123236
23238123238
23246123246
23259123259
23268123268
23275123275
23283123283
23291123291
23311123311
23354123354
23357123357
23375123375
23382123382
23403123403
23415123415
23454123454
23495123495
23537123537
23555123555
23572123572
23581123581
23614123614
23641123641
23661123661
23696123696
23740123740
23750123750
23778123778
23794123794
23846123846
23895123895
23925123925
23933123933
23955123955
23998123998
24074124074
24080124080
24099124099
24115124115
24168124168
24231124231
24261124261
24271124271
24292124292
24326124326
24388124388
24393124393
24438124438
24456124456
24476124476
24542124542
24565124565
24614124614
24624124624
24638124638
24697124697
24717124717
24758124758
24791124791
24809124809
24847124847
24883124883
24909124909
24912124912
24933124933
24952124952
24984124984
24993124993
25009125009
25027125027
25030125030
25046125046
25058125058
25085125085
25099125099
25132125132
25148125148
25185125185
25188125188
25206125206
25208125208
25244125244
25252125252
25299125299
25307125307
25332125332
25341125341
25349125349
25369125369
25381125381
25418125418
25448125448
25470250940
25499125499
25513125513
25525125525
25539125539
25564125564
25605125605
25616125616
25632125632
25646125646
25672125672
25673125673
25699125699
25707125707
25756125756
25766125766
25784125784
25793125793
25818125818
25834125834
25845125845
25850125850
25906125906
25925125925
25933125933
25956125956
25977125977
25980125980
25992125992
26000126000
26055126055
26068126068
26083126083
26108126108
26119126119
26130126130
26151126151
26156126156
26193126193
26203126203
26229126229
26243126243
26269126269
26271126271
26281126281
26298126298
26328126328
26346126346
26348126348
26361126361
26388252776
26408126408
26431126431
26459126459
26460126460
26476126476
26504126504
26522126522
26535126535
26550126550
26564126564
26565126565
26571126571
26608126608
26619126619
26620126620
26628126628
26654126654
26679126679
26699126699
26735126735
26748126748
26761126761
26831126831
26857126857
26899126899
26926126926
26944126944
26993126993
27016127016
27057127057
27074127074
27112127112
27132127132
27153127153
27202127202
27205127205
27265127265
27300127300
27314127314
27323127323
27334127334
27387127387
27429127429
27444127444
27466127466
27503127503
27508127508
27560127560
27564127564
27606127606
27624127624
27681127681
27684127684
27687127687
27740127740
27769127769
27794127794
27808127808
27845127845
27870127870
27880127880
27898127898
27911127911
27936127936
27968127968
27970127970
28002128002
28024128024
28031256062
28032128032
28036128036
28039256078
28040384120
28043256086
28044128044
28048384144
28050128050
28056128056
28057256114
28059384177
28060128060
28062128062
28063256126
28066128066
28070256140
28077256154
28080128080
28088128088
28089128089
28091384273
28092128092
28099256198
28104128104
28109128109
28112128112
28117256234
28119128119
28122128122
28125128125
28128256256
28129128129
28132128132
28134128134
28138128138
28139128139
28142128142
28148256296
28151128151
28153256306
28154128154
28158384474
28160256320
28161128161
28163256326
28164128164
28168256336
28169256338
28172128172
28174128174
28178128178
28180256360
28184256368
28185128185
28189128189
28190128190
28191128191
28192128192
28193128193
28194128194
28195128195
28196256392
28199128199
28200128200
28201256402
28202128202
28204128204
28206128206
28207128207
28209256418
28210384630
28211256422
28212128212
28213128213
28215256430
28216384648
28217128217
28218128218
28219128219
28221128221
28223128223
28224128224
28225256450
28227256454
28229128229
28231128231
28233128233
28234128234
28238128238
28241128241
28244128244
28245128245
28247128247
28248128248
28249256498
28250256500
28252128252
28255128255
28256128256
28257128257
28258256516
28259128259
28260256520
28261128261
28264128264
28265128265
28266128266
28267128267
28272384816
28273128273
28275256550
28276256552
28278128278
28279128279
28280128280
28282128282
28286256572
28289256578
282914113164
28295128295
28297256594
28301128301
28306128306
28307128307
28308128308
28310128310
28314128314
28315128315
28316256632
28317128317
28318256636
28319128319
28323128323
28326128326
28330128330
28332128332
28336128336
28337128337
28339128339
28340256680
28342128342
28346128346
28347128347
28348128348
28354256708
28362128362
28366256732
28369128369
28373128373
28376128376
28377385131
28378128378
28380385140
28382128382
28385128385
28387128387
28389128389
28390128390
28392256784
28395128395
28396128396
28397256794
28400128400
28403128403
28405128405
28408128408
28412128412
28416128416
28418256836
28421128421
28425128425
28426128426
28428128428
28429128429
28430128430
28436128436
28438128438
28439128439
28441128441
28442128442
28443128443
28446256892
28448256896
28454128454
28455256910
284584113832
28459128459
28465128465
28467256934
28469128469
28475128475
28476256952
28477128477
28478128478
28481256962
28484256968
28485256970
28486256972
284874113948
28488128488
28490128490
28493128493
28498128498
28500128500
28504128504
28505128505
28506128506
28507257014
28508128508
28510128510
28511128511
28512128512
28516128516
28517257034
28519128519
28521257042
28524257048
28525128525
28526385578
28527128527
28529128529
285304114120
28531257062
28532257064
28533385599
28534385602
28535257070
28536385608
28537128537
28538257076
28539257078
28540128540
28542257084
28543128543
28544128544
28545257090
28547257094
28549128549
28552128552
28553128553
28555128555
28556257112
28557385671
28558257116
28559128559
28560128560
28561128561
28562128562
28563128563
28564257128
28566128566
28568128568
28570257140
28571128571
285724114288
28573128573
285744114296
28575257150
28576128576
28577128577
28578385734
285795142895
28581385743
28582128582
28583257166
28584128584
28585128585
28586257172
28588385764
28589128589
28592257184
28594257188
285955142975
28598128598
28599257198
28600257200
28601257202
28602257204
286044114416
28605128605
28606257212
286074114428
28608385824
28609128609
28610128610
28611128611
28614257228
28615128615
28617257234
28618257236
28619128619
28620257240
28621385863
28623385869
28624128624
286255143125
28626128626
286274114508
286284114512
28629385887
28630128630
28631385893
28633128633
28635385905
28636385908
28637128637
28638257276
28639128639
28640385920
28641128641
28642385926
28643385929
28644128644
28645128645
28646257292
28647257294
286484114592
28649128649
28650128650
28653128653
28654257308
28656128656
28657257314
28660128660
28662128662
28664128664
28666128666
28667128667
28674128674
28675257350
28678128678
28681386043
28682128682
28685128685
28687257374
28691128691
28694257388
28697128697
28702128702
28703128703
28706128706
28709128709
28710128710
28711128711
28712128712
28716128716
28719128719
28722257444
28723128723
28724257448
28727257454
28728128728
287305143650
28731386193
28732257464
28733257466
28734128734
28735128735
28737386211
28738257476
28739128739
28741257482
28742257484
28744257488
28745257490
28750128750
28753257506
28754386262
28756386268
28757257514
28758386274
28759128759
28761257522
28762128762
28763128763
28765128765
28766128766
28767257534
28768128768
28769128769
28770257540
28771257542
28772128772
28773257546
28776128776
28779128779
28782128782
28784128784
28786128786
28788128788
28789257578
28790257580
28795386385
28796128796
28797128797
28798128798
28800128800
28801386403
28802257604
28806386418
28808257616
28809257618
28810257620
28811257622
28813128813
28814257628
28815128815
28817128817
28819257638
28821128821
28822128822
28823128823
28824128824
28826128826
28828257656
28829257658
28830257660
28832128832
28833257666
28834128834
28835257670
28836128836
28838257676
28841128841
28843257686
28844128844
28845128845
28847128847
28848386544
28851128851
28853128853
28854128854
28855257710
288575144285
28858257716
28859257718
28860257720
28861128861
28862128862
28863128863
28865128865
28866386598
28867128867
28868128868
28870386610
28871128871
28872257744
288734115492
28874386622
28876128876
288774115508
28878257756
288794115516
288807202160
28881128881
28882128882
28883128883
28884128884
28885386655
28886257772
28887386661
28888386664
28889257778
28891128891
28892128892
28894128894
28895386685
28896257792
28897128897
289006173400
28901128901
28902128902
28906128906
28907128907
28908386724
28915128915
28917257834
28919128919
Total100427878381
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
22869122869
22872122872
22881122881
22971122971
23042123042
23083123083
23098123098
23118123118
23158123158
23232123232
23234123234
23242123242
23255123255
23264123264
23271123271
23279123279
23287123287
23307123307
23350123350
23353123353
23371123371
23378123378
23399123399
23411123411
23450123450
23491123491
23533123533
23551123551
23568123568
23577123577
23610123610
23637123637
23657123657
23692123692
23736123736
23746123746
23774123774
23790123790
23842123842
23891123891
23921123921
23929123929
23951123951
23994123994
24070124070
24076124076
24095124095
24111124111
24164124164
24227124227
24257124257
24267124267
24288124288
24322124322
24384124384
24389124389
24434124434
24452124452
24472124472
24538124538
24561124561
24610124610
24620124620
24634124634
24693124693
24713124713
24754124754
24787124787
24805124805
24843124843
24879124879
24905124905
24908124908
24929124929
24948124948
24980124980
24989124989
25005125005
25023125023
25026125026
25042125042
25054125054
25081125081
25095125095
25128125128
25144125144
25181125181
25184125184
25202125202
25204125204
25240125240
25248125248
25295125295
25303125303
25328125328
25337125337
25345125345
25365125365
25377125377
25414125414
25444125444
25466250932
25495125495
25509125509
25521125521
25535125535
25560125560
25601125601
25612125612
25628125628
25642125642
25668125668
25669125669
25695125695
25703125703
25752125752
25762125762
25780125780
25789125789
25814125814
25830125830
25841125841
25846125846
25902125902
25921125921
25929125929
25952125952
25973125973
25976125976
25988125988
25996125996
26051126051
26064126064
26079126079
26104126104
26115126115
26126126126
26147126147
26152126152
26189126189
26199126199
26225126225
26239126239
26265126265
26267126267
26277126277
26294126294
26324126324
26342126342
26344126344
26357126357
26384252768
26404126404
26427126427
26455126455
26456126456
26472126472
26500126500
26518126518
26531126531
26546126546
26560126560
26561126561
26567126567
26604126604
26615126615
26616126616
26624126624
26650126650
26675126675
26695126695
26731126731
26744126744
26757126757
26827126827
26853126853
26895126895
26922126922
26940126940
26989126989
27012127012
27053127053
27070127070
27108127108
27128127128
27149127149
27198127198
27201127201
27261127261
27296127296
27310127310
27319127319
27330127330
27383127383
27425127425
27440127440
27462127462
27499127499
27504127504
27556127556
27560127560
27602127602
27620127620
27677127677
27680127680
27683127683
27736127736
27765127765
27790127790
27804127804
27841127841
27866127866
27876127876
27894127894
27907127907
27932127932
27964127964
27966127966
27998127998
28020128020
28027256054
28028128028
28032128032
28035256070
28036384108
28039256078
28040128040
28044384132
28046128046
28052128052
28053256106
28055384165
28056128056
28058128058
28059256118
28062128062
28066256132
28073256146
28076128076
28084128084
28085128085
28087384261
28088128088
28095256190
28100128100
28105128105
28108128108
28113256226
28115128115
28118128118
28121128121
28124256248
28125128125
28128128128
28130128130
28134128134
28135128135
28138128138
28144256288
28147128147
28149256298
28150128150
28154384462
28156256312
28157128157
28159256318
28160128160
28164256328
28165256330
28168128168
28170128170
28174128174
28176256352
28180256360
28181128181
28185128185
28186128186
28187128187
28188128188
28189128189
28190128190
28191128191
28192256384
28195128195
28196128196
28197256394
28198128198
28200128200
28202128202
28203128203
28205256410
28206384618
28207256414
28208128208
28209128209
28211256422
28212384636
28213128213
28214128214
28215128215
28217128217
28219128219
28220128220
28221256442
28223256446
28225128225
28227128227
28229128229
28230128230
28234128234
28237128237
28240128240
28241128241
28243128243
28244128244
28245256490
28246256492
28248128248
28251128251
28252128252
28253128253
28254256508
28255128255
28256256512
28257128257
28260128260
28261128261
28262128262
28263128263
28268384804
28269128269
28271256542
28272256544
28274128274
28275128275
28276128276
28278128278
28282256564
28285256570
282874113148
28291128291
28293256586
28297128297
28302128302
28303128303
28304128304
28306128306
28310128310
28311128311
28312256624
28313128313
28314256628
28315128315
28319128319
28322128322
28326128326
28328128328
28332128332
28333128333
28335128335
28336256672
28338128338
28342128342
28343128343
28344128344
28350256700
28358128358
28362256724
28365128365
28369128369
28372128372
28373385119
28374128374
28376385128
28378128378
28381128381
28383128383
28385128385
28386128386
28388256776
28391128391
28392128392
28393256786
28396128396
28399128399
28401128401
28404128404
28408128408
28412128412
28414256828
28417128417
28421128421
28422128422
28424128424
28425128425
28426128426
28432128432
28434128434
28435128435
28437128437
28438128438
28439128439
28442256884
28444256888
28450128450
28451256902
284544113816
28455128455
28461128461
28463256926
28465128465
28471128471
28472256944
28473128473
28474128474
28477256954
28480256960
28481256962
28482256964
284834113932
28484128484
28486128486
28489128489
28494128494
28496128496
28500128500
28501128501
28502128502
28503257006
28504128504
28506128506
28507128507
28508128508
28512128512
28513257026
28515128515
28517257034
28520257040
28521128521
28522385566
28523128523
28525128525
285264114104
28527257054
28528257056
28529385587
28530385590
28531257062
28532385596
28533128533
28534257068
28535257070
28536128536
28538257076
28539128539
28540128540
28541257082
28543257086
28545128545
28548128548
28549128549
28551128551
28552257104
28553385659
28554257108
28555128555
28556128556
28557128557
28558128558
28559128559
28560257120
28562128562
28564128564
28566257132
28567128567
285684114272
28569128569
285704114280
28571257142
28572128572
28573128573
28574385722
285755142875
28577385731
28578128578
28579257158
28580128580
28581128581
28582257164
28584385752
28585128585
28588257176
28590257180
285915142955
28594128594
28595257190
28596257192
28597257194
28598257196
286004114400
28601128601
28602257204
286034114412
28604385812
28605128605
28606128606
28607128607
28610257220
28611128611
28613257226
28614257228
28615128615
28616257232
28617385851
28619385857
28620128620
286215143105
28622128622
286234114492
286244114496
28625385875
28626128626
28627385881
28629128629
28631385893
28632385896
28633128633
28634257268
28635128635
28636385908
28637128637
28638385914
28639385917
28640128640
28641128641
28642257284
28643257286
286444114576
28645128645
28646128646
28649128649
28650257300
28652128652
28653257306
28656128656
28658128658
28660128660
28662128662
28663128663
28670128670
28671257342
28674128674
28677386031
28678128678
28681128681
28683257366
28687128687
28690257380
28693128693
28698128698
28699128699
28702128702
28705128705
28706128706
28707128707
28708128708
28712128712
28715128715
28718257436
28719128719
28720257440
28723257446
28724128724
287265143630
28727386181
28728257456
28729257458
28730128730
28731128731
28733386199
28734257468
28735128735
28737257474
28738257476
28740257480
28741257482
28746128746
28749257498
28750386250
28752386256
28753257506
28754386262
28755128755
28757257514
28758128758
28759128759
28760128760
28761128761
28762128762
28763257526
28764128764
28765128765
28766257532
28767257534
28768128768
28769257538
28772128772
28775128775
28778128778
28780128780
28782128782
28784128784
28785257570
28786257572
28791386373
28792128792
28793128793
28794128794
28796128796
28797386391
28798257596
28802386406
28804257608
28805257610
28806257612
28807257614
28809128809
28810257620
28811128811
28813128813
28815257630
28817128817
28818128818
28819128819
28820128820
28822128822
28824257648
28825257650
28826257652
28828128828
28829257658
28830128830
28831257662
28832128832
28834257668
28837128837
28839257678
28840128840
28841128841
28843128843
28844386532
28847128847
28849128849
28850128850
28851257702
288535144265
28854257708
28855257710
28856257712
28857128857
28858128858
28859128859
28861128861
28862386586
28863128863
28864128864
28866386598
28867128867
28868257736
288694115476
28870386610
28872128872
288734115492
28874257748
288754115500
288767202132
28877257754
28878128878
28879128879
28880128880
28881386643
28882257764
28883386649
28884386652
28885257770
28887128887
28888128888
28890128890
28891386673
28892257784
28893128893
288966173376
28897128897
28898128898
28902128902
28903128903
28904386712
28911128911
28913257826
28915128915
Total100227874372
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333237266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828148859e82a0
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3831343838353965
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_8.json b/autobahn/client/tungstenite_case_12_2_8.json new file mode 100644 index 0000000..d176d21 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_8.json @@ -0,0 +1,1548 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 327, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 3184, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=327&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: VWvT8nHStebWtl26q78pDw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: DLixe7BVrUtwTiqaHRGHGYufBVQ=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "7240": 1, + "14401": 1, + "14480": 1, + "21524": 1, + "22873": 1, + "22876": 1, + "22885": 1, + "22975": 1, + "23046": 1, + "23087": 1, + "23102": 1, + "23122": 1, + "23162": 1, + "23236": 1, + "23238": 1, + "23246": 1, + "23259": 1, + "23268": 1, + "23275": 1, + "23283": 1, + "23291": 1, + "23311": 1, + "23354": 1, + "23357": 1, + "23375": 1, + "23382": 1, + "23403": 1, + "23415": 1, + "23454": 1, + "23495": 1, + "23537": 1, + "23555": 1, + "23572": 1, + "23581": 1, + "23614": 1, + "23641": 1, + "23661": 1, + "23696": 1, + "23740": 1, + "23750": 1, + "23778": 1, + "23794": 1, + "23846": 1, + "23895": 1, + "23925": 1, + "23933": 1, + "23955": 1, + "23998": 1, + "24074": 1, + "24080": 1, + "24099": 1, + "24115": 1, + "24168": 1, + "24231": 1, + "24261": 1, + "24271": 1, + "24292": 1, + "24326": 1, + "24388": 1, + "24393": 1, + "24438": 1, + "24456": 1, + "24476": 1, + "24542": 1, + "24565": 1, + "24614": 1, + "24624": 1, + "24638": 1, + "24697": 1, + "24717": 1, + "24758": 1, + "24791": 1, + "24809": 1, + "24847": 1, + "24883": 1, + "24909": 1, + "24912": 1, + "24933": 1, + "24952": 1, + "24984": 1, + "24993": 1, + "25009": 1, + "25027": 1, + "25030": 1, + "25046": 1, + "25058": 1, + "25085": 1, + "25099": 1, + "25132": 1, + "25148": 1, + "25185": 1, + "25188": 1, + "25206": 1, + "25208": 1, + "25244": 1, + "25252": 1, + "25299": 1, + "25307": 1, + "25332": 1, + "25341": 1, + "25349": 1, + "25369": 1, + "25381": 1, + "25418": 1, + "25448": 1, + "25470": 2, + "25499": 1, + "25513": 1, + "25525": 1, + "25539": 1, + "25564": 1, + "25605": 1, + "25616": 1, + "25632": 1, + "25646": 1, + "25672": 1, + "25673": 1, + "25699": 1, + "25707": 1, + "25756": 1, + "25766": 1, + "25784": 1, + "25793": 1, + "25818": 1, + "25834": 1, + "25845": 1, + "25850": 1, + "25906": 1, + "25925": 1, + "25933": 1, + "25956": 1, + "25977": 1, + "25980": 1, + "25992": 1, + "26000": 1, + "26055": 1, + "26068": 1, + "26083": 1, + "26108": 1, + "26119": 1, + "26130": 1, + "26151": 1, + "26156": 1, + "26193": 1, + "26203": 1, + "26229": 1, + "26243": 1, + "26269": 1, + "26271": 1, + "26281": 1, + "26298": 1, + "26328": 1, + "26346": 1, + "26348": 1, + "26361": 1, + "26388": 2, + "26408": 1, + "26431": 1, + "26459": 1, + "26460": 1, + "26476": 1, + "26504": 1, + "26522": 1, + "26535": 1, + "26550": 1, + "26564": 1, + "26565": 1, + "26571": 1, + "26608": 1, + "26619": 1, + "26620": 1, + "26628": 1, + "26654": 1, + "26679": 1, + "26699": 1, + "26735": 1, + "26748": 1, + "26761": 1, + "26831": 1, + "26857": 1, + "26899": 1, + "26926": 1, + "26944": 1, + "26993": 1, + "27016": 1, + "27057": 1, + "27074": 1, + "27112": 1, + "27132": 1, + "27153": 1, + "27202": 1, + "27205": 1, + "27265": 1, + "27300": 1, + "27314": 1, + "27323": 1, + "27334": 1, + "27387": 1, + "27429": 1, + "27444": 1, + "27466": 1, + "27503": 1, + "27508": 1, + "27560": 1, + "27564": 1, + "27606": 1, + "27624": 1, + "27681": 1, + "27684": 1, + "27687": 1, + "27740": 1, + "27769": 1, + "27794": 1, + "27808": 1, + "27845": 1, + "27870": 1, + "27880": 1, + "27898": 1, + "27911": 1, + "27936": 1, + "27968": 1, + "27970": 1, + "28002": 1, + "28024": 1, + "28031": 2, + "28032": 1, + "28036": 1, + "28039": 2, + "28040": 3, + "28043": 2, + "28044": 1, + "28048": 3, + "28050": 1, + "28056": 1, + "28057": 2, + "28059": 3, + "28060": 1, + "28062": 1, + "28063": 2, + "28066": 1, + "28070": 2, + "28077": 2, + "28080": 1, + "28088": 1, + "28089": 1, + "28091": 3, + "28092": 1, + "28099": 2, + "28104": 1, + "28109": 1, + "28112": 1, + "28117": 2, + "28119": 1, + "28122": 1, + "28125": 1, + "28128": 2, + "28129": 1, + "28132": 1, + "28134": 1, + "28138": 1, + "28139": 1, + "28142": 1, + "28148": 2, + "28151": 1, + "28153": 2, + "28154": 1, + "28158": 3, + "28160": 2, + "28161": 1, + "28163": 2, + "28164": 1, + "28168": 2, + "28169": 2, + "28172": 1, + "28174": 1, + "28178": 1, + "28180": 2, + "28184": 2, + "28185": 1, + "28189": 1, + "28190": 1, + "28191": 1, + "28192": 1, + "28193": 1, + "28194": 1, + "28195": 1, + "28196": 2, + "28199": 1, + "28200": 1, + "28201": 2, + "28202": 1, + "28204": 1, + "28206": 1, + "28207": 1, + "28209": 2, + "28210": 3, + "28211": 2, + "28212": 1, + "28213": 1, + "28215": 2, + "28216": 3, + "28217": 1, + "28218": 1, + "28219": 1, + "28221": 1, + "28223": 1, + "28224": 1, + "28225": 2, + "28227": 2, + "28229": 1, + "28231": 1, + "28233": 1, + "28234": 1, + "28238": 1, + "28241": 1, + "28244": 1, + "28245": 1, + "28247": 1, + "28248": 1, + "28249": 2, + "28250": 2, + "28252": 1, + "28255": 1, + "28256": 1, + "28257": 1, + "28258": 2, + "28259": 1, + "28260": 2, + "28261": 1, + "28264": 1, + "28265": 1, + "28266": 1, + "28267": 1, + "28272": 3, + "28273": 1, + "28275": 2, + "28276": 2, + "28278": 1, + "28279": 1, + "28280": 1, + "28282": 1, + "28286": 2, + "28289": 2, + "28291": 4, + "28295": 1, + "28297": 2, + "28301": 1, + "28306": 1, + "28307": 1, + "28308": 1, + "28310": 1, + "28314": 1, + "28315": 1, + "28316": 2, + "28317": 1, + "28318": 2, + "28319": 1, + "28323": 1, + "28326": 1, + "28330": 1, + "28332": 1, + "28336": 1, + "28337": 1, + "28339": 1, + "28340": 2, + "28342": 1, + "28346": 1, + "28347": 1, + "28348": 1, + "28354": 2, + "28362": 1, + "28366": 2, + "28369": 1, + "28373": 1, + "28376": 1, + "28377": 3, + "28378": 1, + "28380": 3, + "28382": 1, + "28385": 1, + "28387": 1, + "28389": 1, + "28390": 1, + "28392": 2, + "28395": 1, + "28396": 1, + "28397": 2, + "28400": 1, + "28403": 1, + "28405": 1, + "28408": 1, + "28412": 1, + "28416": 1, + "28418": 2, + "28421": 1, + "28425": 1, + "28426": 1, + "28428": 1, + "28429": 1, + "28430": 1, + "28436": 1, + "28438": 1, + "28439": 1, + "28441": 1, + "28442": 1, + "28443": 1, + "28446": 2, + "28448": 2, + "28454": 1, + "28455": 2, + "28458": 4, + "28459": 1, + "28465": 1, + "28467": 2, + "28469": 1, + "28475": 1, + "28476": 2, + "28477": 1, + "28478": 1, + "28481": 2, + "28484": 2, + "28485": 2, + "28486": 2, + "28487": 4, + "28488": 1, + "28490": 1, + "28493": 1, + "28498": 1, + "28500": 1, + "28504": 1, + "28505": 1, + "28506": 1, + "28507": 2, + "28508": 1, + "28510": 1, + "28511": 1, + "28512": 1, + "28516": 1, + "28517": 2, + "28519": 1, + "28521": 2, + "28524": 2, + "28525": 1, + "28526": 3, + "28527": 1, + "28529": 1, + "28530": 4, + "28531": 2, + "28532": 2, + "28533": 3, + "28534": 3, + "28535": 2, + "28536": 3, + "28537": 1, + "28538": 2, + "28539": 2, + "28540": 1, + "28542": 2, + "28543": 1, + "28544": 1, + "28545": 2, + "28547": 2, + "28549": 1, + "28552": 1, + "28553": 1, + "28555": 1, + "28556": 2, + "28557": 3, + "28558": 2, + "28559": 1, + "28560": 1, + "28561": 1, + "28562": 1, + "28563": 1, + "28564": 2, + "28566": 1, + "28568": 1, + "28570": 2, + "28571": 1, + "28572": 4, + "28573": 1, + "28574": 4, + "28575": 2, + "28576": 1, + "28577": 1, + "28578": 3, + "28579": 5, + "28581": 3, + "28582": 1, + "28583": 2, + "28584": 1, + "28585": 1, + "28586": 2, + "28588": 3, + "28589": 1, + "28592": 2, + "28594": 2, + "28595": 5, + "28598": 1, + "28599": 2, + "28600": 2, + "28601": 2, + "28602": 2, + "28604": 4, + "28605": 1, + "28606": 2, + "28607": 4, + "28608": 3, + "28609": 1, + "28610": 1, + "28611": 1, + "28614": 2, + "28615": 1, + "28617": 2, + "28618": 2, + "28619": 1, + "28620": 2, + "28621": 3, + "28623": 3, + "28624": 1, + "28625": 5, + "28626": 1, + "28627": 4, + "28628": 4, + "28629": 3, + "28630": 1, + "28631": 3, + "28633": 1, + "28635": 3, + "28636": 3, + "28637": 1, + "28638": 2, + "28639": 1, + "28640": 3, + "28641": 1, + "28642": 3, + "28643": 3, + "28644": 1, + "28645": 1, + "28646": 2, + "28647": 2, + "28648": 4, + "28649": 1, + "28650": 1, + "28653": 1, + "28654": 2, + "28656": 1, + "28657": 2, + "28660": 1, + "28662": 1, + "28664": 1, + "28666": 1, + "28667": 1, + "28674": 1, + "28675": 2, + "28678": 1, + "28681": 3, + "28682": 1, + "28685": 1, + "28687": 2, + "28691": 1, + "28694": 2, + "28697": 1, + "28702": 1, + "28703": 1, + "28706": 1, + "28709": 1, + "28710": 1, + "28711": 1, + "28712": 1, + "28716": 1, + "28719": 1, + "28722": 2, + "28723": 1, + "28724": 2, + "28727": 2, + "28728": 1, + "28730": 5, + "28731": 3, + "28732": 2, + "28733": 2, + "28734": 1, + "28735": 1, + "28737": 3, + "28738": 2, + "28739": 1, + "28741": 2, + "28742": 2, + "28744": 2, + "28745": 2, + "28750": 1, + "28753": 2, + "28754": 3, + "28756": 3, + "28757": 2, + "28758": 3, + "28759": 1, + "28761": 2, + "28762": 1, + "28763": 1, + "28765": 1, + "28766": 1, + "28767": 2, + "28768": 1, + "28769": 1, + "28770": 2, + "28771": 2, + "28772": 1, + "28773": 2, + "28776": 1, + "28779": 1, + "28782": 1, + "28784": 1, + "28786": 1, + "28788": 1, + "28789": 2, + "28790": 2, + "28795": 3, + "28796": 1, + "28797": 1, + "28798": 1, + "28800": 1, + "28801": 3, + "28802": 2, + "28806": 3, + "28808": 2, + "28809": 2, + "28810": 2, + "28811": 2, + "28813": 1, + "28814": 2, + "28815": 1, + "28817": 1, + "28819": 2, + "28821": 1, + "28822": 1, + "28823": 1, + "28824": 1, + "28826": 1, + "28828": 2, + "28829": 2, + "28830": 2, + "28832": 1, + "28833": 2, + "28834": 1, + "28835": 2, + "28836": 1, + "28838": 2, + "28841": 1, + "28843": 2, + "28844": 1, + "28845": 1, + "28847": 1, + "28848": 3, + "28851": 1, + "28853": 1, + "28854": 1, + "28855": 2, + "28857": 5, + "28858": 2, + "28859": 2, + "28860": 2, + "28861": 1, + "28862": 1, + "28863": 1, + "28865": 1, + "28866": 3, + "28867": 1, + "28868": 1, + "28870": 3, + "28871": 1, + "28872": 2, + "28873": 4, + "28874": 3, + "28876": 1, + "28877": 4, + "28878": 2, + "28879": 4, + "28880": 7, + "28881": 1, + "28882": 1, + "28883": 1, + "28884": 1, + "28885": 3, + "28886": 2, + "28887": 3, + "28888": 3, + "28889": 2, + "28891": 1, + "28892": 1, + "28894": 1, + "28895": 3, + "28896": 2, + "28897": 1, + "28900": 6, + "28901": 1, + "28902": 1, + "28906": 1, + "28907": 1, + "28908": 3, + "28915": 1, + "28917": 2, + "28919": 1 + }, + "started": "2025-09-11T20:06:17.775Z", + "trafficStats": { + "incomingCompressionRatio": 0.8505284423828126, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 27870116, + "incomingOctetsWireLevel": 27878116, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0002870458092101231, + "outgoingCompressionRatio": 0.8505284423828126, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 27870116, + "outgoingOctetsWireLevel": 27874116, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.00014352290460506155, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "22869": 1, + "22872": 1, + "22881": 1, + "22971": 1, + "23042": 1, + "23083": 1, + "23098": 1, + "23118": 1, + "23158": 1, + "23232": 1, + "23234": 1, + "23242": 1, + "23255": 1, + "23264": 1, + "23271": 1, + "23279": 1, + "23287": 1, + "23307": 1, + "23350": 1, + "23353": 1, + "23371": 1, + "23378": 1, + "23399": 1, + "23411": 1, + "23450": 1, + "23491": 1, + "23533": 1, + "23551": 1, + "23568": 1, + "23577": 1, + "23610": 1, + "23637": 1, + "23657": 1, + "23692": 1, + "23736": 1, + "23746": 1, + "23774": 1, + "23790": 1, + "23842": 1, + "23891": 1, + "23921": 1, + "23929": 1, + "23951": 1, + "23994": 1, + "24070": 1, + "24076": 1, + "24095": 1, + "24111": 1, + "24164": 1, + "24227": 1, + "24257": 1, + "24267": 1, + "24288": 1, + "24322": 1, + "24384": 1, + "24389": 1, + "24434": 1, + "24452": 1, + "24472": 1, + "24538": 1, + "24561": 1, + "24610": 1, + "24620": 1, + "24634": 1, + "24693": 1, + "24713": 1, + "24754": 1, + "24787": 1, + "24805": 1, + "24843": 1, + "24879": 1, + "24905": 1, + "24908": 1, + "24929": 1, + "24948": 1, + "24980": 1, + "24989": 1, + "25005": 1, + "25023": 1, + "25026": 1, + "25042": 1, + "25054": 1, + "25081": 1, + "25095": 1, + "25128": 1, + "25144": 1, + "25181": 1, + "25184": 1, + "25202": 1, + "25204": 1, + "25240": 1, + "25248": 1, + "25295": 1, + "25303": 1, + "25328": 1, + "25337": 1, + "25345": 1, + "25365": 1, + "25377": 1, + "25414": 1, + "25444": 1, + "25466": 2, + "25495": 1, + "25509": 1, + "25521": 1, + "25535": 1, + "25560": 1, + "25601": 1, + "25612": 1, + "25628": 1, + "25642": 1, + "25668": 1, + "25669": 1, + "25695": 1, + "25703": 1, + "25752": 1, + "25762": 1, + "25780": 1, + "25789": 1, + "25814": 1, + "25830": 1, + "25841": 1, + "25846": 1, + "25902": 1, + "25921": 1, + "25929": 1, + "25952": 1, + "25973": 1, + "25976": 1, + "25988": 1, + "25996": 1, + "26051": 1, + "26064": 1, + "26079": 1, + "26104": 1, + "26115": 1, + "26126": 1, + "26147": 1, + "26152": 1, + "26189": 1, + "26199": 1, + "26225": 1, + "26239": 1, + "26265": 1, + "26267": 1, + "26277": 1, + "26294": 1, + "26324": 1, + "26342": 1, + "26344": 1, + "26357": 1, + "26384": 2, + "26404": 1, + "26427": 1, + "26455": 1, + "26456": 1, + "26472": 1, + "26500": 1, + "26518": 1, + "26531": 1, + "26546": 1, + "26560": 1, + "26561": 1, + "26567": 1, + "26604": 1, + "26615": 1, + "26616": 1, + "26624": 1, + "26650": 1, + "26675": 1, + "26695": 1, + "26731": 1, + "26744": 1, + "26757": 1, + "26827": 1, + "26853": 1, + "26895": 1, + "26922": 1, + "26940": 1, + "26989": 1, + "27012": 1, + "27053": 1, + "27070": 1, + "27108": 1, + "27128": 1, + "27149": 1, + "27198": 1, + "27201": 1, + "27261": 1, + "27296": 1, + "27310": 1, + "27319": 1, + "27330": 1, + "27383": 1, + "27425": 1, + "27440": 1, + "27462": 1, + "27499": 1, + "27504": 1, + "27556": 1, + "27560": 1, + "27602": 1, + "27620": 1, + "27677": 1, + "27680": 1, + "27683": 1, + "27736": 1, + "27765": 1, + "27790": 1, + "27804": 1, + "27841": 1, + "27866": 1, + "27876": 1, + "27894": 1, + "27907": 1, + "27932": 1, + "27964": 1, + "27966": 1, + "27998": 1, + "28020": 1, + "28027": 2, + "28028": 1, + "28032": 1, + "28035": 2, + "28036": 3, + "28039": 2, + "28040": 1, + "28044": 3, + "28046": 1, + "28052": 1, + "28053": 2, + "28055": 3, + "28056": 1, + "28058": 1, + "28059": 2, + "28062": 1, + "28066": 2, + "28073": 2, + "28076": 1, + "28084": 1, + "28085": 1, + "28087": 3, + "28088": 1, + "28095": 2, + "28100": 1, + "28105": 1, + "28108": 1, + "28113": 2, + "28115": 1, + "28118": 1, + "28121": 1, + "28124": 2, + "28125": 1, + "28128": 1, + "28130": 1, + "28134": 1, + "28135": 1, + "28138": 1, + "28144": 2, + "28147": 1, + "28149": 2, + "28150": 1, + "28154": 3, + "28156": 2, + "28157": 1, + "28159": 2, + "28160": 1, + "28164": 2, + "28165": 2, + "28168": 1, + "28170": 1, + "28174": 1, + "28176": 2, + "28180": 2, + "28181": 1, + "28185": 1, + "28186": 1, + "28187": 1, + "28188": 1, + "28189": 1, + "28190": 1, + "28191": 1, + "28192": 2, + "28195": 1, + "28196": 1, + "28197": 2, + "28198": 1, + "28200": 1, + "28202": 1, + "28203": 1, + "28205": 2, + "28206": 3, + "28207": 2, + "28208": 1, + "28209": 1, + "28211": 2, + "28212": 3, + "28213": 1, + "28214": 1, + "28215": 1, + "28217": 1, + "28219": 1, + "28220": 1, + "28221": 2, + "28223": 2, + "28225": 1, + "28227": 1, + "28229": 1, + "28230": 1, + "28234": 1, + "28237": 1, + "28240": 1, + "28241": 1, + "28243": 1, + "28244": 1, + "28245": 2, + "28246": 2, + "28248": 1, + "28251": 1, + "28252": 1, + "28253": 1, + "28254": 2, + "28255": 1, + "28256": 2, + "28257": 1, + "28260": 1, + "28261": 1, + "28262": 1, + "28263": 1, + "28268": 3, + "28269": 1, + "28271": 2, + "28272": 2, + "28274": 1, + "28275": 1, + "28276": 1, + "28278": 1, + "28282": 2, + "28285": 2, + "28287": 4, + "28291": 1, + "28293": 2, + "28297": 1, + "28302": 1, + "28303": 1, + "28304": 1, + "28306": 1, + "28310": 1, + "28311": 1, + "28312": 2, + "28313": 1, + "28314": 2, + "28315": 1, + "28319": 1, + "28322": 1, + "28326": 1, + "28328": 1, + "28332": 1, + "28333": 1, + "28335": 1, + "28336": 2, + "28338": 1, + "28342": 1, + "28343": 1, + "28344": 1, + "28350": 2, + "28358": 1, + "28362": 2, + "28365": 1, + "28369": 1, + "28372": 1, + "28373": 3, + "28374": 1, + "28376": 3, + "28378": 1, + "28381": 1, + "28383": 1, + "28385": 1, + "28386": 1, + "28388": 2, + "28391": 1, + "28392": 1, + "28393": 2, + "28396": 1, + "28399": 1, + "28401": 1, + "28404": 1, + "28408": 1, + "28412": 1, + "28414": 2, + "28417": 1, + "28421": 1, + "28422": 1, + "28424": 1, + "28425": 1, + "28426": 1, + "28432": 1, + "28434": 1, + "28435": 1, + "28437": 1, + "28438": 1, + "28439": 1, + "28442": 2, + "28444": 2, + "28450": 1, + "28451": 2, + "28454": 4, + "28455": 1, + "28461": 1, + "28463": 2, + "28465": 1, + "28471": 1, + "28472": 2, + "28473": 1, + "28474": 1, + "28477": 2, + "28480": 2, + "28481": 2, + "28482": 2, + "28483": 4, + "28484": 1, + "28486": 1, + "28489": 1, + "28494": 1, + "28496": 1, + "28500": 1, + "28501": 1, + "28502": 1, + "28503": 2, + "28504": 1, + "28506": 1, + "28507": 1, + "28508": 1, + "28512": 1, + "28513": 2, + "28515": 1, + "28517": 2, + "28520": 2, + "28521": 1, + "28522": 3, + "28523": 1, + "28525": 1, + "28526": 4, + "28527": 2, + "28528": 2, + "28529": 3, + "28530": 3, + "28531": 2, + "28532": 3, + "28533": 1, + "28534": 2, + "28535": 2, + "28536": 1, + "28538": 2, + "28539": 1, + "28540": 1, + "28541": 2, + "28543": 2, + "28545": 1, + "28548": 1, + "28549": 1, + "28551": 1, + "28552": 2, + "28553": 3, + "28554": 2, + "28555": 1, + "28556": 1, + "28557": 1, + "28558": 1, + "28559": 1, + "28560": 2, + "28562": 1, + "28564": 1, + "28566": 2, + "28567": 1, + "28568": 4, + "28569": 1, + "28570": 4, + "28571": 2, + "28572": 1, + "28573": 1, + "28574": 3, + "28575": 5, + "28577": 3, + "28578": 1, + "28579": 2, + "28580": 1, + "28581": 1, + "28582": 2, + "28584": 3, + "28585": 1, + "28588": 2, + "28590": 2, + "28591": 5, + "28594": 1, + "28595": 2, + "28596": 2, + "28597": 2, + "28598": 2, + "28600": 4, + "28601": 1, + "28602": 2, + "28603": 4, + "28604": 3, + "28605": 1, + "28606": 1, + "28607": 1, + "28610": 2, + "28611": 1, + "28613": 2, + "28614": 2, + "28615": 1, + "28616": 2, + "28617": 3, + "28619": 3, + "28620": 1, + "28621": 5, + "28622": 1, + "28623": 4, + "28624": 4, + "28625": 3, + "28626": 1, + "28627": 3, + "28629": 1, + "28631": 3, + "28632": 3, + "28633": 1, + "28634": 2, + "28635": 1, + "28636": 3, + "28637": 1, + "28638": 3, + "28639": 3, + "28640": 1, + "28641": 1, + "28642": 2, + "28643": 2, + "28644": 4, + "28645": 1, + "28646": 1, + "28649": 1, + "28650": 2, + "28652": 1, + "28653": 2, + "28656": 1, + "28658": 1, + "28660": 1, + "28662": 1, + "28663": 1, + "28670": 1, + "28671": 2, + "28674": 1, + "28677": 3, + "28678": 1, + "28681": 1, + "28683": 2, + "28687": 1, + "28690": 2, + "28693": 1, + "28698": 1, + "28699": 1, + "28702": 1, + "28705": 1, + "28706": 1, + "28707": 1, + "28708": 1, + "28712": 1, + "28715": 1, + "28718": 2, + "28719": 1, + "28720": 2, + "28723": 2, + "28724": 1, + "28726": 5, + "28727": 3, + "28728": 2, + "28729": 2, + "28730": 1, + "28731": 1, + "28733": 3, + "28734": 2, + "28735": 1, + "28737": 2, + "28738": 2, + "28740": 2, + "28741": 2, + "28746": 1, + "28749": 2, + "28750": 3, + "28752": 3, + "28753": 2, + "28754": 3, + "28755": 1, + "28757": 2, + "28758": 1, + "28759": 1, + "28760": 1, + "28761": 1, + "28762": 1, + "28763": 2, + "28764": 1, + "28765": 1, + "28766": 2, + "28767": 2, + "28768": 1, + "28769": 2, + "28772": 1, + "28775": 1, + "28778": 1, + "28780": 1, + "28782": 1, + "28784": 1, + "28785": 2, + "28786": 2, + "28791": 3, + "28792": 1, + "28793": 1, + "28794": 1, + "28796": 1, + "28797": 3, + "28798": 2, + "28802": 3, + "28804": 2, + "28805": 2, + "28806": 2, + "28807": 2, + "28809": 1, + "28810": 2, + "28811": 1, + "28813": 1, + "28815": 2, + "28817": 1, + "28818": 1, + "28819": 1, + "28820": 1, + "28822": 1, + "28824": 2, + "28825": 2, + "28826": 2, + "28828": 1, + "28829": 2, + "28830": 1, + "28831": 2, + "28832": 1, + "28834": 2, + "28837": 1, + "28839": 2, + "28840": 1, + "28841": 1, + "28843": 1, + "28844": 3, + "28847": 1, + "28849": 1, + "28850": 1, + "28851": 2, + "28853": 5, + "28854": 2, + "28855": 2, + "28856": 2, + "28857": 1, + "28858": 1, + "28859": 1, + "28861": 1, + "28862": 3, + "28863": 1, + "28864": 1, + "28866": 3, + "28867": 1, + "28868": 2, + "28869": 4, + "28870": 3, + "28872": 1, + "28873": 4, + "28874": 2, + "28875": 4, + "28876": 7, + "28877": 2, + "28878": 1, + "28879": 1, + "28880": 1, + "28881": 3, + "28882": 2, + "28883": 3, + "28884": 3, + "28885": 2, + "28887": 1, + "28888": 1, + "28890": 1, + "28891": 3, + "28892": 2, + "28893": 1, + "28896": 6, + "28897": 1, + "28898": 1, + "28902": 1, + "28903": 1, + "28904": 3, + "28911": 1, + "28913": 2, + "28915": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333237266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828148859e82a0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8148859e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_2_9.html b/autobahn/client/tungstenite_case_12_2_9.html new file mode 100644 index 0000000..4493cc7 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_9.html @@ -0,0 +1,1771 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.2.9 : Pass - 5788 ms @ 2025-09-11T20:06:20.962Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=328&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: nVUXiMpGxkZammIaJfPhIg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: RFRoV84nQV5CsXAJfeqgnq54CqA=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
14251114251
43440143440
51274151274
51298151298
51309151309
51342151342
51345151345
51357151357
51372151372
51379151379
51382151382
51385151385
51391151391
51398151398
51403151403
51421151421
51427151427
51445151445
51451151451
51465151465
51470151470
51474151474
51487151487
51494151494
51495151495
51497151497
51505151505
51507151507
51523151523
51528151528
51529151529
515352103070
51541151541
51548151548
51549151549
51551151551
51554151554
51555151555
51564151564
51571151571
515732103146
51574151574
51585151585
515902103180
51592151592
51598151598
51599151599
516002103200
516032103206
51605151605
516063154818
51607151607
51608151608
51614151614
51615151615
51616151616
51617151617
51618151618
516222103244
51630151630
516313154893
516422103284
51665151665
516662103332
51682151682
51686151686
51688151688
51690151690
51692151692
51701151701
51720151720
517222103444
51733151733
517352103470
51743151743
51744151744
51762151762
51766151766
51767151767
51770151770
51773151773
51776151776
51777151777
517792103558
51784151784
51789151789
51790151790
517932103586
51799151799
51802151802
51806151806
51811151811
51813151813
51819151819
51820151820
51822151822
51826151826
51827151827
518282103656
51829151829
51830151830
518312103662
51832151832
51833151833
51835151835
51838151838
51840151840
51843151843
518452103690
51846151846
51847151847
51852151852
518533155559
51854151854
51856151856
51857151857
51858151858
518593155577
51890151890
51896151896
51906151906
51909151909
51942151942
51967151967
51983151983
52019152019
52056152056
52070152070
52113152113
52145152145
52158152158
52176152176
52199152199
52235152235
52284152284
52307152307
52330152330
52344152344
52365152365
52419152419
52445152445
52476152476
52495152495
52524152524
52605152605
52627152627
52687152687
52704152704
52706152706
52789152789
52800152800
52857152857
52893152893
52907152907
52970152970
52995152995
53055153055
53057153057
53098153098
53130153130
53152153152
53205153205
53222153222
53273153273
53299153299
53331153331
53354153354
53368153368
53370153370
53420153420
53435153435
53438153438
53478153478
53487153487
53504153504
53516153516
53547153547
53556153556
53598153598
53608153608
53622153622
53640153640
53651153651
53671153671
53690153690
53693153693
53729153729
53753153753
53780153780
53795153795
53799153799
53809153809
53852153852
53868153868
53876153876
53907153907
53921153921
53951153951
53957153957
53966153966
53995153995
54028154028
54040154040
54047154047
54093154093
54109154109
54119154119
54134154134
54148154148
54181154181
54194154194
54220154220
54277154277
54283154283
54296154296
54315154315
54330154330
54349154349
54351154351
54380154380
54428154428
54435154435
54446154446
54475154475
54483154483
54507154507
54516154516
54541154541
54576154576
54589154589
54617154617
54623154623
54643154643
54657154657
54683154683
54709154709
54713154713
54732154732
54749154749
54760154760
54817154817
54822154822
54851154851
54857154857
54881154881
54893154893
54901154901
54919154919
54944154944
54984154984
54994154994
55002155002
550352110070
55052155052
55058155058
55080155080
55103155103
55104155104
55140155140
55142155142
55177155177
55180155180
55200155200
55212155212
55213155213
55226155226
55250155250
55262155262
55271155271
55296155296
55305155305
55324155324
55336155336
55350155350
55354155354
55372155372
55404155404
55426155426
55432155432
55441155441
554722110944
55484155484
55498155498
55500155500
55527155527
55538155538
55540155540
55555155555
55561155561
55565155565
55587155587
55595155595
55608155608
55664155664
55667155667
55670155670
55707155707
55720155720
55757155757
55784155784
55823155823
55831155831
55859155859
55870155870
55901155901
55922155922
55928155928
55971155971
56023156023
56034156034
56046156046
56075156075
56096156096
56131156131
56132156132
56154156154
56177156177
562152112430
56241156241
56242156242
56273156273
56299156299
56311156311
56354156354
56389156389
56390156390
56415156415
56418156418
56432156432
56442156442
56458156458
56472156472
56489156489
56519156519
56525156525
56529156529
56537156537
56555156555
56565156565
56572156572
56573156573
56578156578
56586156586
56587156587
565942113188
56600156600
56611156611
56613156613
56615156615
56616156616
566182113236
56624156624
56626156626
566273169881
56628156628
566302113260
56631156631
56633156633
56635156635
56636156636
566382113276
566392113278
56641156641
566423169926
56643156643
56644156644
56646156646
566474226588
566492113298
566502113300
56653156653
56654156654
56656156656
56661156661
566622113324
56663156663
56664156664
566702113340
56678156678
56679156679
56683156683
56684156684
566852113370
56687156687
566902113380
566962113392
56698156698
56699156699
56700156700
56701156701
567022113404
56704156704
567084226832
567114226844
56712156712
567162113432
567192113438
567202113440
567212113442
56722156722
567252113450
56726156726
56727156727
56729156729
567352113470
56736156736
567382113476
56744156744
56745156745
56748156748
56751156751
567522113504
56757156757
56758156758
567602113520
56763156763
56765156765
567673170301
567702113540
56772156772
56774156774
56776156776
56778156778
56779156779
56782156782
56791156791
567943170382
56795156795
567982113596
56803156803
56804156804
56805156805
56810156810
568113170433
56812156812
56821156821
568222113644
56823156823
56825156825
56827156827
56829156829
56832156832
56834156834
56837156837
568382113676
568392113678
56848156848
568502113700
568533170559
56854156854
56855156855
56857156857
56858156858
56859156859
56860156860
56865156865
56866156866
568672113734
56869156869
56871156871
56889156889
56894156894
56916156916
56918156918
56935156935
56941156941
56968156968
56974156974
569762113952
56978156978
56997156997
57004157004
57006157006
57008157008
57021157021
57026157026
57029157029
57036157036
57038157038
570532114106
57068157068
57081157081
57083157083
57085157085
57088157088
57089157089
57090157090
57092157092
57093157093
570952114190
57096157096
570972114194
570992114198
57100157100
57102157102
571044228416
571052114210
57106157106
571072114214
571082114216
571092114218
571113171333
57112157112
571132114226
571142114228
571164228464
571173171351
571185285590
571193171357
571202114240
571212114242
57122157122
571233171369
571242114248
57125157125
571263171378
571275285635
571286342768
571294228516
57130157130
571316342786
571324228528
571333171399
571342114268
571354228540
571363171408
571373171411
571383171414
57139157139
571403171420
571412114282
571425285710
571433171429
571443171432
571454228580
571463171438
571472114294
571483171444
571495285745
571504228600
571513171453
571522114304
57153157153
571543171462
57155157155
571562114312
57157157157
571582114316
571596342954
571612114322
571623171486
57163157163
571662114332
571672114334
571682114336
571694228676
57171157171
571722114344
571732114346
571743171522
57175157175
57177157177
571782114356
57185157185
57187157187
571902114380
57194157194
57196157196
57201157201
57205157205
57209157209
572142114428
57215157215
572192114438
572202114440
57223157223
57227157227
57229157229
57230157230
57231157231
57234157234
572362114472
57238157238
57239157239
57240157240
57242157242
57243157243
57246157246
57250157250
57254157254
57255157255
57257157257
572592114518
57264157264
572652114530
572663171798
57271157271
57272157272
57273157273
572802114560
57284157284
57285157285
57288157288
57289157289
57290157290
57291157291
57295157295
57298157298
57300157300
57301157301
57304157304
57306157306
573072114614
57308157308
573092114618
573122114624
57313157313
57318157318
573222114644
573232114646
57324157324
57325157325
57326157326
57327157327
573284229312
573292114658
57333157333
57335157335
57336157336
573372114674
573382114676
573402114680
573422114684
573452114690
57347157347
57348157348
573492114698
57350157350
57353157353
573544229416
573572114714
57360157360
57363157363
573662114732
57367157367
57368157368
57370157370
57372157372
57374157374
573753172125
573763172128
57378157378
573792114758
57380157380
57381157381
57383157383
573842114768
57388157388
57390157390
57391157391
57396157396
57397157397
573982114796
57400157400
574012114802
57402157402
57403157403
57405157405
57406157406
574072114814
57408157408
574102114820
57412157412
57415157415
57416157416
57418157418
57419157419
57421157421
57423157423
57424157424
57426157426
57427157427
574282114856
574293172287
57430157430
574313172293
574322114864
574332114866
574342114868
574362114872
574382114876
574403172320
574412114882
57442157442
57444157444
57446157446
574472114894
574492114898
57453157453
57455157455
57458157458
57461157461
574642114928
574673172401
57468157468
57471157471
574732114946
574762114952
57477157477
57482157482
57483157483
57488157488
574912114982
57492157492
57493157493
57495157495
574962114992
574973172491
574982114996
57499157499
57500157500
57503157503
575042115008
57505157505
575062115012
57507157507
57508157508
57509157509
575112115022
57513157513
57517157517
57518157518
575202115040
57522157522
57523157523
575272115054
57529157529
Total100355760530
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
51270151270
51294151294
51305151305
51338151338
51341151341
51353151353
51368151368
51375151375
51378151378
51381151381
51387151387
51394151394
51399151399
51417151417
51423151423
51441151441
51447151447
51461151461
51466151466
51470151470
51483151483
51490151490
51491151491
51493151493
51501151501
51503151503
51519151519
51524151524
51525151525
515312103062
51537151537
51544151544
51545151545
51547151547
51550151550
51551151551
51560151560
51567151567
515692103138
51570151570
51581151581
515862103172
51588151588
51594151594
51595151595
515962103192
515992103198
51601151601
516023154806
51603151603
51604151604
51610151610
51611151611
51612151612
51613151613
51614151614
516182103236
51626151626
516273154881
516382103276
51661151661
516622103324
51678151678
51682151682
51684151684
51686151686
51688151688
51697151697
51716151716
517182103436
51729151729
517312103462
51739151739
51740151740
51758151758
51762151762
51763151763
51766151766
51769151769
51772151772
51773151773
517752103550
51780151780
51785151785
51786151786
517892103578
51795151795
51798151798
51802151802
51807151807
51809151809
51815151815
51816151816
51818151818
51822151822
51823151823
518242103648
51825151825
51826151826
518272103654
51828151828
51829151829
51831151831
51834151834
51836151836
51839151839
518412103682
51842151842
51843151843
51848151848
518493155547
51850151850
51852151852
51853151853
51854151854
518553155565
51886151886
51892151892
51902151902
51905151905
51938151938
51963151963
51979151979
52015152015
52052152052
52066152066
52109152109
52141152141
52154152154
52172152172
52195152195
52231152231
52280152280
52303152303
52326152326
52340152340
52361152361
52415152415
52441152441
52472152472
52491152491
52520152520
52601152601
52623152623
52683152683
52700152700
52702152702
52785152785
52796152796
52853152853
52889152889
52903152903
52966152966
52991152991
53051153051
53053153053
53094153094
53126153126
53148153148
53201153201
53218153218
53269153269
53295153295
53327153327
53350153350
53364153364
53366153366
53416153416
53431153431
53434153434
53474153474
53483153483
53500153500
53512153512
53543153543
53552153552
53594153594
53604153604
53618153618
53636153636
53647153647
53667153667
53686153686
53689153689
53725153725
53749153749
53776153776
53791153791
53795153795
53805153805
53848153848
53864153864
53872153872
53903153903
53917153917
53947153947
53953153953
53962153962
53991153991
54024154024
54036154036
54043154043
54089154089
54105154105
54115154115
54130154130
54144154144
54177154177
54190154190
54216154216
54273154273
54279154279
54292154292
54311154311
54326154326
54345154345
54347154347
54376154376
54424154424
54431154431
54442154442
54471154471
54479154479
54503154503
54512154512
54537154537
54572154572
54585154585
54613154613
54619154619
54639154639
54653154653
54679154679
54705154705
54709154709
54728154728
54745154745
54756154756
54813154813
54818154818
54847154847
54853154853
54877154877
54889154889
54897154897
54915154915
54940154940
54980154980
54990154990
54998154998
550312110062
55048155048
55054155054
55076155076
55099155099
55100155100
55136155136
55138155138
55173155173
55176155176
55196155196
55208155208
55209155209
55222155222
55246155246
55258155258
55267155267
55292155292
55301155301
55320155320
55332155332
55346155346
55350155350
55368155368
55400155400
55422155422
55428155428
55437155437
554682110936
55480155480
55494155494
55496155496
55523155523
55534155534
55536155536
55551155551
55557155557
55561155561
55583155583
55591155591
55604155604
55660155660
55663155663
55666155666
55703155703
55716155716
55753155753
55780155780
55819155819
55827155827
55855155855
55866155866
55897155897
55918155918
55924155924
55967155967
56019156019
56030156030
56042156042
56071156071
56092156092
56127156127
56128156128
56150156150
56173156173
562112112422
56237156237
56238156238
56269156269
56295156295
56307156307
56350156350
56385156385
56386156386
56411156411
56414156414
56428156428
56438156438
56454156454
56468156468
56485156485
56515156515
56521156521
56525156525
56533156533
56551156551
56561156561
56568156568
56569156569
56574156574
56582156582
56583156583
565902113180
56596156596
56607156607
56609156609
56611156611
56612156612
566142113228
56620156620
56622156622
566233169869
56624156624
566262113252
56627156627
56629156629
56631156631
56632156632
566342113268
566352113270
56637156637
566383169914
56639156639
56640156640
56642156642
566434226572
566452113290
566462113292
56649156649
56650156650
56652156652
56657156657
566582113316
56659156659
56660156660
566662113332
56674156674
56675156675
56679156679
56680156680
566812113362
56683156683
566862113372
566922113384
56694156694
56695156695
56696156696
56697156697
566982113396
56700156700
567044226816
567074226828
56708156708
567122113424
567152113430
567162113432
567172113434
56718156718
567212113442
56722156722
56723156723
56725156725
567312113462
56732156732
567342113468
56740156740
56741156741
56744156744
56747156747
567482113496
56753156753
56754156754
567562113512
56759156759
56761156761
567633170289
567662113532
56768156768
56770156770
56772156772
56774156774
56775156775
56778156778
56787156787
567903170370
56791156791
567942113588
56799156799
56800156800
56801156801
56806156806
568073170421
56808156808
56817156817
568182113636
56819156819
56821156821
56823156823
56825156825
56828156828
56830156830
56833156833
568342113668
568352113670
56844156844
568462113692
568493170547
56850156850
56851156851
56853156853
56854156854
56855156855
56856156856
56861156861
56862156862
568632113726
56865156865
56867156867
56885156885
56890156890
56912156912
56914156914
56931156931
56937156937
56964156964
56970156970
569722113944
56974156974
56993156993
57000157000
57002157002
57004157004
57017157017
57022157022
57025157025
57032157032
57034157034
570492114098
57064157064
57077157077
57079157079
57081157081
57084157084
57085157085
57086157086
57088157088
57089157089
570912114182
57092157092
570932114186
570952114190
57096157096
57098157098
571004228400
571012114202
57102157102
571032114206
571042114208
571052114210
571073171321
57108157108
571092114218
571102114220
571124228448
571133171339
571145285570
571153171345
571162114232
571172114234
57118157118
571193171357
571202114240
57121157121
571223171366
571235285615
571246342744
571254228500
57126157126
571276342762
571284228512
571293171387
571302114260
571314228524
571323171396
571333171399
571343171402
57135157135
571363171408
571372114274
571385285690
571393171417
571403171420
571414228564
571423171426
571432114286
571443171432
571455285725
571464228584
571473171441
571482114296
57149157149
571503171450
57151157151
571522114304
57153157153
571542114308
571556342930
571572114314
571583171474
57159157159
571622114324
571632114326
571642114328
571654228660
57167157167
571682114336
571692114338
571703171510
57171157171
57173157173
571742114348
57181157181
57183157183
571862114372
57190157190
57192157192
57197157197
57201157201
57205157205
572102114420
57211157211
572152114430
572162114432
57219157219
57223157223
57225157225
57226157226
57227157227
57230157230
572322114464
57234157234
57235157235
57236157236
57238157238
57239157239
57242157242
57246157246
57250157250
57251157251
57253157253
572552114510
57260157260
572612114522
572623171786
57267157267
57268157268
57269157269
572762114552
57280157280
57281157281
57284157284
57285157285
57286157286
57287157287
57291157291
57294157294
57296157296
57297157297
57300157300
57302157302
573032114606
57304157304
573052114610
573082114616
57309157309
57314157314
573182114636
573192114638
57320157320
57321157321
57322157322
57323157323
573244229296
573252114650
57329157329
57331157331
57332157332
573332114666
573342114668
573362114672
573382114676
573412114682
57343157343
57344157344
573452114690
57346157346
57349157349
573504229400
573532114706
57356157356
57359157359
573622114724
57363157363
57364157364
57366157366
57368157368
57370157370
573713172113
573723172116
57374157374
573752114750
57376157376
57377157377
57379157379
573802114760
57384157384
57386157386
57387157387
57392157392
57393157393
573942114788
57396157396
573972114794
57398157398
57399157399
57401157401
57402157402
574032114806
57404157404
574062114812
57408157408
57411157411
57412157412
57414157414
57415157415
57417157417
57419157419
57420157420
57422157422
57423157423
574242114848
574253172275
57426157426
574273172281
574282114856
574292114858
574302114860
574322114864
574342114868
574363172308
574372114874
57438157438
57440157440
57442157442
574432114886
574452114890
57449157449
57451157451
57454157454
57457157457
574602114920
574633172389
57464157464
57467157467
574692114938
574722114944
57473157473
57478157478
57479157479
57484157484
574872114974
57488157488
57489157489
57491157491
574922114984
574933172479
574942114988
57495157495
57496157496
57499157499
575002115000
57501157501
575022115004
57503157503
57504157504
57505157505
575072115014
57509157509
57513157513
57514157514
575162115032
57518157518
57519157519
575232115046
57525157525
57687157687
Total100255756521
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333238266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882c9763431ca9e
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6339373633343331
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_2_9.json b/autobahn/client/tungstenite_case_12_2_9.json new file mode 100644 index 0000000..8308175 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_2_9.json @@ -0,0 +1,1618 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 328, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 5788, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=328&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: nVUXiMpGxkZammIaJfPhIg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: RFRoV84nQV5CsXAJfeqgnq54CqA=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.2.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14251": 1, + "43440": 1, + "51274": 1, + "51298": 1, + "51309": 1, + "51342": 1, + "51345": 1, + "51357": 1, + "51372": 1, + "51379": 1, + "51382": 1, + "51385": 1, + "51391": 1, + "51398": 1, + "51403": 1, + "51421": 1, + "51427": 1, + "51445": 1, + "51451": 1, + "51465": 1, + "51470": 1, + "51474": 1, + "51487": 1, + "51494": 1, + "51495": 1, + "51497": 1, + "51505": 1, + "51507": 1, + "51523": 1, + "51528": 1, + "51529": 1, + "51535": 2, + "51541": 1, + "51548": 1, + "51549": 1, + "51551": 1, + "51554": 1, + "51555": 1, + "51564": 1, + "51571": 1, + "51573": 2, + "51574": 1, + "51585": 1, + "51590": 2, + "51592": 1, + "51598": 1, + "51599": 1, + "51600": 2, + "51603": 2, + "51605": 1, + "51606": 3, + "51607": 1, + "51608": 1, + "51614": 1, + "51615": 1, + "51616": 1, + "51617": 1, + "51618": 1, + "51622": 2, + "51630": 1, + "51631": 3, + "51642": 2, + "51665": 1, + "51666": 2, + "51682": 1, + "51686": 1, + "51688": 1, + "51690": 1, + "51692": 1, + "51701": 1, + "51720": 1, + "51722": 2, + "51733": 1, + "51735": 2, + "51743": 1, + "51744": 1, + "51762": 1, + "51766": 1, + "51767": 1, + "51770": 1, + "51773": 1, + "51776": 1, + "51777": 1, + "51779": 2, + "51784": 1, + "51789": 1, + "51790": 1, + "51793": 2, + "51799": 1, + "51802": 1, + "51806": 1, + "51811": 1, + "51813": 1, + "51819": 1, + "51820": 1, + "51822": 1, + "51826": 1, + "51827": 1, + "51828": 2, + "51829": 1, + "51830": 1, + "51831": 2, + "51832": 1, + "51833": 1, + "51835": 1, + "51838": 1, + "51840": 1, + "51843": 1, + "51845": 2, + "51846": 1, + "51847": 1, + "51852": 1, + "51853": 3, + "51854": 1, + "51856": 1, + "51857": 1, + "51858": 1, + "51859": 3, + "51890": 1, + "51896": 1, + "51906": 1, + "51909": 1, + "51942": 1, + "51967": 1, + "51983": 1, + "52019": 1, + "52056": 1, + "52070": 1, + "52113": 1, + "52145": 1, + "52158": 1, + "52176": 1, + "52199": 1, + "52235": 1, + "52284": 1, + "52307": 1, + "52330": 1, + "52344": 1, + "52365": 1, + "52419": 1, + "52445": 1, + "52476": 1, + "52495": 1, + "52524": 1, + "52605": 1, + "52627": 1, + "52687": 1, + "52704": 1, + "52706": 1, + "52789": 1, + "52800": 1, + "52857": 1, + "52893": 1, + "52907": 1, + "52970": 1, + "52995": 1, + "53055": 1, + "53057": 1, + "53098": 1, + "53130": 1, + "53152": 1, + "53205": 1, + "53222": 1, + "53273": 1, + "53299": 1, + "53331": 1, + "53354": 1, + "53368": 1, + "53370": 1, + "53420": 1, + "53435": 1, + "53438": 1, + "53478": 1, + "53487": 1, + "53504": 1, + "53516": 1, + "53547": 1, + "53556": 1, + "53598": 1, + "53608": 1, + "53622": 1, + "53640": 1, + "53651": 1, + "53671": 1, + "53690": 1, + "53693": 1, + "53729": 1, + "53753": 1, + "53780": 1, + "53795": 1, + "53799": 1, + "53809": 1, + "53852": 1, + "53868": 1, + "53876": 1, + "53907": 1, + "53921": 1, + "53951": 1, + "53957": 1, + "53966": 1, + "53995": 1, + "54028": 1, + "54040": 1, + "54047": 1, + "54093": 1, + "54109": 1, + "54119": 1, + "54134": 1, + "54148": 1, + "54181": 1, + "54194": 1, + "54220": 1, + "54277": 1, + "54283": 1, + "54296": 1, + "54315": 1, + "54330": 1, + "54349": 1, + "54351": 1, + "54380": 1, + "54428": 1, + "54435": 1, + "54446": 1, + "54475": 1, + "54483": 1, + "54507": 1, + "54516": 1, + "54541": 1, + "54576": 1, + "54589": 1, + "54617": 1, + "54623": 1, + "54643": 1, + "54657": 1, + "54683": 1, + "54709": 1, + "54713": 1, + "54732": 1, + "54749": 1, + "54760": 1, + "54817": 1, + "54822": 1, + "54851": 1, + "54857": 1, + "54881": 1, + "54893": 1, + "54901": 1, + "54919": 1, + "54944": 1, + "54984": 1, + "54994": 1, + "55002": 1, + "55035": 2, + "55052": 1, + "55058": 1, + "55080": 1, + "55103": 1, + "55104": 1, + "55140": 1, + "55142": 1, + "55177": 1, + "55180": 1, + "55200": 1, + "55212": 1, + "55213": 1, + "55226": 1, + "55250": 1, + "55262": 1, + "55271": 1, + "55296": 1, + "55305": 1, + "55324": 1, + "55336": 1, + "55350": 1, + "55354": 1, + "55372": 1, + "55404": 1, + "55426": 1, + "55432": 1, + "55441": 1, + "55472": 2, + "55484": 1, + "55498": 1, + "55500": 1, + "55527": 1, + "55538": 1, + "55540": 1, + "55555": 1, + "55561": 1, + "55565": 1, + "55587": 1, + "55595": 1, + "55608": 1, + "55664": 1, + "55667": 1, + "55670": 1, + "55707": 1, + "55720": 1, + "55757": 1, + "55784": 1, + "55823": 1, + "55831": 1, + "55859": 1, + "55870": 1, + "55901": 1, + "55922": 1, + "55928": 1, + "55971": 1, + "56023": 1, + "56034": 1, + "56046": 1, + "56075": 1, + "56096": 1, + "56131": 1, + "56132": 1, + "56154": 1, + "56177": 1, + "56215": 2, + "56241": 1, + "56242": 1, + "56273": 1, + "56299": 1, + "56311": 1, + "56354": 1, + "56389": 1, + "56390": 1, + "56415": 1, + "56418": 1, + "56432": 1, + "56442": 1, + "56458": 1, + "56472": 1, + "56489": 1, + "56519": 1, + "56525": 1, + "56529": 1, + "56537": 1, + "56555": 1, + "56565": 1, + "56572": 1, + "56573": 1, + "56578": 1, + "56586": 1, + "56587": 1, + "56594": 2, + "56600": 1, + "56611": 1, + "56613": 1, + "56615": 1, + "56616": 1, + "56618": 2, + "56624": 1, + "56626": 1, + "56627": 3, + "56628": 1, + "56630": 2, + "56631": 1, + "56633": 1, + "56635": 1, + "56636": 1, + "56638": 2, + "56639": 2, + "56641": 1, + "56642": 3, + "56643": 1, + "56644": 1, + "56646": 1, + "56647": 4, + "56649": 2, + "56650": 2, + "56653": 1, + "56654": 1, + "56656": 1, + "56661": 1, + "56662": 2, + "56663": 1, + "56664": 1, + "56670": 2, + "56678": 1, + "56679": 1, + "56683": 1, + "56684": 1, + "56685": 2, + "56687": 1, + "56690": 2, + "56696": 2, + "56698": 1, + "56699": 1, + "56700": 1, + "56701": 1, + "56702": 2, + "56704": 1, + "56708": 4, + "56711": 4, + "56712": 1, + "56716": 2, + "56719": 2, + "56720": 2, + "56721": 2, + "56722": 1, + "56725": 2, + "56726": 1, + "56727": 1, + "56729": 1, + "56735": 2, + "56736": 1, + "56738": 2, + "56744": 1, + "56745": 1, + "56748": 1, + "56751": 1, + "56752": 2, + "56757": 1, + "56758": 1, + "56760": 2, + "56763": 1, + "56765": 1, + "56767": 3, + "56770": 2, + "56772": 1, + "56774": 1, + "56776": 1, + "56778": 1, + "56779": 1, + "56782": 1, + "56791": 1, + "56794": 3, + "56795": 1, + "56798": 2, + "56803": 1, + "56804": 1, + "56805": 1, + "56810": 1, + "56811": 3, + "56812": 1, + "56821": 1, + "56822": 2, + "56823": 1, + "56825": 1, + "56827": 1, + "56829": 1, + "56832": 1, + "56834": 1, + "56837": 1, + "56838": 2, + "56839": 2, + "56848": 1, + "56850": 2, + "56853": 3, + "56854": 1, + "56855": 1, + "56857": 1, + "56858": 1, + "56859": 1, + "56860": 1, + "56865": 1, + "56866": 1, + "56867": 2, + "56869": 1, + "56871": 1, + "56889": 1, + "56894": 1, + "56916": 1, + "56918": 1, + "56935": 1, + "56941": 1, + "56968": 1, + "56974": 1, + "56976": 2, + "56978": 1, + "56997": 1, + "57004": 1, + "57006": 1, + "57008": 1, + "57021": 1, + "57026": 1, + "57029": 1, + "57036": 1, + "57038": 1, + "57053": 2, + "57068": 1, + "57081": 1, + "57083": 1, + "57085": 1, + "57088": 1, + "57089": 1, + "57090": 1, + "57092": 1, + "57093": 1, + "57095": 2, + "57096": 1, + "57097": 2, + "57099": 2, + "57100": 1, + "57102": 1, + "57104": 4, + "57105": 2, + "57106": 1, + "57107": 2, + "57108": 2, + "57109": 2, + "57111": 3, + "57112": 1, + "57113": 2, + "57114": 2, + "57116": 4, + "57117": 3, + "57118": 5, + "57119": 3, + "57120": 2, + "57121": 2, + "57122": 1, + "57123": 3, + "57124": 2, + "57125": 1, + "57126": 3, + "57127": 5, + "57128": 6, + "57129": 4, + "57130": 1, + "57131": 6, + "57132": 4, + "57133": 3, + "57134": 2, + "57135": 4, + "57136": 3, + "57137": 3, + "57138": 3, + "57139": 1, + "57140": 3, + "57141": 2, + "57142": 5, + "57143": 3, + "57144": 3, + "57145": 4, + "57146": 3, + "57147": 2, + "57148": 3, + "57149": 5, + "57150": 4, + "57151": 3, + "57152": 2, + "57153": 1, + "57154": 3, + "57155": 1, + "57156": 2, + "57157": 1, + "57158": 2, + "57159": 6, + "57161": 2, + "57162": 3, + "57163": 1, + "57166": 2, + "57167": 2, + "57168": 2, + "57169": 4, + "57171": 1, + "57172": 2, + "57173": 2, + "57174": 3, + "57175": 1, + "57177": 1, + "57178": 2, + "57185": 1, + "57187": 1, + "57190": 2, + "57194": 1, + "57196": 1, + "57201": 1, + "57205": 1, + "57209": 1, + "57214": 2, + "57215": 1, + "57219": 2, + "57220": 2, + "57223": 1, + "57227": 1, + "57229": 1, + "57230": 1, + "57231": 1, + "57234": 1, + "57236": 2, + "57238": 1, + "57239": 1, + "57240": 1, + "57242": 1, + "57243": 1, + "57246": 1, + "57250": 1, + "57254": 1, + "57255": 1, + "57257": 1, + "57259": 2, + "57264": 1, + "57265": 2, + "57266": 3, + "57271": 1, + "57272": 1, + "57273": 1, + "57280": 2, + "57284": 1, + "57285": 1, + "57288": 1, + "57289": 1, + "57290": 1, + "57291": 1, + "57295": 1, + "57298": 1, + "57300": 1, + "57301": 1, + "57304": 1, + "57306": 1, + "57307": 2, + "57308": 1, + "57309": 2, + "57312": 2, + "57313": 1, + "57318": 1, + "57322": 2, + "57323": 2, + "57324": 1, + "57325": 1, + "57326": 1, + "57327": 1, + "57328": 4, + "57329": 2, + "57333": 1, + "57335": 1, + "57336": 1, + "57337": 2, + "57338": 2, + "57340": 2, + "57342": 2, + "57345": 2, + "57347": 1, + "57348": 1, + "57349": 2, + "57350": 1, + "57353": 1, + "57354": 4, + "57357": 2, + "57360": 1, + "57363": 1, + "57366": 2, + "57367": 1, + "57368": 1, + "57370": 1, + "57372": 1, + "57374": 1, + "57375": 3, + "57376": 3, + "57378": 1, + "57379": 2, + "57380": 1, + "57381": 1, + "57383": 1, + "57384": 2, + "57388": 1, + "57390": 1, + "57391": 1, + "57396": 1, + "57397": 1, + "57398": 2, + "57400": 1, + "57401": 2, + "57402": 1, + "57403": 1, + "57405": 1, + "57406": 1, + "57407": 2, + "57408": 1, + "57410": 2, + "57412": 1, + "57415": 1, + "57416": 1, + "57418": 1, + "57419": 1, + "57421": 1, + "57423": 1, + "57424": 1, + "57426": 1, + "57427": 1, + "57428": 2, + "57429": 3, + "57430": 1, + "57431": 3, + "57432": 2, + "57433": 2, + "57434": 2, + "57436": 2, + "57438": 2, + "57440": 3, + "57441": 2, + "57442": 1, + "57444": 1, + "57446": 1, + "57447": 2, + "57449": 2, + "57453": 1, + "57455": 1, + "57458": 1, + "57461": 1, + "57464": 2, + "57467": 3, + "57468": 1, + "57471": 1, + "57473": 2, + "57476": 2, + "57477": 1, + "57482": 1, + "57483": 1, + "57488": 1, + "57491": 2, + "57492": 1, + "57493": 1, + "57495": 1, + "57496": 2, + "57497": 3, + "57498": 2, + "57499": 1, + "57500": 1, + "57503": 1, + "57504": 2, + "57505": 1, + "57506": 2, + "57507": 1, + "57508": 1, + "57509": 1, + "57511": 2, + "57513": 1, + "57517": 1, + "57518": 1, + "57520": 2, + "57522": 1, + "57523": 1, + "57527": 2, + "57529": 1 + }, + "started": "2025-09-11T20:06:20.962Z", + "trafficStats": { + "incomingCompressionRatio": 0.8507120513916016, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 55752265, + "incomingOctetsWireLevel": 55760265, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00014349192808579166, + "outgoingCompressionRatio": 0.8507120513916016, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 55752265, + "outgoingOctetsWireLevel": 55756265, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 7.174596404289583e-05, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "51270": 1, + "51294": 1, + "51305": 1, + "51338": 1, + "51341": 1, + "51353": 1, + "51368": 1, + "51375": 1, + "51378": 1, + "51381": 1, + "51387": 1, + "51394": 1, + "51399": 1, + "51417": 1, + "51423": 1, + "51441": 1, + "51447": 1, + "51461": 1, + "51466": 1, + "51470": 1, + "51483": 1, + "51490": 1, + "51491": 1, + "51493": 1, + "51501": 1, + "51503": 1, + "51519": 1, + "51524": 1, + "51525": 1, + "51531": 2, + "51537": 1, + "51544": 1, + "51545": 1, + "51547": 1, + "51550": 1, + "51551": 1, + "51560": 1, + "51567": 1, + "51569": 2, + "51570": 1, + "51581": 1, + "51586": 2, + "51588": 1, + "51594": 1, + "51595": 1, + "51596": 2, + "51599": 2, + "51601": 1, + "51602": 3, + "51603": 1, + "51604": 1, + "51610": 1, + "51611": 1, + "51612": 1, + "51613": 1, + "51614": 1, + "51618": 2, + "51626": 1, + "51627": 3, + "51638": 2, + "51661": 1, + "51662": 2, + "51678": 1, + "51682": 1, + "51684": 1, + "51686": 1, + "51688": 1, + "51697": 1, + "51716": 1, + "51718": 2, + "51729": 1, + "51731": 2, + "51739": 1, + "51740": 1, + "51758": 1, + "51762": 1, + "51763": 1, + "51766": 1, + "51769": 1, + "51772": 1, + "51773": 1, + "51775": 2, + "51780": 1, + "51785": 1, + "51786": 1, + "51789": 2, + "51795": 1, + "51798": 1, + "51802": 1, + "51807": 1, + "51809": 1, + "51815": 1, + "51816": 1, + "51818": 1, + "51822": 1, + "51823": 1, + "51824": 2, + "51825": 1, + "51826": 1, + "51827": 2, + "51828": 1, + "51829": 1, + "51831": 1, + "51834": 1, + "51836": 1, + "51839": 1, + "51841": 2, + "51842": 1, + "51843": 1, + "51848": 1, + "51849": 3, + "51850": 1, + "51852": 1, + "51853": 1, + "51854": 1, + "51855": 3, + "51886": 1, + "51892": 1, + "51902": 1, + "51905": 1, + "51938": 1, + "51963": 1, + "51979": 1, + "52015": 1, + "52052": 1, + "52066": 1, + "52109": 1, + "52141": 1, + "52154": 1, + "52172": 1, + "52195": 1, + "52231": 1, + "52280": 1, + "52303": 1, + "52326": 1, + "52340": 1, + "52361": 1, + "52415": 1, + "52441": 1, + "52472": 1, + "52491": 1, + "52520": 1, + "52601": 1, + "52623": 1, + "52683": 1, + "52700": 1, + "52702": 1, + "52785": 1, + "52796": 1, + "52853": 1, + "52889": 1, + "52903": 1, + "52966": 1, + "52991": 1, + "53051": 1, + "53053": 1, + "53094": 1, + "53126": 1, + "53148": 1, + "53201": 1, + "53218": 1, + "53269": 1, + "53295": 1, + "53327": 1, + "53350": 1, + "53364": 1, + "53366": 1, + "53416": 1, + "53431": 1, + "53434": 1, + "53474": 1, + "53483": 1, + "53500": 1, + "53512": 1, + "53543": 1, + "53552": 1, + "53594": 1, + "53604": 1, + "53618": 1, + "53636": 1, + "53647": 1, + "53667": 1, + "53686": 1, + "53689": 1, + "53725": 1, + "53749": 1, + "53776": 1, + "53791": 1, + "53795": 1, + "53805": 1, + "53848": 1, + "53864": 1, + "53872": 1, + "53903": 1, + "53917": 1, + "53947": 1, + "53953": 1, + "53962": 1, + "53991": 1, + "54024": 1, + "54036": 1, + "54043": 1, + "54089": 1, + "54105": 1, + "54115": 1, + "54130": 1, + "54144": 1, + "54177": 1, + "54190": 1, + "54216": 1, + "54273": 1, + "54279": 1, + "54292": 1, + "54311": 1, + "54326": 1, + "54345": 1, + "54347": 1, + "54376": 1, + "54424": 1, + "54431": 1, + "54442": 1, + "54471": 1, + "54479": 1, + "54503": 1, + "54512": 1, + "54537": 1, + "54572": 1, + "54585": 1, + "54613": 1, + "54619": 1, + "54639": 1, + "54653": 1, + "54679": 1, + "54705": 1, + "54709": 1, + "54728": 1, + "54745": 1, + "54756": 1, + "54813": 1, + "54818": 1, + "54847": 1, + "54853": 1, + "54877": 1, + "54889": 1, + "54897": 1, + "54915": 1, + "54940": 1, + "54980": 1, + "54990": 1, + "54998": 1, + "55031": 2, + "55048": 1, + "55054": 1, + "55076": 1, + "55099": 1, + "55100": 1, + "55136": 1, + "55138": 1, + "55173": 1, + "55176": 1, + "55196": 1, + "55208": 1, + "55209": 1, + "55222": 1, + "55246": 1, + "55258": 1, + "55267": 1, + "55292": 1, + "55301": 1, + "55320": 1, + "55332": 1, + "55346": 1, + "55350": 1, + "55368": 1, + "55400": 1, + "55422": 1, + "55428": 1, + "55437": 1, + "55468": 2, + "55480": 1, + "55494": 1, + "55496": 1, + "55523": 1, + "55534": 1, + "55536": 1, + "55551": 1, + "55557": 1, + "55561": 1, + "55583": 1, + "55591": 1, + "55604": 1, + "55660": 1, + "55663": 1, + "55666": 1, + "55703": 1, + "55716": 1, + "55753": 1, + "55780": 1, + "55819": 1, + "55827": 1, + "55855": 1, + "55866": 1, + "55897": 1, + "55918": 1, + "55924": 1, + "55967": 1, + "56019": 1, + "56030": 1, + "56042": 1, + "56071": 1, + "56092": 1, + "56127": 1, + "56128": 1, + "56150": 1, + "56173": 1, + "56211": 2, + "56237": 1, + "56238": 1, + "56269": 1, + "56295": 1, + "56307": 1, + "56350": 1, + "56385": 1, + "56386": 1, + "56411": 1, + "56414": 1, + "56428": 1, + "56438": 1, + "56454": 1, + "56468": 1, + "56485": 1, + "56515": 1, + "56521": 1, + "56525": 1, + "56533": 1, + "56551": 1, + "56561": 1, + "56568": 1, + "56569": 1, + "56574": 1, + "56582": 1, + "56583": 1, + "56590": 2, + "56596": 1, + "56607": 1, + "56609": 1, + "56611": 1, + "56612": 1, + "56614": 2, + "56620": 1, + "56622": 1, + "56623": 3, + "56624": 1, + "56626": 2, + "56627": 1, + "56629": 1, + "56631": 1, + "56632": 1, + "56634": 2, + "56635": 2, + "56637": 1, + "56638": 3, + "56639": 1, + "56640": 1, + "56642": 1, + "56643": 4, + "56645": 2, + "56646": 2, + "56649": 1, + "56650": 1, + "56652": 1, + "56657": 1, + "56658": 2, + "56659": 1, + "56660": 1, + "56666": 2, + "56674": 1, + "56675": 1, + "56679": 1, + "56680": 1, + "56681": 2, + "56683": 1, + "56686": 2, + "56692": 2, + "56694": 1, + "56695": 1, + "56696": 1, + "56697": 1, + "56698": 2, + "56700": 1, + "56704": 4, + "56707": 4, + "56708": 1, + "56712": 2, + "56715": 2, + "56716": 2, + "56717": 2, + "56718": 1, + "56721": 2, + "56722": 1, + "56723": 1, + "56725": 1, + "56731": 2, + "56732": 1, + "56734": 2, + "56740": 1, + "56741": 1, + "56744": 1, + "56747": 1, + "56748": 2, + "56753": 1, + "56754": 1, + "56756": 2, + "56759": 1, + "56761": 1, + "56763": 3, + "56766": 2, + "56768": 1, + "56770": 1, + "56772": 1, + "56774": 1, + "56775": 1, + "56778": 1, + "56787": 1, + "56790": 3, + "56791": 1, + "56794": 2, + "56799": 1, + "56800": 1, + "56801": 1, + "56806": 1, + "56807": 3, + "56808": 1, + "56817": 1, + "56818": 2, + "56819": 1, + "56821": 1, + "56823": 1, + "56825": 1, + "56828": 1, + "56830": 1, + "56833": 1, + "56834": 2, + "56835": 2, + "56844": 1, + "56846": 2, + "56849": 3, + "56850": 1, + "56851": 1, + "56853": 1, + "56854": 1, + "56855": 1, + "56856": 1, + "56861": 1, + "56862": 1, + "56863": 2, + "56865": 1, + "56867": 1, + "56885": 1, + "56890": 1, + "56912": 1, + "56914": 1, + "56931": 1, + "56937": 1, + "56964": 1, + "56970": 1, + "56972": 2, + "56974": 1, + "56993": 1, + "57000": 1, + "57002": 1, + "57004": 1, + "57017": 1, + "57022": 1, + "57025": 1, + "57032": 1, + "57034": 1, + "57049": 2, + "57064": 1, + "57077": 1, + "57079": 1, + "57081": 1, + "57084": 1, + "57085": 1, + "57086": 1, + "57088": 1, + "57089": 1, + "57091": 2, + "57092": 1, + "57093": 2, + "57095": 2, + "57096": 1, + "57098": 1, + "57100": 4, + "57101": 2, + "57102": 1, + "57103": 2, + "57104": 2, + "57105": 2, + "57107": 3, + "57108": 1, + "57109": 2, + "57110": 2, + "57112": 4, + "57113": 3, + "57114": 5, + "57115": 3, + "57116": 2, + "57117": 2, + "57118": 1, + "57119": 3, + "57120": 2, + "57121": 1, + "57122": 3, + "57123": 5, + "57124": 6, + "57125": 4, + "57126": 1, + "57127": 6, + "57128": 4, + "57129": 3, + "57130": 2, + "57131": 4, + "57132": 3, + "57133": 3, + "57134": 3, + "57135": 1, + "57136": 3, + "57137": 2, + "57138": 5, + "57139": 3, + "57140": 3, + "57141": 4, + "57142": 3, + "57143": 2, + "57144": 3, + "57145": 5, + "57146": 4, + "57147": 3, + "57148": 2, + "57149": 1, + "57150": 3, + "57151": 1, + "57152": 2, + "57153": 1, + "57154": 2, + "57155": 6, + "57157": 2, + "57158": 3, + "57159": 1, + "57162": 2, + "57163": 2, + "57164": 2, + "57165": 4, + "57167": 1, + "57168": 2, + "57169": 2, + "57170": 3, + "57171": 1, + "57173": 1, + "57174": 2, + "57181": 1, + "57183": 1, + "57186": 2, + "57190": 1, + "57192": 1, + "57197": 1, + "57201": 1, + "57205": 1, + "57210": 2, + "57211": 1, + "57215": 2, + "57216": 2, + "57219": 1, + "57223": 1, + "57225": 1, + "57226": 1, + "57227": 1, + "57230": 1, + "57232": 2, + "57234": 1, + "57235": 1, + "57236": 1, + "57238": 1, + "57239": 1, + "57242": 1, + "57246": 1, + "57250": 1, + "57251": 1, + "57253": 1, + "57255": 2, + "57260": 1, + "57261": 2, + "57262": 3, + "57267": 1, + "57268": 1, + "57269": 1, + "57276": 2, + "57280": 1, + "57281": 1, + "57284": 1, + "57285": 1, + "57286": 1, + "57287": 1, + "57291": 1, + "57294": 1, + "57296": 1, + "57297": 1, + "57300": 1, + "57302": 1, + "57303": 2, + "57304": 1, + "57305": 2, + "57308": 2, + "57309": 1, + "57314": 1, + "57318": 2, + "57319": 2, + "57320": 1, + "57321": 1, + "57322": 1, + "57323": 1, + "57324": 4, + "57325": 2, + "57329": 1, + "57331": 1, + "57332": 1, + "57333": 2, + "57334": 2, + "57336": 2, + "57338": 2, + "57341": 2, + "57343": 1, + "57344": 1, + "57345": 2, + "57346": 1, + "57349": 1, + "57350": 4, + "57353": 2, + "57356": 1, + "57359": 1, + "57362": 2, + "57363": 1, + "57364": 1, + "57366": 1, + "57368": 1, + "57370": 1, + "57371": 3, + "57372": 3, + "57374": 1, + "57375": 2, + "57376": 1, + "57377": 1, + "57379": 1, + "57380": 2, + "57384": 1, + "57386": 1, + "57387": 1, + "57392": 1, + "57393": 1, + "57394": 2, + "57396": 1, + "57397": 2, + "57398": 1, + "57399": 1, + "57401": 1, + "57402": 1, + "57403": 2, + "57404": 1, + "57406": 2, + "57408": 1, + "57411": 1, + "57412": 1, + "57414": 1, + "57415": 1, + "57417": 1, + "57419": 1, + "57420": 1, + "57422": 1, + "57423": 1, + "57424": 2, + "57425": 3, + "57426": 1, + "57427": 3, + "57428": 2, + "57429": 2, + "57430": 2, + "57432": 2, + "57434": 2, + "57436": 3, + "57437": 2, + "57438": 1, + "57440": 1, + "57442": 1, + "57443": 2, + "57445": 2, + "57449": 1, + "57451": 1, + "57454": 1, + "57457": 1, + "57460": 2, + "57463": 3, + "57464": 1, + "57467": 1, + "57469": 2, + "57472": 2, + "57473": 1, + "57478": 1, + "57479": 1, + "57484": 1, + "57487": 2, + "57488": 1, + "57489": 1, + "57491": 1, + "57492": 2, + "57493": 3, + "57494": 2, + "57495": 1, + "57496": 1, + "57499": 1, + "57500": 2, + "57501": 1, + "57502": 2, + "57503": 1, + "57504": 1, + "57505": 1, + "57507": 2, + "57509": 1, + "57513": 1, + "57514": 1, + "57516": 2, + "57518": 1, + "57519": 1, + "57523": 2, + "57525": 1, + "57687": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333238266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c9763431ca9e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c9763431" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_1.html b/autobahn/client/tungstenite_case_12_3_1.html new file mode 100644 index 0000000..e3c79c1 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_1.html @@ -0,0 +1,328 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.1 : Pass - 68 ms @ 2025-09-11T20:07:36.794Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=338&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: XTpr8LMwvB/1SBIET2kzHQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: kvnYgTMTFViQ2/xr2novbMMHzlo=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
10110
1114154
12784
1323299
1433462
15751125
161442304
171742958
181783204
191562964
201042080
2143903
2226572
238184
2414336
2571257
Total100217904
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
616
71498
8756
923207
1033330
1175825
121441728
131742262
141782492
151562340
161041664
1743731
1826468
198152
2014280
2521252
Total100213895
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333338266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888245ce0e364626
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3435636530653336
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_1.json b/autobahn/client/tungstenite_case_12_3_1.json new file mode 100644 index 0000000..eb5a505 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_1.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 338, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 68, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=338&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: XTpr8LMwvB/1SBIET2kzHQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: kvnYgTMTFViQ2/xr2novbMMHzlo=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "11": 14, + "12": 7, + "13": 23, + "14": 33, + "15": 75, + "16": 144, + "17": 174, + "18": 178, + "19": 156, + "20": 104, + "21": 43, + "22": 26, + "23": 8, + "24": 14, + "257": 1 + }, + "started": "2025-09-11T20:07:36.794Z", + "trafficStats": { + "incomingCompressionRatio": 0.7274375, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 11639, + "incomingOctetsWireLevel": 17639, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.5155082051722657, + "outgoingCompressionRatio": 0.7274375, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 11639, + "outgoingOctetsWireLevel": 13639, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.17183606839075521, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "7": 14, + "8": 7, + "9": 23, + "10": 33, + "11": 75, + "12": 144, + "13": 174, + "14": 178, + "15": 156, + "16": 104, + "17": 43, + "18": 26, + "19": 8, + "20": 14, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333338266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888245ce0e364626" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "45ce0e36" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_10.html b/autobahn/client/tungstenite_case_12_3_10.html new file mode 100644 index 0000000..00c1787 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_10.html @@ -0,0 +1,1731 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.10 : Pass - 16905 ms @ 2025-09-11T20:07:55.893Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=347&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: HOYzvMAVv2B8gi2/UEt7SA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PeC5ffGDs0c3ccEAE3kMS3BkE/Q=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
828618286
43440143440
49537149537
49555149555
49558149558
49560149560
49563149563
49575149575
49606149606
49613149613
49628149628
49645149645
49663149663
49666149666
49669149669
49670149670
49671149671
49676149676
496853149055
49687149687
49689149689
49690149690
49697299394
49698299396
49699149699
49701149701
49702149702
49703299406
49705149705
49708299416
49711149711
49712149712
497143149142
49715149715
49716149716
49717149717
49719149719
497203149160
49722299444
49723149723
49725149725
49726299452
49727299454
49729149729
49730299460
49731149731
49732149732
49733299466
49734149734
497353149205
49736299472
497383149214
497393149217
49740149740
49741149741
49742149742
497433149229
49744299488
497463149238
49748149748
49749299498
49750299500
497515248755
49753299506
49756149756
497574199028
49758149758
49759299518
49760299520
49761149761
497623149286
49763299526
497643149292
49765299530
49766299532
49768299536
497693149307
49771149771
49772299544
49773149773
497754199100
49776149776
49777149777
49779299558
49780149780
49781149781
497833149349
497844199136
49785149785
49786149786
49787149787
49788299576
497893149367
49790299580
49791299582
49793299586
49794299588
49795299590
497963149388
49797149797
497984199192
49799149799
49800149800
49801299602
498024199208
49803299606
498043149412
49807299614
498083149424
49811149811
49812299624
49813149813
49814149814
49815149815
49816149816
49817299634
49818149818
49820299640
49821149821
49823149823
49825149825
49826149826
49828149828
49829149829
498303149490
49832149832
49833149833
49834149834
49836149836
49838149838
49841149841
49848299696
49849149849
49852149852
49855149855
49857149857
498583149574
49861149861
49863149863
49864149864
49865149865
49866149866
49867149867
49868149868
49878149878
49879149879
49881149881
49886149886
49890149890
49895149895
49896149896
49902149902
49912149912
49913299826
49914149914
49918149918
49919149919
49921149921
49922149922
49923149923
49929149929
49934299868
49941149941
49945299890
49946149946
49949149949
49950149950
49955149955
49958149958
49959149959
49961149961
49962299924
49963149963
49964149964
49965149965
49966149966
49967149967
499684199872
49970149970
49972299944
49974299948
499763149928
49977299954
49978149978
49979299958
49980149980
499813149943
499823149946
49983299966
49984299968
49986149986
49988149988
49989299978
49991299982
49992299984
49994299988
49995149995
49996149996
49997149997
49998299996
49999149999
50001150001
500062100012
500092100018
50010150010
50014150014
50015150015
50017150017
50018150018
50033150033
50037150037
50045150045
50046150046
50050150050
50051150051
50052150052
50062150062
50070150070
50078150078
50080150080
50081150081
500822100164
50095150095
50103150103
50109150109
50114150114
50120150120
50123150123
50128150128
50129150129
50134150134
50136150136
501372100274
50139150139
50151150151
50153150153
50154150154
501562100312
50158150158
50159150159
50161150161
501622100324
501632100326
50169150169
501753150525
50177150177
50181150181
50185150185
50188150188
50190150190
50194150194
50196150196
50198150198
50199150199
50202150202
50203150203
50205150205
50207150207
50208150208
50209150209
50210150210
50212150212
50213150213
50215150215
50216150216
50217150217
502192100438
502202100440
50221150221
50222150222
50226150226
502382100476
50241150241
50243150243
502452100490
502462100492
50247150247
50249150249
50250150250
50257150257
50263150263
50264150264
50270150270
50272150272
50281150281
50296150296
50304150304
50329150329
50331150331
503342100668
50336150336
50339150339
503422100684
503442100688
50345150345
50346150346
50347150347
50348150348
503502100700
50352150352
50361150361
50363150363
50377150377
50382150382
503942100788
50399150399
50405150405
50406150406
50410150410
50412150412
50413150413
50414150414
50417150417
504222100844
50423150423
50427150427
50431150431
50432150432
50437150437
50443150443
50456150456
50460150460
50465150465
50474150474
50475150475
50476150476
50477150477
50479150479
50482150482
50483150483
50486150486
50495150495
50497150497
50499150499
50502150502
50506150506
50511150511
50515150515
50523150523
50524150524
505312101062
50538150538
505472101094
50553150553
50554150554
505682101136
50570150570
50572150572
50583150583
50584150584
50589150589
50593150593
50612150612
50615150615
50617150617
50618150618
50621150621
506262101252
50632150632
50634150634
50635150635
50637150637
50642150642
50643150643
50645150645
50646150646
50649150649
50654150654
506552101310
50656150656
506582101316
50659150659
50660150660
506613151983
50662150662
50664150664
506652101330
50666150666
506673152001
506682101336
50669150669
506703152010
50672150672
506742101348
506763152028
50677150677
506783152034
506794202716
506803152040
50681150681
50682150682
506834202732
50684150684
506852101370
50686150686
50688150688
506913152073
506934202772
506962101392
50697150697
50698150698
506992101398
50700150700
50702150702
50703150703
507063152118
507092101418
50710150710
50712150712
50713150713
507152101430
507172101434
507183152154
50719150719
507202101440
507212101442
50722150722
507234202892
50725150725
507263152178
507302101460
507312101462
50735150735
50737150737
50738150738
50741150741
507422101484
50743150743
50747150747
507482101496
50749150749
50750150750
507522101504
50755150755
50756150756
50757150757
50758150758
50761150761
507623152286
50763150763
50764150764
50768150768
50771150771
50773150773
50777150777
50778150778
50782150782
507842101568
50790150790
507992101598
50803150803
508052101610
50811150811
50812150812
508143152442
50815150815
50818150818
50820150820
50821150821
50822150822
50823150823
50826150826
50833150833
508342101668
50835150835
50836150836
508412101682
508492101698
50853150853
50856150856
50863150863
50867150867
50868150868
50874150874
50878150878
50881150881
50884150884
50889150889
508932101786
50900150900
50901150901
50902150902
509032101806
509042101808
509062101812
50908150908
50912150912
50914150914
50916150916
50917150917
50919150919
509222101844
509262101852
50928150928
509352101870
509362101872
50937150937
50940150940
509442101888
50947150947
509502101900
50951150951
509532101906
50955150955
50959150959
509602101920
50961150961
50962150962
50965150965
50968150968
50969150969
509702101940
50972150972
50973150973
50974150974
509772101954
509782101956
50981150981
50982150982
509843152952
509852101970
50989150989
50990150990
50991150991
50993150993
509943152982
50995150995
50996150996
509982101996
510013153003
51002151002
510032102006
510042102008
51005151005
51006151006
510102102020
51011151011
51013151013
51024151024
51031151031
51032151032
51033151033
51034151034
51035151035
51036151036
510372102074
510382102076
51039151039
51040151040
510412102082
51042151042
510434204172
51044151044
51045151045
510462102092
510492102098
510504204200
51051151051
51053151053
51054151054
51058151058
51059151059
51060151060
51064151064
51065151065
510662102132
51068151068
510693153207
510712102142
51072151072
51073151073
51077151077
51078151078
510802102160
51081151081
510824204328
510893153267
510903153270
51091151091
510922102184
51093151093
510942102188
51095151095
510962102192
510992102198
51100151100
51101151101
511022102204
51103151103
51107151107
511102102220
51112151112
51116151116
51119151119
51120151120
51134151134
51137151137
511402102280
51142151142
51145151145
511472102294
511492102298
51151151151
51153151153
51161151161
51162151162
51163151163
51167151167
51169151169
51172151172
51175151175
51183151183
51186151186
511882102376
51190151190
511962102392
51197151197
51198151198
51200151200
51202151202
51209151209
51212151212
51213151213
51215151215
51216151216
51220151220
51224151224
51225151225
512272102454
512302102460
51238151238
51239151239
51247151247
512482102496
512502102500
51251151251
512534205012
512542102508
51255151255
51256151256
51257151257
512592102518
51260151260
51261151261
512632102526
51264151264
51265151265
51269151269
51270151270
51275151275
51283151283
51286151286
51287151287
51289151289
51294151294
512962102592
51297151297
51300151300
51303151303
51305151305
51306151306
51307151307
51312151312
51313151313
51319151319
513202102640
51321151321
513222102644
51324151324
51325151325
513264205304
51327151327
51328151328
51329151329
51331151331
51332151332
513332102666
513343154002
513352102670
51336151336
51337151337
51339151339
51340151340
51341151341
51342151342
51343151343
51345151345
51346151346
51347151347
51350151350
513522102704
51353151353
51358151358
51359151359
51360151360
513613154083
51364151364
51367151367
51368151368
51369151369
51370151370
51371151371
51374151374
51379151379
51381151381
51385151385
513872102774
51388151388
51389151389
51390151390
51393151393
51396151396
51398151398
513992102798
51401151401
514072102814
51426151426
Total100350498846
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
49533149533
49551149551
49554149554
49556149556
49559149559
49571149571
49602149602
49609149609
49624149624
49641149641
49659149659
49662149662
49665149665
49666149666
49667149667
49672149672
496813149043
49683149683
49685149685
49686149686
49693299386
49694299388
49695149695
49697149697
49698149698
49699299398
49701149701
49704299408
49707149707
49708149708
497103149130
49711149711
49712149712
49713149713
49715149715
497163149148
49718299436
49719149719
49721149721
49722299444
49723299446
49725149725
49726299452
49727149727
49728149728
49729299458
49730149730
497313149193
49732299464
497343149202
497353149205
49736149736
49737149737
49738149738
497393149217
49740299480
497423149226
49744149744
49745299490
49746299492
497475248735
49749299498
49752149752
497534199012
49754149754
49755299510
49756299512
49757149757
497583149274
49759299518
497603149280
49761299522
49762299524
49764299528
497653149295
49767149767
49768299536
49769149769
497714199084
49772149772
49773149773
49775299550
49776149776
49777149777
497793149337
497804199120
49781149781
49782149782
49783149783
49784299568
497853149355
49786299572
49787299574
49789299578
49790299580
49791299582
497923149376
49793149793
497944199176
49795149795
49796149796
49797299594
497984199192
49799299598
498003149400
49803299606
498043149412
49807149807
49808299616
49809149809
49810149810
49811149811
49812149812
49813299626
49814149814
49816299632
49817149817
49819149819
49821149821
49822149822
49824149824
49825149825
498263149478
49828149828
49829149829
49830149830
49832149832
49834149834
49837149837
49844299688
49845149845
49848149848
49851149851
49853149853
498543149562
49857149857
49859149859
49860149860
49861149861
49862149862
49863149863
49864149864
49874149874
49875149875
49877149877
49882149882
49886149886
49891149891
49892149892
49898149898
49908149908
49909299818
49910149910
49914149914
49915149915
49917149917
49918149918
49919149919
49925149925
49930299860
49937149937
49941299882
49942149942
49945149945
49946149946
49951149951
49954149954
49955149955
49957149957
49958299916
49959149959
49960149960
49961149961
49962149962
49963149963
499644199856
49966149966
49968299936
49970299940
499723149916
49973299946
49974149974
49975299950
49976149976
499773149931
499783149934
49979299958
49980299960
49982149982
49984149984
49985299970
49987299974
49988299976
49990299980
49991149991
49992149992
49993149993
49994299988
49995149995
49997149997
500022100004
500052100010
50006150006
50010150010
50011150011
50013150013
50014150014
50029150029
50033150033
50041150041
50042150042
50046150046
50047150047
50048150048
50058150058
50066150066
50074150074
50076150076
50077150077
500782100156
50091150091
50099150099
50105150105
50110150110
50116150116
50119150119
50124150124
50125150125
50130150130
50132150132
501332100266
50135150135
50147150147
50149150149
50150150150
501522100304
50154150154
50155150155
50157150157
501582100316
501592100318
50165150165
501713150513
50173150173
50177150177
50181150181
50184150184
50186150186
50190150190
50192150192
50194150194
50195150195
50198150198
50199150199
50201150201
50203150203
50204150204
50205150205
50206150206
50208150208
50209150209
50211150211
50212150212
50213150213
502152100430
502162100432
50217150217
50218150218
50222150222
502342100468
50237150237
50239150239
502412100482
502422100484
50243150243
50245150245
50246150246
50253150253
50259150259
50260150260
50266150266
50268150268
50277150277
50292150292
50300150300
50325150325
50327150327
503302100660
50332150332
50335150335
503382100676
503402100680
50341150341
50342150342
50343150343
50344150344
503462100692
50348150348
50357150357
50359150359
50373150373
50378150378
503902100780
50395150395
50401150401
50402150402
50406150406
50408150408
50409150409
50410150410
50413150413
504182100836
50419150419
50423150423
50427150427
50428150428
50433150433
50439150439
50452150452
50456150456
50461150461
50470150470
50471150471
50472150472
50473150473
50475150475
50478150478
50479150479
50482150482
50491150491
50493150493
50495150495
50498150498
50502150502
50507150507
50511150511
50519150519
50520150520
505272101054
50534150534
505432101086
50549150549
50550150550
505642101128
50566150566
50568150568
50579150579
50580150580
50585150585
50589150589
50608150608
50611150611
50613150613
50614150614
50617150617
506222101244
50628150628
50630150630
50631150631
50633150633
50638150638
50639150639
50641150641
50642150642
50645150645
50650150650
506512101302
50652150652
506542101308
50655150655
50656150656
506573151971
50658150658
50660150660
506612101322
50662150662
506633151989
506642101328
50665150665
506663151998
50668150668
506702101340
506723152016
50673150673
506743152022
506754202700
506763152028
50677150677
50678150678
506794202716
50680150680
506812101362
50682150682
50684150684
506873152061
506894202756
506922101384
50693150693
50694150694
506952101390
50696150696
50698150698
50699150699
507023152106
507052101410
50706150706
50708150708
50709150709
507112101422
507132101426
507143152142
50715150715
507162101432
507172101434
50718150718
507194202876
50721150721
507223152166
507262101452
507272101454
50731150731
50733150733
50734150734
50737150737
507382101476
50739150739
50743150743
507442101488
50745150745
50746150746
507482101496
50751150751
50752150752
50753150753
50754150754
50757150757
507583152274
50759150759
50760150760
50764150764
50767150767
50769150769
50773150773
50774150774
50778150778
507802101560
50786150786
507952101590
50799150799
508012101602
50807150807
50808150808
508103152430
50811150811
50814150814
50816150816
50817150817
50818150818
50819150819
50822150822
50829150829
508302101660
50831150831
50832150832
508372101674
508452101690
50849150849
50852150852
50859150859
50863150863
50864150864
50870150870
50874150874
50877150877
50880150880
50885150885
508892101778
50896150896
50897150897
50898150898
508992101798
509002101800
509022101804
50904150904
50908150908
50910150910
50912150912
50913150913
50915150915
509182101836
509222101844
50924150924
509312101862
509322101864
50933150933
50936150936
509402101880
50943150943
509462101892
50947150947
509492101898
50951150951
50955150955
509562101912
50957150957
50958150958
50961150961
50964150964
50965150965
509662101932
50968150968
50969150969
50970150970
509732101946
509742101948
50977150977
50978150978
509803152940
509812101962
50985150985
50986150986
50987150987
50989150989
509903152970
50991150991
50992150992
509942101988
509973152991
50998150998
509992101998
510002102000
51001151001
51002151002
510062102012
51007151007
51009151009
51020151020
51027151027
51028151028
51029151029
51030151030
51031151031
51032151032
510332102066
510342102068
51035151035
51036151036
510372102074
51038151038
510394204156
51040151040
51041151041
510422102084
510452102090
510464204184
51047151047
51049151049
51050151050
51054151054
51055151055
51056151056
51060151060
51061151061
510622102124
51064151064
510653153195
510672102134
51068151068
51069151069
51073151073
51074151074
510762102152
51077151077
510784204312
510853153255
510863153258
51087151087
510882102176
51089151089
510902102180
51091151091
510922102184
510952102190
51096151096
51097151097
510982102196
51099151099
51103151103
511062102212
51108151108
51112151112
51115151115
51116151116
51130151130
51133151133
511362102272
51138151138
51141151141
511432102286
511452102290
51147151147
51149151149
51157151157
51158151158
51159151159
51163151163
51165151165
51168151168
51171151171
51179151179
51182151182
511842102368
51186151186
511922102384
51193151193
51194151194
51196151196
51198151198
51205151205
51208151208
51209151209
51211151211
51212151212
51216151216
51220151220
51221151221
512232102446
512262102452
51234151234
51235151235
51243151243
512442102488
512462102492
51247151247
512494204996
512502102500
51251151251
51252151252
51253151253
512552102510
51256151256
51257151257
512592102518
51260151260
51261151261
51265151265
51266151266
51271151271
51279151279
51282151282
51283151283
51285151285
51290151290
512922102584
51293151293
51296151296
51299151299
51301151301
51302151302
51303151303
51308151308
51309151309
51315151315
513162102632
51317151317
513182102636
51320151320
51321151321
513224205288
51323151323
51324151324
51325151325
51327151327
51328151328
513292102658
513303153990
513312102662
51332151332
51333151333
51335151335
51336151336
51337151337
51338151338
51339151339
51341151341
51342151342
51343151343
51346151346
513482102696
51349151349
51354151354
51355151355
51356151356
513573154071
51360151360
51363151363
51364151364
51365151365
51366151366
51367151367
51370151370
51375151375
51377151377
51381151381
513832102766
51384151384
51385151385
51386151386
51389151389
51392151392
51394151394
513952102790
51397151397
514032102806
51422151422
51722151722
Total100250494837
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333437266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888208169e4e0bfe
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3038313639653465
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_10.json b/autobahn/client/tungstenite_case_12_3_10.json new file mode 100644 index 0000000..8d5bedc --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_10.json @@ -0,0 +1,1578 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 347, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 16905, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=347&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: HOYzvMAVv2B8gi2/UEt7SA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PeC5ffGDs0c3ccEAE3kMS3BkE/Q=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "8286": 1, + "43440": 1, + "49537": 1, + "49555": 1, + "49558": 1, + "49560": 1, + "49563": 1, + "49575": 1, + "49606": 1, + "49613": 1, + "49628": 1, + "49645": 1, + "49663": 1, + "49666": 1, + "49669": 1, + "49670": 1, + "49671": 1, + "49676": 1, + "49685": 3, + "49687": 1, + "49689": 1, + "49690": 1, + "49697": 2, + "49698": 2, + "49699": 1, + "49701": 1, + "49702": 1, + "49703": 2, + "49705": 1, + "49708": 2, + "49711": 1, + "49712": 1, + "49714": 3, + "49715": 1, + "49716": 1, + "49717": 1, + "49719": 1, + "49720": 3, + "49722": 2, + "49723": 1, + "49725": 1, + "49726": 2, + "49727": 2, + "49729": 1, + "49730": 2, + "49731": 1, + "49732": 1, + "49733": 2, + "49734": 1, + "49735": 3, + "49736": 2, + "49738": 3, + "49739": 3, + "49740": 1, + "49741": 1, + "49742": 1, + "49743": 3, + "49744": 2, + "49746": 3, + "49748": 1, + "49749": 2, + "49750": 2, + "49751": 5, + "49753": 2, + "49756": 1, + "49757": 4, + "49758": 1, + "49759": 2, + "49760": 2, + "49761": 1, + "49762": 3, + "49763": 2, + "49764": 3, + "49765": 2, + "49766": 2, + "49768": 2, + "49769": 3, + "49771": 1, + "49772": 2, + "49773": 1, + "49775": 4, + "49776": 1, + "49777": 1, + "49779": 2, + "49780": 1, + "49781": 1, + "49783": 3, + "49784": 4, + "49785": 1, + "49786": 1, + "49787": 1, + "49788": 2, + "49789": 3, + "49790": 2, + "49791": 2, + "49793": 2, + "49794": 2, + "49795": 2, + "49796": 3, + "49797": 1, + "49798": 4, + "49799": 1, + "49800": 1, + "49801": 2, + "49802": 4, + "49803": 2, + "49804": 3, + "49807": 2, + "49808": 3, + "49811": 1, + "49812": 2, + "49813": 1, + "49814": 1, + "49815": 1, + "49816": 1, + "49817": 2, + "49818": 1, + "49820": 2, + "49821": 1, + "49823": 1, + "49825": 1, + "49826": 1, + "49828": 1, + "49829": 1, + "49830": 3, + "49832": 1, + "49833": 1, + "49834": 1, + "49836": 1, + "49838": 1, + "49841": 1, + "49848": 2, + "49849": 1, + "49852": 1, + "49855": 1, + "49857": 1, + "49858": 3, + "49861": 1, + "49863": 1, + "49864": 1, + "49865": 1, + "49866": 1, + "49867": 1, + "49868": 1, + "49878": 1, + "49879": 1, + "49881": 1, + "49886": 1, + "49890": 1, + "49895": 1, + "49896": 1, + "49902": 1, + "49912": 1, + "49913": 2, + "49914": 1, + "49918": 1, + "49919": 1, + "49921": 1, + "49922": 1, + "49923": 1, + "49929": 1, + "49934": 2, + "49941": 1, + "49945": 2, + "49946": 1, + "49949": 1, + "49950": 1, + "49955": 1, + "49958": 1, + "49959": 1, + "49961": 1, + "49962": 2, + "49963": 1, + "49964": 1, + "49965": 1, + "49966": 1, + "49967": 1, + "49968": 4, + "49970": 1, + "49972": 2, + "49974": 2, + "49976": 3, + "49977": 2, + "49978": 1, + "49979": 2, + "49980": 1, + "49981": 3, + "49982": 3, + "49983": 2, + "49984": 2, + "49986": 1, + "49988": 1, + "49989": 2, + "49991": 2, + "49992": 2, + "49994": 2, + "49995": 1, + "49996": 1, + "49997": 1, + "49998": 2, + "49999": 1, + "50001": 1, + "50006": 2, + "50009": 2, + "50010": 1, + "50014": 1, + "50015": 1, + "50017": 1, + "50018": 1, + "50033": 1, + "50037": 1, + "50045": 1, + "50046": 1, + "50050": 1, + "50051": 1, + "50052": 1, + "50062": 1, + "50070": 1, + "50078": 1, + "50080": 1, + "50081": 1, + "50082": 2, + "50095": 1, + "50103": 1, + "50109": 1, + "50114": 1, + "50120": 1, + "50123": 1, + "50128": 1, + "50129": 1, + "50134": 1, + "50136": 1, + "50137": 2, + "50139": 1, + "50151": 1, + "50153": 1, + "50154": 1, + "50156": 2, + "50158": 1, + "50159": 1, + "50161": 1, + "50162": 2, + "50163": 2, + "50169": 1, + "50175": 3, + "50177": 1, + "50181": 1, + "50185": 1, + "50188": 1, + "50190": 1, + "50194": 1, + "50196": 1, + "50198": 1, + "50199": 1, + "50202": 1, + "50203": 1, + "50205": 1, + "50207": 1, + "50208": 1, + "50209": 1, + "50210": 1, + "50212": 1, + "50213": 1, + "50215": 1, + "50216": 1, + "50217": 1, + "50219": 2, + "50220": 2, + "50221": 1, + "50222": 1, + "50226": 1, + "50238": 2, + "50241": 1, + "50243": 1, + "50245": 2, + "50246": 2, + "50247": 1, + "50249": 1, + "50250": 1, + "50257": 1, + "50263": 1, + "50264": 1, + "50270": 1, + "50272": 1, + "50281": 1, + "50296": 1, + "50304": 1, + "50329": 1, + "50331": 1, + "50334": 2, + "50336": 1, + "50339": 1, + "50342": 2, + "50344": 2, + "50345": 1, + "50346": 1, + "50347": 1, + "50348": 1, + "50350": 2, + "50352": 1, + "50361": 1, + "50363": 1, + "50377": 1, + "50382": 1, + "50394": 2, + "50399": 1, + "50405": 1, + "50406": 1, + "50410": 1, + "50412": 1, + "50413": 1, + "50414": 1, + "50417": 1, + "50422": 2, + "50423": 1, + "50427": 1, + "50431": 1, + "50432": 1, + "50437": 1, + "50443": 1, + "50456": 1, + "50460": 1, + "50465": 1, + "50474": 1, + "50475": 1, + "50476": 1, + "50477": 1, + "50479": 1, + "50482": 1, + "50483": 1, + "50486": 1, + "50495": 1, + "50497": 1, + "50499": 1, + "50502": 1, + "50506": 1, + "50511": 1, + "50515": 1, + "50523": 1, + "50524": 1, + "50531": 2, + "50538": 1, + "50547": 2, + "50553": 1, + "50554": 1, + "50568": 2, + "50570": 1, + "50572": 1, + "50583": 1, + "50584": 1, + "50589": 1, + "50593": 1, + "50612": 1, + "50615": 1, + "50617": 1, + "50618": 1, + "50621": 1, + "50626": 2, + "50632": 1, + "50634": 1, + "50635": 1, + "50637": 1, + "50642": 1, + "50643": 1, + "50645": 1, + "50646": 1, + "50649": 1, + "50654": 1, + "50655": 2, + "50656": 1, + "50658": 2, + "50659": 1, + "50660": 1, + "50661": 3, + "50662": 1, + "50664": 1, + "50665": 2, + "50666": 1, + "50667": 3, + "50668": 2, + "50669": 1, + "50670": 3, + "50672": 1, + "50674": 2, + "50676": 3, + "50677": 1, + "50678": 3, + "50679": 4, + "50680": 3, + "50681": 1, + "50682": 1, + "50683": 4, + "50684": 1, + "50685": 2, + "50686": 1, + "50688": 1, + "50691": 3, + "50693": 4, + "50696": 2, + "50697": 1, + "50698": 1, + "50699": 2, + "50700": 1, + "50702": 1, + "50703": 1, + "50706": 3, + "50709": 2, + "50710": 1, + "50712": 1, + "50713": 1, + "50715": 2, + "50717": 2, + "50718": 3, + "50719": 1, + "50720": 2, + "50721": 2, + "50722": 1, + "50723": 4, + "50725": 1, + "50726": 3, + "50730": 2, + "50731": 2, + "50735": 1, + "50737": 1, + "50738": 1, + "50741": 1, + "50742": 2, + "50743": 1, + "50747": 1, + "50748": 2, + "50749": 1, + "50750": 1, + "50752": 2, + "50755": 1, + "50756": 1, + "50757": 1, + "50758": 1, + "50761": 1, + "50762": 3, + "50763": 1, + "50764": 1, + "50768": 1, + "50771": 1, + "50773": 1, + "50777": 1, + "50778": 1, + "50782": 1, + "50784": 2, + "50790": 1, + "50799": 2, + "50803": 1, + "50805": 2, + "50811": 1, + "50812": 1, + "50814": 3, + "50815": 1, + "50818": 1, + "50820": 1, + "50821": 1, + "50822": 1, + "50823": 1, + "50826": 1, + "50833": 1, + "50834": 2, + "50835": 1, + "50836": 1, + "50841": 2, + "50849": 2, + "50853": 1, + "50856": 1, + "50863": 1, + "50867": 1, + "50868": 1, + "50874": 1, + "50878": 1, + "50881": 1, + "50884": 1, + "50889": 1, + "50893": 2, + "50900": 1, + "50901": 1, + "50902": 1, + "50903": 2, + "50904": 2, + "50906": 2, + "50908": 1, + "50912": 1, + "50914": 1, + "50916": 1, + "50917": 1, + "50919": 1, + "50922": 2, + "50926": 2, + "50928": 1, + "50935": 2, + "50936": 2, + "50937": 1, + "50940": 1, + "50944": 2, + "50947": 1, + "50950": 2, + "50951": 1, + "50953": 2, + "50955": 1, + "50959": 1, + "50960": 2, + "50961": 1, + "50962": 1, + "50965": 1, + "50968": 1, + "50969": 1, + "50970": 2, + "50972": 1, + "50973": 1, + "50974": 1, + "50977": 2, + "50978": 2, + "50981": 1, + "50982": 1, + "50984": 3, + "50985": 2, + "50989": 1, + "50990": 1, + "50991": 1, + "50993": 1, + "50994": 3, + "50995": 1, + "50996": 1, + "50998": 2, + "51001": 3, + "51002": 1, + "51003": 2, + "51004": 2, + "51005": 1, + "51006": 1, + "51010": 2, + "51011": 1, + "51013": 1, + "51024": 1, + "51031": 1, + "51032": 1, + "51033": 1, + "51034": 1, + "51035": 1, + "51036": 1, + "51037": 2, + "51038": 2, + "51039": 1, + "51040": 1, + "51041": 2, + "51042": 1, + "51043": 4, + "51044": 1, + "51045": 1, + "51046": 2, + "51049": 2, + "51050": 4, + "51051": 1, + "51053": 1, + "51054": 1, + "51058": 1, + "51059": 1, + "51060": 1, + "51064": 1, + "51065": 1, + "51066": 2, + "51068": 1, + "51069": 3, + "51071": 2, + "51072": 1, + "51073": 1, + "51077": 1, + "51078": 1, + "51080": 2, + "51081": 1, + "51082": 4, + "51089": 3, + "51090": 3, + "51091": 1, + "51092": 2, + "51093": 1, + "51094": 2, + "51095": 1, + "51096": 2, + "51099": 2, + "51100": 1, + "51101": 1, + "51102": 2, + "51103": 1, + "51107": 1, + "51110": 2, + "51112": 1, + "51116": 1, + "51119": 1, + "51120": 1, + "51134": 1, + "51137": 1, + "51140": 2, + "51142": 1, + "51145": 1, + "51147": 2, + "51149": 2, + "51151": 1, + "51153": 1, + "51161": 1, + "51162": 1, + "51163": 1, + "51167": 1, + "51169": 1, + "51172": 1, + "51175": 1, + "51183": 1, + "51186": 1, + "51188": 2, + "51190": 1, + "51196": 2, + "51197": 1, + "51198": 1, + "51200": 1, + "51202": 1, + "51209": 1, + "51212": 1, + "51213": 1, + "51215": 1, + "51216": 1, + "51220": 1, + "51224": 1, + "51225": 1, + "51227": 2, + "51230": 2, + "51238": 1, + "51239": 1, + "51247": 1, + "51248": 2, + "51250": 2, + "51251": 1, + "51253": 4, + "51254": 2, + "51255": 1, + "51256": 1, + "51257": 1, + "51259": 2, + "51260": 1, + "51261": 1, + "51263": 2, + "51264": 1, + "51265": 1, + "51269": 1, + "51270": 1, + "51275": 1, + "51283": 1, + "51286": 1, + "51287": 1, + "51289": 1, + "51294": 1, + "51296": 2, + "51297": 1, + "51300": 1, + "51303": 1, + "51305": 1, + "51306": 1, + "51307": 1, + "51312": 1, + "51313": 1, + "51319": 1, + "51320": 2, + "51321": 1, + "51322": 2, + "51324": 1, + "51325": 1, + "51326": 4, + "51327": 1, + "51328": 1, + "51329": 1, + "51331": 1, + "51332": 1, + "51333": 2, + "51334": 3, + "51335": 2, + "51336": 1, + "51337": 1, + "51339": 1, + "51340": 1, + "51341": 1, + "51342": 1, + "51343": 1, + "51345": 1, + "51346": 1, + "51347": 1, + "51350": 1, + "51352": 2, + "51353": 1, + "51358": 1, + "51359": 1, + "51360": 1, + "51361": 3, + "51364": 1, + "51367": 1, + "51368": 1, + "51369": 1, + "51370": 1, + "51371": 1, + "51374": 1, + "51379": 1, + "51381": 1, + "51385": 1, + "51387": 2, + "51388": 1, + "51389": 1, + "51390": 1, + "51393": 1, + "51396": 1, + "51398": 1, + "51399": 2, + "51401": 1, + "51407": 2, + "51426": 1 + }, + "started": "2025-09-11T20:07:55.893Z", + "trafficStats": { + "incomingCompressionRatio": 0.38521256256103514, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 50490581, + "incomingOctetsWireLevel": 50498581, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00015844539400328945, + "outgoingCompressionRatio": 0.38521256256103514, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 50490581, + "outgoingOctetsWireLevel": 50494581, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 7.922269700164472e-05, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "49533": 1, + "49551": 1, + "49554": 1, + "49556": 1, + "49559": 1, + "49571": 1, + "49602": 1, + "49609": 1, + "49624": 1, + "49641": 1, + "49659": 1, + "49662": 1, + "49665": 1, + "49666": 1, + "49667": 1, + "49672": 1, + "49681": 3, + "49683": 1, + "49685": 1, + "49686": 1, + "49693": 2, + "49694": 2, + "49695": 1, + "49697": 1, + "49698": 1, + "49699": 2, + "49701": 1, + "49704": 2, + "49707": 1, + "49708": 1, + "49710": 3, + "49711": 1, + "49712": 1, + "49713": 1, + "49715": 1, + "49716": 3, + "49718": 2, + "49719": 1, + "49721": 1, + "49722": 2, + "49723": 2, + "49725": 1, + "49726": 2, + "49727": 1, + "49728": 1, + "49729": 2, + "49730": 1, + "49731": 3, + "49732": 2, + "49734": 3, + "49735": 3, + "49736": 1, + "49737": 1, + "49738": 1, + "49739": 3, + "49740": 2, + "49742": 3, + "49744": 1, + "49745": 2, + "49746": 2, + "49747": 5, + "49749": 2, + "49752": 1, + "49753": 4, + "49754": 1, + "49755": 2, + "49756": 2, + "49757": 1, + "49758": 3, + "49759": 2, + "49760": 3, + "49761": 2, + "49762": 2, + "49764": 2, + "49765": 3, + "49767": 1, + "49768": 2, + "49769": 1, + "49771": 4, + "49772": 1, + "49773": 1, + "49775": 2, + "49776": 1, + "49777": 1, + "49779": 3, + "49780": 4, + "49781": 1, + "49782": 1, + "49783": 1, + "49784": 2, + "49785": 3, + "49786": 2, + "49787": 2, + "49789": 2, + "49790": 2, + "49791": 2, + "49792": 3, + "49793": 1, + "49794": 4, + "49795": 1, + "49796": 1, + "49797": 2, + "49798": 4, + "49799": 2, + "49800": 3, + "49803": 2, + "49804": 3, + "49807": 1, + "49808": 2, + "49809": 1, + "49810": 1, + "49811": 1, + "49812": 1, + "49813": 2, + "49814": 1, + "49816": 2, + "49817": 1, + "49819": 1, + "49821": 1, + "49822": 1, + "49824": 1, + "49825": 1, + "49826": 3, + "49828": 1, + "49829": 1, + "49830": 1, + "49832": 1, + "49834": 1, + "49837": 1, + "49844": 2, + "49845": 1, + "49848": 1, + "49851": 1, + "49853": 1, + "49854": 3, + "49857": 1, + "49859": 1, + "49860": 1, + "49861": 1, + "49862": 1, + "49863": 1, + "49864": 1, + "49874": 1, + "49875": 1, + "49877": 1, + "49882": 1, + "49886": 1, + "49891": 1, + "49892": 1, + "49898": 1, + "49908": 1, + "49909": 2, + "49910": 1, + "49914": 1, + "49915": 1, + "49917": 1, + "49918": 1, + "49919": 1, + "49925": 1, + "49930": 2, + "49937": 1, + "49941": 2, + "49942": 1, + "49945": 1, + "49946": 1, + "49951": 1, + "49954": 1, + "49955": 1, + "49957": 1, + "49958": 2, + "49959": 1, + "49960": 1, + "49961": 1, + "49962": 1, + "49963": 1, + "49964": 4, + "49966": 1, + "49968": 2, + "49970": 2, + "49972": 3, + "49973": 2, + "49974": 1, + "49975": 2, + "49976": 1, + "49977": 3, + "49978": 3, + "49979": 2, + "49980": 2, + "49982": 1, + "49984": 1, + "49985": 2, + "49987": 2, + "49988": 2, + "49990": 2, + "49991": 1, + "49992": 1, + "49993": 1, + "49994": 2, + "49995": 1, + "49997": 1, + "50002": 2, + "50005": 2, + "50006": 1, + "50010": 1, + "50011": 1, + "50013": 1, + "50014": 1, + "50029": 1, + "50033": 1, + "50041": 1, + "50042": 1, + "50046": 1, + "50047": 1, + "50048": 1, + "50058": 1, + "50066": 1, + "50074": 1, + "50076": 1, + "50077": 1, + "50078": 2, + "50091": 1, + "50099": 1, + "50105": 1, + "50110": 1, + "50116": 1, + "50119": 1, + "50124": 1, + "50125": 1, + "50130": 1, + "50132": 1, + "50133": 2, + "50135": 1, + "50147": 1, + "50149": 1, + "50150": 1, + "50152": 2, + "50154": 1, + "50155": 1, + "50157": 1, + "50158": 2, + "50159": 2, + "50165": 1, + "50171": 3, + "50173": 1, + "50177": 1, + "50181": 1, + "50184": 1, + "50186": 1, + "50190": 1, + "50192": 1, + "50194": 1, + "50195": 1, + "50198": 1, + "50199": 1, + "50201": 1, + "50203": 1, + "50204": 1, + "50205": 1, + "50206": 1, + "50208": 1, + "50209": 1, + "50211": 1, + "50212": 1, + "50213": 1, + "50215": 2, + "50216": 2, + "50217": 1, + "50218": 1, + "50222": 1, + "50234": 2, + "50237": 1, + "50239": 1, + "50241": 2, + "50242": 2, + "50243": 1, + "50245": 1, + "50246": 1, + "50253": 1, + "50259": 1, + "50260": 1, + "50266": 1, + "50268": 1, + "50277": 1, + "50292": 1, + "50300": 1, + "50325": 1, + "50327": 1, + "50330": 2, + "50332": 1, + "50335": 1, + "50338": 2, + "50340": 2, + "50341": 1, + "50342": 1, + "50343": 1, + "50344": 1, + "50346": 2, + "50348": 1, + "50357": 1, + "50359": 1, + "50373": 1, + "50378": 1, + "50390": 2, + "50395": 1, + "50401": 1, + "50402": 1, + "50406": 1, + "50408": 1, + "50409": 1, + "50410": 1, + "50413": 1, + "50418": 2, + "50419": 1, + "50423": 1, + "50427": 1, + "50428": 1, + "50433": 1, + "50439": 1, + "50452": 1, + "50456": 1, + "50461": 1, + "50470": 1, + "50471": 1, + "50472": 1, + "50473": 1, + "50475": 1, + "50478": 1, + "50479": 1, + "50482": 1, + "50491": 1, + "50493": 1, + "50495": 1, + "50498": 1, + "50502": 1, + "50507": 1, + "50511": 1, + "50519": 1, + "50520": 1, + "50527": 2, + "50534": 1, + "50543": 2, + "50549": 1, + "50550": 1, + "50564": 2, + "50566": 1, + "50568": 1, + "50579": 1, + "50580": 1, + "50585": 1, + "50589": 1, + "50608": 1, + "50611": 1, + "50613": 1, + "50614": 1, + "50617": 1, + "50622": 2, + "50628": 1, + "50630": 1, + "50631": 1, + "50633": 1, + "50638": 1, + "50639": 1, + "50641": 1, + "50642": 1, + "50645": 1, + "50650": 1, + "50651": 2, + "50652": 1, + "50654": 2, + "50655": 1, + "50656": 1, + "50657": 3, + "50658": 1, + "50660": 1, + "50661": 2, + "50662": 1, + "50663": 3, + "50664": 2, + "50665": 1, + "50666": 3, + "50668": 1, + "50670": 2, + "50672": 3, + "50673": 1, + "50674": 3, + "50675": 4, + "50676": 3, + "50677": 1, + "50678": 1, + "50679": 4, + "50680": 1, + "50681": 2, + "50682": 1, + "50684": 1, + "50687": 3, + "50689": 4, + "50692": 2, + "50693": 1, + "50694": 1, + "50695": 2, + "50696": 1, + "50698": 1, + "50699": 1, + "50702": 3, + "50705": 2, + "50706": 1, + "50708": 1, + "50709": 1, + "50711": 2, + "50713": 2, + "50714": 3, + "50715": 1, + "50716": 2, + "50717": 2, + "50718": 1, + "50719": 4, + "50721": 1, + "50722": 3, + "50726": 2, + "50727": 2, + "50731": 1, + "50733": 1, + "50734": 1, + "50737": 1, + "50738": 2, + "50739": 1, + "50743": 1, + "50744": 2, + "50745": 1, + "50746": 1, + "50748": 2, + "50751": 1, + "50752": 1, + "50753": 1, + "50754": 1, + "50757": 1, + "50758": 3, + "50759": 1, + "50760": 1, + "50764": 1, + "50767": 1, + "50769": 1, + "50773": 1, + "50774": 1, + "50778": 1, + "50780": 2, + "50786": 1, + "50795": 2, + "50799": 1, + "50801": 2, + "50807": 1, + "50808": 1, + "50810": 3, + "50811": 1, + "50814": 1, + "50816": 1, + "50817": 1, + "50818": 1, + "50819": 1, + "50822": 1, + "50829": 1, + "50830": 2, + "50831": 1, + "50832": 1, + "50837": 2, + "50845": 2, + "50849": 1, + "50852": 1, + "50859": 1, + "50863": 1, + "50864": 1, + "50870": 1, + "50874": 1, + "50877": 1, + "50880": 1, + "50885": 1, + "50889": 2, + "50896": 1, + "50897": 1, + "50898": 1, + "50899": 2, + "50900": 2, + "50902": 2, + "50904": 1, + "50908": 1, + "50910": 1, + "50912": 1, + "50913": 1, + "50915": 1, + "50918": 2, + "50922": 2, + "50924": 1, + "50931": 2, + "50932": 2, + "50933": 1, + "50936": 1, + "50940": 2, + "50943": 1, + "50946": 2, + "50947": 1, + "50949": 2, + "50951": 1, + "50955": 1, + "50956": 2, + "50957": 1, + "50958": 1, + "50961": 1, + "50964": 1, + "50965": 1, + "50966": 2, + "50968": 1, + "50969": 1, + "50970": 1, + "50973": 2, + "50974": 2, + "50977": 1, + "50978": 1, + "50980": 3, + "50981": 2, + "50985": 1, + "50986": 1, + "50987": 1, + "50989": 1, + "50990": 3, + "50991": 1, + "50992": 1, + "50994": 2, + "50997": 3, + "50998": 1, + "50999": 2, + "51000": 2, + "51001": 1, + "51002": 1, + "51006": 2, + "51007": 1, + "51009": 1, + "51020": 1, + "51027": 1, + "51028": 1, + "51029": 1, + "51030": 1, + "51031": 1, + "51032": 1, + "51033": 2, + "51034": 2, + "51035": 1, + "51036": 1, + "51037": 2, + "51038": 1, + "51039": 4, + "51040": 1, + "51041": 1, + "51042": 2, + "51045": 2, + "51046": 4, + "51047": 1, + "51049": 1, + "51050": 1, + "51054": 1, + "51055": 1, + "51056": 1, + "51060": 1, + "51061": 1, + "51062": 2, + "51064": 1, + "51065": 3, + "51067": 2, + "51068": 1, + "51069": 1, + "51073": 1, + "51074": 1, + "51076": 2, + "51077": 1, + "51078": 4, + "51085": 3, + "51086": 3, + "51087": 1, + "51088": 2, + "51089": 1, + "51090": 2, + "51091": 1, + "51092": 2, + "51095": 2, + "51096": 1, + "51097": 1, + "51098": 2, + "51099": 1, + "51103": 1, + "51106": 2, + "51108": 1, + "51112": 1, + "51115": 1, + "51116": 1, + "51130": 1, + "51133": 1, + "51136": 2, + "51138": 1, + "51141": 1, + "51143": 2, + "51145": 2, + "51147": 1, + "51149": 1, + "51157": 1, + "51158": 1, + "51159": 1, + "51163": 1, + "51165": 1, + "51168": 1, + "51171": 1, + "51179": 1, + "51182": 1, + "51184": 2, + "51186": 1, + "51192": 2, + "51193": 1, + "51194": 1, + "51196": 1, + "51198": 1, + "51205": 1, + "51208": 1, + "51209": 1, + "51211": 1, + "51212": 1, + "51216": 1, + "51220": 1, + "51221": 1, + "51223": 2, + "51226": 2, + "51234": 1, + "51235": 1, + "51243": 1, + "51244": 2, + "51246": 2, + "51247": 1, + "51249": 4, + "51250": 2, + "51251": 1, + "51252": 1, + "51253": 1, + "51255": 2, + "51256": 1, + "51257": 1, + "51259": 2, + "51260": 1, + "51261": 1, + "51265": 1, + "51266": 1, + "51271": 1, + "51279": 1, + "51282": 1, + "51283": 1, + "51285": 1, + "51290": 1, + "51292": 2, + "51293": 1, + "51296": 1, + "51299": 1, + "51301": 1, + "51302": 1, + "51303": 1, + "51308": 1, + "51309": 1, + "51315": 1, + "51316": 2, + "51317": 1, + "51318": 2, + "51320": 1, + "51321": 1, + "51322": 4, + "51323": 1, + "51324": 1, + "51325": 1, + "51327": 1, + "51328": 1, + "51329": 2, + "51330": 3, + "51331": 2, + "51332": 1, + "51333": 1, + "51335": 1, + "51336": 1, + "51337": 1, + "51338": 1, + "51339": 1, + "51341": 1, + "51342": 1, + "51343": 1, + "51346": 1, + "51348": 2, + "51349": 1, + "51354": 1, + "51355": 1, + "51356": 1, + "51357": 3, + "51360": 1, + "51363": 1, + "51364": 1, + "51365": 1, + "51366": 1, + "51367": 1, + "51370": 1, + "51375": 1, + "51377": 1, + "51381": 1, + "51383": 2, + "51384": 1, + "51385": 1, + "51386": 1, + "51389": 1, + "51392": 1, + "51394": 1, + "51395": 2, + "51397": 1, + "51403": 2, + "51422": 1, + "51722": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333437266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888208169e4e0bfe" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "08169e4e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_11.html b/autobahn/client/tungstenite_case_12_3_11.html new file mode 100644 index 0000000..5b8c025 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_11.html @@ -0,0 +1,952 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.11 : Pass - 1584 ms @ 2025-09-11T20:08:12.799Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=348&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: erlv/C9F4+TUmI+RjfhUEQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Hq4a+vhDrcgNI+1Yw5MVkiuI+20=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
254312543
255812558
256012560
256512565
262212622
265612656
266812668
267112671
268512685
269212692
269912699
271912719
272612726
277412774
277512775
277712777
278412784
280212802
281812818
281925638
283112831
283512835
284212842
284312843
285812858
286012860
286212862
287612876
290312903
291712917
292412924
292712927
293412934
293612936
293912939
294012940
294412944
295812958
296412964
297912979
298812988
298912989
299312993
299425988
299525990
300313003
300713007
301113011
301213012
301313013
302113021
302213022
302526050
302913029
303013030
303513035
303726074
303913039
304239126
304313043
304439132
304626092
304726094
304826096
304926098
305026100
305113051
3052412208
305313053
305413054
305539165
305626112
3057412228
305813058
305926118
3060412240
306126122
306226124
306326126
306439192
306513065
306726134
306813068
306913069
307013070
307126142
307239216
307313073
307426148
307539225
307626152
307726154
307826156
3079618474
3080618480
308139243
308213082
3083515415
3084515420
3085412340
308613086
3087412348
308839264
3089721623
309039270
309139273
309226184
309313093
3094515470
309539285
309639288
309739291
3098412392
3099515495
310026200
3101515505
310239306
310339309
310426208
310539315
310626212
3107412428
3108412432
3109618654
311039330
311126222
3112412448
311326226
311413114
311526230
3116928044
311713117
3118412472
3119618714
3120618720
3121412484
3122515610
312339369
312439372
3125515625
312613126
312739381
3128721896
3129618774
3130515650
3131618786
313239396
313326266
3134515670
313526270
3136412544
313726274
3138515690
3139412556
3140412560
314126282
314426288
314626292
314739441
314813148
314939447
3150412600
315213152
3153412612
3154515770
315513155
315639468
315726314
3159412636
316139483
316226324
316339489
316413164
316526330
316639498
316739501
316826336
3169515845
317013170
3171412684
317326346
317513175
317613176
317726354
317813178
317926358
3180515900
318113181
318239546
318339549
318513185
318639558
318713187
3188412752
3189515945
319013190
319213192
3193412772
319413194
319539585
319626392
319713197
319813198
319926398
320039600
320239606
320339609
3204516020
3205412820
3207516035
320839624
3209412836
321013210
3211412844
321213212
3214412856
321539645
3217516085
321826436
3219412876
322026440
322126442
322226444
3223516115
322413224
322539675
322613226
322726454
3228516140
322939687
323013230
323139693
323239696
323326466
323413234
323539705
3236412944
323726474
323826476
323926478
324039720
3241516205
324226484
324326486
324426488
3245412980
324613246
324739741
324813248
324913249
3250413000
325113251
325326506
325413254
3255516275
325613256
325713257
3258413032
325913259
3260413040
326113261
326213262
326339789
326413264
326613266
3267413068
326826536
3269516345
3270516350
327139813
327213272
327339819
3274413096
3275413100
327739831
3279516395
328039840
3281413124
3282619692
3283619698
328426568
3285413140
328639858
328739861
328813288
3289723023
329013290
329139873
329213292
3293413172
329413294
3295619770
329626592
329739891
3298619788
3299516495
3300929700
3301723107
3302723114
3303619818
3304619824
3306413224
3307516535
3308516540
330939927
3310413240
331139933
331226624
3313516565
3314413256
331526630
3316619896
331813318
3319413276
332139963
332239966
332339969
3324723268
332539975
332626652
332713327
332813328
333039990
333113331
333226664
333313333
333513335
333813338
333926678
334013340
334213342
3344413376
334513345
334813348
3353310059
335426708
335513355
3356310068
3358413432
336013360
336113361
336226724
3363516815
3364413456
336513365
336626732
336813368
336926738
337013370
337126742
3373310119
337426748
337526750
337626752
337713377
337813378
3379413516
338013380
338113381
3382620292
3383310149
3384413536
338513385
338626772
338713387
338813388
338913389
339026780
339113391
339213392
339313393
339626792
339813398
340213402
340826816
341013410
341426828
341513415
341613416
341826836
341913419
342113421
342413424
343113431
344513445
345013450
346513465
347326946
348013480
348713487
349226984
349713497
350313503
351013510
351113511
351513515
355127102
355213552
355627112
356013560
356213562
356513565
357613576
359513595
359913599
360113601
360213602
361113611
361213612
361713617
362013620
397913979
Total10023201844
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
2612
339
4312
5840
6636
7428
8216
9654
10770
11999
12448
13452
14342
15115
16580
17351
18354
196114
207140
218168
226132
235115
247168
25375
26378
275135
284112
299261
309270
317217
325160
33266
345170
354140
363108
374148
3810380
394156
407280
418328
428336
435215
446264
457315
464184
476282
487336
496294
5011550
517357
527364
537371
545270
553165
568448
573171
585290
593177
605300
614244
626372
632126
64164
662132
683204
693207
70170
713213
724288
743222
754300
766456
77177
783234
792158
802160
816486
82182
833249
844336
854340
86186
873261
883264
893267
904360
915455
92192
934372
953285
972194
98198
992198
1001100
1012202
1027714
1031103
1043312
1055525
1071107
1083324
1091109
1104440
1116666
1122224
1142228
1154460
1162232
1174468
1183354
1192238
1201120
1212242
1224488
1243372
1253375
1266756
1274508
1315655
1323396
1335665
1341134
1356810
1361136
1385690
1393417
1417987
1422284
1434572
1443432
1452290
1462292
1475735
1482296
1493447
1501150
1512302
1525760
1533459
1541154
1555775
1563468
1572314
1581158
1594636
1606960
1612322
1623486
1632326
1643492
1656990
1662332
1672334
1683504
1695845
1701170
1714684
1721172
1732346
17461044
1753525
1772354
1782356
17961074
1801180
1811181
1824728
1833549
1844736
1851185
1861186
1874748
1881188
1901190
1915955
1923576
19361158
1945970
1953585
1961196
1973591
1984792
1994796
2014804
2021202
20351015
2043612
20561230
20661236
20761242
2082416
20951045
21051050
2114844
2121212
21381704
2141214
2154860
2161216
21761302
2181218
21991971
2204880
2213663
22291998
22361338
224143136
22571575
22692034
22781816
22892052
2292458
23071610
23161386
23292088
23351165
23451170
23571645
2364944
23792133
23861428
2394956
240102400
2412482
2423726
24361458
2444976
2454980
2463738
24751235
24881984
2494996
25041000
2513753
25261512
2531253
25461524
25561530
25641024
25741028
2582516
25971813
260119803114800
Total129823244763
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
011980
21000
81
Total12981
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333438266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882f1883dc1f260
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6631383833646331
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_11.json b/autobahn/client/tungstenite_case_12_3_11.json new file mode 100644 index 0000000..6f995a0 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_11.json @@ -0,0 +1,799 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 348, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1584, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=348&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: erlv/C9F4+TUmI+RjfhUEQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Hq4a+vhDrcgNI+1Yw5MVkiuI+20=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2543": 1, + "2558": 1, + "2560": 1, + "2565": 1, + "2622": 1, + "2656": 1, + "2668": 1, + "2671": 1, + "2685": 1, + "2692": 1, + "2699": 1, + "2719": 1, + "2726": 1, + "2774": 1, + "2775": 1, + "2777": 1, + "2784": 1, + "2802": 1, + "2818": 1, + "2819": 2, + "2831": 1, + "2835": 1, + "2842": 1, + "2843": 1, + "2858": 1, + "2860": 1, + "2862": 1, + "2876": 1, + "2903": 1, + "2917": 1, + "2924": 1, + "2927": 1, + "2934": 1, + "2936": 1, + "2939": 1, + "2940": 1, + "2944": 1, + "2958": 1, + "2964": 1, + "2979": 1, + "2988": 1, + "2989": 1, + "2993": 1, + "2994": 2, + "2995": 2, + "3003": 1, + "3007": 1, + "3011": 1, + "3012": 1, + "3013": 1, + "3021": 1, + "3022": 1, + "3025": 2, + "3029": 1, + "3030": 1, + "3035": 1, + "3037": 2, + "3039": 1, + "3042": 3, + "3043": 1, + "3044": 3, + "3046": 2, + "3047": 2, + "3048": 2, + "3049": 2, + "3050": 2, + "3051": 1, + "3052": 4, + "3053": 1, + "3054": 1, + "3055": 3, + "3056": 2, + "3057": 4, + "3058": 1, + "3059": 2, + "3060": 4, + "3061": 2, + "3062": 2, + "3063": 2, + "3064": 3, + "3065": 1, + "3067": 2, + "3068": 1, + "3069": 1, + "3070": 1, + "3071": 2, + "3072": 3, + "3073": 1, + "3074": 2, + "3075": 3, + "3076": 2, + "3077": 2, + "3078": 2, + "3079": 6, + "3080": 6, + "3081": 3, + "3082": 1, + "3083": 5, + "3084": 5, + "3085": 4, + "3086": 1, + "3087": 4, + "3088": 3, + "3089": 7, + "3090": 3, + "3091": 3, + "3092": 2, + "3093": 1, + "3094": 5, + "3095": 3, + "3096": 3, + "3097": 3, + "3098": 4, + "3099": 5, + "3100": 2, + "3101": 5, + "3102": 3, + "3103": 3, + "3104": 2, + "3105": 3, + "3106": 2, + "3107": 4, + "3108": 4, + "3109": 6, + "3110": 3, + "3111": 2, + "3112": 4, + "3113": 2, + "3114": 1, + "3115": 2, + "3116": 9, + "3117": 1, + "3118": 4, + "3119": 6, + "3120": 6, + "3121": 4, + "3122": 5, + "3123": 3, + "3124": 3, + "3125": 5, + "3126": 1, + "3127": 3, + "3128": 7, + "3129": 6, + "3130": 5, + "3131": 6, + "3132": 3, + "3133": 2, + "3134": 5, + "3135": 2, + "3136": 4, + "3137": 2, + "3138": 5, + "3139": 4, + "3140": 4, + "3141": 2, + "3144": 2, + "3146": 2, + "3147": 3, + "3148": 1, + "3149": 3, + "3150": 4, + "3152": 1, + "3153": 4, + "3154": 5, + "3155": 1, + "3156": 3, + "3157": 2, + "3159": 4, + "3161": 3, + "3162": 2, + "3163": 3, + "3164": 1, + "3165": 2, + "3166": 3, + "3167": 3, + "3168": 2, + "3169": 5, + "3170": 1, + "3171": 4, + "3173": 2, + "3175": 1, + "3176": 1, + "3177": 2, + "3178": 1, + "3179": 2, + "3180": 5, + "3181": 1, + "3182": 3, + "3183": 3, + "3185": 1, + "3186": 3, + "3187": 1, + "3188": 4, + "3189": 5, + "3190": 1, + "3192": 1, + "3193": 4, + "3194": 1, + "3195": 3, + "3196": 2, + "3197": 1, + "3198": 1, + "3199": 2, + "3200": 3, + "3202": 3, + "3203": 3, + "3204": 5, + "3205": 4, + "3207": 5, + "3208": 3, + "3209": 4, + "3210": 1, + "3211": 4, + "3212": 1, + "3214": 4, + "3215": 3, + "3217": 5, + "3218": 2, + "3219": 4, + "3220": 2, + "3221": 2, + "3222": 2, + "3223": 5, + "3224": 1, + "3225": 3, + "3226": 1, + "3227": 2, + "3228": 5, + "3229": 3, + "3230": 1, + "3231": 3, + "3232": 3, + "3233": 2, + "3234": 1, + "3235": 3, + "3236": 4, + "3237": 2, + "3238": 2, + "3239": 2, + "3240": 3, + "3241": 5, + "3242": 2, + "3243": 2, + "3244": 2, + "3245": 4, + "3246": 1, + "3247": 3, + "3248": 1, + "3249": 1, + "3250": 4, + "3251": 1, + "3253": 2, + "3254": 1, + "3255": 5, + "3256": 1, + "3257": 1, + "3258": 4, + "3259": 1, + "3260": 4, + "3261": 1, + "3262": 1, + "3263": 3, + "3264": 1, + "3266": 1, + "3267": 4, + "3268": 2, + "3269": 5, + "3270": 5, + "3271": 3, + "3272": 1, + "3273": 3, + "3274": 4, + "3275": 4, + "3277": 3, + "3279": 5, + "3280": 3, + "3281": 4, + "3282": 6, + "3283": 6, + "3284": 2, + "3285": 4, + "3286": 3, + "3287": 3, + "3288": 1, + "3289": 7, + "3290": 1, + "3291": 3, + "3292": 1, + "3293": 4, + "3294": 1, + "3295": 6, + "3296": 2, + "3297": 3, + "3298": 6, + "3299": 5, + "3300": 9, + "3301": 7, + "3302": 7, + "3303": 6, + "3304": 6, + "3306": 4, + "3307": 5, + "3308": 5, + "3309": 3, + "3310": 4, + "3311": 3, + "3312": 2, + "3313": 5, + "3314": 4, + "3315": 2, + "3316": 6, + "3318": 1, + "3319": 4, + "3321": 3, + "3322": 3, + "3323": 3, + "3324": 7, + "3325": 3, + "3326": 2, + "3327": 1, + "3328": 1, + "3330": 3, + "3331": 1, + "3332": 2, + "3333": 1, + "3335": 1, + "3338": 1, + "3339": 2, + "3340": 1, + "3342": 1, + "3344": 4, + "3345": 1, + "3348": 1, + "3353": 3, + "3354": 2, + "3355": 1, + "3356": 3, + "3358": 4, + "3360": 1, + "3361": 1, + "3362": 2, + "3363": 5, + "3364": 4, + "3365": 1, + "3366": 2, + "3368": 1, + "3369": 2, + "3370": 1, + "3371": 2, + "3373": 3, + "3374": 2, + "3375": 2, + "3376": 2, + "3377": 1, + "3378": 1, + "3379": 4, + "3380": 1, + "3381": 1, + "3382": 6, + "3383": 3, + "3384": 4, + "3385": 1, + "3386": 2, + "3387": 1, + "3388": 1, + "3389": 1, + "3390": 2, + "3391": 1, + "3392": 1, + "3393": 1, + "3396": 2, + "3398": 1, + "3402": 1, + "3408": 2, + "3410": 1, + "3414": 2, + "3415": 1, + "3416": 1, + "3418": 2, + "3419": 1, + "3421": 1, + "3424": 1, + "3431": 1, + "3445": 1, + "3450": 1, + "3465": 1, + "3473": 2, + "3480": 1, + "3487": 1, + "3492": 2, + "3497": 1, + "3503": 1, + "3510": 1, + "3511": 1, + "3515": 1, + "3551": 2, + "3552": 1, + "3556": 2, + "3560": 1, + "3562": 1, + "3565": 1, + "3576": 1, + "3595": 1, + "3599": 1, + "3601": 1, + "3602": 1, + "3611": 1, + "3612": 1, + "3617": 1, + "3620": 1, + "3979": 1 + }, + "started": "2025-09-11T20:08:12.799Z", + "trafficStats": { + "incomingCompressionRatio": 0.3898411865234375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 3193579, + "incomingOctetsWireLevel": 3201579, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0025050264922207967, + "outgoingCompressionRatio": 0.3898411865234375, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 3193579, + "outgoingOctetsWireLevel": 3244507, + "outgoingWebSocketFrames": 12980, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015946998649477594, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 11980, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 6, + "3": 3, + "4": 3, + "5": 8, + "6": 6, + "7": 4, + "8": 2, + "9": 6, + "10": 7, + "11": 9, + "12": 4, + "13": 4, + "14": 3, + "15": 1, + "16": 5, + "17": 3, + "18": 3, + "19": 6, + "20": 7, + "21": 8, + "22": 6, + "23": 5, + "24": 7, + "25": 3, + "26": 3, + "27": 5, + "28": 4, + "29": 9, + "30": 9, + "31": 7, + "32": 5, + "33": 2, + "34": 5, + "35": 4, + "36": 3, + "37": 4, + "38": 10, + "39": 4, + "40": 7, + "41": 8, + "42": 8, + "43": 5, + "44": 6, + "45": 7, + "46": 4, + "47": 6, + "48": 7, + "49": 6, + "50": 11, + "51": 7, + "52": 7, + "53": 7, + "54": 5, + "55": 3, + "56": 8, + "57": 3, + "58": 5, + "59": 3, + "60": 5, + "61": 4, + "62": 6, + "63": 2, + "64": 1, + "66": 2, + "68": 3, + "69": 3, + "70": 1, + "71": 3, + "72": 4, + "74": 3, + "75": 4, + "76": 6, + "77": 1, + "78": 3, + "79": 2, + "80": 2, + "81": 6, + "82": 1, + "83": 3, + "84": 4, + "85": 4, + "86": 1, + "87": 3, + "88": 3, + "89": 3, + "90": 4, + "91": 5, + "92": 1, + "93": 4, + "95": 3, + "97": 2, + "98": 1, + "99": 2, + "100": 1, + "101": 2, + "102": 7, + "103": 1, + "104": 3, + "105": 5, + "107": 1, + "108": 3, + "109": 1, + "110": 4, + "111": 6, + "112": 2, + "114": 2, + "115": 4, + "116": 2, + "117": 4, + "118": 3, + "119": 2, + "120": 1, + "121": 2, + "122": 4, + "124": 3, + "125": 3, + "126": 6, + "127": 4, + "131": 5, + "132": 3, + "133": 5, + "134": 1, + "135": 6, + "136": 1, + "138": 5, + "139": 3, + "141": 7, + "142": 2, + "143": 4, + "144": 3, + "145": 2, + "146": 2, + "147": 5, + "148": 2, + "149": 3, + "150": 1, + "151": 2, + "152": 5, + "153": 3, + "154": 1, + "155": 5, + "156": 3, + "157": 2, + "158": 1, + "159": 4, + "160": 6, + "161": 2, + "162": 3, + "163": 2, + "164": 3, + "165": 6, + "166": 2, + "167": 2, + "168": 3, + "169": 5, + "170": 1, + "171": 4, + "172": 1, + "173": 2, + "174": 6, + "175": 3, + "177": 2, + "178": 2, + "179": 6, + "180": 1, + "181": 1, + "182": 4, + "183": 3, + "184": 4, + "185": 1, + "186": 1, + "187": 4, + "188": 1, + "190": 1, + "191": 5, + "192": 3, + "193": 6, + "194": 5, + "195": 3, + "196": 1, + "197": 3, + "198": 4, + "199": 4, + "201": 4, + "202": 1, + "203": 5, + "204": 3, + "205": 6, + "206": 6, + "207": 6, + "208": 2, + "209": 5, + "210": 5, + "211": 4, + "212": 1, + "213": 8, + "214": 1, + "215": 4, + "216": 1, + "217": 6, + "218": 1, + "219": 9, + "220": 4, + "221": 3, + "222": 9, + "223": 6, + "224": 14, + "225": 7, + "226": 9, + "227": 8, + "228": 9, + "229": 2, + "230": 7, + "231": 6, + "232": 9, + "233": 5, + "234": 5, + "235": 7, + "236": 4, + "237": 9, + "238": 6, + "239": 4, + "240": 10, + "241": 2, + "242": 3, + "243": 6, + "244": 4, + "245": 4, + "246": 3, + "247": 5, + "248": 8, + "249": 4, + "250": 4, + "251": 3, + "252": 6, + "253": 1, + "254": 6, + "255": 6, + "256": 4, + "257": 4, + "258": 2, + "259": 7, + "260": 11980 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333438266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f1883dc1f260" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f1883dc1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_12.html b/autobahn/client/tungstenite_case_12_3_12.html new file mode 100644 index 0000000..a7ae163 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_12.html @@ -0,0 +1,1101 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.12 : Pass - 2463 ms @ 2025-09-11T20:08:14.384Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=349&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 5yOIPqCXKKwTsSh56/XE1w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: IcKKIYCCc5+AQJS7rDcc+7bZ3Yk=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
552115521
553415534
554315543
558015580
558515585
561815618
562015620
562315623
563115631
565915659
567915679
568615686
570015700
572015720
572715727
574015740
575115751
576915769
580815808
581715817
582615826
585615856
585715857
587515875
587915879
588515885
588615886
589215892
589615896
589815898
590015900
590315903
590415904
5905211810
591015910
591515915
591715917
591815918
592715927
592915929
593315933
5934211868
594215942
594815948
595715957
596515965
596815968
597815978
5984211968
598515985
598815988
599015990
599215992
599315993
6000212000
600516005
601516015
602716027
602916029
603016030
603116031
603916039
604116041
605016050
605516055
6056212112
6061212122
6063212126
606416064
606516065
606616066
606916069
607116071
607216072
607316073
6074212148
6079212158
608716087
608816088
6091212182
6092212184
609416094
6097212194
609916099
610116101
610216102
610316103
6104424416
6106212212
610816108
6110212220
611116111
6112212224
6113212226
611416114
611516115
6116212232
6117318351
6118212236
6119530595
6121212242
612216122
6123636738
6124212248
6125212250
6126212252
6127530635
6128424512
612916129
6130318390
6131318393
6133530665
613416134
613616136
6138424552
6139318417
614016140
6141212282
614216142
614316143
614416144
6145212290
614716147
614816148
6150212300
615116151
615316153
6154212308
615516155
615616156
6157318471
6158212316
6159212318
616016160
616216162
6163212326
6164212328
6165424660
616616166
6167318501
616916169
6170318510
617116171
617216172
6173318519
6174318522
617516175
6176318528
617716177
6178424712
618016180
618316183
618416184
6185637110
618616186
6187318561
6188212376
618916189
6190318570
6191212382
619216192
619416194
6195212390
619616196
6197530985
6198318594
6199318597
6200212400
6201212402
6202212404
6203637218
6204424816
620516205
6206424824
6207318621
6208743456
620916209
621016210
6211424844
6212531060
621316213
6214212428
6215212430
621616216
6217318651
6218318654
6219318657
6220424880
6221424884
6222531110
6223637338
6224212448
6225212450
6227318681
6228212456
6229743603
623016230
623116231
623216232
6233424932
6234212468
6235318705
6236212472
623716237
6238212476
6239318717
6240212480
6241318723
624216242
6243318729
6244212488
6245424980
624616246
6247424988
624816248
625016250
6252212504
6253212506
625416254
6255212510
6257318771
6258212516
625916259
626016260
626216262
6264318792
6266318798
626716267
6268212536
626916269
627016270
6272212544
627316273
6276212552
627816278
628016280
6287212574
6289318867
629016290
6291318873
629216292
629316293
6294212588
6295425180
629616296
6297212594
6298212596
629916299
6300212600
630116301
630216302
630316303
630416304
6305318915
6306212612
6307212614
6309212618
6310212620
6312212624
631316313
631716317
631816318
6320318960
632216322
6323531615
632416324
6327212654
632816328
6330318990
633116331
6332212664
633316333
6334212668
633516335
6336319008
6337425348
6339212678
634016340
6342319026
6343425372
6344319032
6345425380
634616346
6347425388
6348212696
6349212698
635016350
6352425408
6353212706
635416354
6355212710
6356425424
6358212716
6359425436
6360212720
636116361
636316363
6367425468
6368319104
6369212738
6371212742
637216372
637316373
6374212748
637616376
637916379
6380212760
638116381
638416384
638516385
6391212782
639316393
640016400
640216402
640816408
6410212820
641116411
641216412
641316413
641916419
642016420
642316423
642416424
642616426
642716427
642816428
642916429
6431212862
643216432
643316433
643516435
643616436
643816438
643916439
644216442
644316443
6444319332
644816448
645016450
645116451
645216452
645316453
645716457
6458425832
646016460
646116461
6462319386
6467212934
6468212936
6469212938
647016470
6472425888
647416474
647616476
6477212954
647816478
6479212958
6480532400
6481425924
6482532410
6484212968
6485319455
6486212972
648716487
648816488
6489212978
6490319470
649116491
6492212984
6494212988
6495212990
649616496
649716497
6498212996
6500213000
650116501
650216502
6503213006
6504213008
6505426020
6506213012
6507213014
6508319524
650916509
6510426040
6511213022
6512319536
651316513
651416514
6515319545
6516213032
6518213036
652016520
6521319563
6523213046
6525213050
6526532630
6527426108
652816528
6529213058
6530319590
6531319593
6532319596
6533319599
6534639204
6535532675
6536319608
6537319611
6538639228
6539532695
6540319620
6541426164
6542426168
6543852344
6544426176
6545319635
6546426184
6547319641
6548213096
6549639294
6551319653
655216552
6553213106
655416554
6555319665
655616556
6557213114
655816558
6559319677
656016560
6561426244
6562213124
6564319692
6565319695
656616566
656716567
6568319704
656916569
657016570
657116571
6572213144
657416574
657616576
657716577
657916579
658116581
658216582
658316583
6585426340
6586213172
658816588
6589213178
659216592
6595213190
660216602
660316603
660516605
6610213220
6612319836
6617213234
661816618
661916619
662016620
6623213246
662416624
6628213256
6629213258
663016630
663216632
663316633
663416634
663716637
664116641
664316643
664416644
6647213294
6648319944
664916649
665016650
665416654
665516655
665916659
666016660
666116661
666316663
666416664
666716667
667516675
667816678
668916689
669416694
669816698
670216702
6712213424
672416724
672616726
6729213458
673416734
6735213470
673716737
673816738
674316743
674716747
6753213506
675516755
675616756
675716757
675916759
6761213522
676416764
676516765
676916769
677016770
6771213542
677316773
677516775
677616776
677816778
678216782
678516785
680616806
680816808
681116811
681516815
681716817
682316823
682716827
683116831
683216832
684116841
684416844
684816848
686616866
686916869
688516885
688616886
690116901
691616916
692516925
692816928
693916939
695116951
695516955
6964213928
696616966
696816968
697216972
698116981
698616986
698716987
699716997
739117391
Total10026348258
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
236
313
4624
5315
6318
7535
8216
9327
10330
11222
12112
13452
14342
15460
16348
17468
18118
19119
20480
215105
22244
235115
24496
25375
264104
27381
284112
29129
30260
32264
334132
34134
357245
363108
375185
385190
39278
406240
413123
42284
44288
453135
464184
476282
486288
493147
505250
513153
526312
536318
547378
552110
567392
573171
587406
59159
60160
616366
629558
635315
644256
652130
665330
675335
685340
694276
705350
717497
727504
7310730
748592
757525
766456
773231
784312
7911869
803240
813243
823246
836498
846504
855425
864344
87187
884352
896534
905450
917637
923276
934372
946564
956570
963288
977679
984392
997693
1003300
1012202
1027714
1034412
1045520
1054420
1065530
1075535
1084432
1096654
1103330
1112222
1123336
1132226
1145570
1153345
1164464
1173351
1182236
1193357
1207840
1215605
1223366
1234492
1243372
1253375
1265630
1273381
1307910
1315655
1324528
1334532
1346804
1356810
1363408
1375685
1385690
139111529
1404560
1417987
1425710
1436858
1443432
14571015
1463438
14781176
1483444
1495745
1503450
1515755
1523456
1533459
1543462
1555775
1562312
15781256
1585790
1592318
1603480
1615805
1623486
1634652
16471148
1652330
1661166
1672334
1682336
1693507
1702340
1713513
17271204
1732346
1742348
17561050
1761176
1772354
1781178
1794716
1802360
18171267
18271274
1831183
1844736
1853555
1862372
1873561
1885940
1894756
1901190
1914764
1921192
1943582
1955975
1964784
1974788
1982396
19971393
20051000
2013603
2022404
2044816
20551025
2064824
2073621
20871456
2092418
2103630
21151055
21261272
2133639
2143642
2152430
2162432
2182436
21981752
22071540
22151105
2221222
2233669
22451120
22571575
22661356
22751135
2282456
2293687
2302460
23171617
2324928
2334932
2342468
23551175
23651180
2373711
2384952
23951195
2402480
24161446
2421242
24361458
2444976
2452490
24651230
2473741
2481248
2493747
2503750
2513753
2523756
2532506
2541254
2552510
25641024
2571257
2582516
2592518
260242806312800
Total252826440341
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
024280
21000
81
Total25281
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333439266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882e3e57414e00d
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6533653537343134
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_12.json b/autobahn/client/tungstenite_case_12_3_12.json new file mode 100644 index 0000000..9917a35 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_12.json @@ -0,0 +1,948 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 349, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2463, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=349&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 5yOIPqCXKKwTsSh56/XE1w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: IcKKIYCCc5+AQJS7rDcc+7bZ3Yk=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5521": 1, + "5534": 1, + "5543": 1, + "5580": 1, + "5585": 1, + "5618": 1, + "5620": 1, + "5623": 1, + "5631": 1, + "5659": 1, + "5679": 1, + "5686": 1, + "5700": 1, + "5720": 1, + "5727": 1, + "5740": 1, + "5751": 1, + "5769": 1, + "5808": 1, + "5817": 1, + "5826": 1, + "5856": 1, + "5857": 1, + "5875": 1, + "5879": 1, + "5885": 1, + "5886": 1, + "5892": 1, + "5896": 1, + "5898": 1, + "5900": 1, + "5903": 1, + "5904": 1, + "5905": 2, + "5910": 1, + "5915": 1, + "5917": 1, + "5918": 1, + "5927": 1, + "5929": 1, + "5933": 1, + "5934": 2, + "5942": 1, + "5948": 1, + "5957": 1, + "5965": 1, + "5968": 1, + "5978": 1, + "5984": 2, + "5985": 1, + "5988": 1, + "5990": 1, + "5992": 1, + "5993": 1, + "6000": 2, + "6005": 1, + "6015": 1, + "6027": 1, + "6029": 1, + "6030": 1, + "6031": 1, + "6039": 1, + "6041": 1, + "6050": 1, + "6055": 1, + "6056": 2, + "6061": 2, + "6063": 2, + "6064": 1, + "6065": 1, + "6066": 1, + "6069": 1, + "6071": 1, + "6072": 1, + "6073": 1, + "6074": 2, + "6079": 2, + "6087": 1, + "6088": 1, + "6091": 2, + "6092": 2, + "6094": 1, + "6097": 2, + "6099": 1, + "6101": 1, + "6102": 1, + "6103": 1, + "6104": 4, + "6106": 2, + "6108": 1, + "6110": 2, + "6111": 1, + "6112": 2, + "6113": 2, + "6114": 1, + "6115": 1, + "6116": 2, + "6117": 3, + "6118": 2, + "6119": 5, + "6121": 2, + "6122": 1, + "6123": 6, + "6124": 2, + "6125": 2, + "6126": 2, + "6127": 5, + "6128": 4, + "6129": 1, + "6130": 3, + "6131": 3, + "6133": 5, + "6134": 1, + "6136": 1, + "6138": 4, + "6139": 3, + "6140": 1, + "6141": 2, + "6142": 1, + "6143": 1, + "6144": 1, + "6145": 2, + "6147": 1, + "6148": 1, + "6150": 2, + "6151": 1, + "6153": 1, + "6154": 2, + "6155": 1, + "6156": 1, + "6157": 3, + "6158": 2, + "6159": 2, + "6160": 1, + "6162": 1, + "6163": 2, + "6164": 2, + "6165": 4, + "6166": 1, + "6167": 3, + "6169": 1, + "6170": 3, + "6171": 1, + "6172": 1, + "6173": 3, + "6174": 3, + "6175": 1, + "6176": 3, + "6177": 1, + "6178": 4, + "6180": 1, + "6183": 1, + "6184": 1, + "6185": 6, + "6186": 1, + "6187": 3, + "6188": 2, + "6189": 1, + "6190": 3, + "6191": 2, + "6192": 1, + "6194": 1, + "6195": 2, + "6196": 1, + "6197": 5, + "6198": 3, + "6199": 3, + "6200": 2, + "6201": 2, + "6202": 2, + "6203": 6, + "6204": 4, + "6205": 1, + "6206": 4, + "6207": 3, + "6208": 7, + "6209": 1, + "6210": 1, + "6211": 4, + "6212": 5, + "6213": 1, + "6214": 2, + "6215": 2, + "6216": 1, + "6217": 3, + "6218": 3, + "6219": 3, + "6220": 4, + "6221": 4, + "6222": 5, + "6223": 6, + "6224": 2, + "6225": 2, + "6227": 3, + "6228": 2, + "6229": 7, + "6230": 1, + "6231": 1, + "6232": 1, + "6233": 4, + "6234": 2, + "6235": 3, + "6236": 2, + "6237": 1, + "6238": 2, + "6239": 3, + "6240": 2, + "6241": 3, + "6242": 1, + "6243": 3, + "6244": 2, + "6245": 4, + "6246": 1, + "6247": 4, + "6248": 1, + "6250": 1, + "6252": 2, + "6253": 2, + "6254": 1, + "6255": 2, + "6257": 3, + "6258": 2, + "6259": 1, + "6260": 1, + "6262": 1, + "6264": 3, + "6266": 3, + "6267": 1, + "6268": 2, + "6269": 1, + "6270": 1, + "6272": 2, + "6273": 1, + "6276": 2, + "6278": 1, + "6280": 1, + "6287": 2, + "6289": 3, + "6290": 1, + "6291": 3, + "6292": 1, + "6293": 1, + "6294": 2, + "6295": 4, + "6296": 1, + "6297": 2, + "6298": 2, + "6299": 1, + "6300": 2, + "6301": 1, + "6302": 1, + "6303": 1, + "6304": 1, + "6305": 3, + "6306": 2, + "6307": 2, + "6309": 2, + "6310": 2, + "6312": 2, + "6313": 1, + "6317": 1, + "6318": 1, + "6320": 3, + "6322": 1, + "6323": 5, + "6324": 1, + "6327": 2, + "6328": 1, + "6330": 3, + "6331": 1, + "6332": 2, + "6333": 1, + "6334": 2, + "6335": 1, + "6336": 3, + "6337": 4, + "6339": 2, + "6340": 1, + "6342": 3, + "6343": 4, + "6344": 3, + "6345": 4, + "6346": 1, + "6347": 4, + "6348": 2, + "6349": 2, + "6350": 1, + "6352": 4, + "6353": 2, + "6354": 1, + "6355": 2, + "6356": 4, + "6358": 2, + "6359": 4, + "6360": 2, + "6361": 1, + "6363": 1, + "6367": 4, + "6368": 3, + "6369": 2, + "6371": 2, + "6372": 1, + "6373": 1, + "6374": 2, + "6376": 1, + "6379": 1, + "6380": 2, + "6381": 1, + "6384": 1, + "6385": 1, + "6391": 2, + "6393": 1, + "6400": 1, + "6402": 1, + "6408": 1, + "6410": 2, + "6411": 1, + "6412": 1, + "6413": 1, + "6419": 1, + "6420": 1, + "6423": 1, + "6424": 1, + "6426": 1, + "6427": 1, + "6428": 1, + "6429": 1, + "6431": 2, + "6432": 1, + "6433": 1, + "6435": 1, + "6436": 1, + "6438": 1, + "6439": 1, + "6442": 1, + "6443": 1, + "6444": 3, + "6448": 1, + "6450": 1, + "6451": 1, + "6452": 1, + "6453": 1, + "6457": 1, + "6458": 4, + "6460": 1, + "6461": 1, + "6462": 3, + "6467": 2, + "6468": 2, + "6469": 2, + "6470": 1, + "6472": 4, + "6474": 1, + "6476": 1, + "6477": 2, + "6478": 1, + "6479": 2, + "6480": 5, + "6481": 4, + "6482": 5, + "6484": 2, + "6485": 3, + "6486": 2, + "6487": 1, + "6488": 1, + "6489": 2, + "6490": 3, + "6491": 1, + "6492": 2, + "6494": 2, + "6495": 2, + "6496": 1, + "6497": 1, + "6498": 2, + "6500": 2, + "6501": 1, + "6502": 1, + "6503": 2, + "6504": 2, + "6505": 4, + "6506": 2, + "6507": 2, + "6508": 3, + "6509": 1, + "6510": 4, + "6511": 2, + "6512": 3, + "6513": 1, + "6514": 1, + "6515": 3, + "6516": 2, + "6518": 2, + "6520": 1, + "6521": 3, + "6523": 2, + "6525": 2, + "6526": 5, + "6527": 4, + "6528": 1, + "6529": 2, + "6530": 3, + "6531": 3, + "6532": 3, + "6533": 3, + "6534": 6, + "6535": 5, + "6536": 3, + "6537": 3, + "6538": 6, + "6539": 5, + "6540": 3, + "6541": 4, + "6542": 4, + "6543": 8, + "6544": 4, + "6545": 3, + "6546": 4, + "6547": 3, + "6548": 2, + "6549": 6, + "6551": 3, + "6552": 1, + "6553": 2, + "6554": 1, + "6555": 3, + "6556": 1, + "6557": 2, + "6558": 1, + "6559": 3, + "6560": 1, + "6561": 4, + "6562": 2, + "6564": 3, + "6565": 3, + "6566": 1, + "6567": 1, + "6568": 3, + "6569": 1, + "6570": 1, + "6571": 1, + "6572": 2, + "6574": 1, + "6576": 1, + "6577": 1, + "6579": 1, + "6581": 1, + "6582": 1, + "6583": 1, + "6585": 4, + "6586": 2, + "6588": 1, + "6589": 2, + "6592": 1, + "6595": 2, + "6602": 1, + "6603": 1, + "6605": 1, + "6610": 2, + "6612": 3, + "6617": 2, + "6618": 1, + "6619": 1, + "6620": 1, + "6623": 2, + "6624": 1, + "6628": 2, + "6629": 2, + "6630": 1, + "6632": 1, + "6633": 1, + "6634": 1, + "6637": 1, + "6641": 1, + "6643": 1, + "6644": 1, + "6647": 2, + "6648": 3, + "6649": 1, + "6650": 1, + "6654": 1, + "6655": 1, + "6659": 1, + "6660": 1, + "6661": 1, + "6663": 1, + "6664": 1, + "6667": 1, + "6675": 1, + "6678": 1, + "6689": 1, + "6694": 1, + "6698": 1, + "6702": 1, + "6712": 2, + "6724": 1, + "6726": 1, + "6729": 2, + "6734": 1, + "6735": 2, + "6737": 1, + "6738": 1, + "6743": 1, + "6747": 1, + "6753": 2, + "6755": 1, + "6756": 1, + "6757": 1, + "6759": 1, + "6761": 2, + "6764": 1, + "6765": 1, + "6769": 1, + "6770": 1, + "6771": 2, + "6773": 1, + "6775": 1, + "6776": 1, + "6778": 1, + "6782": 1, + "6785": 1, + "6806": 1, + "6808": 1, + "6811": 1, + "6815": 1, + "6817": 1, + "6823": 1, + "6827": 1, + "6831": 1, + "6832": 1, + "6841": 1, + "6844": 1, + "6848": 1, + "6866": 1, + "6869": 1, + "6885": 1, + "6886": 1, + "6901": 1, + "6916": 1, + "6925": 1, + "6928": 1, + "6939": 1, + "6951": 1, + "6955": 1, + "6964": 2, + "6966": 1, + "6968": 1, + "6972": 1, + "6981": 1, + "6986": 1, + "6987": 1, + "6997": 1, + "7391": 1 + }, + "started": "2025-09-11T20:08:14.384Z", + "trafficStats": { + "incomingCompressionRatio": 0.3869624633789063, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 6339993, + "incomingOctetsWireLevel": 6347993, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0012618310461856978, + "outgoingCompressionRatio": 0.3869624633789063, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 6339993, + "outgoingOctetsWireLevel": 6440085, + "outgoingWebSocketFrames": 25280, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015787399134352356, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 24280, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 3, + "3": 1, + "4": 6, + "5": 3, + "6": 3, + "7": 5, + "8": 2, + "9": 3, + "10": 3, + "11": 2, + "12": 1, + "13": 4, + "14": 3, + "15": 4, + "16": 3, + "17": 4, + "18": 1, + "19": 1, + "20": 4, + "21": 5, + "22": 2, + "23": 5, + "24": 4, + "25": 3, + "26": 4, + "27": 3, + "28": 4, + "29": 1, + "30": 2, + "32": 2, + "33": 4, + "34": 1, + "35": 7, + "36": 3, + "37": 5, + "38": 5, + "39": 2, + "40": 6, + "41": 3, + "42": 2, + "44": 2, + "45": 3, + "46": 4, + "47": 6, + "48": 6, + "49": 3, + "50": 5, + "51": 3, + "52": 6, + "53": 6, + "54": 7, + "55": 2, + "56": 7, + "57": 3, + "58": 7, + "59": 1, + "60": 1, + "61": 6, + "62": 9, + "63": 5, + "64": 4, + "65": 2, + "66": 5, + "67": 5, + "68": 5, + "69": 4, + "70": 5, + "71": 7, + "72": 7, + "73": 10, + "74": 8, + "75": 7, + "76": 6, + "77": 3, + "78": 4, + "79": 11, + "80": 3, + "81": 3, + "82": 3, + "83": 6, + "84": 6, + "85": 5, + "86": 4, + "87": 1, + "88": 4, + "89": 6, + "90": 5, + "91": 7, + "92": 3, + "93": 4, + "94": 6, + "95": 6, + "96": 3, + "97": 7, + "98": 4, + "99": 7, + "100": 3, + "101": 2, + "102": 7, + "103": 4, + "104": 5, + "105": 4, + "106": 5, + "107": 5, + "108": 4, + "109": 6, + "110": 3, + "111": 2, + "112": 3, + "113": 2, + "114": 5, + "115": 3, + "116": 4, + "117": 3, + "118": 2, + "119": 3, + "120": 7, + "121": 5, + "122": 3, + "123": 4, + "124": 3, + "125": 3, + "126": 5, + "127": 3, + "130": 7, + "131": 5, + "132": 4, + "133": 4, + "134": 6, + "135": 6, + "136": 3, + "137": 5, + "138": 5, + "139": 11, + "140": 4, + "141": 7, + "142": 5, + "143": 6, + "144": 3, + "145": 7, + "146": 3, + "147": 8, + "148": 3, + "149": 5, + "150": 3, + "151": 5, + "152": 3, + "153": 3, + "154": 3, + "155": 5, + "156": 2, + "157": 8, + "158": 5, + "159": 2, + "160": 3, + "161": 5, + "162": 3, + "163": 4, + "164": 7, + "165": 2, + "166": 1, + "167": 2, + "168": 2, + "169": 3, + "170": 2, + "171": 3, + "172": 7, + "173": 2, + "174": 2, + "175": 6, + "176": 1, + "177": 2, + "178": 1, + "179": 4, + "180": 2, + "181": 7, + "182": 7, + "183": 1, + "184": 4, + "185": 3, + "186": 2, + "187": 3, + "188": 5, + "189": 4, + "190": 1, + "191": 4, + "192": 1, + "194": 3, + "195": 5, + "196": 4, + "197": 4, + "198": 2, + "199": 7, + "200": 5, + "201": 3, + "202": 2, + "204": 4, + "205": 5, + "206": 4, + "207": 3, + "208": 7, + "209": 2, + "210": 3, + "211": 5, + "212": 6, + "213": 3, + "214": 3, + "215": 2, + "216": 2, + "218": 2, + "219": 8, + "220": 7, + "221": 5, + "222": 1, + "223": 3, + "224": 5, + "225": 7, + "226": 6, + "227": 5, + "228": 2, + "229": 3, + "230": 2, + "231": 7, + "232": 4, + "233": 4, + "234": 2, + "235": 5, + "236": 5, + "237": 3, + "238": 4, + "239": 5, + "240": 2, + "241": 6, + "242": 1, + "243": 6, + "244": 4, + "245": 2, + "246": 5, + "247": 3, + "248": 1, + "249": 3, + "250": 3, + "251": 3, + "252": 3, + "253": 2, + "254": 1, + "255": 2, + "256": 4, + "257": 1, + "258": 2, + "259": 2, + "260": 24280 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333439266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e3e57414e00d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e3e57414" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_13.html b/autobahn/client/tungstenite_case_12_3_13.html new file mode 100644 index 0000000..2a94cf0 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_13.html @@ -0,0 +1,1157 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.13 : Pass - 4677 ms @ 2025-09-11T20:08:16.849Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=350&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: dVPZQ30ADalJqK7/lEZ76g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UxSyYZQzAU4ZCWVxWxEg+eKyQf4=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
12099112099
12105112105
12119112119
12121112121
12129224258
12131112131
12133112133
12139112139
12146112146
12151112151
12154112154
12159112159
12160112160
12166112166
12170224340
12172112172
12175112175
12178112178
12184336552
12185224370
12187112187
12189112189
12190112190
12195112195
12197112197
12199112199
12201112201
12202224404
12205112205
12207224414
12208112208
12216112216
12218112218
12230112230
12231112231
12232112232
12234112234
12236112236
12239224478
12247112247
12248112248
12252112252
12253112253
12257112257
12258112258
12261224522
12264224528
12269336807
12278224556
12279112279
12281112281
12282112282
12283336849
12284336852
12285112285
12287112287
12289112289
12290112290
12291224582
12292112292
12294112294
12295224590
12296112296
12300112300
12302112302
12303112303
12304112304
12306112306
12307112307
12308112308
12311112311
12313224626
12316224632
12319112319
12320112320
12321112321
12323224646
12324449296
12327112327
12328224656
12329224658
12330224660
12331224662
12332112332
12334112334
12335112335
12336112336
12338112338
12339224678
12340112340
12342449368
12343112343
12344224688
12345449380
12346112346
12348224696
12349224698
12350112350
12351337053
12353337059
12354224708
12356112356
12357112357
12358224716
12360224720
12361224722
12362561810
12363337089
12364224728
12365224730
12366224732
12367224734
12368224736
12370224740
12371224742
12372337116
12373224746
12374449496
12375112375
12376112376
12377674262
12378224756
12379112379
12380449520
12381112381
12382337146
12383224766
12384224768
12385337155
12386224772
12387112387
12388224776
12389224778
12390449560
12391449564
12392337176
12393112393
12394899152
12395449580
12396449584
12397224794
12398337194
12399337197
12400449600
12401449604
12402562010
12403449612
12404337212
12405786835
12406449624
12407674442
12408449632
12409562045
12410562050
12411337233
12412674472
12413112413
12414224828
12415449660
12416562080
12417449668
12418449672
12419224838
12421449684
12422112422
12423337269
12424562120
12425562125
12426337278
12427449708
12428562140
12429224858
12430674580
12431449724
12432337296
1243411136774
12435562175
12436224872
12437674622
12438337314
12439112439
12440337320
12441337323
12442224884
12443112443
12444112444
12445337335
12446449784
12447224894
12448337344
12449337347
12450337350
12451224902
12452224904
12453224906
12454224908
12455112455
12456224912
12457449828
12458224916
12459112459
12460224920
12461224922
12462224924
12465112465
12466112466
12467224934
12468224936
12469224938
12470224940
12471112471
12472112472
12474112474
12476112476
12477112477
12478112478
12482337446
12483449932
12484224968
12486112486
12488224976
12491337473
12492112492
12493112493
12499112499
12500112500
12502112502
12503112503
12504112504
12507112507
12508112508
12510112510
12516112516
12517112517
12518112518
12519225038
12523112523
12524337572
12525112525
12526112526
12527112527
12528225056
12532337596
12533112533
12535337605
12536112536
12537225074
12539225078
12541337623
12542112542
12543337629
12546112546
12547112547
12548337644
12551112551
12552112552
12553225106
12555112555
12556112556
12557337671
12559112559
12560112560
12561112561
12562112562
12566225132
12569112569
12570337710
12572112572
12575112575
12576225152
12578112578
12579112579
12583112583
12587112587
12588112588
12591112591
12598112598
12599225198
12600112600
12601112601
12617112617
12619225238
12620112620
12623112623
12625112625
12628112628
12629112629
12630112630
12634112634
12635112635
12637112637
12638225276
12639225278
12641112641
12642337926
12646225292
12647112647
12648112648
12651112651
12652225304
12654337962
12656112656
12657225314
12658225316
12659225318
12661112661
12662112662
12663112663
12664112664
12665112665
12666112666
12667112667
12668112668
12670112670
12671112671
12674225348
12676112676
12680338040
12682112682
12683112683
12684112684
12685338055
12687112687
12689225378
12690225380
12692225384
12693112693
12695112695
12699112699
12701112701
12703112703
12704112704
12706112706
12707112707
12710112710
12712112712
12713112713
12715112715
12716112716
12717112717
12719338157
12720225440
12731112731
12734112734
12737112737
12741225482
12742112742
12745112745
12746112746
12748112748
12750225500
12751112751
12752225504
12753225506
12754112754
12757112757
12759112759
12766112766
12769112769
12771112771
12773112773
12774112774
12775112775
12776225552
12778225556
12779112779
12780112780
12781112781
12800112800
12802112802
12808112808
12810225620
12813225626
12814225628
12816225632
12817112817
12818112818
12820112820
12825112825
12826225652
12827112827
12828112828
12830112830
12831112831
12832225664
12833112833
12836112836
12840112840
12842112842
12843112843
12848112848
12850112850
12852225704
12853112853
12854112854
12857112857
12858112858
12860112860
12863112863
12872112872
12874112874
12879112879
12882112882
12883112883
12885225770
12888112888
12890112890
12893112893
12895112895
12896225792
12902225804
12903112903
12904225808
12906112906
12908225816
12910112910
12916112916
12917112917
12918225836
12919112919
12920112920
12922112922
12923112923
12929225858
12932112932
12933112933
12934225868
12935225870
12936112936
12937112937
12944225888
12947225894
12948225896
12949225898
12951338853
12954112954
12955225910
12958112958
12959112959
12961112961
12963338889
12965225930
12966112966
12969112969
12970112970
12971112971
12972112972
12974112974
12975112975
12976112976
12977112977
12978225956
12979112979
12981112981
12982112982
12987225974
12988225976
12989225978
12990225980
12991112991
12992225984
12993225986
12994225988
12995112995
12997112997
12998112998
12999112999
13000113000
13001113001
13002113002
13003339009
13004339012
13005113005
13006339018
13007113007
13008226016
13009113009
13010113010
13012226024
13013226026
13015113015
13017113017
13018113018
13019226038
13021226042
13025226050
13026113026
13029113029
13031339093
13034113034
13035113035
13040113040
13042113042
13054113054
13056113056
13058113058
13059113059
13064113064
13068113068
13080113080
13083113083
13087113087
13088113088
13096113096
13102113102
13105113105
13109113109
13112113112
13115113115
13122113122
13123113123
13124339372
13125113125
13126113126
13128226256
13129452516
13130113130
13131339393
13132113132
13134113134
13135113135
13137113137
13142226284
13155113155
13156113156
13161113161
13167113167
13181113181
13190226380
13191226382
13192113192
13197113197
13200113200
13217113217
13226113226
13243113243
13245113245
13252226504
13255113255
13263113263
13264113264
13265113265
13266113266
13268113268
13270113270
13271113271
13272113272
13273113273
13277113277
13283113283
13285113285
13287113287
13289113289
13290113290
13298113298
13311113311
13313113313
13314113314
13326113326
13329113329
13330113330
13332113332
13340113340
13345113345
13346113346
13353113353
13354113354
13358113358
13359113359
13361226722
13362113362
13365226730
13366113366
13371113371
13377113377
13381113381
13382113382
13383226766
13392226784
13394113394
13395113395
13397113397
13400113400
13403113403
13413113413
13415113415
13416226832
13422113422
13426113426
13427113427
13429113429
13436226872
13448113448
13455113455
13462113462
13467226934
13473113473
13487113487
13489113489
13517113517
13538113538
13540113540
13552113552
13556113556
13573113573
13603113603
13604113604
13605113605
13606113606
13613113613
14136114136
Total100212648489
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
248
326
4312
515
6318
7535
8432
9218
10440
11333
12448
13113
14342
16232
17117
18118
19476
205100
21242
225110
24124
254100
266156
27381
28256
294116
306180
31131
32132
33266
344136
353105
364144
374148
38276
39139
403120
413123
42284
433129
443132
45290
463138
474188
487336
493147
505250
516306
522104
532106
543162
552110
56156
574228
594236
603180
612122
624248
633189
644256
652130
665330
678536
687476
698552
704280
712142
723216
735365
744296
752150
764304
774308
784312
796474
807560
812162
823246
837581
844336
853255
864344
873261
885440
895445
904360
916546
925460
933279
943282
954380
968768
977679
988784
992198
1009900
1016606
1028816
1032206
1048832
1054420
1065530
1076642
1089972
1097763
1104440
111101110
1127784
11391017
1146684
1156690
1168928
1175585
11891062
1192238
1203360
1216726
1226732
1236738
1246744
1252250
1262252
1275635
1306780
1317917
132111452
1336798
1346804
1355675
1367952
1376822
1386828
1397973
1406840
1412282
142141988
14371001
1446864
14591305
1464584
1475735
1486888
1495745
1503450
15171057
1521152
1535765
1546924
1554620
1564624
1576942
1584632
15971113
1602320
1615805
1624648
1632326
1643492
16571155
1666996
1673501
1684672
1694676
1703510
17171197
1724688
1733519
1743522
1753525
1762352
1773531
1783534
1791179
1802360
1822364
1834732
1843552
1854740
1864744
1871187
1882376
1893567
1905950
1915955
1924768
1933579
1944776
1953585
1964784
1972394
1983594
19961194
20061200
2013603
20251010
20351015
20451020
2054820
2063618
2071207
2084832
2093627
2102420
21151055
2123636
2132426
2141214
2153645
2162432
2174868
2182436
2214884
2223666
2232446
2242448
22561350
2262452
22771589
2284912
2291229
2304920
2313693
2324928
23351165
2341234
2351235
2364944
2382476
2404960
2411241
2422484
2434972
2441244
2453735
2461246
24751235
2483744
2494996
2502500
25151255
2523756
2532506
25451270
25541020
25641024
2571257
2581258
2593777
2604888812710880
Total4989012839010
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
048888
21000
81
Total49889
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333530266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882c315be2bc0fd
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6333313562653262
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_13.json b/autobahn/client/tungstenite_case_12_3_13.json new file mode 100644 index 0000000..0e5048c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_13.json @@ -0,0 +1,1004 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 350, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 4677, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=350&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dVPZQ30ADalJqK7/lEZ76g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UxSyYZQzAU4ZCWVxWxEg+eKyQf4=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "12099": 1, + "12105": 1, + "12119": 1, + "12121": 1, + "12129": 2, + "12131": 1, + "12133": 1, + "12139": 1, + "12146": 1, + "12151": 1, + "12154": 1, + "12159": 1, + "12160": 1, + "12166": 1, + "12170": 2, + "12172": 1, + "12175": 1, + "12178": 1, + "12184": 3, + "12185": 2, + "12187": 1, + "12189": 1, + "12190": 1, + "12195": 1, + "12197": 1, + "12199": 1, + "12201": 1, + "12202": 2, + "12205": 1, + "12207": 2, + "12208": 1, + "12216": 1, + "12218": 1, + "12230": 1, + "12231": 1, + "12232": 1, + "12234": 1, + "12236": 1, + "12239": 2, + "12247": 1, + "12248": 1, + "12252": 1, + "12253": 1, + "12257": 1, + "12258": 1, + "12261": 2, + "12264": 2, + "12269": 3, + "12278": 2, + "12279": 1, + "12281": 1, + "12282": 1, + "12283": 3, + "12284": 3, + "12285": 1, + "12287": 1, + "12289": 1, + "12290": 1, + "12291": 2, + "12292": 1, + "12294": 1, + "12295": 2, + "12296": 1, + "12300": 1, + "12302": 1, + "12303": 1, + "12304": 1, + "12306": 1, + "12307": 1, + "12308": 1, + "12311": 1, + "12313": 2, + "12316": 2, + "12319": 1, + "12320": 1, + "12321": 1, + "12323": 2, + "12324": 4, + "12327": 1, + "12328": 2, + "12329": 2, + "12330": 2, + "12331": 2, + "12332": 1, + "12334": 1, + "12335": 1, + "12336": 1, + "12338": 1, + "12339": 2, + "12340": 1, + "12342": 4, + "12343": 1, + "12344": 2, + "12345": 4, + "12346": 1, + "12348": 2, + "12349": 2, + "12350": 1, + "12351": 3, + "12353": 3, + "12354": 2, + "12356": 1, + "12357": 1, + "12358": 2, + "12360": 2, + "12361": 2, + "12362": 5, + "12363": 3, + "12364": 2, + "12365": 2, + "12366": 2, + "12367": 2, + "12368": 2, + "12370": 2, + "12371": 2, + "12372": 3, + "12373": 2, + "12374": 4, + "12375": 1, + "12376": 1, + "12377": 6, + "12378": 2, + "12379": 1, + "12380": 4, + "12381": 1, + "12382": 3, + "12383": 2, + "12384": 2, + "12385": 3, + "12386": 2, + "12387": 1, + "12388": 2, + "12389": 2, + "12390": 4, + "12391": 4, + "12392": 3, + "12393": 1, + "12394": 8, + "12395": 4, + "12396": 4, + "12397": 2, + "12398": 3, + "12399": 3, + "12400": 4, + "12401": 4, + "12402": 5, + "12403": 4, + "12404": 3, + "12405": 7, + "12406": 4, + "12407": 6, + "12408": 4, + "12409": 5, + "12410": 5, + "12411": 3, + "12412": 6, + "12413": 1, + "12414": 2, + "12415": 4, + "12416": 5, + "12417": 4, + "12418": 4, + "12419": 2, + "12421": 4, + "12422": 1, + "12423": 3, + "12424": 5, + "12425": 5, + "12426": 3, + "12427": 4, + "12428": 5, + "12429": 2, + "12430": 6, + "12431": 4, + "12432": 3, + "12434": 11, + "12435": 5, + "12436": 2, + "12437": 6, + "12438": 3, + "12439": 1, + "12440": 3, + "12441": 3, + "12442": 2, + "12443": 1, + "12444": 1, + "12445": 3, + "12446": 4, + "12447": 2, + "12448": 3, + "12449": 3, + "12450": 3, + "12451": 2, + "12452": 2, + "12453": 2, + "12454": 2, + "12455": 1, + "12456": 2, + "12457": 4, + "12458": 2, + "12459": 1, + "12460": 2, + "12461": 2, + "12462": 2, + "12465": 1, + "12466": 1, + "12467": 2, + "12468": 2, + "12469": 2, + "12470": 2, + "12471": 1, + "12472": 1, + "12474": 1, + "12476": 1, + "12477": 1, + "12478": 1, + "12482": 3, + "12483": 4, + "12484": 2, + "12486": 1, + "12488": 2, + "12491": 3, + "12492": 1, + "12493": 1, + "12499": 1, + "12500": 1, + "12502": 1, + "12503": 1, + "12504": 1, + "12507": 1, + "12508": 1, + "12510": 1, + "12516": 1, + "12517": 1, + "12518": 1, + "12519": 2, + "12523": 1, + "12524": 3, + "12525": 1, + "12526": 1, + "12527": 1, + "12528": 2, + "12532": 3, + "12533": 1, + "12535": 3, + "12536": 1, + "12537": 2, + "12539": 2, + "12541": 3, + "12542": 1, + "12543": 3, + "12546": 1, + "12547": 1, + "12548": 3, + "12551": 1, + "12552": 1, + "12553": 2, + "12555": 1, + "12556": 1, + "12557": 3, + "12559": 1, + "12560": 1, + "12561": 1, + "12562": 1, + "12566": 2, + "12569": 1, + "12570": 3, + "12572": 1, + "12575": 1, + "12576": 2, + "12578": 1, + "12579": 1, + "12583": 1, + "12587": 1, + "12588": 1, + "12591": 1, + "12598": 1, + "12599": 2, + "12600": 1, + "12601": 1, + "12617": 1, + "12619": 2, + "12620": 1, + "12623": 1, + "12625": 1, + "12628": 1, + "12629": 1, + "12630": 1, + "12634": 1, + "12635": 1, + "12637": 1, + "12638": 2, + "12639": 2, + "12641": 1, + "12642": 3, + "12646": 2, + "12647": 1, + "12648": 1, + "12651": 1, + "12652": 2, + "12654": 3, + "12656": 1, + "12657": 2, + "12658": 2, + "12659": 2, + "12661": 1, + "12662": 1, + "12663": 1, + "12664": 1, + "12665": 1, + "12666": 1, + "12667": 1, + "12668": 1, + "12670": 1, + "12671": 1, + "12674": 2, + "12676": 1, + "12680": 3, + "12682": 1, + "12683": 1, + "12684": 1, + "12685": 3, + "12687": 1, + "12689": 2, + "12690": 2, + "12692": 2, + "12693": 1, + "12695": 1, + "12699": 1, + "12701": 1, + "12703": 1, + "12704": 1, + "12706": 1, + "12707": 1, + "12710": 1, + "12712": 1, + "12713": 1, + "12715": 1, + "12716": 1, + "12717": 1, + "12719": 3, + "12720": 2, + "12731": 1, + "12734": 1, + "12737": 1, + "12741": 2, + "12742": 1, + "12745": 1, + "12746": 1, + "12748": 1, + "12750": 2, + "12751": 1, + "12752": 2, + "12753": 2, + "12754": 1, + "12757": 1, + "12759": 1, + "12766": 1, + "12769": 1, + "12771": 1, + "12773": 1, + "12774": 1, + "12775": 1, + "12776": 2, + "12778": 2, + "12779": 1, + "12780": 1, + "12781": 1, + "12800": 1, + "12802": 1, + "12808": 1, + "12810": 2, + "12813": 2, + "12814": 2, + "12816": 2, + "12817": 1, + "12818": 1, + "12820": 1, + "12825": 1, + "12826": 2, + "12827": 1, + "12828": 1, + "12830": 1, + "12831": 1, + "12832": 2, + "12833": 1, + "12836": 1, + "12840": 1, + "12842": 1, + "12843": 1, + "12848": 1, + "12850": 1, + "12852": 2, + "12853": 1, + "12854": 1, + "12857": 1, + "12858": 1, + "12860": 1, + "12863": 1, + "12872": 1, + "12874": 1, + "12879": 1, + "12882": 1, + "12883": 1, + "12885": 2, + "12888": 1, + "12890": 1, + "12893": 1, + "12895": 1, + "12896": 2, + "12902": 2, + "12903": 1, + "12904": 2, + "12906": 1, + "12908": 2, + "12910": 1, + "12916": 1, + "12917": 1, + "12918": 2, + "12919": 1, + "12920": 1, + "12922": 1, + "12923": 1, + "12929": 2, + "12932": 1, + "12933": 1, + "12934": 2, + "12935": 2, + "12936": 1, + "12937": 1, + "12944": 2, + "12947": 2, + "12948": 2, + "12949": 2, + "12951": 3, + "12954": 1, + "12955": 2, + "12958": 1, + "12959": 1, + "12961": 1, + "12963": 3, + "12965": 2, + "12966": 1, + "12969": 1, + "12970": 1, + "12971": 1, + "12972": 1, + "12974": 1, + "12975": 1, + "12976": 1, + "12977": 1, + "12978": 2, + "12979": 1, + "12981": 1, + "12982": 1, + "12987": 2, + "12988": 2, + "12989": 2, + "12990": 2, + "12991": 1, + "12992": 2, + "12993": 2, + "12994": 2, + "12995": 1, + "12997": 1, + "12998": 1, + "12999": 1, + "13000": 1, + "13001": 1, + "13002": 1, + "13003": 3, + "13004": 3, + "13005": 1, + "13006": 3, + "13007": 1, + "13008": 2, + "13009": 1, + "13010": 1, + "13012": 2, + "13013": 2, + "13015": 1, + "13017": 1, + "13018": 1, + "13019": 2, + "13021": 2, + "13025": 2, + "13026": 1, + "13029": 1, + "13031": 3, + "13034": 1, + "13035": 1, + "13040": 1, + "13042": 1, + "13054": 1, + "13056": 1, + "13058": 1, + "13059": 1, + "13064": 1, + "13068": 1, + "13080": 1, + "13083": 1, + "13087": 1, + "13088": 1, + "13096": 1, + "13102": 1, + "13105": 1, + "13109": 1, + "13112": 1, + "13115": 1, + "13122": 1, + "13123": 1, + "13124": 3, + "13125": 1, + "13126": 1, + "13128": 2, + "13129": 4, + "13130": 1, + "13131": 3, + "13132": 1, + "13134": 1, + "13135": 1, + "13137": 1, + "13142": 2, + "13155": 1, + "13156": 1, + "13161": 1, + "13167": 1, + "13181": 1, + "13190": 2, + "13191": 2, + "13192": 1, + "13197": 1, + "13200": 1, + "13217": 1, + "13226": 1, + "13243": 1, + "13245": 1, + "13252": 2, + "13255": 1, + "13263": 1, + "13264": 1, + "13265": 1, + "13266": 1, + "13268": 1, + "13270": 1, + "13271": 1, + "13272": 1, + "13273": 1, + "13277": 1, + "13283": 1, + "13285": 1, + "13287": 1, + "13289": 1, + "13290": 1, + "13298": 1, + "13311": 1, + "13313": 1, + "13314": 1, + "13326": 1, + "13329": 1, + "13330": 1, + "13332": 1, + "13340": 1, + "13345": 1, + "13346": 1, + "13353": 1, + "13354": 1, + "13358": 1, + "13359": 1, + "13361": 2, + "13362": 1, + "13365": 2, + "13366": 1, + "13371": 1, + "13377": 1, + "13381": 1, + "13382": 1, + "13383": 2, + "13392": 2, + "13394": 1, + "13395": 1, + "13397": 1, + "13400": 1, + "13403": 1, + "13413": 1, + "13415": 1, + "13416": 2, + "13422": 1, + "13426": 1, + "13427": 1, + "13429": 1, + "13436": 2, + "13448": 1, + "13455": 1, + "13462": 1, + "13467": 2, + "13473": 1, + "13487": 1, + "13489": 1, + "13517": 1, + "13538": 1, + "13540": 1, + "13552": 1, + "13556": 1, + "13573": 1, + "13603": 1, + "13604": 1, + "13605": 1, + "13606": 1, + "13613": 1, + "14136": 1 + }, + "started": "2025-09-11T20:08:16.849Z", + "trafficStats": { + "incomingCompressionRatio": 0.3857490234375, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 12640224, + "incomingOctetsWireLevel": 12648224, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0006329001764525692, + "outgoingCompressionRatio": 0.3857490234375, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 12640224, + "outgoingOctetsWireLevel": 12838754, + "outgoingWebSocketFrames": 49888, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01570620900389107, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 48888, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 4, + "3": 2, + "4": 3, + "5": 1, + "6": 3, + "7": 5, + "8": 4, + "9": 2, + "10": 4, + "11": 3, + "12": 4, + "13": 1, + "14": 3, + "16": 2, + "17": 1, + "18": 1, + "19": 4, + "20": 5, + "21": 2, + "22": 5, + "24": 1, + "25": 4, + "26": 6, + "27": 3, + "28": 2, + "29": 4, + "30": 6, + "31": 1, + "32": 1, + "33": 2, + "34": 4, + "35": 3, + "36": 4, + "37": 4, + "38": 2, + "39": 1, + "40": 3, + "41": 3, + "42": 2, + "43": 3, + "44": 3, + "45": 2, + "46": 3, + "47": 4, + "48": 7, + "49": 3, + "50": 5, + "51": 6, + "52": 2, + "53": 2, + "54": 3, + "55": 2, + "56": 1, + "57": 4, + "59": 4, + "60": 3, + "61": 2, + "62": 4, + "63": 3, + "64": 4, + "65": 2, + "66": 5, + "67": 8, + "68": 7, + "69": 8, + "70": 4, + "71": 2, + "72": 3, + "73": 5, + "74": 4, + "75": 2, + "76": 4, + "77": 4, + "78": 4, + "79": 6, + "80": 7, + "81": 2, + "82": 3, + "83": 7, + "84": 4, + "85": 3, + "86": 4, + "87": 3, + "88": 5, + "89": 5, + "90": 4, + "91": 6, + "92": 5, + "93": 3, + "94": 3, + "95": 4, + "96": 8, + "97": 7, + "98": 8, + "99": 2, + "100": 9, + "101": 6, + "102": 8, + "103": 2, + "104": 8, + "105": 4, + "106": 5, + "107": 6, + "108": 9, + "109": 7, + "110": 4, + "111": 10, + "112": 7, + "113": 9, + "114": 6, + "115": 6, + "116": 8, + "117": 5, + "118": 9, + "119": 2, + "120": 3, + "121": 6, + "122": 6, + "123": 6, + "124": 6, + "125": 2, + "126": 2, + "127": 5, + "130": 6, + "131": 7, + "132": 11, + "133": 6, + "134": 6, + "135": 5, + "136": 7, + "137": 6, + "138": 6, + "139": 7, + "140": 6, + "141": 2, + "142": 14, + "143": 7, + "144": 6, + "145": 9, + "146": 4, + "147": 5, + "148": 6, + "149": 5, + "150": 3, + "151": 7, + "152": 1, + "153": 5, + "154": 6, + "155": 4, + "156": 4, + "157": 6, + "158": 4, + "159": 7, + "160": 2, + "161": 5, + "162": 4, + "163": 2, + "164": 3, + "165": 7, + "166": 6, + "167": 3, + "168": 4, + "169": 4, + "170": 3, + "171": 7, + "172": 4, + "173": 3, + "174": 3, + "175": 3, + "176": 2, + "177": 3, + "178": 3, + "179": 1, + "180": 2, + "182": 2, + "183": 4, + "184": 3, + "185": 4, + "186": 4, + "187": 1, + "188": 2, + "189": 3, + "190": 5, + "191": 5, + "192": 4, + "193": 3, + "194": 4, + "195": 3, + "196": 4, + "197": 2, + "198": 3, + "199": 6, + "200": 6, + "201": 3, + "202": 5, + "203": 5, + "204": 5, + "205": 4, + "206": 3, + "207": 1, + "208": 4, + "209": 3, + "210": 2, + "211": 5, + "212": 3, + "213": 2, + "214": 1, + "215": 3, + "216": 2, + "217": 4, + "218": 2, + "221": 4, + "222": 3, + "223": 2, + "224": 2, + "225": 6, + "226": 2, + "227": 7, + "228": 4, + "229": 1, + "230": 4, + "231": 3, + "232": 4, + "233": 5, + "234": 1, + "235": 1, + "236": 4, + "238": 2, + "240": 4, + "241": 1, + "242": 2, + "243": 4, + "244": 1, + "245": 3, + "246": 1, + "247": 5, + "248": 3, + "249": 4, + "250": 2, + "251": 5, + "252": 3, + "253": 2, + "254": 5, + "255": 4, + "256": 4, + "257": 1, + "258": 1, + "259": 3, + "260": 48888 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333530266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c315be2bc0fd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c315be2b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_14.html b/autobahn/client/tungstenite_case_12_3_14.html new file mode 100644 index 0000000..49c1c9d --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_14.html @@ -0,0 +1,1247 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.14 : Pass - 8714 ms @ 2025-09-11T20:08:21.528Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=351&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: EVKgRt7Ph2QfDzIN2bNtwQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: HMGCPMTHuZeMR4vN4nWC/5vY2Po=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
284512845
295212952
303713037
309013090
312113121
314413144
321913219
323313233
336713367
375413754
380313803
382813828
386813868
397313973
400414004
413514135
444114441
458514585
2172018390960
24486124486
24489124489
24497124497
24499124499
24500249000
24502124502
24503124503
24505124505
24507124507
24512124512
24513124513
24516124516
24521124521
24522124522
24523124523
24525124525
24535124535
24549249098
24551124551
24555124555
24558124558
24561124561
24566124566
24567124567
24570124570
24577124577
24606124606
24612124612
24626124626
24630373890
24632124632
24633124633
24636124636
24639124639
24642124642
24643124643
24646124646
246475123235
24649124649
24650124650
24652124652
24653124653
24654124654
24655124655
24656124656
24657124657
24658249316
24660373980
24661124661
24664249328
24666124666
24667124667
24668124668
24669374007
24670124670
24671124671
24672374016
24673249346
24674498696
24675374025
24676124676
24677124677
24679374037
24680124680
24681124681
24682249364
24684124684
24688374064
24689124689
24690124690
24691124691
24692249384
24694124694
24697249394
24698249396
24699249398
24702124702
24703124703
24705249410
24706249412
24707498828
24708124708
24709249418
24710374130
24711374133
24713374139
24715124715
24717374151
24719374157
24720124720
24721124721
24723124723
24724374172
24725249450
24726124726
24727249454
24728124728
24729374187
24730249460
24731249462
24732249464
24733249466
24734498936
24736124736
24737249474
24738374214
24740249480
24741249482
24742498968
24743249486
24744498976
24746124746
24747124747
24748249496
24749124749
24751249502
24753249506
24754374262
24757124757
24759374277
24760374280
24761249522
24762249524
24763249526
24764124764
247655123825
24766124766
24767249534
24768124768
24769249538
24770124770
24771124771
24772499088
24773124773
24774124774
24779249558
24780374340
24783249566
24784124784
24785124785
24786374358
24787124787
24788124788
24789249578
247945123970
24797374391
24798124798
24800124800
24802249604
24804124804
24807124807
24809374427
24813124813
24818124818
24819124819
24825249650
24829124829
24830124830
24831124831
24837124837
24839124839
24841124841
24843249686
24844124844
24850124850
24851124851
24853124853
24858124858
24859124859
24860249720
24861124861
24862124862
24863124863
24870124870
24871124871
24877124877
24878124878
24892124892
24893124893
24897124897
24909124909
24917124917
24921124921
24928374784
24929124929
24931124931
24932124932
24933124933
24937124937
24941374823
24944124944
24945249890
24946124946
24947124947
24949124949
24950124950
24951124951
24954124954
24958124958
24959124959
24961124961
24962124962
24964124964
24965249930
24966124966
24967249934
24968124968
24969249938
24970124970
24971374913
24974374922
24976124976
24977124977
24980124980
24981124981
24990124990
24992124992
24995124995
24996124996
24997124997
24998124998
25000125000
25001125001
25009125009
25010125010
25012125012
25013125013
25016125016
25019125019
25020125020
25024125024
25026125026
25027375081
25029125029
25031125031
25032125032
25034375102
25035250070
25036125036
25037125037
25038250076
25039125039
25040125040
25041125041
25042125042
25043125043
25045125045
25047375141
25048250096
25049125049
25053250106
25054250108
25055250110
25056250112
25057125057
25058125058
25059125059
25060125060
25061125061
25062125062
250635125315
25066125066
25067250134
25074250148
25076250152
25077250154
25078125078
25080250160
25081125081
25082250164
25085375255
25089125089
25091125091
25092375276
25093125093
25095125095
25096125096
25097125097
25100125100
25105125105
25108250216
25109125109
25118125118
25123125123
25126125126
25127125127
25128125128
25129125129
25131250262
25132125132
25133125133
25140125140
25144125144
25147125147
25150125150
25151125151
25155125155
25157125157
25162125162
25165125165
25169125169
25170125170
25175250350
25176125176
25177125177
25179125179
25181125181
25186250372
25187125187
25188125188
25189125189
25190125190
25191125191
25192125192
25193125193
25194125194
25195125195
25196125196
25197250394
25198125198
25200125200
25201125201
25202250404
25204125204
25205125205
25206250412
25209125209
25210375630
25215125215
25216125216
25220375660
25221375663
25222125222
25223125223
25224125224
25226125226
25227125227
25229125229
25230375690
25231125231
25232250464
25236250472
25237125237
25238250476
25239375717
25240250480
25241125241
252425126210
25243125243
25244125244
25245250490
25247125247
25248250496
25249125249
25250250500
25252125252
252534101012
25254250508
25257375771
25258375774
252594101036
25262125262
25263125263
25265125265
25266250532
25269125269
25274125274
25276125276
25277250554
25280250560
25282125282
25283125283
25287125287
25292250584
25294250588
25295250590
25298250596
25299125299
25300250600
25301125301
25302250604
25305125305
25308125308
25309250618
25316125316
25318125318
25321125321
25322125322
25323125323
25330125330
25333250666
25334125334
25337125337
25338250676
25339125339
25340125340
25342125342
25348250696
25349250698
25350125350
25352250704
25354125354
25357125357
25360125360
25363125363
25367125367
25375125375
25385125385
25395250790
25396250792
25400125400
25404125404
25419250838
25421125421
25430125430
25431125431
25436125436
25443125443
25448125448
25451125451
25456125456
25459250918
25461125461
25462250924
25464125464
25474125474
25478125478
25488125488
25491125491
25492125492
25493125493
25496125496
25501125501
25504125504
25507376521
25509251018
25512125512
25515125515
25518125518
25519251038
25521251042
25522251044
25523125523
25524125524
25527125527
25529376587
25534125534
25537125537
25538251076
25539125539
25541125541
25542251084
25543251086
255444102176
25545376635
25546125546
25547125547
25551376653
25552125552
25553376659
25554251108
25555125555
25556376668
25558376674
25559251118
25562125562
25563125563
25566125566
25568125568
25569125569
25570251140
25572125572
25574125574
25575251150
25576125576
25577125577
25578125578
25580125580
25586125586
25590125590
25594125594
25600125600
25601125601
25609125609
25613125613
25617125617
25624125624
25628125628
25631125631
25647125647
25650125650
25656125656
25658251316
25659251318
25662125662
25670251340
25672251344
25674125674
25677125677
25679377037
25682251364
25685125685
25687125687
25691251382
25693377079
25696251392
25697125697
25698125698
25699125699
25700125700
25701125701
25702377106
25703125703
25704125704
25705125705
25706125706
25707377121
25708251416
25710125710
25714251428
25716125716
25717125717
25718125718
25719125719
25720251440
25722125722
25726125726
25727251454
25728251456
25729251458
25730125730
25731377193
25732125732
25733251466
25734251468
257354102940
25738125738
25739377217
25740125740
25741125741
25742125742
25743251486
25745377235
25746125746
25748251496
25749251498
25750125750
25752125752
25753125753
25754251508
25757251514
25758125758
25759125759
25760125760
25761125761
25764125764
25766251532
25771125771
25772125772
25774125774
25776125776
25781251562
25786125786
25787125787
25788251576
25789125789
25790125790
25791125791
25793125793
25794251588
25795125795
25796251592
25797377391
25798251596
25801251602
25802251604
25803125803
25805125805
25806125806
25807125807
25811125811
25812125812
25813251626
25818125818
25819251638
25822125822
25825125825
25830125830
25832125832
25833125833
25839251678
25853125853
25858125858
25860125860
25873125873
25876125876
25879125879
25881251762
25888251776
25889125889
25890251780
25892251784
25893125893
25903125903
25909125909
25912125912
25913125913
25915125915
25920125920
25921125921
25936125936
25954125954
25973125973
25982125982
25985125985
26000126000
26017126017
26027126027
26037126037
26039126039
26041126041
26047126047
26065126065
26078126078
26089126089
26093126093
26094126094
26100126100
26118126118
26124126124
26129126129
26140126140
26150126150
26153126153
26156126156
26158126158
26159126159
26160252320
26163126163
26165126165
26169252338
26170126170
26171126171
26173126173
26174126174
26175378525
26184252368
26185252370
26187126187
26193252386
26194126194
26195126195
26196126196
26198126198
26200252400
26201126201
26206126206
26209126209
26212126212
26215126215
26220126220
26223126223
26224126224
26231126231
26252126252
26253126253
26259126259
26260126260
26261126261
26267126267
26274126274
26276126276
26287126287
26292126292
26297126297
26298126298
26300126300
26305126305
26311126311
26321126321
26322126322
26966126966
Total102025257085
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
236
3412
428
5210
6318
7214
10110
11444
12112
13226
14342
15230
17234
18118
19238
20120
21121
22488
23123
24372
25375
26378
27127
28256
29129
30390
31131
32396
33266
34134
353105
37274
38276
39278
40280
413123
42284
43143
44288
453135
463138
47294
483144
505250
514204
523156
535265
543162
552110
563168
575285
58158
592118
60160
612122
63163
643192
655325
664264
673201
683204
693207
70170
715355
72172
734292
742148
754300
766456
77177
784312
793237
803240
814324
825410
833249
84184
854340
862172
878696
882176
89189
909810
915455
928736
937651
945470
954380
964384
976582
984392
994396
1004400
1016606
1025510
1035515
1042208
1051105
1067742
1074428
1086648
1094436
1104440
1115555
1127784
1133339
1143342
1154460
1167812
1172234
1181118
1204480
1215605
1223366
1236738
1246744
1257875
1266756
12791143
13081040
131101310
1322264
1335665
1343402
13581080
1362272
1376822
1387966
1396834
1406840
1415705
1421142
1433429
144101440
14581160
1464584
1475735
1485740
1495745
15091350
1514604
1523456
15371071
1546924
1552310
1566936
1575785
1586948
1594636
1606960
16191449
162101620
1632326
1646984
1655825
1664664
16781336
1683504
1691169
1703510
17161026
1721172
17371211
17481392
1753525
1765880
17771239
1781178
17961074
1804720
18181448
1825910
1835915
18461104
18581480
1863558
1874748
1885940
18971323
19071330
19171337
19271344
19361158
1945970
1955975
1965980
19761182
19871386
19971393
20071400
2013603
20251010
20391827
2043612
20571435
20691854
20751035
20871456
20961254
21051050
21161266
2122424
2132426
21471498
2153645
2161216
21771519
21861308
2192438
2204880
2213663
22251110
2231223
2244896
2253675
2264904
22792043
2282456
22971603
2304920
2314924
2321232
2332466
2342468
2352470
2371237
23851190
2391239
2404960
24151205
2424968
2431243
2442488
2454980
24661476
2471247
2481248
24951245
2502500
2513753
2522504
2533759
2541254
2551255
25661536
25741028
2582516
2592518
2609808125501060
Total9908325644606
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
098081
21000
81
Total99082
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333531266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88829ed814919d30
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3965643831343931
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_14.json b/autobahn/client/tungstenite_case_12_3_14.json new file mode 100644 index 0000000..df52f2f --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_14.json @@ -0,0 +1,1094 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 351, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 8714, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=351&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: EVKgRt7Ph2QfDzIN2bNtwQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HMGCPMTHuZeMR4vN4nWC/5vY2Po=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2845": 1, + "2952": 1, + "3037": 1, + "3090": 1, + "3121": 1, + "3144": 1, + "3219": 1, + "3233": 1, + "3367": 1, + "3754": 1, + "3803": 1, + "3828": 1, + "3868": 1, + "3973": 1, + "4004": 1, + "4135": 1, + "4441": 1, + "4585": 1, + "21720": 18, + "24486": 1, + "24489": 1, + "24497": 1, + "24499": 1, + "24500": 2, + "24502": 1, + "24503": 1, + "24505": 1, + "24507": 1, + "24512": 1, + "24513": 1, + "24516": 1, + "24521": 1, + "24522": 1, + "24523": 1, + "24525": 1, + "24535": 1, + "24549": 2, + "24551": 1, + "24555": 1, + "24558": 1, + "24561": 1, + "24566": 1, + "24567": 1, + "24570": 1, + "24577": 1, + "24606": 1, + "24612": 1, + "24626": 1, + "24630": 3, + "24632": 1, + "24633": 1, + "24636": 1, + "24639": 1, + "24642": 1, + "24643": 1, + "24646": 1, + "24647": 5, + "24649": 1, + "24650": 1, + "24652": 1, + "24653": 1, + "24654": 1, + "24655": 1, + "24656": 1, + "24657": 1, + "24658": 2, + "24660": 3, + "24661": 1, + "24664": 2, + "24666": 1, + "24667": 1, + "24668": 1, + "24669": 3, + "24670": 1, + "24671": 1, + "24672": 3, + "24673": 2, + "24674": 4, + "24675": 3, + "24676": 1, + "24677": 1, + "24679": 3, + "24680": 1, + "24681": 1, + "24682": 2, + "24684": 1, + "24688": 3, + "24689": 1, + "24690": 1, + "24691": 1, + "24692": 2, + "24694": 1, + "24697": 2, + "24698": 2, + "24699": 2, + "24702": 1, + "24703": 1, + "24705": 2, + "24706": 2, + "24707": 4, + "24708": 1, + "24709": 2, + "24710": 3, + "24711": 3, + "24713": 3, + "24715": 1, + "24717": 3, + "24719": 3, + "24720": 1, + "24721": 1, + "24723": 1, + "24724": 3, + "24725": 2, + "24726": 1, + "24727": 2, + "24728": 1, + "24729": 3, + "24730": 2, + "24731": 2, + "24732": 2, + "24733": 2, + "24734": 4, + "24736": 1, + "24737": 2, + "24738": 3, + "24740": 2, + "24741": 2, + "24742": 4, + "24743": 2, + "24744": 4, + "24746": 1, + "24747": 1, + "24748": 2, + "24749": 1, + "24751": 2, + "24753": 2, + "24754": 3, + "24757": 1, + "24759": 3, + "24760": 3, + "24761": 2, + "24762": 2, + "24763": 2, + "24764": 1, + "24765": 5, + "24766": 1, + "24767": 2, + "24768": 1, + "24769": 2, + "24770": 1, + "24771": 1, + "24772": 4, + "24773": 1, + "24774": 1, + "24779": 2, + "24780": 3, + "24783": 2, + "24784": 1, + "24785": 1, + "24786": 3, + "24787": 1, + "24788": 1, + "24789": 2, + "24794": 5, + "24797": 3, + "24798": 1, + "24800": 1, + "24802": 2, + "24804": 1, + "24807": 1, + "24809": 3, + "24813": 1, + "24818": 1, + "24819": 1, + "24825": 2, + "24829": 1, + "24830": 1, + "24831": 1, + "24837": 1, + "24839": 1, + "24841": 1, + "24843": 2, + "24844": 1, + "24850": 1, + "24851": 1, + "24853": 1, + "24858": 1, + "24859": 1, + "24860": 2, + "24861": 1, + "24862": 1, + "24863": 1, + "24870": 1, + "24871": 1, + "24877": 1, + "24878": 1, + "24892": 1, + "24893": 1, + "24897": 1, + "24909": 1, + "24917": 1, + "24921": 1, + "24928": 3, + "24929": 1, + "24931": 1, + "24932": 1, + "24933": 1, + "24937": 1, + "24941": 3, + "24944": 1, + "24945": 2, + "24946": 1, + "24947": 1, + "24949": 1, + "24950": 1, + "24951": 1, + "24954": 1, + "24958": 1, + "24959": 1, + "24961": 1, + "24962": 1, + "24964": 1, + "24965": 2, + "24966": 1, + "24967": 2, + "24968": 1, + "24969": 2, + "24970": 1, + "24971": 3, + "24974": 3, + "24976": 1, + "24977": 1, + "24980": 1, + "24981": 1, + "24990": 1, + "24992": 1, + "24995": 1, + "24996": 1, + "24997": 1, + "24998": 1, + "25000": 1, + "25001": 1, + "25009": 1, + "25010": 1, + "25012": 1, + "25013": 1, + "25016": 1, + "25019": 1, + "25020": 1, + "25024": 1, + "25026": 1, + "25027": 3, + "25029": 1, + "25031": 1, + "25032": 1, + "25034": 3, + "25035": 2, + "25036": 1, + "25037": 1, + "25038": 2, + "25039": 1, + "25040": 1, + "25041": 1, + "25042": 1, + "25043": 1, + "25045": 1, + "25047": 3, + "25048": 2, + "25049": 1, + "25053": 2, + "25054": 2, + "25055": 2, + "25056": 2, + "25057": 1, + "25058": 1, + "25059": 1, + "25060": 1, + "25061": 1, + "25062": 1, + "25063": 5, + "25066": 1, + "25067": 2, + "25074": 2, + "25076": 2, + "25077": 2, + "25078": 1, + "25080": 2, + "25081": 1, + "25082": 2, + "25085": 3, + "25089": 1, + "25091": 1, + "25092": 3, + "25093": 1, + "25095": 1, + "25096": 1, + "25097": 1, + "25100": 1, + "25105": 1, + "25108": 2, + "25109": 1, + "25118": 1, + "25123": 1, + "25126": 1, + "25127": 1, + "25128": 1, + "25129": 1, + "25131": 2, + "25132": 1, + "25133": 1, + "25140": 1, + "25144": 1, + "25147": 1, + "25150": 1, + "25151": 1, + "25155": 1, + "25157": 1, + "25162": 1, + "25165": 1, + "25169": 1, + "25170": 1, + "25175": 2, + "25176": 1, + "25177": 1, + "25179": 1, + "25181": 1, + "25186": 2, + "25187": 1, + "25188": 1, + "25189": 1, + "25190": 1, + "25191": 1, + "25192": 1, + "25193": 1, + "25194": 1, + "25195": 1, + "25196": 1, + "25197": 2, + "25198": 1, + "25200": 1, + "25201": 1, + "25202": 2, + "25204": 1, + "25205": 1, + "25206": 2, + "25209": 1, + "25210": 3, + "25215": 1, + "25216": 1, + "25220": 3, + "25221": 3, + "25222": 1, + "25223": 1, + "25224": 1, + "25226": 1, + "25227": 1, + "25229": 1, + "25230": 3, + "25231": 1, + "25232": 2, + "25236": 2, + "25237": 1, + "25238": 2, + "25239": 3, + "25240": 2, + "25241": 1, + "25242": 5, + "25243": 1, + "25244": 1, + "25245": 2, + "25247": 1, + "25248": 2, + "25249": 1, + "25250": 2, + "25252": 1, + "25253": 4, + "25254": 2, + "25257": 3, + "25258": 3, + "25259": 4, + "25262": 1, + "25263": 1, + "25265": 1, + "25266": 2, + "25269": 1, + "25274": 1, + "25276": 1, + "25277": 2, + "25280": 2, + "25282": 1, + "25283": 1, + "25287": 1, + "25292": 2, + "25294": 2, + "25295": 2, + "25298": 2, + "25299": 1, + "25300": 2, + "25301": 1, + "25302": 2, + "25305": 1, + "25308": 1, + "25309": 2, + "25316": 1, + "25318": 1, + "25321": 1, + "25322": 1, + "25323": 1, + "25330": 1, + "25333": 2, + "25334": 1, + "25337": 1, + "25338": 2, + "25339": 1, + "25340": 1, + "25342": 1, + "25348": 2, + "25349": 2, + "25350": 1, + "25352": 2, + "25354": 1, + "25357": 1, + "25360": 1, + "25363": 1, + "25367": 1, + "25375": 1, + "25385": 1, + "25395": 2, + "25396": 2, + "25400": 1, + "25404": 1, + "25419": 2, + "25421": 1, + "25430": 1, + "25431": 1, + "25436": 1, + "25443": 1, + "25448": 1, + "25451": 1, + "25456": 1, + "25459": 2, + "25461": 1, + "25462": 2, + "25464": 1, + "25474": 1, + "25478": 1, + "25488": 1, + "25491": 1, + "25492": 1, + "25493": 1, + "25496": 1, + "25501": 1, + "25504": 1, + "25507": 3, + "25509": 2, + "25512": 1, + "25515": 1, + "25518": 1, + "25519": 2, + "25521": 2, + "25522": 2, + "25523": 1, + "25524": 1, + "25527": 1, + "25529": 3, + "25534": 1, + "25537": 1, + "25538": 2, + "25539": 1, + "25541": 1, + "25542": 2, + "25543": 2, + "25544": 4, + "25545": 3, + "25546": 1, + "25547": 1, + "25551": 3, + "25552": 1, + "25553": 3, + "25554": 2, + "25555": 1, + "25556": 3, + "25558": 3, + "25559": 2, + "25562": 1, + "25563": 1, + "25566": 1, + "25568": 1, + "25569": 1, + "25570": 2, + "25572": 1, + "25574": 1, + "25575": 2, + "25576": 1, + "25577": 1, + "25578": 1, + "25580": 1, + "25586": 1, + "25590": 1, + "25594": 1, + "25600": 1, + "25601": 1, + "25609": 1, + "25613": 1, + "25617": 1, + "25624": 1, + "25628": 1, + "25631": 1, + "25647": 1, + "25650": 1, + "25656": 1, + "25658": 2, + "25659": 2, + "25662": 1, + "25670": 2, + "25672": 2, + "25674": 1, + "25677": 1, + "25679": 3, + "25682": 2, + "25685": 1, + "25687": 1, + "25691": 2, + "25693": 3, + "25696": 2, + "25697": 1, + "25698": 1, + "25699": 1, + "25700": 1, + "25701": 1, + "25702": 3, + "25703": 1, + "25704": 1, + "25705": 1, + "25706": 1, + "25707": 3, + "25708": 2, + "25710": 1, + "25714": 2, + "25716": 1, + "25717": 1, + "25718": 1, + "25719": 1, + "25720": 2, + "25722": 1, + "25726": 1, + "25727": 2, + "25728": 2, + "25729": 2, + "25730": 1, + "25731": 3, + "25732": 1, + "25733": 2, + "25734": 2, + "25735": 4, + "25738": 1, + "25739": 3, + "25740": 1, + "25741": 1, + "25742": 1, + "25743": 2, + "25745": 3, + "25746": 1, + "25748": 2, + "25749": 2, + "25750": 1, + "25752": 1, + "25753": 1, + "25754": 2, + "25757": 2, + "25758": 1, + "25759": 1, + "25760": 1, + "25761": 1, + "25764": 1, + "25766": 2, + "25771": 1, + "25772": 1, + "25774": 1, + "25776": 1, + "25781": 2, + "25786": 1, + "25787": 1, + "25788": 2, + "25789": 1, + "25790": 1, + "25791": 1, + "25793": 1, + "25794": 2, + "25795": 1, + "25796": 2, + "25797": 3, + "25798": 2, + "25801": 2, + "25802": 2, + "25803": 1, + "25805": 1, + "25806": 1, + "25807": 1, + "25811": 1, + "25812": 1, + "25813": 2, + "25818": 1, + "25819": 2, + "25822": 1, + "25825": 1, + "25830": 1, + "25832": 1, + "25833": 1, + "25839": 2, + "25853": 1, + "25858": 1, + "25860": 1, + "25873": 1, + "25876": 1, + "25879": 1, + "25881": 2, + "25888": 2, + "25889": 1, + "25890": 2, + "25892": 2, + "25893": 1, + "25903": 1, + "25909": 1, + "25912": 1, + "25913": 1, + "25915": 1, + "25920": 1, + "25921": 1, + "25936": 1, + "25954": 1, + "25973": 1, + "25982": 1, + "25985": 1, + "26000": 1, + "26017": 1, + "26027": 1, + "26037": 1, + "26039": 1, + "26041": 1, + "26047": 1, + "26065": 1, + "26078": 1, + "26089": 1, + "26093": 1, + "26094": 1, + "26100": 1, + "26118": 1, + "26124": 1, + "26129": 1, + "26140": 1, + "26150": 1, + "26153": 1, + "26156": 1, + "26158": 1, + "26159": 1, + "26160": 2, + "26163": 1, + "26165": 1, + "26169": 2, + "26170": 1, + "26171": 1, + "26173": 1, + "26174": 1, + "26175": 3, + "26184": 2, + "26185": 2, + "26187": 1, + "26193": 2, + "26194": 1, + "26195": 1, + "26196": 1, + "26198": 1, + "26200": 2, + "26201": 1, + "26206": 1, + "26209": 1, + "26212": 1, + "26215": 1, + "26220": 1, + "26223": 1, + "26224": 1, + "26231": 1, + "26252": 1, + "26253": 1, + "26259": 1, + "26260": 1, + "26261": 1, + "26267": 1, + "26274": 1, + "26276": 1, + "26287": 1, + "26292": 1, + "26297": 1, + "26298": 1, + "26300": 1, + "26305": 1, + "26311": 1, + "26321": 1, + "26322": 1, + "26966": 1 + }, + "started": "2025-09-11T20:08:21.528Z", + "trafficStats": { + "incomingCompressionRatio": 0.38526641845703125, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 25248820, + "incomingOctetsWireLevel": 25256820, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0003168464902518217, + "outgoingCompressionRatio": 0.38526641845703125, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 25248820, + "outgoingOctetsWireLevel": 25644350, + "outgoingWebSocketFrames": 99081, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01566528653616288, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 98081, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 3, + "3": 4, + "4": 2, + "5": 2, + "6": 3, + "7": 2, + "10": 1, + "11": 4, + "12": 1, + "13": 2, + "14": 3, + "15": 2, + "17": 2, + "18": 1, + "19": 2, + "20": 1, + "21": 1, + "22": 4, + "23": 1, + "24": 3, + "25": 3, + "26": 3, + "27": 1, + "28": 2, + "29": 1, + "30": 3, + "31": 1, + "32": 3, + "33": 2, + "34": 1, + "35": 3, + "37": 2, + "38": 2, + "39": 2, + "40": 2, + "41": 3, + "42": 2, + "43": 1, + "44": 2, + "45": 3, + "46": 3, + "47": 2, + "48": 3, + "50": 5, + "51": 4, + "52": 3, + "53": 5, + "54": 3, + "55": 2, + "56": 3, + "57": 5, + "58": 1, + "59": 2, + "60": 1, + "61": 2, + "63": 1, + "64": 3, + "65": 5, + "66": 4, + "67": 3, + "68": 3, + "69": 3, + "70": 1, + "71": 5, + "72": 1, + "73": 4, + "74": 2, + "75": 4, + "76": 6, + "77": 1, + "78": 4, + "79": 3, + "80": 3, + "81": 4, + "82": 5, + "83": 3, + "84": 1, + "85": 4, + "86": 2, + "87": 8, + "88": 2, + "89": 1, + "90": 9, + "91": 5, + "92": 8, + "93": 7, + "94": 5, + "95": 4, + "96": 4, + "97": 6, + "98": 4, + "99": 4, + "100": 4, + "101": 6, + "102": 5, + "103": 5, + "104": 2, + "105": 1, + "106": 7, + "107": 4, + "108": 6, + "109": 4, + "110": 4, + "111": 5, + "112": 7, + "113": 3, + "114": 3, + "115": 4, + "116": 7, + "117": 2, + "118": 1, + "120": 4, + "121": 5, + "122": 3, + "123": 6, + "124": 6, + "125": 7, + "126": 6, + "127": 9, + "130": 8, + "131": 10, + "132": 2, + "133": 5, + "134": 3, + "135": 8, + "136": 2, + "137": 6, + "138": 7, + "139": 6, + "140": 6, + "141": 5, + "142": 1, + "143": 3, + "144": 10, + "145": 8, + "146": 4, + "147": 5, + "148": 5, + "149": 5, + "150": 9, + "151": 4, + "152": 3, + "153": 7, + "154": 6, + "155": 2, + "156": 6, + "157": 5, + "158": 6, + "159": 4, + "160": 6, + "161": 9, + "162": 10, + "163": 2, + "164": 6, + "165": 5, + "166": 4, + "167": 8, + "168": 3, + "169": 1, + "170": 3, + "171": 6, + "172": 1, + "173": 7, + "174": 8, + "175": 3, + "176": 5, + "177": 7, + "178": 1, + "179": 6, + "180": 4, + "181": 8, + "182": 5, + "183": 5, + "184": 6, + "185": 8, + "186": 3, + "187": 4, + "188": 5, + "189": 7, + "190": 7, + "191": 7, + "192": 7, + "193": 6, + "194": 5, + "195": 5, + "196": 5, + "197": 6, + "198": 7, + "199": 7, + "200": 7, + "201": 3, + "202": 5, + "203": 9, + "204": 3, + "205": 7, + "206": 9, + "207": 5, + "208": 7, + "209": 6, + "210": 5, + "211": 6, + "212": 2, + "213": 2, + "214": 7, + "215": 3, + "216": 1, + "217": 7, + "218": 6, + "219": 2, + "220": 4, + "221": 3, + "222": 5, + "223": 1, + "224": 4, + "225": 3, + "226": 4, + "227": 9, + "228": 2, + "229": 7, + "230": 4, + "231": 4, + "232": 1, + "233": 2, + "234": 2, + "235": 2, + "237": 1, + "238": 5, + "239": 1, + "240": 4, + "241": 5, + "242": 4, + "243": 1, + "244": 2, + "245": 4, + "246": 6, + "247": 1, + "248": 1, + "249": 5, + "250": 2, + "251": 3, + "252": 2, + "253": 3, + "254": 1, + "255": 1, + "256": 6, + "257": 4, + "258": 2, + "259": 2, + "260": 98081 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333531266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829ed814919d30" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9ed81491" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_15.html b/autobahn/client/tungstenite_case_12_3_15.html new file mode 100644 index 0000000..8ff17dd --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_15.html @@ -0,0 +1,1262 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.15 : Pass - 17595 ms @ 2025-09-11T20:08:30.243Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=352&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 9ZGPbq/hSDCPP/qkD3wP5A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: l0hzXC1EDVNRbWE5IT8LfgnwYR4=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
37246137246
49537149537
49555149555
49558149558
49560149560
49563149563
49575149575
49606149606
49613149613
49628149628
49645149645
49663149663
49666149666
49669149669
49670149670
49671149671
49676149676
496853149055
49687149687
49689149689
49690149690
49697299394
49698299396
49699149699
49701149701
49702149702
49703299406
49705149705
49708299416
49711149711
49712149712
497143149142
49715149715
49716149716
49717149717
49719149719
497203149160
49722299444
49723149723
49725149725
49726299452
49727299454
49729149729
49730299460
49731149731
49732149732
49733299466
49734149734
497353149205
49736299472
497383149214
497393149217
49740149740
49741149741
49742149742
497433149229
49744299488
497463149238
49748149748
49749299498
49750299500
497515248755
49753299506
49756149756
497574199028
49758149758
49759299518
49760299520
49761149761
497623149286
49763299526
497643149292
49765299530
49766299532
49768299536
497693149307
49771149771
49772299544
49773149773
497754199100
49776149776
49777149777
49779299558
49780149780
49781149781
497833149349
497844199136
49785149785
49786149786
49787149787
49788299576
497893149367
49790299580
49791299582
49793299586
49794299588
49795299590
497963149388
49797149797
497984199192
49799149799
49800149800
49801299602
498024199208
49803299606
498043149412
49807299614
498083149424
49811149811
49812299624
49813149813
49814149814
49815149815
49816149816
49817299634
49818149818
49820299640
49821149821
49823149823
49825149825
49826149826
49828149828
49829149829
498303149490
49832149832
49833149833
49834149834
49836149836
49838149838
49841149841
49848299696
49849149849
49852149852
49855149855
49857149857
498583149574
49861149861
49863149863
49864149864
49865149865
49866149866
49867149867
49868149868
49878149878
49879149879
49881149881
49886149886
49890149890
49895149895
49896149896
49902149902
49912149912
49913299826
49914149914
49918149918
49919149919
49921149921
49922149922
49923149923
49929149929
49934299868
49941149941
49945299890
49946149946
49949149949
49950149950
49955149955
49958149958
49959149959
49961149961
49962299924
49963149963
49964149964
49965149965
49966149966
49967149967
499684199872
49970149970
49972299944
49974299948
499763149928
49977299954
49978149978
49979299958
49980149980
499813149943
499823149946
49983299966
49984299968
49986149986
49988149988
49989299978
49991299982
49992299984
49994299988
49995149995
49996149996
49997149997
49998299996
49999149999
50001150001
500062100012
500092100018
50010150010
50014150014
50015150015
50017150017
50018150018
50033150033
50037150037
50045150045
50046150046
50050150050
50051150051
50052150052
50062150062
50070150070
50078150078
50080150080
50081150081
500822100164
50095150095
50103150103
50109150109
50114150114
50120150120
50123150123
50128150128
50129150129
50134150134
50136150136
501372100274
50139150139
50151150151
50153150153
50154150154
501562100312
50158150158
50159150159
50161150161
501622100324
501632100326
50169150169
501753150525
50177150177
50181150181
50185150185
50188150188
50190150190
50194150194
50196150196
50198150198
50199150199
50202150202
50203150203
50205150205
50207150207
50208150208
50209150209
50210150210
50212150212
50213150213
50215150215
50216150216
50217150217
502192100438
502202100440
50221150221
50222150222
50226150226
502382100476
50241150241
50243150243
502452100490
502462100492
50247150247
50249150249
50250150250
50257150257
50263150263
50264150264
50270150270
50272150272
50281150281
50296150296
50304150304
50329150329
50331150331
503342100668
50336150336
50339150339
503422100684
503442100688
50345150345
50346150346
50347150347
50348150348
503502100700
50352150352
50361150361
50363150363
50377150377
50382150382
503942100788
50399150399
50405150405
50406150406
50410150410
50412150412
50413150413
50414150414
50417150417
504222100844
50423150423
50427150427
50431150431
50432150432
50437150437
50443150443
50456150456
50460150460
50465150465
50474150474
50475150475
50476150476
50477150477
50479150479
50482150482
50483150483
50486150486
50495150495
50497150497
50499150499
50502150502
50506150506
50511150511
50515150515
50523150523
50524150524
505312101062
50538150538
505472101094
50553150553
50554150554
505682101136
50570150570
50572150572
50583150583
50584150584
50589150589
50593150593
50612150612
50615150615
50617150617
50618150618
50621150621
506262101252
50632150632
50634150634
50635150635
50637150637
50642150642
50643150643
50645150645
50646150646
50649150649
50654150654
506552101310
50656150656
506582101316
50659150659
50660150660
506613151983
50662150662
50664150664
506652101330
50666150666
506673152001
506682101336
50669150669
506703152010
50672150672
506742101348
506763152028
50677150677
506783152034
506794202716
506803152040
50681150681
50682150682
506834202732
50684150684
506852101370
50686150686
50688150688
506913152073
506934202772
506962101392
50697150697
50698150698
506992101398
50700150700
50702150702
50703150703
507063152118
507092101418
50710150710
50712150712
50713150713
507152101430
507172101434
507183152154
50719150719
507202101440
507212101442
50722150722
507234202892
50725150725
507263152178
507302101460
507312101462
50735150735
50737150737
50738150738
50741150741
507422101484
50743150743
50747150747
507482101496
50749150749
50750150750
507522101504
50755150755
50756150756
50757150757
50758150758
50761150761
507623152286
50763150763
50764150764
50768150768
50771150771
50773150773
50777150777
50778150778
50782150782
507842101568
50790150790
507992101598
50803150803
508052101610
50811150811
50812150812
508143152442
50815150815
50818150818
50820150820
50821150821
50822150822
50823150823
50826150826
50833150833
508342101668
50835150835
50836150836
508412101682
508492101698
50853150853
50856150856
50863150863
50867150867
50868150868
50874150874
50878150878
50881150881
50884150884
50889150889
508932101786
50900150900
50901150901
50902150902
509032101806
509042101808
509062101812
50908150908
50912150912
50914150914
50916150916
50917150917
50919150919
509222101844
509262101852
50928150928
509352101870
509362101872
50937150937
50940150940
509442101888
50947150947
509502101900
50951150951
509532101906
50955150955
50959150959
509602101920
50961150961
50962150962
50965150965
50968150968
50969150969
509702101940
50972150972
50973150973
50974150974
509772101954
509782101956
50981150981
50982150982
509843152952
509852101970
50989150989
50990150990
50991150991
50993150993
509943152982
50995150995
50996150996
509982101996
510013153003
51002151002
510032102006
510042102008
51005151005
51006151006
510102102020
51011151011
51013151013
51024151024
51031151031
51032151032
51033151033
51034151034
51035151035
51036151036
510372102074
510382102076
51039151039
51040151040
510412102082
51042151042
510434204172
51044151044
51045151045
510462102092
510492102098
510504204200
51051151051
51053151053
51054151054
51058151058
51059151059
51060151060
51064151064
51065151065
510662102132
51068151068
510693153207
510712102142
51072151072
51073151073
51077151077
51078151078
510802102160
51081151081
510824204328
510893153267
510903153270
51091151091
510922102184
51093151093
510942102188
51095151095
510962102192
510992102198
51100151100
51101151101
511022102204
51103151103
51107151107
511102102220
51112151112
51116151116
51119151119
51120151120
51134151134
51137151137
511402102280
51142151142
51145151145
511472102294
511492102298
51151151151
51153151153
51161151161
51162151162
51163151163
51167151167
51169151169
51172151172
51175151175
51183151183
51186151186
511882102376
51190151190
511962102392
51197151197
51198151198
51200151200
51202151202
51209151209
51212151212
51213151213
51215151215
51216151216
51220151220
51224151224
51225151225
512272102454
512302102460
51238151238
51239151239
51247151247
512482102496
512502102500
51251151251
512534205012
512542102508
51255151255
51256151256
51257151257
512592102518
51260151260
51261151261
512632102526
51264151264
51265151265
51269151269
51270151270
51275151275
51283151283
51286151286
51287151287
51289151289
51294151294
512962102592
51297151297
51300151300
51303151303
51305151305
51306151306
51307151307
51312151312
51313151313
51319151319
513202102640
51321151321
513222102644
51324151324
51325151325
513264205304
51327151327
51328151328
51329151329
51331151331
51332151332
513332102666
513343154002
513352102670
51336151336
51337151337
51339151339
51340151340
51341151341
51342151342
51343151343
51345151345
51346151346
51347151347
51350151350
513522102704
51353151353
51358151358
51359151359
51360151360
513613154083
51364151364
51367151367
51368151368
51369151369
51370151370
51371151371
51374151374
51379151379
51381151381
51385151385
513872102774
51388151388
51389151389
51390151390
51393151393
51396151396
51398151398
513992102798
51401151401
514072102814
51426151426
Total100350498846
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
224
3618
428
5420
6424
717
8540
9327
10330
11111
12560
14228
157105
16232
17234
18472
196114
205100
215105
22244
235115
247168
25250
26378
278216
286168
296174
30130
314124
327224
335165
344136
355175
365180
376222
386228
394156
403120
416246
427294
43286
4412528
454180
464184
476282
489432
493147
507350
516306
524208
538424
546324
557385
569504
577399
585290
594236
605300
615305
623186
639567
646384
656390
664264
672134
6810680
696414
703210
712142
723216
735365
744296
752150
763228
773231
78178
793237
805400
818648
822164
837581
843252
852170
863258
876522
887616
894356
908720
915455
925460
938744
945470
953285
965480
97197
982196
997693
1006600
1013303
1022204
1032206
1041104
1056630
1062212
1073321
1081108
1096654
1102220
1114444
1134452
1148912
1154460
1166696
1172234
1185590
1198952
120101200
1216726
1223366
1235615
1244496
1254500
1266756
1275635
13091170
1314524
1326792
1334532
134101340
1353405
1365680
1371137
1382276
1393417
1403420
1415705
1426852
1435715
1445720
1452290
1466876
1473441
14871036
1496894
1501150
1514604
1523456
1533459
1546924
1553465
1563468
15781256
1583474
1592318
1602320
1612322
16271134
1632326
1646984
1653495
1663498
1672334
1683504
1704680
1713513
1722344
1731173
1752350
1762352
1771177
1792358
1802360
1814724
1822364
1833549
1842368
1853555
1863558
1871187
1894756
19061140
1924768
1931193
1943582
1953585
1963588
1975985
1982396
1995995
2001200
20161206
2021202
2033609
2041204
2052410
2061206
2071207
2081208
2092418
2104840
2113633
2123636
21351065
21451070
2152430
2162432
2182436
2194876
2202440
2211221
22251110
2231223
2243672
22551125
2262452
2274908
2282456
2293687
23051150
2313693
23251160
2333699
23481872
2352470
2362472
2372474
23851190
2392478
24051200
2411241
24261452
24371701
24461464
24551225
2462492
24751235
2484992
2493747
2503750
25161506
25261512
2532506
2543762
25551275
25771799
2583774
2592518
26019677251160720
Total19777451280781
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
0196772
21000
81
Total197773
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333532266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828a49a17889a1
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3861343961313738
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_15.json b/autobahn/client/tungstenite_case_12_3_15.json new file mode 100644 index 0000000..c37d65b --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_15.json @@ -0,0 +1,1109 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 352, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 17595, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=352&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 9ZGPbq/hSDCPP/qkD3wP5A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: l0hzXC1EDVNRbWE5IT8LfgnwYR4=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "37246": 1, + "49537": 1, + "49555": 1, + "49558": 1, + "49560": 1, + "49563": 1, + "49575": 1, + "49606": 1, + "49613": 1, + "49628": 1, + "49645": 1, + "49663": 1, + "49666": 1, + "49669": 1, + "49670": 1, + "49671": 1, + "49676": 1, + "49685": 3, + "49687": 1, + "49689": 1, + "49690": 1, + "49697": 2, + "49698": 2, + "49699": 1, + "49701": 1, + "49702": 1, + "49703": 2, + "49705": 1, + "49708": 2, + "49711": 1, + "49712": 1, + "49714": 3, + "49715": 1, + "49716": 1, + "49717": 1, + "49719": 1, + "49720": 3, + "49722": 2, + "49723": 1, + "49725": 1, + "49726": 2, + "49727": 2, + "49729": 1, + "49730": 2, + "49731": 1, + "49732": 1, + "49733": 2, + "49734": 1, + "49735": 3, + "49736": 2, + "49738": 3, + "49739": 3, + "49740": 1, + "49741": 1, + "49742": 1, + "49743": 3, + "49744": 2, + "49746": 3, + "49748": 1, + "49749": 2, + "49750": 2, + "49751": 5, + "49753": 2, + "49756": 1, + "49757": 4, + "49758": 1, + "49759": 2, + "49760": 2, + "49761": 1, + "49762": 3, + "49763": 2, + "49764": 3, + "49765": 2, + "49766": 2, + "49768": 2, + "49769": 3, + "49771": 1, + "49772": 2, + "49773": 1, + "49775": 4, + "49776": 1, + "49777": 1, + "49779": 2, + "49780": 1, + "49781": 1, + "49783": 3, + "49784": 4, + "49785": 1, + "49786": 1, + "49787": 1, + "49788": 2, + "49789": 3, + "49790": 2, + "49791": 2, + "49793": 2, + "49794": 2, + "49795": 2, + "49796": 3, + "49797": 1, + "49798": 4, + "49799": 1, + "49800": 1, + "49801": 2, + "49802": 4, + "49803": 2, + "49804": 3, + "49807": 2, + "49808": 3, + "49811": 1, + "49812": 2, + "49813": 1, + "49814": 1, + "49815": 1, + "49816": 1, + "49817": 2, + "49818": 1, + "49820": 2, + "49821": 1, + "49823": 1, + "49825": 1, + "49826": 1, + "49828": 1, + "49829": 1, + "49830": 3, + "49832": 1, + "49833": 1, + "49834": 1, + "49836": 1, + "49838": 1, + "49841": 1, + "49848": 2, + "49849": 1, + "49852": 1, + "49855": 1, + "49857": 1, + "49858": 3, + "49861": 1, + "49863": 1, + "49864": 1, + "49865": 1, + "49866": 1, + "49867": 1, + "49868": 1, + "49878": 1, + "49879": 1, + "49881": 1, + "49886": 1, + "49890": 1, + "49895": 1, + "49896": 1, + "49902": 1, + "49912": 1, + "49913": 2, + "49914": 1, + "49918": 1, + "49919": 1, + "49921": 1, + "49922": 1, + "49923": 1, + "49929": 1, + "49934": 2, + "49941": 1, + "49945": 2, + "49946": 1, + "49949": 1, + "49950": 1, + "49955": 1, + "49958": 1, + "49959": 1, + "49961": 1, + "49962": 2, + "49963": 1, + "49964": 1, + "49965": 1, + "49966": 1, + "49967": 1, + "49968": 4, + "49970": 1, + "49972": 2, + "49974": 2, + "49976": 3, + "49977": 2, + "49978": 1, + "49979": 2, + "49980": 1, + "49981": 3, + "49982": 3, + "49983": 2, + "49984": 2, + "49986": 1, + "49988": 1, + "49989": 2, + "49991": 2, + "49992": 2, + "49994": 2, + "49995": 1, + "49996": 1, + "49997": 1, + "49998": 2, + "49999": 1, + "50001": 1, + "50006": 2, + "50009": 2, + "50010": 1, + "50014": 1, + "50015": 1, + "50017": 1, + "50018": 1, + "50033": 1, + "50037": 1, + "50045": 1, + "50046": 1, + "50050": 1, + "50051": 1, + "50052": 1, + "50062": 1, + "50070": 1, + "50078": 1, + "50080": 1, + "50081": 1, + "50082": 2, + "50095": 1, + "50103": 1, + "50109": 1, + "50114": 1, + "50120": 1, + "50123": 1, + "50128": 1, + "50129": 1, + "50134": 1, + "50136": 1, + "50137": 2, + "50139": 1, + "50151": 1, + "50153": 1, + "50154": 1, + "50156": 2, + "50158": 1, + "50159": 1, + "50161": 1, + "50162": 2, + "50163": 2, + "50169": 1, + "50175": 3, + "50177": 1, + "50181": 1, + "50185": 1, + "50188": 1, + "50190": 1, + "50194": 1, + "50196": 1, + "50198": 1, + "50199": 1, + "50202": 1, + "50203": 1, + "50205": 1, + "50207": 1, + "50208": 1, + "50209": 1, + "50210": 1, + "50212": 1, + "50213": 1, + "50215": 1, + "50216": 1, + "50217": 1, + "50219": 2, + "50220": 2, + "50221": 1, + "50222": 1, + "50226": 1, + "50238": 2, + "50241": 1, + "50243": 1, + "50245": 2, + "50246": 2, + "50247": 1, + "50249": 1, + "50250": 1, + "50257": 1, + "50263": 1, + "50264": 1, + "50270": 1, + "50272": 1, + "50281": 1, + "50296": 1, + "50304": 1, + "50329": 1, + "50331": 1, + "50334": 2, + "50336": 1, + "50339": 1, + "50342": 2, + "50344": 2, + "50345": 1, + "50346": 1, + "50347": 1, + "50348": 1, + "50350": 2, + "50352": 1, + "50361": 1, + "50363": 1, + "50377": 1, + "50382": 1, + "50394": 2, + "50399": 1, + "50405": 1, + "50406": 1, + "50410": 1, + "50412": 1, + "50413": 1, + "50414": 1, + "50417": 1, + "50422": 2, + "50423": 1, + "50427": 1, + "50431": 1, + "50432": 1, + "50437": 1, + "50443": 1, + "50456": 1, + "50460": 1, + "50465": 1, + "50474": 1, + "50475": 1, + "50476": 1, + "50477": 1, + "50479": 1, + "50482": 1, + "50483": 1, + "50486": 1, + "50495": 1, + "50497": 1, + "50499": 1, + "50502": 1, + "50506": 1, + "50511": 1, + "50515": 1, + "50523": 1, + "50524": 1, + "50531": 2, + "50538": 1, + "50547": 2, + "50553": 1, + "50554": 1, + "50568": 2, + "50570": 1, + "50572": 1, + "50583": 1, + "50584": 1, + "50589": 1, + "50593": 1, + "50612": 1, + "50615": 1, + "50617": 1, + "50618": 1, + "50621": 1, + "50626": 2, + "50632": 1, + "50634": 1, + "50635": 1, + "50637": 1, + "50642": 1, + "50643": 1, + "50645": 1, + "50646": 1, + "50649": 1, + "50654": 1, + "50655": 2, + "50656": 1, + "50658": 2, + "50659": 1, + "50660": 1, + "50661": 3, + "50662": 1, + "50664": 1, + "50665": 2, + "50666": 1, + "50667": 3, + "50668": 2, + "50669": 1, + "50670": 3, + "50672": 1, + "50674": 2, + "50676": 3, + "50677": 1, + "50678": 3, + "50679": 4, + "50680": 3, + "50681": 1, + "50682": 1, + "50683": 4, + "50684": 1, + "50685": 2, + "50686": 1, + "50688": 1, + "50691": 3, + "50693": 4, + "50696": 2, + "50697": 1, + "50698": 1, + "50699": 2, + "50700": 1, + "50702": 1, + "50703": 1, + "50706": 3, + "50709": 2, + "50710": 1, + "50712": 1, + "50713": 1, + "50715": 2, + "50717": 2, + "50718": 3, + "50719": 1, + "50720": 2, + "50721": 2, + "50722": 1, + "50723": 4, + "50725": 1, + "50726": 3, + "50730": 2, + "50731": 2, + "50735": 1, + "50737": 1, + "50738": 1, + "50741": 1, + "50742": 2, + "50743": 1, + "50747": 1, + "50748": 2, + "50749": 1, + "50750": 1, + "50752": 2, + "50755": 1, + "50756": 1, + "50757": 1, + "50758": 1, + "50761": 1, + "50762": 3, + "50763": 1, + "50764": 1, + "50768": 1, + "50771": 1, + "50773": 1, + "50777": 1, + "50778": 1, + "50782": 1, + "50784": 2, + "50790": 1, + "50799": 2, + "50803": 1, + "50805": 2, + "50811": 1, + "50812": 1, + "50814": 3, + "50815": 1, + "50818": 1, + "50820": 1, + "50821": 1, + "50822": 1, + "50823": 1, + "50826": 1, + "50833": 1, + "50834": 2, + "50835": 1, + "50836": 1, + "50841": 2, + "50849": 2, + "50853": 1, + "50856": 1, + "50863": 1, + "50867": 1, + "50868": 1, + "50874": 1, + "50878": 1, + "50881": 1, + "50884": 1, + "50889": 1, + "50893": 2, + "50900": 1, + "50901": 1, + "50902": 1, + "50903": 2, + "50904": 2, + "50906": 2, + "50908": 1, + "50912": 1, + "50914": 1, + "50916": 1, + "50917": 1, + "50919": 1, + "50922": 2, + "50926": 2, + "50928": 1, + "50935": 2, + "50936": 2, + "50937": 1, + "50940": 1, + "50944": 2, + "50947": 1, + "50950": 2, + "50951": 1, + "50953": 2, + "50955": 1, + "50959": 1, + "50960": 2, + "50961": 1, + "50962": 1, + "50965": 1, + "50968": 1, + "50969": 1, + "50970": 2, + "50972": 1, + "50973": 1, + "50974": 1, + "50977": 2, + "50978": 2, + "50981": 1, + "50982": 1, + "50984": 3, + "50985": 2, + "50989": 1, + "50990": 1, + "50991": 1, + "50993": 1, + "50994": 3, + "50995": 1, + "50996": 1, + "50998": 2, + "51001": 3, + "51002": 1, + "51003": 2, + "51004": 2, + "51005": 1, + "51006": 1, + "51010": 2, + "51011": 1, + "51013": 1, + "51024": 1, + "51031": 1, + "51032": 1, + "51033": 1, + "51034": 1, + "51035": 1, + "51036": 1, + "51037": 2, + "51038": 2, + "51039": 1, + "51040": 1, + "51041": 2, + "51042": 1, + "51043": 4, + "51044": 1, + "51045": 1, + "51046": 2, + "51049": 2, + "51050": 4, + "51051": 1, + "51053": 1, + "51054": 1, + "51058": 1, + "51059": 1, + "51060": 1, + "51064": 1, + "51065": 1, + "51066": 2, + "51068": 1, + "51069": 3, + "51071": 2, + "51072": 1, + "51073": 1, + "51077": 1, + "51078": 1, + "51080": 2, + "51081": 1, + "51082": 4, + "51089": 3, + "51090": 3, + "51091": 1, + "51092": 2, + "51093": 1, + "51094": 2, + "51095": 1, + "51096": 2, + "51099": 2, + "51100": 1, + "51101": 1, + "51102": 2, + "51103": 1, + "51107": 1, + "51110": 2, + "51112": 1, + "51116": 1, + "51119": 1, + "51120": 1, + "51134": 1, + "51137": 1, + "51140": 2, + "51142": 1, + "51145": 1, + "51147": 2, + "51149": 2, + "51151": 1, + "51153": 1, + "51161": 1, + "51162": 1, + "51163": 1, + "51167": 1, + "51169": 1, + "51172": 1, + "51175": 1, + "51183": 1, + "51186": 1, + "51188": 2, + "51190": 1, + "51196": 2, + "51197": 1, + "51198": 1, + "51200": 1, + "51202": 1, + "51209": 1, + "51212": 1, + "51213": 1, + "51215": 1, + "51216": 1, + "51220": 1, + "51224": 1, + "51225": 1, + "51227": 2, + "51230": 2, + "51238": 1, + "51239": 1, + "51247": 1, + "51248": 2, + "51250": 2, + "51251": 1, + "51253": 4, + "51254": 2, + "51255": 1, + "51256": 1, + "51257": 1, + "51259": 2, + "51260": 1, + "51261": 1, + "51263": 2, + "51264": 1, + "51265": 1, + "51269": 1, + "51270": 1, + "51275": 1, + "51283": 1, + "51286": 1, + "51287": 1, + "51289": 1, + "51294": 1, + "51296": 2, + "51297": 1, + "51300": 1, + "51303": 1, + "51305": 1, + "51306": 1, + "51307": 1, + "51312": 1, + "51313": 1, + "51319": 1, + "51320": 2, + "51321": 1, + "51322": 2, + "51324": 1, + "51325": 1, + "51326": 4, + "51327": 1, + "51328": 1, + "51329": 1, + "51331": 1, + "51332": 1, + "51333": 2, + "51334": 3, + "51335": 2, + "51336": 1, + "51337": 1, + "51339": 1, + "51340": 1, + "51341": 1, + "51342": 1, + "51343": 1, + "51345": 1, + "51346": 1, + "51347": 1, + "51350": 1, + "51352": 2, + "51353": 1, + "51358": 1, + "51359": 1, + "51360": 1, + "51361": 3, + "51364": 1, + "51367": 1, + "51368": 1, + "51369": 1, + "51370": 1, + "51371": 1, + "51374": 1, + "51379": 1, + "51381": 1, + "51385": 1, + "51387": 2, + "51388": 1, + "51389": 1, + "51390": 1, + "51393": 1, + "51396": 1, + "51398": 1, + "51399": 2, + "51401": 1, + "51407": 2, + "51426": 1 + }, + "started": "2025-09-11T20:08:30.243Z", + "trafficStats": { + "incomingCompressionRatio": 0.38521256256103514, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 50490581, + "incomingOctetsWireLevel": 50498581, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00015844539400328945, + "outgoingCompressionRatio": 0.38521256256103514, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 50490581, + "outgoingOctetsWireLevel": 51280525, + "outgoingWebSocketFrames": 197772, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01564537354006681, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 196772, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 2, + "3": 6, + "4": 2, + "5": 4, + "6": 4, + "7": 1, + "8": 5, + "9": 3, + "10": 3, + "11": 1, + "12": 5, + "14": 2, + "15": 7, + "16": 2, + "17": 2, + "18": 4, + "19": 6, + "20": 5, + "21": 5, + "22": 2, + "23": 5, + "24": 7, + "25": 2, + "26": 3, + "27": 8, + "28": 6, + "29": 6, + "30": 1, + "31": 4, + "32": 7, + "33": 5, + "34": 4, + "35": 5, + "36": 5, + "37": 6, + "38": 6, + "39": 4, + "40": 3, + "41": 6, + "42": 7, + "43": 2, + "44": 12, + "45": 4, + "46": 4, + "47": 6, + "48": 9, + "49": 3, + "50": 7, + "51": 6, + "52": 4, + "53": 8, + "54": 6, + "55": 7, + "56": 9, + "57": 7, + "58": 5, + "59": 4, + "60": 5, + "61": 5, + "62": 3, + "63": 9, + "64": 6, + "65": 6, + "66": 4, + "67": 2, + "68": 10, + "69": 6, + "70": 3, + "71": 2, + "72": 3, + "73": 5, + "74": 4, + "75": 2, + "76": 3, + "77": 3, + "78": 1, + "79": 3, + "80": 5, + "81": 8, + "82": 2, + "83": 7, + "84": 3, + "85": 2, + "86": 3, + "87": 6, + "88": 7, + "89": 4, + "90": 8, + "91": 5, + "92": 5, + "93": 8, + "94": 5, + "95": 3, + "96": 5, + "97": 1, + "98": 2, + "99": 7, + "100": 6, + "101": 3, + "102": 2, + "103": 2, + "104": 1, + "105": 6, + "106": 2, + "107": 3, + "108": 1, + "109": 6, + "110": 2, + "111": 4, + "113": 4, + "114": 8, + "115": 4, + "116": 6, + "117": 2, + "118": 5, + "119": 8, + "120": 10, + "121": 6, + "122": 3, + "123": 5, + "124": 4, + "125": 4, + "126": 6, + "127": 5, + "130": 9, + "131": 4, + "132": 6, + "133": 4, + "134": 10, + "135": 3, + "136": 5, + "137": 1, + "138": 2, + "139": 3, + "140": 3, + "141": 5, + "142": 6, + "143": 5, + "144": 5, + "145": 2, + "146": 6, + "147": 3, + "148": 7, + "149": 6, + "150": 1, + "151": 4, + "152": 3, + "153": 3, + "154": 6, + "155": 3, + "156": 3, + "157": 8, + "158": 3, + "159": 2, + "160": 2, + "161": 2, + "162": 7, + "163": 2, + "164": 6, + "165": 3, + "166": 3, + "167": 2, + "168": 3, + "170": 4, + "171": 3, + "172": 2, + "173": 1, + "175": 2, + "176": 2, + "177": 1, + "179": 2, + "180": 2, + "181": 4, + "182": 2, + "183": 3, + "184": 2, + "185": 3, + "186": 3, + "187": 1, + "189": 4, + "190": 6, + "192": 4, + "193": 1, + "194": 3, + "195": 3, + "196": 3, + "197": 5, + "198": 2, + "199": 5, + "200": 1, + "201": 6, + "202": 1, + "203": 3, + "204": 1, + "205": 2, + "206": 1, + "207": 1, + "208": 1, + "209": 2, + "210": 4, + "211": 3, + "212": 3, + "213": 5, + "214": 5, + "215": 2, + "216": 2, + "218": 2, + "219": 4, + "220": 2, + "221": 1, + "222": 5, + "223": 1, + "224": 3, + "225": 5, + "226": 2, + "227": 4, + "228": 2, + "229": 3, + "230": 5, + "231": 3, + "232": 5, + "233": 3, + "234": 8, + "235": 2, + "236": 2, + "237": 2, + "238": 5, + "239": 2, + "240": 5, + "241": 1, + "242": 6, + "243": 7, + "244": 6, + "245": 5, + "246": 2, + "247": 5, + "248": 4, + "249": 3, + "250": 3, + "251": 6, + "252": 6, + "253": 2, + "254": 3, + "255": 5, + "257": 7, + "258": 3, + "259": 2, + "260": 196772 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333532266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828a49a17889a1" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8a49a178" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_16.html b/autobahn/client/tungstenite_case_12_3_16.html new file mode 100644 index 0000000..6891ffe --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_16.html @@ -0,0 +1,1605 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.16 : Pass - 15884 ms @ 2025-09-11T20:08:47.840Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=353&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: oeJ30FCp3sJX9nLCjLmKGQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: KkINtrJXxQRBd5CBNEzl/Vgt+Cs=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
724017240
44486144486
49537149537
49555149555
49558149558
49560149560
49563149563
49575149575
49606149606
49613149613
49628149628
49645149645
49663149663
49666149666
49669149669
49670149670
49671149671
49676149676
496853149055
49687149687
49689149689
49690149690
49697299394
49698299396
49699149699
49701149701
49702149702
49703299406
49705149705
49708299416
49711149711
49712149712
497143149142
49715149715
49716149716
49717149717
49719149719
497203149160
49722299444
49723149723
49725149725
49726299452
49727299454
49729149729
49730299460
49731149731
49732149732
49733299466
49734149734
497353149205
49736299472
497383149214
497393149217
49740149740
49741149741
49742149742
497433149229
49744299488
497463149238
49748149748
49749299498
49750299500
497515248755
49753299506
49756149756
497574199028
49758149758
49759299518
49760299520
49761149761
497623149286
49763299526
497643149292
49765299530
49766299532
49768299536
497693149307
49771149771
49772299544
49773149773
497754199100
49776149776
49777149777
49779299558
49780149780
49781149781
497833149349
497844199136
49785149785
49786149786
49787149787
49788299576
497893149367
49790299580
49791299582
49793299586
49794299588
49795299590
497963149388
49797149797
497984199192
49799149799
49800149800
49801299602
498024199208
49803299606
498043149412
49807299614
498083149424
49811149811
49812299624
49813149813
49814149814
49815149815
49816149816
49817299634
49818149818
49820299640
49821149821
49823149823
49825149825
49826149826
49828149828
49829149829
498303149490
49832149832
49833149833
49834149834
49836149836
49838149838
49841149841
49848299696
49849149849
49852149852
49855149855
49857149857
498583149574
49861149861
49863149863
49864149864
49865149865
49866149866
49867149867
49868149868
49878149878
49879149879
49881149881
49886149886
49890149890
49895149895
49896149896
49902149902
49912149912
49913299826
49914149914
49918149918
49919149919
49921149921
49922149922
49923149923
49929149929
49934299868
49941149941
49945299890
49946149946
49949149949
49950149950
49955149955
49958149958
49959149959
49961149961
49962299924
49963149963
49964149964
49965149965
49966149966
49967149967
499684199872
49970149970
49972299944
49974299948
499763149928
49977299954
49978149978
49979299958
49980149980
499813149943
499823149946
49983299966
49984299968
49986149986
49988149988
49989299978
49991299982
49992299984
49994299988
49995149995
49996149996
49997149997
49998299996
49999149999
50001150001
500062100012
500092100018
50010150010
50014150014
50015150015
50017150017
50018150018
50033150033
50037150037
50045150045
50046150046
50050150050
50051150051
50052150052
50062150062
50070150070
50078150078
50080150080
50081150081
500822100164
50095150095
50103150103
50109150109
50114150114
50120150120
50123150123
50128150128
50129150129
50134150134
50136150136
501372100274
50139150139
50151150151
50153150153
50154150154
501562100312
50158150158
50159150159
50161150161
501622100324
501632100326
50169150169
501753150525
50177150177
50181150181
50185150185
50188150188
50190150190
50194150194
50196150196
50198150198
50199150199
50202150202
50203150203
50205150205
50207150207
50208150208
50209150209
50210150210
50212150212
50213150213
50215150215
50216150216
50217150217
502192100438
502202100440
50221150221
50222150222
50226150226
502382100476
50241150241
50243150243
502452100490
502462100492
50247150247
50249150249
50250150250
50257150257
50263150263
50264150264
50270150270
50272150272
50281150281
50296150296
50304150304
50329150329
50331150331
503342100668
50336150336
50339150339
503422100684
503442100688
50345150345
50346150346
50347150347
50348150348
503502100700
50352150352
50361150361
50363150363
50377150377
50382150382
503942100788
50399150399
50405150405
50406150406
50410150410
50412150412
50413150413
50414150414
50417150417
504222100844
50423150423
50427150427
50431150431
50432150432
50437150437
50443150443
50456150456
50460150460
50465150465
50474150474
50475150475
50476150476
50477150477
50479150479
50482150482
50483150483
50486150486
50495150495
50497150497
50499150499
50502150502
50506150506
50511150511
50515150515
50523150523
50524150524
505312101062
50538150538
505472101094
50553150553
50554150554
505682101136
50570150570
50572150572
50583150583
50584150584
50589150589
50593150593
50612150612
50615150615
50617150617
50618150618
50621150621
506262101252
50632150632
50634150634
50635150635
50637150637
50642150642
50643150643
50645150645
50646150646
50649150649
50654150654
506552101310
50656150656
506582101316
50659150659
50660150660
506613151983
50662150662
50664150664
506652101330
50666150666
506673152001
506682101336
50669150669
506703152010
50672150672
506742101348
506763152028
50677150677
506783152034
506794202716
506803152040
50681150681
50682150682
506834202732
50684150684
506852101370
50686150686
50688150688
506913152073
506934202772
506962101392
50697150697
50698150698
506992101398
50700150700
50702150702
50703150703
507063152118
507092101418
50710150710
50712150712
50713150713
507152101430
507172101434
507183152154
50719150719
507202101440
507212101442
50722150722
507234202892
50725150725
507263152178
507302101460
507312101462
50735150735
50737150737
50738150738
50741150741
507422101484
50743150743
50747150747
507482101496
50749150749
50750150750
507522101504
50755150755
50756150756
50757150757
50758150758
50761150761
507623152286
50763150763
50764150764
50768150768
50771150771
50773150773
50777150777
50778150778
50782150782
507842101568
50790150790
507992101598
50803150803
508052101610
50811150811
50812150812
508143152442
50815150815
50818150818
50820150820
50821150821
50822150822
50823150823
50826150826
50833150833
508342101668
50835150835
50836150836
508412101682
508492101698
50853150853
50856150856
50863150863
50867150867
50868150868
50874150874
50878150878
50881150881
50884150884
50889150889
508932101786
50900150900
50901150901
50902150902
509032101806
509042101808
509062101812
50908150908
50912150912
50914150914
50916150916
50917150917
50919150919
509222101844
509262101852
50928150928
509352101870
509362101872
50937150937
50940150940
509442101888
50947150947
509502101900
50951150951
509532101906
50955150955
50959150959
509602101920
50961150961
50962150962
50965150965
50968150968
50969150969
509702101940
50972150972
50973150973
50974150974
509772101954
509782101956
50981150981
50982150982
509843152952
509852101970
50989150989
50990150990
50991150991
50993150993
509943152982
50995150995
50996150996
509982101996
510013153003
51002151002
510032102006
510042102008
51005151005
51006151006
510102102020
51011151011
51013151013
51024151024
51031151031
51032151032
51033151033
51034151034
51035151035
51036151036
510372102074
510382102076
51039151039
51040151040
510412102082
51042151042
510434204172
51044151044
51045151045
510462102092
510492102098
510504204200
51051151051
51053151053
51054151054
51058151058
51059151059
51060151060
51064151064
51065151065
510662102132
51068151068
510693153207
510712102142
51072151072
51073151073
51077151077
51078151078
510802102160
51081151081
510824204328
510893153267
510903153270
51091151091
510922102184
51093151093
510942102188
51095151095
510962102192
510992102198
51100151100
51101151101
511022102204
51103151103
51107151107
511102102220
51112151112
51116151116
51119151119
51120151120
51134151134
51137151137
511402102280
51142151142
51145151145
511472102294
511492102298
51151151151
51153151153
51161151161
51162151162
51163151163
51167151167
51169151169
51172151172
51175151175
51183151183
51186151186
511882102376
51190151190
511962102392
51197151197
51198151198
51200151200
51202151202
51209151209
51212151212
51213151213
51215151215
51216151216
51220151220
51224151224
51225151225
512272102454
512302102460
51238151238
51239151239
51247151247
512482102496
512502102500
51251151251
512534205012
512542102508
51255151255
51256151256
51257151257
512592102518
51260151260
51261151261
512632102526
51264151264
51265151265
51269151269
51270151270
51275151275
51283151283
51286151286
51287151287
51289151289
51294151294
512962102592
51297151297
51300151300
51303151303
51305151305
51306151306
51307151307
51312151312
51313151313
51319151319
513202102640
51321151321
513222102644
51324151324
51325151325
513264205304
51327151327
51328151328
51329151329
51331151331
51332151332
513332102666
513343154002
513352102670
51336151336
51337151337
51339151339
51340151340
51341151341
51342151342
51343151343
51345151345
51346151346
51347151347
51350151350
513522102704
51353151353
51358151358
51359151359
51360151360
513613154083
51364151364
51367151367
51368151368
51369151369
51370151370
51371151371
51374151374
51379151379
51381151381
51385151385
513872102774
51388151388
51389151389
51390151390
51393151393
51396151396
51398151398
513992102798
51401151401
514072102814
51426151426
Total100350498846
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
326
414
6212
717
818
919
10110
12112
14228
16116
17117
18118
19119
20120
21363
23123
24248
25125
26126
27127
28128
30130
31131
32132
33266
34134
35135
37274
38276
39139
40140
41141
42284
443132
45145
474188
48296
49149
50150
51151
532106
54154
55155
562112
572114
58158
592118
61161
633189
643192
65165
67167
68168
69169
75175
77177
80180
812162
82182
83183
882176
903270
91191
94194
97197
992198
1001100
1011101
1061106
1071107
1131113
1143342
1151115
1162232
1181118
1191119
1204480
1211121
1222244
1231123
1251125
1261126
1272254
1303390
1312262
1321132
1331133
1351135
1361136
1371137
1381138
1391139
1411141
1421142
1431143
1461146
1482296
1492298
1511151
1543462
1551155
1562312
1573471
1591159
1601160
1622324
1631163
1643492
1652330
1662332
1672334
1681168
1703510
1721172
1751175
1771177
1812362
1833549
1841184
1851185
1861186
1891189
1921192
1941194
1952390
1972394
2021202
2032406
2142428
2191219
2221222
2251225
2261226
2301230
2321232
2331233
2341234
2371237
2422484
2431243
2471247
2511251
2522504
2571257
2631263
2761276
2801280
2851285
2941294
2951295
2961296
2971297
2991299
3021302
3031303
3061306
3151315
3171317
3191319
3221322
3261326
3311331
3351335
3431343
3441344
3512702
3581358
3672734
3731373
3741374
3811381
3882776
3901390
3921392
3991399
4021402
4031403
4042808
4071407
4091409
4131413
4191419
4321432
4351435
4371437
4381438
4411441
4462892
4501450
4521452
4541454
4551455
4572914
4621462
4631463
4651465
4661466
4691469
4721472
4741474
4752950
4761476
4782956
4791479
4801480
48131443
4821482
4841484
4852970
4861486
48731461
4882976
4892978
49031470
4921492
4942988
49631488
4971497
49831494
49941996
50031500
5011501
5021502
50342012
5041504
50521010
5061506
5071507
5081508
5101510
51131533
51352565
5141514
5151515
51621032
5171517
5181518
51921038
52021040
52221044
5231523
52631578
52952645
5301530
5311531
5321532
53321066
5341534
53521070
53721074
53831614
5391539
54021080
54142164
54231626
54352715
54521090
54642184
54721094
5491549
55021100
55121102
55221104
55521110
5561556
5571557
55842232
5591559
5601560
56121122
56221124
56321126
56431692
56621132
56721134
56821136
56921138
57031710
57121142
57221144
5731573
57421148
57521150
57621152
57731731
57821156
57931737
58021160
5811581
58263492
58342332
58421168
5851585
5861586
58731761
58831764
59031770
5911591
5921592
59331779
59421188
59552975
59731791
5981598
6001600
60142404
60221204
60321206
60442416
6051605
60631818
60721214
60831824
60921218
61031830
61221224
61331839
6151615
61621232
6171617
61963714
6201620
6211621
62331869
6241624
62531875
62731881
62842512
6291629
6301630
63121262
63231896
63331899
63453170
63531905
63721274
63831914
63921278
64042560
64121282
64253210
64321286
6441644
64521290
64653230
64721294
64831944
65121302
65231956
6531653
65421308
65521310
65631968
6571657
6581658
6591659
6601660
66142644
6621662
66421328
6651665
6671667
66932007
6701670
6721672
67321346
67432022
67621352
6771677
6781678
6801680
6821682
6831683
6851685
6871687
6881688
69221384
6931693
6941694
6961696
6981698
6991699
70121402
70232106
7041704
7051705
7071707
7081708
70921418
7101710
7111711
7121712
71321426
7201720
7211721
72221444
72332169
72421448
7251725
72621452
7281728
7301730
7321732
73421468
7361736
7371737
73921478
7401740
74221484
74632238
7481748
75521510
75632268
75732271
7581758
7601760
7621762
7631763
76421528
7651765
7661766
76721534
77021540
7711771
77332319
7751775
77821556
7791779
78021560
7811781
7821782
78521570
7881788
78932367
79032370
7921792
79321586
79421588
79721594
79821596
7991799
8011801
80221604
8031803
80432412
80532415
80621612
8071807
8081808
80921618
81021620
81121622
81243248
8131813
81443256
8151815
81632448
81843272
82032460
82154105
82221644
82343292
82432472
82543300
82643304
82721654
82821656
83032490
8311831
8321832
83332499
83521670
83621672
83821676
8391839
8401840
8411841
84221684
8431843
8441844
8451845
85021700
8511851
8521852
85332559
85421708
8551855
8561856
85721714
85832574
85921718
8601860
86132583
86221724
86343452
8641864
8651865
86621732
86921738
87043480
8711871
8731873
8741874
8771877
8781878
8791879
8801880
8811881
8841884
8851885
88621772
8881888
88943556
8901890
89121782
8921892
8931893
8941894
8951895
8961896
8971897
8981898
90021800
9011901
90243608
9061906
90932727
91032730
9111911
91221824
9131913
91432742
9151915
91621832
91921838
9201920
9211921
92232766
9231923
9241924
9251925
92621852
9271927
93021860
9321932
9361936
93921878
9401940
9471947
9531953
9541954
9571957
9581958
96021920
9621962
9641964
9651965
96732901
96921938
9711971
9721972
97321946
9781978
9801980
98132943
9821982
98321966
9871987
9891989
9921992
99521990
9971997
9981998
100022000
100211002
100322006
100511005
100633018
100722014
100822016
101011010
101311013
101622032
101711017
101811018
101933057
102011020
102111021
102211022
102511025
10284875650121168
Total4975850689623
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
048756
21000
81
Total49757
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333533266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882c47942f1c791
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6334373934326631
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_16.json b/autobahn/client/tungstenite_case_12_3_16.json new file mode 100644 index 0000000..f1b3dfc --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_16.json @@ -0,0 +1,1452 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 353, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 15884, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=353&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: oeJ30FCp3sJX9nLCjLmKGQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: KkINtrJXxQRBd5CBNEzl/Vgt+Cs=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "7240": 1, + "44486": 1, + "49537": 1, + "49555": 1, + "49558": 1, + "49560": 1, + "49563": 1, + "49575": 1, + "49606": 1, + "49613": 1, + "49628": 1, + "49645": 1, + "49663": 1, + "49666": 1, + "49669": 1, + "49670": 1, + "49671": 1, + "49676": 1, + "49685": 3, + "49687": 1, + "49689": 1, + "49690": 1, + "49697": 2, + "49698": 2, + "49699": 1, + "49701": 1, + "49702": 1, + "49703": 2, + "49705": 1, + "49708": 2, + "49711": 1, + "49712": 1, + "49714": 3, + "49715": 1, + "49716": 1, + "49717": 1, + "49719": 1, + "49720": 3, + "49722": 2, + "49723": 1, + "49725": 1, + "49726": 2, + "49727": 2, + "49729": 1, + "49730": 2, + "49731": 1, + "49732": 1, + "49733": 2, + "49734": 1, + "49735": 3, + "49736": 2, + "49738": 3, + "49739": 3, + "49740": 1, + "49741": 1, + "49742": 1, + "49743": 3, + "49744": 2, + "49746": 3, + "49748": 1, + "49749": 2, + "49750": 2, + "49751": 5, + "49753": 2, + "49756": 1, + "49757": 4, + "49758": 1, + "49759": 2, + "49760": 2, + "49761": 1, + "49762": 3, + "49763": 2, + "49764": 3, + "49765": 2, + "49766": 2, + "49768": 2, + "49769": 3, + "49771": 1, + "49772": 2, + "49773": 1, + "49775": 4, + "49776": 1, + "49777": 1, + "49779": 2, + "49780": 1, + "49781": 1, + "49783": 3, + "49784": 4, + "49785": 1, + "49786": 1, + "49787": 1, + "49788": 2, + "49789": 3, + "49790": 2, + "49791": 2, + "49793": 2, + "49794": 2, + "49795": 2, + "49796": 3, + "49797": 1, + "49798": 4, + "49799": 1, + "49800": 1, + "49801": 2, + "49802": 4, + "49803": 2, + "49804": 3, + "49807": 2, + "49808": 3, + "49811": 1, + "49812": 2, + "49813": 1, + "49814": 1, + "49815": 1, + "49816": 1, + "49817": 2, + "49818": 1, + "49820": 2, + "49821": 1, + "49823": 1, + "49825": 1, + "49826": 1, + "49828": 1, + "49829": 1, + "49830": 3, + "49832": 1, + "49833": 1, + "49834": 1, + "49836": 1, + "49838": 1, + "49841": 1, + "49848": 2, + "49849": 1, + "49852": 1, + "49855": 1, + "49857": 1, + "49858": 3, + "49861": 1, + "49863": 1, + "49864": 1, + "49865": 1, + "49866": 1, + "49867": 1, + "49868": 1, + "49878": 1, + "49879": 1, + "49881": 1, + "49886": 1, + "49890": 1, + "49895": 1, + "49896": 1, + "49902": 1, + "49912": 1, + "49913": 2, + "49914": 1, + "49918": 1, + "49919": 1, + "49921": 1, + "49922": 1, + "49923": 1, + "49929": 1, + "49934": 2, + "49941": 1, + "49945": 2, + "49946": 1, + "49949": 1, + "49950": 1, + "49955": 1, + "49958": 1, + "49959": 1, + "49961": 1, + "49962": 2, + "49963": 1, + "49964": 1, + "49965": 1, + "49966": 1, + "49967": 1, + "49968": 4, + "49970": 1, + "49972": 2, + "49974": 2, + "49976": 3, + "49977": 2, + "49978": 1, + "49979": 2, + "49980": 1, + "49981": 3, + "49982": 3, + "49983": 2, + "49984": 2, + "49986": 1, + "49988": 1, + "49989": 2, + "49991": 2, + "49992": 2, + "49994": 2, + "49995": 1, + "49996": 1, + "49997": 1, + "49998": 2, + "49999": 1, + "50001": 1, + "50006": 2, + "50009": 2, + "50010": 1, + "50014": 1, + "50015": 1, + "50017": 1, + "50018": 1, + "50033": 1, + "50037": 1, + "50045": 1, + "50046": 1, + "50050": 1, + "50051": 1, + "50052": 1, + "50062": 1, + "50070": 1, + "50078": 1, + "50080": 1, + "50081": 1, + "50082": 2, + "50095": 1, + "50103": 1, + "50109": 1, + "50114": 1, + "50120": 1, + "50123": 1, + "50128": 1, + "50129": 1, + "50134": 1, + "50136": 1, + "50137": 2, + "50139": 1, + "50151": 1, + "50153": 1, + "50154": 1, + "50156": 2, + "50158": 1, + "50159": 1, + "50161": 1, + "50162": 2, + "50163": 2, + "50169": 1, + "50175": 3, + "50177": 1, + "50181": 1, + "50185": 1, + "50188": 1, + "50190": 1, + "50194": 1, + "50196": 1, + "50198": 1, + "50199": 1, + "50202": 1, + "50203": 1, + "50205": 1, + "50207": 1, + "50208": 1, + "50209": 1, + "50210": 1, + "50212": 1, + "50213": 1, + "50215": 1, + "50216": 1, + "50217": 1, + "50219": 2, + "50220": 2, + "50221": 1, + "50222": 1, + "50226": 1, + "50238": 2, + "50241": 1, + "50243": 1, + "50245": 2, + "50246": 2, + "50247": 1, + "50249": 1, + "50250": 1, + "50257": 1, + "50263": 1, + "50264": 1, + "50270": 1, + "50272": 1, + "50281": 1, + "50296": 1, + "50304": 1, + "50329": 1, + "50331": 1, + "50334": 2, + "50336": 1, + "50339": 1, + "50342": 2, + "50344": 2, + "50345": 1, + "50346": 1, + "50347": 1, + "50348": 1, + "50350": 2, + "50352": 1, + "50361": 1, + "50363": 1, + "50377": 1, + "50382": 1, + "50394": 2, + "50399": 1, + "50405": 1, + "50406": 1, + "50410": 1, + "50412": 1, + "50413": 1, + "50414": 1, + "50417": 1, + "50422": 2, + "50423": 1, + "50427": 1, + "50431": 1, + "50432": 1, + "50437": 1, + "50443": 1, + "50456": 1, + "50460": 1, + "50465": 1, + "50474": 1, + "50475": 1, + "50476": 1, + "50477": 1, + "50479": 1, + "50482": 1, + "50483": 1, + "50486": 1, + "50495": 1, + "50497": 1, + "50499": 1, + "50502": 1, + "50506": 1, + "50511": 1, + "50515": 1, + "50523": 1, + "50524": 1, + "50531": 2, + "50538": 1, + "50547": 2, + "50553": 1, + "50554": 1, + "50568": 2, + "50570": 1, + "50572": 1, + "50583": 1, + "50584": 1, + "50589": 1, + "50593": 1, + "50612": 1, + "50615": 1, + "50617": 1, + "50618": 1, + "50621": 1, + "50626": 2, + "50632": 1, + "50634": 1, + "50635": 1, + "50637": 1, + "50642": 1, + "50643": 1, + "50645": 1, + "50646": 1, + "50649": 1, + "50654": 1, + "50655": 2, + "50656": 1, + "50658": 2, + "50659": 1, + "50660": 1, + "50661": 3, + "50662": 1, + "50664": 1, + "50665": 2, + "50666": 1, + "50667": 3, + "50668": 2, + "50669": 1, + "50670": 3, + "50672": 1, + "50674": 2, + "50676": 3, + "50677": 1, + "50678": 3, + "50679": 4, + "50680": 3, + "50681": 1, + "50682": 1, + "50683": 4, + "50684": 1, + "50685": 2, + "50686": 1, + "50688": 1, + "50691": 3, + "50693": 4, + "50696": 2, + "50697": 1, + "50698": 1, + "50699": 2, + "50700": 1, + "50702": 1, + "50703": 1, + "50706": 3, + "50709": 2, + "50710": 1, + "50712": 1, + "50713": 1, + "50715": 2, + "50717": 2, + "50718": 3, + "50719": 1, + "50720": 2, + "50721": 2, + "50722": 1, + "50723": 4, + "50725": 1, + "50726": 3, + "50730": 2, + "50731": 2, + "50735": 1, + "50737": 1, + "50738": 1, + "50741": 1, + "50742": 2, + "50743": 1, + "50747": 1, + "50748": 2, + "50749": 1, + "50750": 1, + "50752": 2, + "50755": 1, + "50756": 1, + "50757": 1, + "50758": 1, + "50761": 1, + "50762": 3, + "50763": 1, + "50764": 1, + "50768": 1, + "50771": 1, + "50773": 1, + "50777": 1, + "50778": 1, + "50782": 1, + "50784": 2, + "50790": 1, + "50799": 2, + "50803": 1, + "50805": 2, + "50811": 1, + "50812": 1, + "50814": 3, + "50815": 1, + "50818": 1, + "50820": 1, + "50821": 1, + "50822": 1, + "50823": 1, + "50826": 1, + "50833": 1, + "50834": 2, + "50835": 1, + "50836": 1, + "50841": 2, + "50849": 2, + "50853": 1, + "50856": 1, + "50863": 1, + "50867": 1, + "50868": 1, + "50874": 1, + "50878": 1, + "50881": 1, + "50884": 1, + "50889": 1, + "50893": 2, + "50900": 1, + "50901": 1, + "50902": 1, + "50903": 2, + "50904": 2, + "50906": 2, + "50908": 1, + "50912": 1, + "50914": 1, + "50916": 1, + "50917": 1, + "50919": 1, + "50922": 2, + "50926": 2, + "50928": 1, + "50935": 2, + "50936": 2, + "50937": 1, + "50940": 1, + "50944": 2, + "50947": 1, + "50950": 2, + "50951": 1, + "50953": 2, + "50955": 1, + "50959": 1, + "50960": 2, + "50961": 1, + "50962": 1, + "50965": 1, + "50968": 1, + "50969": 1, + "50970": 2, + "50972": 1, + "50973": 1, + "50974": 1, + "50977": 2, + "50978": 2, + "50981": 1, + "50982": 1, + "50984": 3, + "50985": 2, + "50989": 1, + "50990": 1, + "50991": 1, + "50993": 1, + "50994": 3, + "50995": 1, + "50996": 1, + "50998": 2, + "51001": 3, + "51002": 1, + "51003": 2, + "51004": 2, + "51005": 1, + "51006": 1, + "51010": 2, + "51011": 1, + "51013": 1, + "51024": 1, + "51031": 1, + "51032": 1, + "51033": 1, + "51034": 1, + "51035": 1, + "51036": 1, + "51037": 2, + "51038": 2, + "51039": 1, + "51040": 1, + "51041": 2, + "51042": 1, + "51043": 4, + "51044": 1, + "51045": 1, + "51046": 2, + "51049": 2, + "51050": 4, + "51051": 1, + "51053": 1, + "51054": 1, + "51058": 1, + "51059": 1, + "51060": 1, + "51064": 1, + "51065": 1, + "51066": 2, + "51068": 1, + "51069": 3, + "51071": 2, + "51072": 1, + "51073": 1, + "51077": 1, + "51078": 1, + "51080": 2, + "51081": 1, + "51082": 4, + "51089": 3, + "51090": 3, + "51091": 1, + "51092": 2, + "51093": 1, + "51094": 2, + "51095": 1, + "51096": 2, + "51099": 2, + "51100": 1, + "51101": 1, + "51102": 2, + "51103": 1, + "51107": 1, + "51110": 2, + "51112": 1, + "51116": 1, + "51119": 1, + "51120": 1, + "51134": 1, + "51137": 1, + "51140": 2, + "51142": 1, + "51145": 1, + "51147": 2, + "51149": 2, + "51151": 1, + "51153": 1, + "51161": 1, + "51162": 1, + "51163": 1, + "51167": 1, + "51169": 1, + "51172": 1, + "51175": 1, + "51183": 1, + "51186": 1, + "51188": 2, + "51190": 1, + "51196": 2, + "51197": 1, + "51198": 1, + "51200": 1, + "51202": 1, + "51209": 1, + "51212": 1, + "51213": 1, + "51215": 1, + "51216": 1, + "51220": 1, + "51224": 1, + "51225": 1, + "51227": 2, + "51230": 2, + "51238": 1, + "51239": 1, + "51247": 1, + "51248": 2, + "51250": 2, + "51251": 1, + "51253": 4, + "51254": 2, + "51255": 1, + "51256": 1, + "51257": 1, + "51259": 2, + "51260": 1, + "51261": 1, + "51263": 2, + "51264": 1, + "51265": 1, + "51269": 1, + "51270": 1, + "51275": 1, + "51283": 1, + "51286": 1, + "51287": 1, + "51289": 1, + "51294": 1, + "51296": 2, + "51297": 1, + "51300": 1, + "51303": 1, + "51305": 1, + "51306": 1, + "51307": 1, + "51312": 1, + "51313": 1, + "51319": 1, + "51320": 2, + "51321": 1, + "51322": 2, + "51324": 1, + "51325": 1, + "51326": 4, + "51327": 1, + "51328": 1, + "51329": 1, + "51331": 1, + "51332": 1, + "51333": 2, + "51334": 3, + "51335": 2, + "51336": 1, + "51337": 1, + "51339": 1, + "51340": 1, + "51341": 1, + "51342": 1, + "51343": 1, + "51345": 1, + "51346": 1, + "51347": 1, + "51350": 1, + "51352": 2, + "51353": 1, + "51358": 1, + "51359": 1, + "51360": 1, + "51361": 3, + "51364": 1, + "51367": 1, + "51368": 1, + "51369": 1, + "51370": 1, + "51371": 1, + "51374": 1, + "51379": 1, + "51381": 1, + "51385": 1, + "51387": 2, + "51388": 1, + "51389": 1, + "51390": 1, + "51393": 1, + "51396": 1, + "51398": 1, + "51399": 2, + "51401": 1, + "51407": 2, + "51426": 1 + }, + "started": "2025-09-11T20:08:47.840Z", + "trafficStats": { + "incomingCompressionRatio": 0.38521256256103514, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 50490581, + "incomingOctetsWireLevel": 50498581, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00015844539400328945, + "outgoingCompressionRatio": 0.38521256256103514, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 50490581, + "outgoingOctetsWireLevel": 50689367, + "outgoingWebSocketFrames": 49756, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.003937090761542237, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 48756, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 2, + "4": 1, + "6": 2, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "12": 1, + "14": 2, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 1, + "21": 3, + "23": 1, + "24": 2, + "25": 1, + "26": 1, + "27": 1, + "28": 1, + "30": 1, + "31": 1, + "32": 1, + "33": 2, + "34": 1, + "35": 1, + "37": 2, + "38": 2, + "39": 1, + "40": 1, + "41": 1, + "42": 2, + "44": 3, + "45": 1, + "47": 4, + "48": 2, + "49": 1, + "50": 1, + "51": 1, + "53": 2, + "54": 1, + "55": 1, + "56": 2, + "57": 2, + "58": 1, + "59": 2, + "61": 1, + "63": 3, + "64": 3, + "65": 1, + "67": 1, + "68": 1, + "69": 1, + "75": 1, + "77": 1, + "80": 1, + "81": 2, + "82": 1, + "83": 1, + "88": 2, + "90": 3, + "91": 1, + "94": 1, + "97": 1, + "99": 2, + "100": 1, + "101": 1, + "106": 1, + "107": 1, + "113": 1, + "114": 3, + "115": 1, + "116": 2, + "118": 1, + "119": 1, + "120": 4, + "121": 1, + "122": 2, + "123": 1, + "125": 1, + "126": 1, + "127": 2, + "130": 3, + "131": 2, + "132": 1, + "133": 1, + "135": 1, + "136": 1, + "137": 1, + "138": 1, + "139": 1, + "141": 1, + "142": 1, + "143": 1, + "146": 1, + "148": 2, + "149": 2, + "151": 1, + "154": 3, + "155": 1, + "156": 2, + "157": 3, + "159": 1, + "160": 1, + "162": 2, + "163": 1, + "164": 3, + "165": 2, + "166": 2, + "167": 2, + "168": 1, + "170": 3, + "172": 1, + "175": 1, + "177": 1, + "181": 2, + "183": 3, + "184": 1, + "185": 1, + "186": 1, + "189": 1, + "192": 1, + "194": 1, + "195": 2, + "197": 2, + "202": 1, + "203": 2, + "214": 2, + "219": 1, + "222": 1, + "225": 1, + "226": 1, + "230": 1, + "232": 1, + "233": 1, + "234": 1, + "237": 1, + "242": 2, + "243": 1, + "247": 1, + "251": 1, + "252": 2, + "257": 1, + "263": 1, + "276": 1, + "280": 1, + "285": 1, + "294": 1, + "295": 1, + "296": 1, + "297": 1, + "299": 1, + "302": 1, + "303": 1, + "306": 1, + "315": 1, + "317": 1, + "319": 1, + "322": 1, + "326": 1, + "331": 1, + "335": 1, + "343": 1, + "344": 1, + "351": 2, + "358": 1, + "367": 2, + "373": 1, + "374": 1, + "381": 1, + "388": 2, + "390": 1, + "392": 1, + "399": 1, + "402": 1, + "403": 1, + "404": 2, + "407": 1, + "409": 1, + "413": 1, + "419": 1, + "432": 1, + "435": 1, + "437": 1, + "438": 1, + "441": 1, + "446": 2, + "450": 1, + "452": 1, + "454": 1, + "455": 1, + "457": 2, + "462": 1, + "463": 1, + "465": 1, + "466": 1, + "469": 1, + "472": 1, + "474": 1, + "475": 2, + "476": 1, + "478": 2, + "479": 1, + "480": 1, + "481": 3, + "482": 1, + "484": 1, + "485": 2, + "486": 1, + "487": 3, + "488": 2, + "489": 2, + "490": 3, + "492": 1, + "494": 2, + "496": 3, + "497": 1, + "498": 3, + "499": 4, + "500": 3, + "501": 1, + "502": 1, + "503": 4, + "504": 1, + "505": 2, + "506": 1, + "507": 1, + "508": 1, + "510": 1, + "511": 3, + "513": 5, + "514": 1, + "515": 1, + "516": 2, + "517": 1, + "518": 1, + "519": 2, + "520": 2, + "522": 2, + "523": 1, + "526": 3, + "529": 5, + "530": 1, + "531": 1, + "532": 1, + "533": 2, + "534": 1, + "535": 2, + "537": 2, + "538": 3, + "539": 1, + "540": 2, + "541": 4, + "542": 3, + "543": 5, + "545": 2, + "546": 4, + "547": 2, + "549": 1, + "550": 2, + "551": 2, + "552": 2, + "555": 2, + "556": 1, + "557": 1, + "558": 4, + "559": 1, + "560": 1, + "561": 2, + "562": 2, + "563": 2, + "564": 3, + "566": 2, + "567": 2, + "568": 2, + "569": 2, + "570": 3, + "571": 2, + "572": 2, + "573": 1, + "574": 2, + "575": 2, + "576": 2, + "577": 3, + "578": 2, + "579": 3, + "580": 2, + "581": 1, + "582": 6, + "583": 4, + "584": 2, + "585": 1, + "586": 1, + "587": 3, + "588": 3, + "590": 3, + "591": 1, + "592": 1, + "593": 3, + "594": 2, + "595": 5, + "597": 3, + "598": 1, + "600": 1, + "601": 4, + "602": 2, + "603": 2, + "604": 4, + "605": 1, + "606": 3, + "607": 2, + "608": 3, + "609": 2, + "610": 3, + "612": 2, + "613": 3, + "615": 1, + "616": 2, + "617": 1, + "619": 6, + "620": 1, + "621": 1, + "623": 3, + "624": 1, + "625": 3, + "627": 3, + "628": 4, + "629": 1, + "630": 1, + "631": 2, + "632": 3, + "633": 3, + "634": 5, + "635": 3, + "637": 2, + "638": 3, + "639": 2, + "640": 4, + "641": 2, + "642": 5, + "643": 2, + "644": 1, + "645": 2, + "646": 5, + "647": 2, + "648": 3, + "651": 2, + "652": 3, + "653": 1, + "654": 2, + "655": 2, + "656": 3, + "657": 1, + "658": 1, + "659": 1, + "660": 1, + "661": 4, + "662": 1, + "664": 2, + "665": 1, + "667": 1, + "669": 3, + "670": 1, + "672": 1, + "673": 2, + "674": 3, + "676": 2, + "677": 1, + "678": 1, + "680": 1, + "682": 1, + "683": 1, + "685": 1, + "687": 1, + "688": 1, + "692": 2, + "693": 1, + "694": 1, + "696": 1, + "698": 1, + "699": 1, + "701": 2, + "702": 3, + "704": 1, + "705": 1, + "707": 1, + "708": 1, + "709": 2, + "710": 1, + "711": 1, + "712": 1, + "713": 2, + "720": 1, + "721": 1, + "722": 2, + "723": 3, + "724": 2, + "725": 1, + "726": 2, + "728": 1, + "730": 1, + "732": 1, + "734": 2, + "736": 1, + "737": 1, + "739": 2, + "740": 1, + "742": 2, + "746": 3, + "748": 1, + "755": 2, + "756": 3, + "757": 3, + "758": 1, + "760": 1, + "762": 1, + "763": 1, + "764": 2, + "765": 1, + "766": 1, + "767": 2, + "770": 2, + "771": 1, + "773": 3, + "775": 1, + "778": 2, + "779": 1, + "780": 2, + "781": 1, + "782": 1, + "785": 2, + "788": 1, + "789": 3, + "790": 3, + "792": 1, + "793": 2, + "794": 2, + "797": 2, + "798": 2, + "799": 1, + "801": 1, + "802": 2, + "803": 1, + "804": 3, + "805": 3, + "806": 2, + "807": 1, + "808": 1, + "809": 2, + "810": 2, + "811": 2, + "812": 4, + "813": 1, + "814": 4, + "815": 1, + "816": 3, + "818": 4, + "820": 3, + "821": 5, + "822": 2, + "823": 4, + "824": 3, + "825": 4, + "826": 4, + "827": 2, + "828": 2, + "830": 3, + "831": 1, + "832": 1, + "833": 3, + "835": 2, + "836": 2, + "838": 2, + "839": 1, + "840": 1, + "841": 1, + "842": 2, + "843": 1, + "844": 1, + "845": 1, + "850": 2, + "851": 1, + "852": 1, + "853": 3, + "854": 2, + "855": 1, + "856": 1, + "857": 2, + "858": 3, + "859": 2, + "860": 1, + "861": 3, + "862": 2, + "863": 4, + "864": 1, + "865": 1, + "866": 2, + "869": 2, + "870": 4, + "871": 1, + "873": 1, + "874": 1, + "877": 1, + "878": 1, + "879": 1, + "880": 1, + "881": 1, + "884": 1, + "885": 1, + "886": 2, + "888": 1, + "889": 4, + "890": 1, + "891": 2, + "892": 1, + "893": 1, + "894": 1, + "895": 1, + "896": 1, + "897": 1, + "898": 1, + "900": 2, + "901": 1, + "902": 4, + "906": 1, + "909": 3, + "910": 3, + "911": 1, + "912": 2, + "913": 1, + "914": 3, + "915": 1, + "916": 2, + "919": 2, + "920": 1, + "921": 1, + "922": 3, + "923": 1, + "924": 1, + "925": 1, + "926": 2, + "927": 1, + "930": 2, + "932": 1, + "936": 1, + "939": 2, + "940": 1, + "947": 1, + "953": 1, + "954": 1, + "957": 1, + "958": 1, + "960": 2, + "962": 1, + "964": 1, + "965": 1, + "967": 3, + "969": 2, + "971": 1, + "972": 1, + "973": 2, + "978": 1, + "980": 1, + "981": 3, + "982": 1, + "983": 2, + "987": 1, + "989": 1, + "992": 1, + "995": 2, + "997": 1, + "998": 1, + "1000": 2, + "1002": 1, + "1003": 2, + "1005": 1, + "1006": 3, + "1007": 2, + "1008": 2, + "1010": 1, + "1013": 1, + "1016": 2, + "1017": 1, + "1018": 1, + "1019": 3, + "1020": 1, + "1021": 1, + "1022": 1, + "1025": 1, + "1028": 48756 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333533266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c47942f1c791" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c47942f1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_17.html b/autobahn/client/tungstenite_case_12_3_17.html new file mode 100644 index 0000000..3ce8f0c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_17.html @@ -0,0 +1,1733 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.17 : Pass - 17390 ms @ 2025-09-11T20:09:03.725Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=354&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: PJyH+tVoqT37nWA9zORxVw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: so/uodPhTjkk6nipG2W+e0hknY4=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
828618286
43440143440
49537149537
49555149555
49558149558
49560149560
49563149563
49575149575
49606149606
49613149613
49628149628
49645149645
49663149663
49666149666
49669149669
49670149670
49671149671
49676149676
496853149055
49687149687
49689149689
49690149690
49697299394
49698299396
49699149699
49701149701
49702149702
49703299406
49705149705
49708299416
49711149711
49712149712
497143149142
49715149715
49716149716
49717149717
49719149719
497203149160
49722299444
49723149723
49725149725
49726299452
49727299454
49729149729
49730299460
49731149731
49732149732
49733299466
49734149734
497353149205
49736299472
497383149214
497393149217
49740149740
49741149741
49742149742
497433149229
49744299488
497463149238
49748149748
49749299498
49750299500
497515248755
49753299506
49756149756
497574199028
49758149758
49759299518
49760299520
49761149761
497623149286
49763299526
497643149292
49765299530
49766299532
49768299536
497693149307
49771149771
49772299544
49773149773
497754199100
49776149776
49777149777
49779299558
49780149780
49781149781
497833149349
497844199136
49785149785
49786149786
49787149787
49788299576
497893149367
49790299580
49791299582
49793299586
49794299588
49795299590
497963149388
49797149797
497984199192
49799149799
49800149800
49801299602
498024199208
49803299606
498043149412
49807299614
498083149424
49811149811
49812299624
49813149813
49814149814
49815149815
49816149816
49817299634
49818149818
49820299640
49821149821
49823149823
49825149825
49826149826
49828149828
49829149829
498303149490
49832149832
49833149833
49834149834
49836149836
49838149838
49841149841
49848299696
49849149849
49852149852
49855149855
49857149857
498583149574
49861149861
49863149863
49864149864
49865149865
49866149866
49867149867
49868149868
49878149878
49879149879
49881149881
49886149886
49890149890
49895149895
49896149896
49902149902
49912149912
49913299826
49914149914
49918149918
49919149919
49921149921
49922149922
49923149923
49929149929
49934299868
49941149941
49945299890
49946149946
49949149949
49950149950
49955149955
49958149958
49959149959
49961149961
49962299924
49963149963
49964149964
49965149965
49966149966
49967149967
499684199872
49970149970
49972299944
49974299948
499763149928
49977299954
49978149978
49979299958
49980149980
499813149943
499823149946
49983299966
49984299968
49986149986
49988149988
49989299978
49991299982
49992299984
49994299988
49995149995
49996149996
49997149997
49998299996
49999149999
50001150001
500062100012
500092100018
50010150010
50014150014
50015150015
50017150017
50018150018
50033150033
50037150037
50045150045
50046150046
50050150050
50051150051
50052150052
50062150062
50070150070
50078150078
50080150080
50081150081
500822100164
50095150095
50103150103
50109150109
50114150114
50120150120
50123150123
50128150128
50129150129
50134150134
50136150136
501372100274
50139150139
50151150151
50153150153
50154150154
501562100312
50158150158
50159150159
50161150161
501622100324
501632100326
50169150169
501753150525
50177150177
50181150181
50185150185
50188150188
50190150190
50194150194
50196150196
50198150198
50199150199
50202150202
50203150203
50205150205
50207150207
50208150208
50209150209
50210150210
50212150212
50213150213
50215150215
50216150216
50217150217
502192100438
502202100440
50221150221
50222150222
50226150226
502382100476
50241150241
50243150243
502452100490
502462100492
50247150247
50249150249
50250150250
50257150257
50263150263
50264150264
50270150270
50272150272
50281150281
50296150296
50304150304
50329150329
50331150331
503342100668
50336150336
50339150339
503422100684
503442100688
50345150345
50346150346
50347150347
50348150348
503502100700
50352150352
50361150361
50363150363
50377150377
50382150382
503942100788
50399150399
50405150405
50406150406
50410150410
50412150412
50413150413
50414150414
50417150417
504222100844
50423150423
50427150427
50431150431
50432150432
50437150437
50443150443
50456150456
50460150460
50465150465
50474150474
50475150475
50476150476
50477150477
50479150479
50482150482
50483150483
50486150486
50495150495
50497150497
50499150499
50502150502
50506150506
50511150511
50515150515
50523150523
50524150524
505312101062
50538150538
505472101094
50553150553
50554150554
505682101136
50570150570
50572150572
50583150583
50584150584
50589150589
50593150593
50612150612
50615150615
50617150617
50618150618
50621150621
506262101252
50632150632
50634150634
50635150635
50637150637
50642150642
50643150643
50645150645
50646150646
50649150649
50654150654
506552101310
50656150656
506582101316
50659150659
50660150660
506613151983
50662150662
50664150664
506652101330
50666150666
506673152001
506682101336
50669150669
506703152010
50672150672
506742101348
506763152028
50677150677
506783152034
506794202716
506803152040
50681150681
50682150682
506834202732
50684150684
506852101370
50686150686
50688150688
506913152073
506934202772
506962101392
50697150697
50698150698
506992101398
50700150700
50702150702
50703150703
507063152118
507092101418
50710150710
50712150712
50713150713
507152101430
507172101434
507183152154
50719150719
507202101440
507212101442
50722150722
507234202892
50725150725
507263152178
507302101460
507312101462
50735150735
50737150737
50738150738
50741150741
507422101484
50743150743
50747150747
507482101496
50749150749
50750150750
507522101504
50755150755
50756150756
50757150757
50758150758
50761150761
507623152286
50763150763
50764150764
50768150768
50771150771
50773150773
50777150777
50778150778
50782150782
507842101568
50790150790
507992101598
50803150803
508052101610
50811150811
50812150812
508143152442
50815150815
50818150818
50820150820
50821150821
50822150822
50823150823
50826150826
50833150833
508342101668
50835150835
50836150836
508412101682
508492101698
50853150853
50856150856
50863150863
50867150867
50868150868
50874150874
50878150878
50881150881
50884150884
50889150889
508932101786
50900150900
50901150901
50902150902
509032101806
509042101808
509062101812
50908150908
50912150912
50914150914
50916150916
50917150917
50919150919
509222101844
509262101852
50928150928
509352101870
509362101872
50937150937
50940150940
509442101888
50947150947
509502101900
50951150951
509532101906
50955150955
50959150959
509602101920
50961150961
50962150962
50965150965
50968150968
50969150969
509702101940
50972150972
50973150973
50974150974
509772101954
509782101956
50981150981
50982150982
509843152952
509852101970
50989150989
50990150990
50991150991
50993150993
509943152982
50995150995
50996150996
509982101996
510013153003
51002151002
510032102006
510042102008
51005151005
51006151006
510102102020
51011151011
51013151013
51024151024
51031151031
51032151032
51033151033
51034151034
51035151035
51036151036
510372102074
510382102076
51039151039
51040151040
510412102082
51042151042
510434204172
51044151044
51045151045
510462102092
510492102098
510504204200
51051151051
51053151053
51054151054
51058151058
51059151059
51060151060
51064151064
51065151065
510662102132
51068151068
510693153207
510712102142
51072151072
51073151073
51077151077
51078151078
510802102160
51081151081
510824204328
510893153267
510903153270
51091151091
510922102184
51093151093
510942102188
51095151095
510962102192
510992102198
51100151100
51101151101
511022102204
51103151103
51107151107
511102102220
51112151112
51116151116
51119151119
51120151120
51134151134
51137151137
511402102280
51142151142
51145151145
511472102294
511492102298
51151151151
51153151153
51161151161
51162151162
51163151163
51167151167
51169151169
51172151172
51175151175
51183151183
51186151186
511882102376
51190151190
511962102392
51197151197
51198151198
51200151200
51202151202
51209151209
51212151212
51213151213
51215151215
51216151216
51220151220
51224151224
51225151225
512272102454
512302102460
51238151238
51239151239
51247151247
512482102496
512502102500
51251151251
512534205012
512542102508
51255151255
51256151256
51257151257
512592102518
51260151260
51261151261
512632102526
51264151264
51265151265
51269151269
51270151270
51275151275
51283151283
51286151286
51287151287
51289151289
51294151294
512962102592
51297151297
51300151300
51303151303
51305151305
51306151306
51307151307
51312151312
51313151313
51319151319
513202102640
51321151321
513222102644
51324151324
51325151325
513264205304
51327151327
51328151328
51329151329
51331151331
51332151332
513332102666
513343154002
513352102670
51336151336
51337151337
51339151339
51340151340
51341151341
51342151342
51343151343
51345151345
51346151346
51347151347
51350151350
513522102704
51353151353
51358151358
51359151359
51360151360
513613154083
51364151364
51367151367
51368151368
51369151369
51370151370
51371151371
51374151374
51379151379
51381151381
51385151385
513872102774
51388151388
51389151389
51390151390
51393151393
51396151396
51398151398
513992102798
51401151401
514072102814
51426151426
Total100350498846
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
3811381
3991399
4021402
4041404
4071407
4191419
4501450
4571457
4721472
4891489
5071507
5101510
5131513
5141514
5151515
5201520
52931587
5311531
5331533
5341534
54121082
54221084
5431543
5451545
5461546
54721094
5491549
55221104
5551555
5561556
55831674
5591559
5601560
5611561
5631563
56431692
56621132
5671567
5691569
57021140
57121142
5731573
57421148
5751575
5761576
57721154
5781578
57931737
58021160
58231746
58331749
5841584
5851585
5861586
58731761
58821176
59031770
5921592
59321186
59421188
59552975
59721194
6001600
60142404
6021602
60321206
60421208
6051605
60631818
60721214
60831824
60921218
61021220
61221224
61331839
6151615
61621232
6171617
61942476
6201620
6211621
62321246
6241624
6251625
62731881
62842512
6291629
6301630
6311631
63221264
63331899
63421268
63521270
63721274
63821276
63921278
64031920
6411641
64242568
6431643
6441644
64521290
64642584
64721294
64831944
65121302
65231956
6551655
65621312
6571657
6581658
6591659
6601660
66121322
6621662
66421328
6651665
6671667
6691669
6701670
6721672
6731673
67432022
6761676
6771677
6781678
6801680
6821682
6851685
69221384
6931693
6961696
6991699
7011701
70232106
7051705
7071707
7081708
7091709
7101710
7111711
7121712
7221722
7231723
7251725
7301730
7341734
7391739
7401740
7461746
7561756
75721514
7581758
7621762
7631763
7651765
7661766
7671767
7731773
77821556
7851785
78921578
7901790
7931793
7941794
7991799
8021802
8031803
8051805
80621612
8071807
8081808
8091809
8101810
8111811
81243248
8141814
81621632
81821636
82032460
82121642
8221822
82321646
8241824
82532475
82632478
82721654
82821656
8301830
8321832
83321666
83521670
83621672
83821676
8391839
8401840
8411841
84221684
8431843
8451845
85021700
85321706
8541854
8581858
8591859
8611861
8621862
8771877
8811881
8891889
8901890
8941894
8951895
8961896
9061906
9141914
9221922
9241924
9251925
92621852
9391939
9471947
9531953
9581958
9641964
9671967
9721972
9731973
9781978
9801980
98121962
9831983
9951995
9971997
9981998
100022000
100211002
100311003
100511005
100622012
100722014
101311013
101933057
102111021
102511025
102911029
103211032
103411034
103811038
104011040
104211042
104311043
104611046
104711047
104911049
105111051
105211052
105311053
105411054
105611056
105711057
105911059
106011060
106111061
106322126
106422128
106511065
106611066
107011070
108222164
108511085
108711087
108922178
109022180
109111091
109311093
109411094
110111101
110711107
110811108
111411114
111611116
112511125
114011140
114811148
117311173
117511175
117822356
118011180
118311183
118622372
118822376
118911189
119011190
119111191
119211192
119422388
119611196
120511205
120711207
122111221
122611226
123822476
124311243
124911249
125011250
125411254
125611256
125711257
125811258
126111261
126622532
126711267
127111271
127511275
127611276
128111281
128711287
130011300
130411304
130911309
131811318
131911319
132011320
132111321
132311323
132611326
132711327
133011330
133911339
134111341
134311343
134611346
135011350
135511355
135911359
136711367
136811368
137522750
138211382
139122782
139711397
139811398
141222824
141411414
141611416
142711427
142811428
143311433
143711437
145611456
145911459
146111461
146211462
146511465
147022940
147611476
147811478
147911479
148111481
148611486
148711487
148911489
149011490
149311493
149811498
149922998
150011500
150223004
150311503
150411504
150534515
150611506
150811508
150923018
151011510
151134533
151223024
151311513
151434542
151611516
151823036
152034560
152111521
152234566
152346092
152434572
152511525
152611526
152746108
152811528
152923058
153011530
153211532
153534605
153746148
154023080
154111541
154211542
154323086
154411544
154611546
154711547
155034650
155323106
155411554
155611556
155711557
155923118
156123122
156234686
156311563
156423128
156523130
156611566
156746268
156911569
157034710
157423148
157523150
157911579
158111581
158211582
158511585
158623172
158711587
159111591
159223184
159311593
159411594
159623192
159911599
160011600
160111601
160211602
160511605
160634818
160711607
160811608
161211612
161511615
161711617
162111621
162211622
162611626
162823256
163411634
164323286
164711647
164923298
165511655
165611656
165834974
165911659
166211662
166411664
166511665
166611666
166711667
167011670
167711677
167823356
167911679
168011680
168523370
169323386
169711697
170011700
170711707
171111711
171211712
171811718
172211722
172511725
172811728
173311733
173723474
174411744
174511745
174611746
174723494
174823496
175023500
175211752
175611756
175811758
176011760
176111761
176311763
176623532
177023540
177211772
177923558
178023560
178111781
178411784
178823576
179111791
179423588
179511795
179723594
179911799
180311803
180423608
180511805
180611806
180911809
181211812
181311813
181423628
181611816
181711817
181811818
182123642
182223644
182511825
182611826
182835484
182923658
183311833
183411834
183511835
183711837
183835514
183911839
184011840
184223684
184535535
184611846
184723694
184823696
184911849
185011850
185423708
185511855
185711857
186811868
187511875
187611876
187711877
187811878
187911879
188011880
188123762
188223764
188311883
188411884
188523770
188611886
188747548
188811888
188911889
189023780
189323786
189447576
189511895
189711897
189811898
190211902
190311903
190411904
190811908
190911909
191023820
191211912
191335739
191523830
191611916
191711917
192111921
192211922
192423848
192511925
192647704
193335799
193435802
193511935
193623872
193711937
193823876
193911939
194023880
194323886
194411944
194511945
194623892
194711947
195111951
195423908
195611956
196011960
196311963
196411964
197811978
198111981
198423968
198611986
198911989
199123982
199323986
199511995
199711997
200512005
200612006
200712007
201112011
201312013
201612016
201912019
202712027
203012030
203224064
203412034
204024080
204112041
204212042
204412044
204612046
205312053
205612056
205712057
205912059
206012060
206412064
206812068
206912069
207124142
207424148
208212082
208312083
209112091
209224184
209424188
209512095
209748388
209824196
209912099
210012100
210112101
210324206
210412104
210512105
210724214
210812108
210912109
211312113
211412114
211912119
212712127
213012130
213112131
213312133
213812138
214024280
214112141
214412144
214712147
214912149
215012150
215112151
215612156
215712157
216312163
216424328
216512165
216624332
216812168
216912169
217048680
217112171
217212172
217312173
217512175
217612176
217724354
217836534
217924358
218012180
218112181
218312183
218412184
218512185
218612186
218712187
218912189
219012190
219112191
219412194
219624392
219712197
220212202
220312203
220412204
220536615
220812208
221112211
221212212
221312213
221412214
221512215
221812218
222312223
222512225
222912229
223124462
223212232
223312233
223412234
223712237
224012240
224212242
224324486
224512245
225124502
227012270
257012570
41001200049200000
Total1300250542837
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
012000
21000
81
Total13001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333534266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882c10f5718c2e7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6331306635373138
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_17.json b/autobahn/client/tungstenite_case_12_3_17.json new file mode 100644 index 0000000..6392dc8 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_17.json @@ -0,0 +1,1580 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 354, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 17390, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=354&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: PJyH+tVoqT37nWA9zORxVw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: so/uodPhTjkk6nipG2W+e0hknY4=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "8286": 1, + "43440": 1, + "49537": 1, + "49555": 1, + "49558": 1, + "49560": 1, + "49563": 1, + "49575": 1, + "49606": 1, + "49613": 1, + "49628": 1, + "49645": 1, + "49663": 1, + "49666": 1, + "49669": 1, + "49670": 1, + "49671": 1, + "49676": 1, + "49685": 3, + "49687": 1, + "49689": 1, + "49690": 1, + "49697": 2, + "49698": 2, + "49699": 1, + "49701": 1, + "49702": 1, + "49703": 2, + "49705": 1, + "49708": 2, + "49711": 1, + "49712": 1, + "49714": 3, + "49715": 1, + "49716": 1, + "49717": 1, + "49719": 1, + "49720": 3, + "49722": 2, + "49723": 1, + "49725": 1, + "49726": 2, + "49727": 2, + "49729": 1, + "49730": 2, + "49731": 1, + "49732": 1, + "49733": 2, + "49734": 1, + "49735": 3, + "49736": 2, + "49738": 3, + "49739": 3, + "49740": 1, + "49741": 1, + "49742": 1, + "49743": 3, + "49744": 2, + "49746": 3, + "49748": 1, + "49749": 2, + "49750": 2, + "49751": 5, + "49753": 2, + "49756": 1, + "49757": 4, + "49758": 1, + "49759": 2, + "49760": 2, + "49761": 1, + "49762": 3, + "49763": 2, + "49764": 3, + "49765": 2, + "49766": 2, + "49768": 2, + "49769": 3, + "49771": 1, + "49772": 2, + "49773": 1, + "49775": 4, + "49776": 1, + "49777": 1, + "49779": 2, + "49780": 1, + "49781": 1, + "49783": 3, + "49784": 4, + "49785": 1, + "49786": 1, + "49787": 1, + "49788": 2, + "49789": 3, + "49790": 2, + "49791": 2, + "49793": 2, + "49794": 2, + "49795": 2, + "49796": 3, + "49797": 1, + "49798": 4, + "49799": 1, + "49800": 1, + "49801": 2, + "49802": 4, + "49803": 2, + "49804": 3, + "49807": 2, + "49808": 3, + "49811": 1, + "49812": 2, + "49813": 1, + "49814": 1, + "49815": 1, + "49816": 1, + "49817": 2, + "49818": 1, + "49820": 2, + "49821": 1, + "49823": 1, + "49825": 1, + "49826": 1, + "49828": 1, + "49829": 1, + "49830": 3, + "49832": 1, + "49833": 1, + "49834": 1, + "49836": 1, + "49838": 1, + "49841": 1, + "49848": 2, + "49849": 1, + "49852": 1, + "49855": 1, + "49857": 1, + "49858": 3, + "49861": 1, + "49863": 1, + "49864": 1, + "49865": 1, + "49866": 1, + "49867": 1, + "49868": 1, + "49878": 1, + "49879": 1, + "49881": 1, + "49886": 1, + "49890": 1, + "49895": 1, + "49896": 1, + "49902": 1, + "49912": 1, + "49913": 2, + "49914": 1, + "49918": 1, + "49919": 1, + "49921": 1, + "49922": 1, + "49923": 1, + "49929": 1, + "49934": 2, + "49941": 1, + "49945": 2, + "49946": 1, + "49949": 1, + "49950": 1, + "49955": 1, + "49958": 1, + "49959": 1, + "49961": 1, + "49962": 2, + "49963": 1, + "49964": 1, + "49965": 1, + "49966": 1, + "49967": 1, + "49968": 4, + "49970": 1, + "49972": 2, + "49974": 2, + "49976": 3, + "49977": 2, + "49978": 1, + "49979": 2, + "49980": 1, + "49981": 3, + "49982": 3, + "49983": 2, + "49984": 2, + "49986": 1, + "49988": 1, + "49989": 2, + "49991": 2, + "49992": 2, + "49994": 2, + "49995": 1, + "49996": 1, + "49997": 1, + "49998": 2, + "49999": 1, + "50001": 1, + "50006": 2, + "50009": 2, + "50010": 1, + "50014": 1, + "50015": 1, + "50017": 1, + "50018": 1, + "50033": 1, + "50037": 1, + "50045": 1, + "50046": 1, + "50050": 1, + "50051": 1, + "50052": 1, + "50062": 1, + "50070": 1, + "50078": 1, + "50080": 1, + "50081": 1, + "50082": 2, + "50095": 1, + "50103": 1, + "50109": 1, + "50114": 1, + "50120": 1, + "50123": 1, + "50128": 1, + "50129": 1, + "50134": 1, + "50136": 1, + "50137": 2, + "50139": 1, + "50151": 1, + "50153": 1, + "50154": 1, + "50156": 2, + "50158": 1, + "50159": 1, + "50161": 1, + "50162": 2, + "50163": 2, + "50169": 1, + "50175": 3, + "50177": 1, + "50181": 1, + "50185": 1, + "50188": 1, + "50190": 1, + "50194": 1, + "50196": 1, + "50198": 1, + "50199": 1, + "50202": 1, + "50203": 1, + "50205": 1, + "50207": 1, + "50208": 1, + "50209": 1, + "50210": 1, + "50212": 1, + "50213": 1, + "50215": 1, + "50216": 1, + "50217": 1, + "50219": 2, + "50220": 2, + "50221": 1, + "50222": 1, + "50226": 1, + "50238": 2, + "50241": 1, + "50243": 1, + "50245": 2, + "50246": 2, + "50247": 1, + "50249": 1, + "50250": 1, + "50257": 1, + "50263": 1, + "50264": 1, + "50270": 1, + "50272": 1, + "50281": 1, + "50296": 1, + "50304": 1, + "50329": 1, + "50331": 1, + "50334": 2, + "50336": 1, + "50339": 1, + "50342": 2, + "50344": 2, + "50345": 1, + "50346": 1, + "50347": 1, + "50348": 1, + "50350": 2, + "50352": 1, + "50361": 1, + "50363": 1, + "50377": 1, + "50382": 1, + "50394": 2, + "50399": 1, + "50405": 1, + "50406": 1, + "50410": 1, + "50412": 1, + "50413": 1, + "50414": 1, + "50417": 1, + "50422": 2, + "50423": 1, + "50427": 1, + "50431": 1, + "50432": 1, + "50437": 1, + "50443": 1, + "50456": 1, + "50460": 1, + "50465": 1, + "50474": 1, + "50475": 1, + "50476": 1, + "50477": 1, + "50479": 1, + "50482": 1, + "50483": 1, + "50486": 1, + "50495": 1, + "50497": 1, + "50499": 1, + "50502": 1, + "50506": 1, + "50511": 1, + "50515": 1, + "50523": 1, + "50524": 1, + "50531": 2, + "50538": 1, + "50547": 2, + "50553": 1, + "50554": 1, + "50568": 2, + "50570": 1, + "50572": 1, + "50583": 1, + "50584": 1, + "50589": 1, + "50593": 1, + "50612": 1, + "50615": 1, + "50617": 1, + "50618": 1, + "50621": 1, + "50626": 2, + "50632": 1, + "50634": 1, + "50635": 1, + "50637": 1, + "50642": 1, + "50643": 1, + "50645": 1, + "50646": 1, + "50649": 1, + "50654": 1, + "50655": 2, + "50656": 1, + "50658": 2, + "50659": 1, + "50660": 1, + "50661": 3, + "50662": 1, + "50664": 1, + "50665": 2, + "50666": 1, + "50667": 3, + "50668": 2, + "50669": 1, + "50670": 3, + "50672": 1, + "50674": 2, + "50676": 3, + "50677": 1, + "50678": 3, + "50679": 4, + "50680": 3, + "50681": 1, + "50682": 1, + "50683": 4, + "50684": 1, + "50685": 2, + "50686": 1, + "50688": 1, + "50691": 3, + "50693": 4, + "50696": 2, + "50697": 1, + "50698": 1, + "50699": 2, + "50700": 1, + "50702": 1, + "50703": 1, + "50706": 3, + "50709": 2, + "50710": 1, + "50712": 1, + "50713": 1, + "50715": 2, + "50717": 2, + "50718": 3, + "50719": 1, + "50720": 2, + "50721": 2, + "50722": 1, + "50723": 4, + "50725": 1, + "50726": 3, + "50730": 2, + "50731": 2, + "50735": 1, + "50737": 1, + "50738": 1, + "50741": 1, + "50742": 2, + "50743": 1, + "50747": 1, + "50748": 2, + "50749": 1, + "50750": 1, + "50752": 2, + "50755": 1, + "50756": 1, + "50757": 1, + "50758": 1, + "50761": 1, + "50762": 3, + "50763": 1, + "50764": 1, + "50768": 1, + "50771": 1, + "50773": 1, + "50777": 1, + "50778": 1, + "50782": 1, + "50784": 2, + "50790": 1, + "50799": 2, + "50803": 1, + "50805": 2, + "50811": 1, + "50812": 1, + "50814": 3, + "50815": 1, + "50818": 1, + "50820": 1, + "50821": 1, + "50822": 1, + "50823": 1, + "50826": 1, + "50833": 1, + "50834": 2, + "50835": 1, + "50836": 1, + "50841": 2, + "50849": 2, + "50853": 1, + "50856": 1, + "50863": 1, + "50867": 1, + "50868": 1, + "50874": 1, + "50878": 1, + "50881": 1, + "50884": 1, + "50889": 1, + "50893": 2, + "50900": 1, + "50901": 1, + "50902": 1, + "50903": 2, + "50904": 2, + "50906": 2, + "50908": 1, + "50912": 1, + "50914": 1, + "50916": 1, + "50917": 1, + "50919": 1, + "50922": 2, + "50926": 2, + "50928": 1, + "50935": 2, + "50936": 2, + "50937": 1, + "50940": 1, + "50944": 2, + "50947": 1, + "50950": 2, + "50951": 1, + "50953": 2, + "50955": 1, + "50959": 1, + "50960": 2, + "50961": 1, + "50962": 1, + "50965": 1, + "50968": 1, + "50969": 1, + "50970": 2, + "50972": 1, + "50973": 1, + "50974": 1, + "50977": 2, + "50978": 2, + "50981": 1, + "50982": 1, + "50984": 3, + "50985": 2, + "50989": 1, + "50990": 1, + "50991": 1, + "50993": 1, + "50994": 3, + "50995": 1, + "50996": 1, + "50998": 2, + "51001": 3, + "51002": 1, + "51003": 2, + "51004": 2, + "51005": 1, + "51006": 1, + "51010": 2, + "51011": 1, + "51013": 1, + "51024": 1, + "51031": 1, + "51032": 1, + "51033": 1, + "51034": 1, + "51035": 1, + "51036": 1, + "51037": 2, + "51038": 2, + "51039": 1, + "51040": 1, + "51041": 2, + "51042": 1, + "51043": 4, + "51044": 1, + "51045": 1, + "51046": 2, + "51049": 2, + "51050": 4, + "51051": 1, + "51053": 1, + "51054": 1, + "51058": 1, + "51059": 1, + "51060": 1, + "51064": 1, + "51065": 1, + "51066": 2, + "51068": 1, + "51069": 3, + "51071": 2, + "51072": 1, + "51073": 1, + "51077": 1, + "51078": 1, + "51080": 2, + "51081": 1, + "51082": 4, + "51089": 3, + "51090": 3, + "51091": 1, + "51092": 2, + "51093": 1, + "51094": 2, + "51095": 1, + "51096": 2, + "51099": 2, + "51100": 1, + "51101": 1, + "51102": 2, + "51103": 1, + "51107": 1, + "51110": 2, + "51112": 1, + "51116": 1, + "51119": 1, + "51120": 1, + "51134": 1, + "51137": 1, + "51140": 2, + "51142": 1, + "51145": 1, + "51147": 2, + "51149": 2, + "51151": 1, + "51153": 1, + "51161": 1, + "51162": 1, + "51163": 1, + "51167": 1, + "51169": 1, + "51172": 1, + "51175": 1, + "51183": 1, + "51186": 1, + "51188": 2, + "51190": 1, + "51196": 2, + "51197": 1, + "51198": 1, + "51200": 1, + "51202": 1, + "51209": 1, + "51212": 1, + "51213": 1, + "51215": 1, + "51216": 1, + "51220": 1, + "51224": 1, + "51225": 1, + "51227": 2, + "51230": 2, + "51238": 1, + "51239": 1, + "51247": 1, + "51248": 2, + "51250": 2, + "51251": 1, + "51253": 4, + "51254": 2, + "51255": 1, + "51256": 1, + "51257": 1, + "51259": 2, + "51260": 1, + "51261": 1, + "51263": 2, + "51264": 1, + "51265": 1, + "51269": 1, + "51270": 1, + "51275": 1, + "51283": 1, + "51286": 1, + "51287": 1, + "51289": 1, + "51294": 1, + "51296": 2, + "51297": 1, + "51300": 1, + "51303": 1, + "51305": 1, + "51306": 1, + "51307": 1, + "51312": 1, + "51313": 1, + "51319": 1, + "51320": 2, + "51321": 1, + "51322": 2, + "51324": 1, + "51325": 1, + "51326": 4, + "51327": 1, + "51328": 1, + "51329": 1, + "51331": 1, + "51332": 1, + "51333": 2, + "51334": 3, + "51335": 2, + "51336": 1, + "51337": 1, + "51339": 1, + "51340": 1, + "51341": 1, + "51342": 1, + "51343": 1, + "51345": 1, + "51346": 1, + "51347": 1, + "51350": 1, + "51352": 2, + "51353": 1, + "51358": 1, + "51359": 1, + "51360": 1, + "51361": 3, + "51364": 1, + "51367": 1, + "51368": 1, + "51369": 1, + "51370": 1, + "51371": 1, + "51374": 1, + "51379": 1, + "51381": 1, + "51385": 1, + "51387": 2, + "51388": 1, + "51389": 1, + "51390": 1, + "51393": 1, + "51396": 1, + "51398": 1, + "51399": 2, + "51401": 1, + "51407": 2, + "51426": 1 + }, + "started": "2025-09-11T20:09:03.725Z", + "trafficStats": { + "incomingCompressionRatio": 0.38521256256103514, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 50490581, + "incomingOctetsWireLevel": 50498581, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00015844539400328945, + "outgoingCompressionRatio": 0.38521256256103514, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 50490581, + "outgoingOctetsWireLevel": 50542581, + "outgoingWebSocketFrames": 13000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0010298950610213814, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 12000, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "381": 1, + "399": 1, + "402": 1, + "404": 1, + "407": 1, + "419": 1, + "450": 1, + "457": 1, + "472": 1, + "489": 1, + "507": 1, + "510": 1, + "513": 1, + "514": 1, + "515": 1, + "520": 1, + "529": 3, + "531": 1, + "533": 1, + "534": 1, + "541": 2, + "542": 2, + "543": 1, + "545": 1, + "546": 1, + "547": 2, + "549": 1, + "552": 2, + "555": 1, + "556": 1, + "558": 3, + "559": 1, + "560": 1, + "561": 1, + "563": 1, + "564": 3, + "566": 2, + "567": 1, + "569": 1, + "570": 2, + "571": 2, + "573": 1, + "574": 2, + "575": 1, + "576": 1, + "577": 2, + "578": 1, + "579": 3, + "580": 2, + "582": 3, + "583": 3, + "584": 1, + "585": 1, + "586": 1, + "587": 3, + "588": 2, + "590": 3, + "592": 1, + "593": 2, + "594": 2, + "595": 5, + "597": 2, + "600": 1, + "601": 4, + "602": 1, + "603": 2, + "604": 2, + "605": 1, + "606": 3, + "607": 2, + "608": 3, + "609": 2, + "610": 2, + "612": 2, + "613": 3, + "615": 1, + "616": 2, + "617": 1, + "619": 4, + "620": 1, + "621": 1, + "623": 2, + "624": 1, + "625": 1, + "627": 3, + "628": 4, + "629": 1, + "630": 1, + "631": 1, + "632": 2, + "633": 3, + "634": 2, + "635": 2, + "637": 2, + "638": 2, + "639": 2, + "640": 3, + "641": 1, + "642": 4, + "643": 1, + "644": 1, + "645": 2, + "646": 4, + "647": 2, + "648": 3, + "651": 2, + "652": 3, + "655": 1, + "656": 2, + "657": 1, + "658": 1, + "659": 1, + "660": 1, + "661": 2, + "662": 1, + "664": 2, + "665": 1, + "667": 1, + "669": 1, + "670": 1, + "672": 1, + "673": 1, + "674": 3, + "676": 1, + "677": 1, + "678": 1, + "680": 1, + "682": 1, + "685": 1, + "692": 2, + "693": 1, + "696": 1, + "699": 1, + "701": 1, + "702": 3, + "705": 1, + "707": 1, + "708": 1, + "709": 1, + "710": 1, + "711": 1, + "712": 1, + "722": 1, + "723": 1, + "725": 1, + "730": 1, + "734": 1, + "739": 1, + "740": 1, + "746": 1, + "756": 1, + "757": 2, + "758": 1, + "762": 1, + "763": 1, + "765": 1, + "766": 1, + "767": 1, + "773": 1, + "778": 2, + "785": 1, + "789": 2, + "790": 1, + "793": 1, + "794": 1, + "799": 1, + "802": 1, + "803": 1, + "805": 1, + "806": 2, + "807": 1, + "808": 1, + "809": 1, + "810": 1, + "811": 1, + "812": 4, + "814": 1, + "816": 2, + "818": 2, + "820": 3, + "821": 2, + "822": 1, + "823": 2, + "824": 1, + "825": 3, + "826": 3, + "827": 2, + "828": 2, + "830": 1, + "832": 1, + "833": 2, + "835": 2, + "836": 2, + "838": 2, + "839": 1, + "840": 1, + "841": 1, + "842": 2, + "843": 1, + "845": 1, + "850": 2, + "853": 2, + "854": 1, + "858": 1, + "859": 1, + "861": 1, + "862": 1, + "877": 1, + "881": 1, + "889": 1, + "890": 1, + "894": 1, + "895": 1, + "896": 1, + "906": 1, + "914": 1, + "922": 1, + "924": 1, + "925": 1, + "926": 2, + "939": 1, + "947": 1, + "953": 1, + "958": 1, + "964": 1, + "967": 1, + "972": 1, + "973": 1, + "978": 1, + "980": 1, + "981": 2, + "983": 1, + "995": 1, + "997": 1, + "998": 1, + "1000": 2, + "1002": 1, + "1003": 1, + "1005": 1, + "1006": 2, + "1007": 2, + "1013": 1, + "1019": 3, + "1021": 1, + "1025": 1, + "1029": 1, + "1032": 1, + "1034": 1, + "1038": 1, + "1040": 1, + "1042": 1, + "1043": 1, + "1046": 1, + "1047": 1, + "1049": 1, + "1051": 1, + "1052": 1, + "1053": 1, + "1054": 1, + "1056": 1, + "1057": 1, + "1059": 1, + "1060": 1, + "1061": 1, + "1063": 2, + "1064": 2, + "1065": 1, + "1066": 1, + "1070": 1, + "1082": 2, + "1085": 1, + "1087": 1, + "1089": 2, + "1090": 2, + "1091": 1, + "1093": 1, + "1094": 1, + "1101": 1, + "1107": 1, + "1108": 1, + "1114": 1, + "1116": 1, + "1125": 1, + "1140": 1, + "1148": 1, + "1173": 1, + "1175": 1, + "1178": 2, + "1180": 1, + "1183": 1, + "1186": 2, + "1188": 2, + "1189": 1, + "1190": 1, + "1191": 1, + "1192": 1, + "1194": 2, + "1196": 1, + "1205": 1, + "1207": 1, + "1221": 1, + "1226": 1, + "1238": 2, + "1243": 1, + "1249": 1, + "1250": 1, + "1254": 1, + "1256": 1, + "1257": 1, + "1258": 1, + "1261": 1, + "1266": 2, + "1267": 1, + "1271": 1, + "1275": 1, + "1276": 1, + "1281": 1, + "1287": 1, + "1300": 1, + "1304": 1, + "1309": 1, + "1318": 1, + "1319": 1, + "1320": 1, + "1321": 1, + "1323": 1, + "1326": 1, + "1327": 1, + "1330": 1, + "1339": 1, + "1341": 1, + "1343": 1, + "1346": 1, + "1350": 1, + "1355": 1, + "1359": 1, + "1367": 1, + "1368": 1, + "1375": 2, + "1382": 1, + "1391": 2, + "1397": 1, + "1398": 1, + "1412": 2, + "1414": 1, + "1416": 1, + "1427": 1, + "1428": 1, + "1433": 1, + "1437": 1, + "1456": 1, + "1459": 1, + "1461": 1, + "1462": 1, + "1465": 1, + "1470": 2, + "1476": 1, + "1478": 1, + "1479": 1, + "1481": 1, + "1486": 1, + "1487": 1, + "1489": 1, + "1490": 1, + "1493": 1, + "1498": 1, + "1499": 2, + "1500": 1, + "1502": 2, + "1503": 1, + "1504": 1, + "1505": 3, + "1506": 1, + "1508": 1, + "1509": 2, + "1510": 1, + "1511": 3, + "1512": 2, + "1513": 1, + "1514": 3, + "1516": 1, + "1518": 2, + "1520": 3, + "1521": 1, + "1522": 3, + "1523": 4, + "1524": 3, + "1525": 1, + "1526": 1, + "1527": 4, + "1528": 1, + "1529": 2, + "1530": 1, + "1532": 1, + "1535": 3, + "1537": 4, + "1540": 2, + "1541": 1, + "1542": 1, + "1543": 2, + "1544": 1, + "1546": 1, + "1547": 1, + "1550": 3, + "1553": 2, + "1554": 1, + "1556": 1, + "1557": 1, + "1559": 2, + "1561": 2, + "1562": 3, + "1563": 1, + "1564": 2, + "1565": 2, + "1566": 1, + "1567": 4, + "1569": 1, + "1570": 3, + "1574": 2, + "1575": 2, + "1579": 1, + "1581": 1, + "1582": 1, + "1585": 1, + "1586": 2, + "1587": 1, + "1591": 1, + "1592": 2, + "1593": 1, + "1594": 1, + "1596": 2, + "1599": 1, + "1600": 1, + "1601": 1, + "1602": 1, + "1605": 1, + "1606": 3, + "1607": 1, + "1608": 1, + "1612": 1, + "1615": 1, + "1617": 1, + "1621": 1, + "1622": 1, + "1626": 1, + "1628": 2, + "1634": 1, + "1643": 2, + "1647": 1, + "1649": 2, + "1655": 1, + "1656": 1, + "1658": 3, + "1659": 1, + "1662": 1, + "1664": 1, + "1665": 1, + "1666": 1, + "1667": 1, + "1670": 1, + "1677": 1, + "1678": 2, + "1679": 1, + "1680": 1, + "1685": 2, + "1693": 2, + "1697": 1, + "1700": 1, + "1707": 1, + "1711": 1, + "1712": 1, + "1718": 1, + "1722": 1, + "1725": 1, + "1728": 1, + "1733": 1, + "1737": 2, + "1744": 1, + "1745": 1, + "1746": 1, + "1747": 2, + "1748": 2, + "1750": 2, + "1752": 1, + "1756": 1, + "1758": 1, + "1760": 1, + "1761": 1, + "1763": 1, + "1766": 2, + "1770": 2, + "1772": 1, + "1779": 2, + "1780": 2, + "1781": 1, + "1784": 1, + "1788": 2, + "1791": 1, + "1794": 2, + "1795": 1, + "1797": 2, + "1799": 1, + "1803": 1, + "1804": 2, + "1805": 1, + "1806": 1, + "1809": 1, + "1812": 1, + "1813": 1, + "1814": 2, + "1816": 1, + "1817": 1, + "1818": 1, + "1821": 2, + "1822": 2, + "1825": 1, + "1826": 1, + "1828": 3, + "1829": 2, + "1833": 1, + "1834": 1, + "1835": 1, + "1837": 1, + "1838": 3, + "1839": 1, + "1840": 1, + "1842": 2, + "1845": 3, + "1846": 1, + "1847": 2, + "1848": 2, + "1849": 1, + "1850": 1, + "1854": 2, + "1855": 1, + "1857": 1, + "1868": 1, + "1875": 1, + "1876": 1, + "1877": 1, + "1878": 1, + "1879": 1, + "1880": 1, + "1881": 2, + "1882": 2, + "1883": 1, + "1884": 1, + "1885": 2, + "1886": 1, + "1887": 4, + "1888": 1, + "1889": 1, + "1890": 2, + "1893": 2, + "1894": 4, + "1895": 1, + "1897": 1, + "1898": 1, + "1902": 1, + "1903": 1, + "1904": 1, + "1908": 1, + "1909": 1, + "1910": 2, + "1912": 1, + "1913": 3, + "1915": 2, + "1916": 1, + "1917": 1, + "1921": 1, + "1922": 1, + "1924": 2, + "1925": 1, + "1926": 4, + "1933": 3, + "1934": 3, + "1935": 1, + "1936": 2, + "1937": 1, + "1938": 2, + "1939": 1, + "1940": 2, + "1943": 2, + "1944": 1, + "1945": 1, + "1946": 2, + "1947": 1, + "1951": 1, + "1954": 2, + "1956": 1, + "1960": 1, + "1963": 1, + "1964": 1, + "1978": 1, + "1981": 1, + "1984": 2, + "1986": 1, + "1989": 1, + "1991": 2, + "1993": 2, + "1995": 1, + "1997": 1, + "2005": 1, + "2006": 1, + "2007": 1, + "2011": 1, + "2013": 1, + "2016": 1, + "2019": 1, + "2027": 1, + "2030": 1, + "2032": 2, + "2034": 1, + "2040": 2, + "2041": 1, + "2042": 1, + "2044": 1, + "2046": 1, + "2053": 1, + "2056": 1, + "2057": 1, + "2059": 1, + "2060": 1, + "2064": 1, + "2068": 1, + "2069": 1, + "2071": 2, + "2074": 2, + "2082": 1, + "2083": 1, + "2091": 1, + "2092": 2, + "2094": 2, + "2095": 1, + "2097": 4, + "2098": 2, + "2099": 1, + "2100": 1, + "2101": 1, + "2103": 2, + "2104": 1, + "2105": 1, + "2107": 2, + "2108": 1, + "2109": 1, + "2113": 1, + "2114": 1, + "2119": 1, + "2127": 1, + "2130": 1, + "2131": 1, + "2133": 1, + "2138": 1, + "2140": 2, + "2141": 1, + "2144": 1, + "2147": 1, + "2149": 1, + "2150": 1, + "2151": 1, + "2156": 1, + "2157": 1, + "2163": 1, + "2164": 2, + "2165": 1, + "2166": 2, + "2168": 1, + "2169": 1, + "2170": 4, + "2171": 1, + "2172": 1, + "2173": 1, + "2175": 1, + "2176": 1, + "2177": 2, + "2178": 3, + "2179": 2, + "2180": 1, + "2181": 1, + "2183": 1, + "2184": 1, + "2185": 1, + "2186": 1, + "2187": 1, + "2189": 1, + "2190": 1, + "2191": 1, + "2194": 1, + "2196": 2, + "2197": 1, + "2202": 1, + "2203": 1, + "2204": 1, + "2205": 3, + "2208": 1, + "2211": 1, + "2212": 1, + "2213": 1, + "2214": 1, + "2215": 1, + "2218": 1, + "2223": 1, + "2225": 1, + "2229": 1, + "2231": 2, + "2232": 1, + "2233": 1, + "2234": 1, + "2237": 1, + "2240": 1, + "2242": 1, + "2243": 2, + "2245": 1, + "2251": 2, + "2270": 1, + "2570": 1, + "4100": 12000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333534266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c10f5718c2e7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c10f5718" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_18.html b/autobahn/client/tungstenite_case_12_3_18.html new file mode 100644 index 0000000..4dc8780 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_18.html @@ -0,0 +1,1733 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.18 : Pass - 18554 ms @ 2025-09-11T20:09:21.116Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=355&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ECMnNDxPpj3lct/WUb3JiA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ErwZJWSurR5a3zUIR5zLRPaRPkw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
828618286
43440143440
49537149537
49555149555
49558149558
49560149560
49563149563
49575149575
49606149606
49613149613
49628149628
49645149645
49663149663
49666149666
49669149669
49670149670
49671149671
49676149676
496853149055
49687149687
49689149689
49690149690
49697299394
49698299396
49699149699
49701149701
49702149702
49703299406
49705149705
49708299416
49711149711
49712149712
497143149142
49715149715
49716149716
49717149717
49719149719
497203149160
49722299444
49723149723
49725149725
49726299452
49727299454
49729149729
49730299460
49731149731
49732149732
49733299466
49734149734
497353149205
49736299472
497383149214
497393149217
49740149740
49741149741
49742149742
497433149229
49744299488
497463149238
49748149748
49749299498
49750299500
497515248755
49753299506
49756149756
497574199028
49758149758
49759299518
49760299520
49761149761
497623149286
49763299526
497643149292
49765299530
49766299532
49768299536
497693149307
49771149771
49772299544
49773149773
497754199100
49776149776
49777149777
49779299558
49780149780
49781149781
497833149349
497844199136
49785149785
49786149786
49787149787
49788299576
497893149367
49790299580
49791299582
49793299586
49794299588
49795299590
497963149388
49797149797
497984199192
49799149799
49800149800
49801299602
498024199208
49803299606
498043149412
49807299614
498083149424
49811149811
49812299624
49813149813
49814149814
49815149815
49816149816
49817299634
49818149818
49820299640
49821149821
49823149823
49825149825
49826149826
49828149828
49829149829
498303149490
49832149832
49833149833
49834149834
49836149836
49838149838
49841149841
49848299696
49849149849
49852149852
49855149855
49857149857
498583149574
49861149861
49863149863
49864149864
49865149865
49866149866
49867149867
49868149868
49878149878
49879149879
49881149881
49886149886
49890149890
49895149895
49896149896
49902149902
49912149912
49913299826
49914149914
49918149918
49919149919
49921149921
49922149922
49923149923
49929149929
49934299868
49941149941
49945299890
49946149946
49949149949
49950149950
49955149955
49958149958
49959149959
49961149961
49962299924
49963149963
49964149964
49965149965
49966149966
49967149967
499684199872
49970149970
49972299944
49974299948
499763149928
49977299954
49978149978
49979299958
49980149980
499813149943
499823149946
49983299966
49984299968
49986149986
49988149988
49989299978
49991299982
49992299984
49994299988
49995149995
49996149996
49997149997
49998299996
49999149999
50001150001
500062100012
500092100018
50010150010
50014150014
50015150015
50017150017
50018150018
50033150033
50037150037
50045150045
50046150046
50050150050
50051150051
50052150052
50062150062
50070150070
50078150078
50080150080
50081150081
500822100164
50095150095
50103150103
50109150109
50114150114
50120150120
50123150123
50128150128
50129150129
50134150134
50136150136
501372100274
50139150139
50151150151
50153150153
50154150154
501562100312
50158150158
50159150159
50161150161
501622100324
501632100326
50169150169
501753150525
50177150177
50181150181
50185150185
50188150188
50190150190
50194150194
50196150196
50198150198
50199150199
50202150202
50203150203
50205150205
50207150207
50208150208
50209150209
50210150210
50212150212
50213150213
50215150215
50216150216
50217150217
502192100438
502202100440
50221150221
50222150222
50226150226
502382100476
50241150241
50243150243
502452100490
502462100492
50247150247
50249150249
50250150250
50257150257
50263150263
50264150264
50270150270
50272150272
50281150281
50296150296
50304150304
50329150329
50331150331
503342100668
50336150336
50339150339
503422100684
503442100688
50345150345
50346150346
50347150347
50348150348
503502100700
50352150352
50361150361
50363150363
50377150377
50382150382
503942100788
50399150399
50405150405
50406150406
50410150410
50412150412
50413150413
50414150414
50417150417
504222100844
50423150423
50427150427
50431150431
50432150432
50437150437
50443150443
50456150456
50460150460
50465150465
50474150474
50475150475
50476150476
50477150477
50479150479
50482150482
50483150483
50486150486
50495150495
50497150497
50499150499
50502150502
50506150506
50511150511
50515150515
50523150523
50524150524
505312101062
50538150538
505472101094
50553150553
50554150554
505682101136
50570150570
50572150572
50583150583
50584150584
50589150589
50593150593
50612150612
50615150615
50617150617
50618150618
50621150621
506262101252
50632150632
50634150634
50635150635
50637150637
50642150642
50643150643
50645150645
50646150646
50649150649
50654150654
506552101310
50656150656
506582101316
50659150659
50660150660
506613151983
50662150662
50664150664
506652101330
50666150666
506673152001
506682101336
50669150669
506703152010
50672150672
506742101348
506763152028
50677150677
506783152034
506794202716
506803152040
50681150681
50682150682
506834202732
50684150684
506852101370
50686150686
50688150688
506913152073
506934202772
506962101392
50697150697
50698150698
506992101398
50700150700
50702150702
50703150703
507063152118
507092101418
50710150710
50712150712
50713150713
507152101430
507172101434
507183152154
50719150719
507202101440
507212101442
50722150722
507234202892
50725150725
507263152178
507302101460
507312101462
50735150735
50737150737
50738150738
50741150741
507422101484
50743150743
50747150747
507482101496
50749150749
50750150750
507522101504
50755150755
50756150756
50757150757
50758150758
50761150761
507623152286
50763150763
50764150764
50768150768
50771150771
50773150773
50777150777
50778150778
50782150782
507842101568
50790150790
507992101598
50803150803
508052101610
50811150811
50812150812
508143152442
50815150815
50818150818
50820150820
50821150821
50822150822
50823150823
50826150826
50833150833
508342101668
50835150835
50836150836
508412101682
508492101698
50853150853
50856150856
50863150863
50867150867
50868150868
50874150874
50878150878
50881150881
50884150884
50889150889
508932101786
50900150900
50901150901
50902150902
509032101806
509042101808
509062101812
50908150908
50912150912
50914150914
50916150916
50917150917
50919150919
509222101844
509262101852
50928150928
509352101870
509362101872
50937150937
50940150940
509442101888
50947150947
509502101900
50951150951
509532101906
50955150955
50959150959
509602101920
50961150961
50962150962
50965150965
50968150968
50969150969
509702101940
50972150972
50973150973
50974150974
509772101954
509782101956
50981150981
50982150982
509843152952
509852101970
50989150989
50990150990
50991150991
50993150993
509943152982
50995150995
50996150996
509982101996
510013153003
51002151002
510032102006
510042102008
51005151005
51006151006
510102102020
51011151011
51013151013
51024151024
51031151031
51032151032
51033151033
51034151034
51035151035
51036151036
510372102074
510382102076
51039151039
51040151040
510412102082
51042151042
510434204172
51044151044
51045151045
510462102092
510492102098
510504204200
51051151051
51053151053
51054151054
51058151058
51059151059
51060151060
51064151064
51065151065
510662102132
51068151068
510693153207
510712102142
51072151072
51073151073
51077151077
51078151078
510802102160
51081151081
510824204328
510893153267
510903153270
51091151091
510922102184
51093151093
510942102188
51095151095
510962102192
510992102198
51100151100
51101151101
511022102204
51103151103
51107151107
511102102220
51112151112
51116151116
51119151119
51120151120
51134151134
51137151137
511402102280
51142151142
51145151145
511472102294
511492102298
51151151151
51153151153
51161151161
51162151162
51163151163
51167151167
51169151169
51172151172
51175151175
51183151183
51186151186
511882102376
51190151190
511962102392
51197151197
51198151198
51200151200
51202151202
51209151209
51212151212
51213151213
51215151215
51216151216
51220151220
51224151224
51225151225
512272102454
512302102460
51238151238
51239151239
51247151247
512482102496
512502102500
51251151251
512534205012
512542102508
51255151255
51256151256
51257151257
512592102518
51260151260
51261151261
512632102526
51264151264
51265151265
51269151269
51270151270
51275151275
51283151283
51286151286
51287151287
51289151289
51294151294
512962102592
51297151297
51300151300
51303151303
51305151305
51306151306
51307151307
51312151312
51313151313
51319151319
513202102640
51321151321
513222102644
51324151324
51325151325
513264205304
51327151327
51328151328
51329151329
51331151331
51332151332
513332102666
513343154002
513352102670
51336151336
51337151337
51339151339
51340151340
51341151341
51342151342
51343151343
51345151345
51346151346
51347151347
51350151350
513522102704
51353151353
51358151358
51359151359
51360151360
513613154083
51364151364
51367151367
51368151368
51369151369
51370151370
51371151371
51374151374
51379151379
51381151381
51385151385
513872102774
51388151388
51389151389
51390151390
51393151393
51396151396
51398151398
513992102798
51401151401
514072102814
51426151426
Total100350498846
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
16765116765
16783116783
16786116786
16788116788
16791116791
16803116803
16834116834
16841116841
16856116856
16873116873
16891116891
16894116894
16897116897
16898116898
16899116899
16904116904
16913350739
16915116915
16917116917
16918116918
16925233850
16926233852
16927116927
16929116929
16930116930
16931233862
16933116933
16936233872
16939116939
16940116940
16942350826
16943116943
16944116944
16945116945
16947116947
16948350844
16950233900
16951116951
16953116953
16954233908
16955233910
16957116957
16958233916
16959116959
16960116960
16961233922
16962116962
16963350889
16964233928
16966350898
16967350901
16968116968
16969116969
16970116970
16971350913
16972233944
16974350922
16976116976
16977233954
16978233956
16979584895
16981233962
16984116984
16985467940
16986116986
16987233974
16988233976
16989116989
16990350970
16991233982
16992350976
16993233986
16994233988
16996233992
16997350991
16999116999
17000234000
17001117001
17003468012
17004117004
17005117005
17007234014
17008117008
17009117009
17011351033
17012468048
17013117013
17014117014
17015117015
17016234032
17017351051
17018234036
17019234038
17021234042
17022234044
17023234046
17024351072
17025117025
17026468104
17027117027
17028117028
17029234058
17030468120
17031234062
17032351096
17035234070
17036351108
17039117039
17040234080
17041117041
17042117042
17043117043
17044117044
17045234090
17046117046
17048234096
17049117049
17051117051
17053117053
17054117054
17056117056
17057117057
17058351174
17060117060
17061117061
17062117062
17064117064
17066117066
17069117069
17076234152
17077117077
17080117080
17083117083
17085117085
17086351258
17089117089
17091117091
17092117092
17093117093
17094117094
17095117095
17096117096
17106117106
17107117107
17109117109
17114117114
17118117118
17123117123
17124117124
17130117130
17140117140
17141234282
17142117142
17146117146
17147117147
17149117149
17150117150
17151117151
17157117157
17162234324
17169117169
17173234346
17174117174
17177117177
17178117178
17183117183
17186117186
17187117187
17189117189
17190234380
17191117191
17192117192
17193117193
17194117194
17195117195
17196468784
17198117198
17200234400
17202234404
17204351612
17205234410
17206117206
17207234414
17208117208
17209351627
17210351630
17211234422
17212234424
17214117214
17216117216
17217234434
17219234438
17220234440
17222234444
17223117223
17224117224
17225117225
17226234452
17227117227
17229117229
17234234468
17237234474
17238117238
17242117242
17243117243
17245117245
17246117246
17261117261
17265117265
17273117273
17274117274
17278117278
17279117279
17280117280
17290117290
17298117298
17306117306
17308117308
17309117309
17310234620
17323117323
17331117331
17337117337
17342117342
17348117348
17351117351
17356117356
17357117357
17362117362
17364117364
17365234730
17367117367
17379117379
17381117381
17382117382
17384234768
17386117386
17387117387
17389117389
17390234780
17391234782
17397117397
17403352209
17405117405
17409117409
17413117413
17416117416
17418117418
17422117422
17424117424
17426117426
17427117427
17430117430
17431117431
17433117433
17435117435
17436117436
17437117437
17438117438
17440117440
17441117441
17443117443
17444117444
17445117445
17447234894
17448234896
17449117449
17450117450
17454117454
17466234932
17469117469
17471117471
17473234946
17474234948
17475117475
17477117477
17478117478
17485117485
17491117491
17492117492
17498117498
17500117500
17509117509
17524117524
17532117532
17557117557
17559117559
17562235124
17564117564
17567117567
17570235140
17572235144
17573117573
17574117574
17575117575
17576117576
17578235156
17580117580
17589117589
17591117591
17605117605
17610117610
17622235244
17627117627
17633117633
17634117634
17638117638
17640117640
17641117641
17642117642
17645117645
17650235300
17651117651
17655117655
17659117659
17660117660
17665117665
17671117671
17684117684
17688117688
17693117693
17702117702
17703117703
17704117704
17705117705
17707117707
17710117710
17711117711
17714117714
17723117723
17725117725
17727117727
17730117730
17734117734
17739117739
17743117743
17751117751
17752117752
17759235518
17766117766
17775235550
17781117781
17782117782
17796235592
17798117798
17800117800
17811117811
17812117812
17817117817
17821117821
17840117840
17843117843
17845117845
17846117846
17849117849
17854235708
17860117860
17862117862
17863117863
17865117865
17870117870
17871117871
17873117873
17874117874
17877117877
17882117882
17883235766
17884117884
17886235772
17887117887
17888117888
17889353667
17890117890
17892117892
17893235786
17894117894
17895353685
17896235792
17897117897
17898353694
17900117900
17902235804
17904353712
17905117905
17906353718
17907471628
17908353724
17909117909
17910117910
17911471644
17912117912
17913235826
17914117914
17916117916
17919353757
17921471684
17924235848
17925117925
17926117926
17927235854
17928117928
17930117930
17931117931
17934353802
17937235874
17938117938
17940117940
17941117941
17943235886
17945235890
17946353838
17947117947
17948235896
17949235898
17950117950
17951471804
17953117953
17954353862
17958235916
17959235918
17963117963
17965117965
17966117966
17969117969
17970235940
17971117971
17975117975
17976235952
17977117977
17978117978
17980235960
17983117983
17984117984
17985117985
17986117986
17989117989
17990353970
17991117991
17992117992
17996117996
17999117999
18001118001
18005118005
18006118006
18010118010
18012236024
18018118018
18027236054
18031118031
18033236066
18039118039
18040118040
18042354126
18043118043
18046118046
18048118048
18049118049
18050118050
18051118051
18054118054
18061118061
18062236124
18063118063
18064118064
18069236138
18077236154
18081118081
18084118084
18091118091
18095118095
18096118096
18102118102
18106118106
18109118109
18112118112
18117118117
18121236242
18128118128
18129118129
18130118130
18131236262
18132236264
18134236268
18136118136
18140118140
18142118142
18144118144
18145118145
18147118147
18150236300
18154236308
18156118156
18163236326
18164236328
18165118165
18168118168
18172236344
18175118175
18178236356
18179118179
18181236362
18183118183
18187118187
18188236376
18189118189
18190118190
18193118193
18196118196
18197118197
18198236396
18200118200
18201118201
18202118202
18205236410
18206236412
18209118209
18210118210
18212354636
18213236426
18217118217
18218118218
18219118219
18221118221
18222354666
18223118223
18224118224
18226236452
18229354687
18230118230
18231236462
18232236464
18233118233
18234118234
18238236476
18239118239
18241118241
18252118252
18259118259
18260118260
18261118261
18262118262
18263118263
18264118264
18265236530
18266236532
18267118267
18268118268
18269236538
18270118270
18271473084
18272118272
18273118273
18274236548
18277236554
18278473112
18279118279
18281118281
18282118282
18286118286
18287118287
18288118288
18292118292
18293118293
18294236588
18296118296
18297354891
18299236598
18300118300
18301118301
18305118305
18306118306
18308236616
18309118309
18310473240
18317354951
18318354954
18319118319
18320236640
18321118321
18322236644
18323118323
18324236648
18327236654
18328118328
18329118329
18330236660
18331118331
18335118335
18338236676
18340118340
18344118344
18347118347
18348118348
18362118362
18365118365
18368236736
18370118370
18373118373
18375236750
18377236754
18379118379
18381118381
18389118389
18390118390
18391118391
18395118395
18397118397
18400118400
18403118403
18411118411
18414118414
18416236832
18418118418
18424236848
18425118425
18426118426
18428118428
18430118430
18437118437
18440118440
18441118441
18443118443
18444118444
18448118448
18452118452
18453118453
18455236910
18458236916
18466118466
18467118467
18475118475
18476236952
18478236956
18479118479
18481473924
18482236964
18483118483
18484118484
18485118485
18487236974
18488118488
18489118489
18491236982
18492118492
18493118493
18497118497
18498118498
18503118503
18511118511
18514118514
18515118515
18517118517
18522118522
18524237048
18525118525
18528118528
18531118531
18533118533
18534118534
18535118535
18540118540
18541118541
18547118547
18548237096
18549118549
18550237100
18552118552
18553118553
18554474216
18555118555
18556118556
18557118557
18559118559
18560118560
18561237122
18562355686
18563237126
18564118564
18565118565
18567118567
18568118568
18569118569
18570118570
18571118571
18573118573
18574118574
18575118575
18578118578
18580237160
18581118581
18586118586
18587118587
18588118588
18589355767
18592118592
18595118595
18596118596
18597118597
18598118598
18599118599
18602118602
18607118607
18609118609
18613118613
18615237230
18616118616
18617118617
18618118618
18621118621
18624118624
18626118626
18627237254
18629118629
18635237270
18654118654
18954118954
32772100032772000
Total200250498837
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
21000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333535266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882eecb4ce6ed23
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6565636234636536
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_18.json b/autobahn/client/tungstenite_case_12_3_18.json new file mode 100644 index 0000000..f44d64c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_18.json @@ -0,0 +1,1580 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 355, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 18554, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=355&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ECMnNDxPpj3lct/WUb3JiA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ErwZJWSurR5a3zUIR5zLRPaRPkw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "8286": 1, + "43440": 1, + "49537": 1, + "49555": 1, + "49558": 1, + "49560": 1, + "49563": 1, + "49575": 1, + "49606": 1, + "49613": 1, + "49628": 1, + "49645": 1, + "49663": 1, + "49666": 1, + "49669": 1, + "49670": 1, + "49671": 1, + "49676": 1, + "49685": 3, + "49687": 1, + "49689": 1, + "49690": 1, + "49697": 2, + "49698": 2, + "49699": 1, + "49701": 1, + "49702": 1, + "49703": 2, + "49705": 1, + "49708": 2, + "49711": 1, + "49712": 1, + "49714": 3, + "49715": 1, + "49716": 1, + "49717": 1, + "49719": 1, + "49720": 3, + "49722": 2, + "49723": 1, + "49725": 1, + "49726": 2, + "49727": 2, + "49729": 1, + "49730": 2, + "49731": 1, + "49732": 1, + "49733": 2, + "49734": 1, + "49735": 3, + "49736": 2, + "49738": 3, + "49739": 3, + "49740": 1, + "49741": 1, + "49742": 1, + "49743": 3, + "49744": 2, + "49746": 3, + "49748": 1, + "49749": 2, + "49750": 2, + "49751": 5, + "49753": 2, + "49756": 1, + "49757": 4, + "49758": 1, + "49759": 2, + "49760": 2, + "49761": 1, + "49762": 3, + "49763": 2, + "49764": 3, + "49765": 2, + "49766": 2, + "49768": 2, + "49769": 3, + "49771": 1, + "49772": 2, + "49773": 1, + "49775": 4, + "49776": 1, + "49777": 1, + "49779": 2, + "49780": 1, + "49781": 1, + "49783": 3, + "49784": 4, + "49785": 1, + "49786": 1, + "49787": 1, + "49788": 2, + "49789": 3, + "49790": 2, + "49791": 2, + "49793": 2, + "49794": 2, + "49795": 2, + "49796": 3, + "49797": 1, + "49798": 4, + "49799": 1, + "49800": 1, + "49801": 2, + "49802": 4, + "49803": 2, + "49804": 3, + "49807": 2, + "49808": 3, + "49811": 1, + "49812": 2, + "49813": 1, + "49814": 1, + "49815": 1, + "49816": 1, + "49817": 2, + "49818": 1, + "49820": 2, + "49821": 1, + "49823": 1, + "49825": 1, + "49826": 1, + "49828": 1, + "49829": 1, + "49830": 3, + "49832": 1, + "49833": 1, + "49834": 1, + "49836": 1, + "49838": 1, + "49841": 1, + "49848": 2, + "49849": 1, + "49852": 1, + "49855": 1, + "49857": 1, + "49858": 3, + "49861": 1, + "49863": 1, + "49864": 1, + "49865": 1, + "49866": 1, + "49867": 1, + "49868": 1, + "49878": 1, + "49879": 1, + "49881": 1, + "49886": 1, + "49890": 1, + "49895": 1, + "49896": 1, + "49902": 1, + "49912": 1, + "49913": 2, + "49914": 1, + "49918": 1, + "49919": 1, + "49921": 1, + "49922": 1, + "49923": 1, + "49929": 1, + "49934": 2, + "49941": 1, + "49945": 2, + "49946": 1, + "49949": 1, + "49950": 1, + "49955": 1, + "49958": 1, + "49959": 1, + "49961": 1, + "49962": 2, + "49963": 1, + "49964": 1, + "49965": 1, + "49966": 1, + "49967": 1, + "49968": 4, + "49970": 1, + "49972": 2, + "49974": 2, + "49976": 3, + "49977": 2, + "49978": 1, + "49979": 2, + "49980": 1, + "49981": 3, + "49982": 3, + "49983": 2, + "49984": 2, + "49986": 1, + "49988": 1, + "49989": 2, + "49991": 2, + "49992": 2, + "49994": 2, + "49995": 1, + "49996": 1, + "49997": 1, + "49998": 2, + "49999": 1, + "50001": 1, + "50006": 2, + "50009": 2, + "50010": 1, + "50014": 1, + "50015": 1, + "50017": 1, + "50018": 1, + "50033": 1, + "50037": 1, + "50045": 1, + "50046": 1, + "50050": 1, + "50051": 1, + "50052": 1, + "50062": 1, + "50070": 1, + "50078": 1, + "50080": 1, + "50081": 1, + "50082": 2, + "50095": 1, + "50103": 1, + "50109": 1, + "50114": 1, + "50120": 1, + "50123": 1, + "50128": 1, + "50129": 1, + "50134": 1, + "50136": 1, + "50137": 2, + "50139": 1, + "50151": 1, + "50153": 1, + "50154": 1, + "50156": 2, + "50158": 1, + "50159": 1, + "50161": 1, + "50162": 2, + "50163": 2, + "50169": 1, + "50175": 3, + "50177": 1, + "50181": 1, + "50185": 1, + "50188": 1, + "50190": 1, + "50194": 1, + "50196": 1, + "50198": 1, + "50199": 1, + "50202": 1, + "50203": 1, + "50205": 1, + "50207": 1, + "50208": 1, + "50209": 1, + "50210": 1, + "50212": 1, + "50213": 1, + "50215": 1, + "50216": 1, + "50217": 1, + "50219": 2, + "50220": 2, + "50221": 1, + "50222": 1, + "50226": 1, + "50238": 2, + "50241": 1, + "50243": 1, + "50245": 2, + "50246": 2, + "50247": 1, + "50249": 1, + "50250": 1, + "50257": 1, + "50263": 1, + "50264": 1, + "50270": 1, + "50272": 1, + "50281": 1, + "50296": 1, + "50304": 1, + "50329": 1, + "50331": 1, + "50334": 2, + "50336": 1, + "50339": 1, + "50342": 2, + "50344": 2, + "50345": 1, + "50346": 1, + "50347": 1, + "50348": 1, + "50350": 2, + "50352": 1, + "50361": 1, + "50363": 1, + "50377": 1, + "50382": 1, + "50394": 2, + "50399": 1, + "50405": 1, + "50406": 1, + "50410": 1, + "50412": 1, + "50413": 1, + "50414": 1, + "50417": 1, + "50422": 2, + "50423": 1, + "50427": 1, + "50431": 1, + "50432": 1, + "50437": 1, + "50443": 1, + "50456": 1, + "50460": 1, + "50465": 1, + "50474": 1, + "50475": 1, + "50476": 1, + "50477": 1, + "50479": 1, + "50482": 1, + "50483": 1, + "50486": 1, + "50495": 1, + "50497": 1, + "50499": 1, + "50502": 1, + "50506": 1, + "50511": 1, + "50515": 1, + "50523": 1, + "50524": 1, + "50531": 2, + "50538": 1, + "50547": 2, + "50553": 1, + "50554": 1, + "50568": 2, + "50570": 1, + "50572": 1, + "50583": 1, + "50584": 1, + "50589": 1, + "50593": 1, + "50612": 1, + "50615": 1, + "50617": 1, + "50618": 1, + "50621": 1, + "50626": 2, + "50632": 1, + "50634": 1, + "50635": 1, + "50637": 1, + "50642": 1, + "50643": 1, + "50645": 1, + "50646": 1, + "50649": 1, + "50654": 1, + "50655": 2, + "50656": 1, + "50658": 2, + "50659": 1, + "50660": 1, + "50661": 3, + "50662": 1, + "50664": 1, + "50665": 2, + "50666": 1, + "50667": 3, + "50668": 2, + "50669": 1, + "50670": 3, + "50672": 1, + "50674": 2, + "50676": 3, + "50677": 1, + "50678": 3, + "50679": 4, + "50680": 3, + "50681": 1, + "50682": 1, + "50683": 4, + "50684": 1, + "50685": 2, + "50686": 1, + "50688": 1, + "50691": 3, + "50693": 4, + "50696": 2, + "50697": 1, + "50698": 1, + "50699": 2, + "50700": 1, + "50702": 1, + "50703": 1, + "50706": 3, + "50709": 2, + "50710": 1, + "50712": 1, + "50713": 1, + "50715": 2, + "50717": 2, + "50718": 3, + "50719": 1, + "50720": 2, + "50721": 2, + "50722": 1, + "50723": 4, + "50725": 1, + "50726": 3, + "50730": 2, + "50731": 2, + "50735": 1, + "50737": 1, + "50738": 1, + "50741": 1, + "50742": 2, + "50743": 1, + "50747": 1, + "50748": 2, + "50749": 1, + "50750": 1, + "50752": 2, + "50755": 1, + "50756": 1, + "50757": 1, + "50758": 1, + "50761": 1, + "50762": 3, + "50763": 1, + "50764": 1, + "50768": 1, + "50771": 1, + "50773": 1, + "50777": 1, + "50778": 1, + "50782": 1, + "50784": 2, + "50790": 1, + "50799": 2, + "50803": 1, + "50805": 2, + "50811": 1, + "50812": 1, + "50814": 3, + "50815": 1, + "50818": 1, + "50820": 1, + "50821": 1, + "50822": 1, + "50823": 1, + "50826": 1, + "50833": 1, + "50834": 2, + "50835": 1, + "50836": 1, + "50841": 2, + "50849": 2, + "50853": 1, + "50856": 1, + "50863": 1, + "50867": 1, + "50868": 1, + "50874": 1, + "50878": 1, + "50881": 1, + "50884": 1, + "50889": 1, + "50893": 2, + "50900": 1, + "50901": 1, + "50902": 1, + "50903": 2, + "50904": 2, + "50906": 2, + "50908": 1, + "50912": 1, + "50914": 1, + "50916": 1, + "50917": 1, + "50919": 1, + "50922": 2, + "50926": 2, + "50928": 1, + "50935": 2, + "50936": 2, + "50937": 1, + "50940": 1, + "50944": 2, + "50947": 1, + "50950": 2, + "50951": 1, + "50953": 2, + "50955": 1, + "50959": 1, + "50960": 2, + "50961": 1, + "50962": 1, + "50965": 1, + "50968": 1, + "50969": 1, + "50970": 2, + "50972": 1, + "50973": 1, + "50974": 1, + "50977": 2, + "50978": 2, + "50981": 1, + "50982": 1, + "50984": 3, + "50985": 2, + "50989": 1, + "50990": 1, + "50991": 1, + "50993": 1, + "50994": 3, + "50995": 1, + "50996": 1, + "50998": 2, + "51001": 3, + "51002": 1, + "51003": 2, + "51004": 2, + "51005": 1, + "51006": 1, + "51010": 2, + "51011": 1, + "51013": 1, + "51024": 1, + "51031": 1, + "51032": 1, + "51033": 1, + "51034": 1, + "51035": 1, + "51036": 1, + "51037": 2, + "51038": 2, + "51039": 1, + "51040": 1, + "51041": 2, + "51042": 1, + "51043": 4, + "51044": 1, + "51045": 1, + "51046": 2, + "51049": 2, + "51050": 4, + "51051": 1, + "51053": 1, + "51054": 1, + "51058": 1, + "51059": 1, + "51060": 1, + "51064": 1, + "51065": 1, + "51066": 2, + "51068": 1, + "51069": 3, + "51071": 2, + "51072": 1, + "51073": 1, + "51077": 1, + "51078": 1, + "51080": 2, + "51081": 1, + "51082": 4, + "51089": 3, + "51090": 3, + "51091": 1, + "51092": 2, + "51093": 1, + "51094": 2, + "51095": 1, + "51096": 2, + "51099": 2, + "51100": 1, + "51101": 1, + "51102": 2, + "51103": 1, + "51107": 1, + "51110": 2, + "51112": 1, + "51116": 1, + "51119": 1, + "51120": 1, + "51134": 1, + "51137": 1, + "51140": 2, + "51142": 1, + "51145": 1, + "51147": 2, + "51149": 2, + "51151": 1, + "51153": 1, + "51161": 1, + "51162": 1, + "51163": 1, + "51167": 1, + "51169": 1, + "51172": 1, + "51175": 1, + "51183": 1, + "51186": 1, + "51188": 2, + "51190": 1, + "51196": 2, + "51197": 1, + "51198": 1, + "51200": 1, + "51202": 1, + "51209": 1, + "51212": 1, + "51213": 1, + "51215": 1, + "51216": 1, + "51220": 1, + "51224": 1, + "51225": 1, + "51227": 2, + "51230": 2, + "51238": 1, + "51239": 1, + "51247": 1, + "51248": 2, + "51250": 2, + "51251": 1, + "51253": 4, + "51254": 2, + "51255": 1, + "51256": 1, + "51257": 1, + "51259": 2, + "51260": 1, + "51261": 1, + "51263": 2, + "51264": 1, + "51265": 1, + "51269": 1, + "51270": 1, + "51275": 1, + "51283": 1, + "51286": 1, + "51287": 1, + "51289": 1, + "51294": 1, + "51296": 2, + "51297": 1, + "51300": 1, + "51303": 1, + "51305": 1, + "51306": 1, + "51307": 1, + "51312": 1, + "51313": 1, + "51319": 1, + "51320": 2, + "51321": 1, + "51322": 2, + "51324": 1, + "51325": 1, + "51326": 4, + "51327": 1, + "51328": 1, + "51329": 1, + "51331": 1, + "51332": 1, + "51333": 2, + "51334": 3, + "51335": 2, + "51336": 1, + "51337": 1, + "51339": 1, + "51340": 1, + "51341": 1, + "51342": 1, + "51343": 1, + "51345": 1, + "51346": 1, + "51347": 1, + "51350": 1, + "51352": 2, + "51353": 1, + "51358": 1, + "51359": 1, + "51360": 1, + "51361": 3, + "51364": 1, + "51367": 1, + "51368": 1, + "51369": 1, + "51370": 1, + "51371": 1, + "51374": 1, + "51379": 1, + "51381": 1, + "51385": 1, + "51387": 2, + "51388": 1, + "51389": 1, + "51390": 1, + "51393": 1, + "51396": 1, + "51398": 1, + "51399": 2, + "51401": 1, + "51407": 2, + "51426": 1 + }, + "started": "2025-09-11T20:09:21.116Z", + "trafficStats": { + "incomingCompressionRatio": 0.38521256256103514, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 50490581, + "incomingOctetsWireLevel": 50498581, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00015844539400328945, + "outgoingCompressionRatio": 0.38521256256103514, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 50490581, + "outgoingOctetsWireLevel": 50498581, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.00015844539400328945, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 1000, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "16765": 1, + "16783": 1, + "16786": 1, + "16788": 1, + "16791": 1, + "16803": 1, + "16834": 1, + "16841": 1, + "16856": 1, + "16873": 1, + "16891": 1, + "16894": 1, + "16897": 1, + "16898": 1, + "16899": 1, + "16904": 1, + "16913": 3, + "16915": 1, + "16917": 1, + "16918": 1, + "16925": 2, + "16926": 2, + "16927": 1, + "16929": 1, + "16930": 1, + "16931": 2, + "16933": 1, + "16936": 2, + "16939": 1, + "16940": 1, + "16942": 3, + "16943": 1, + "16944": 1, + "16945": 1, + "16947": 1, + "16948": 3, + "16950": 2, + "16951": 1, + "16953": 1, + "16954": 2, + "16955": 2, + "16957": 1, + "16958": 2, + "16959": 1, + "16960": 1, + "16961": 2, + "16962": 1, + "16963": 3, + "16964": 2, + "16966": 3, + "16967": 3, + "16968": 1, + "16969": 1, + "16970": 1, + "16971": 3, + "16972": 2, + "16974": 3, + "16976": 1, + "16977": 2, + "16978": 2, + "16979": 5, + "16981": 2, + "16984": 1, + "16985": 4, + "16986": 1, + "16987": 2, + "16988": 2, + "16989": 1, + "16990": 3, + "16991": 2, + "16992": 3, + "16993": 2, + "16994": 2, + "16996": 2, + "16997": 3, + "16999": 1, + "17000": 2, + "17001": 1, + "17003": 4, + "17004": 1, + "17005": 1, + "17007": 2, + "17008": 1, + "17009": 1, + "17011": 3, + "17012": 4, + "17013": 1, + "17014": 1, + "17015": 1, + "17016": 2, + "17017": 3, + "17018": 2, + "17019": 2, + "17021": 2, + "17022": 2, + "17023": 2, + "17024": 3, + "17025": 1, + "17026": 4, + "17027": 1, + "17028": 1, + "17029": 2, + "17030": 4, + "17031": 2, + "17032": 3, + "17035": 2, + "17036": 3, + "17039": 1, + "17040": 2, + "17041": 1, + "17042": 1, + "17043": 1, + "17044": 1, + "17045": 2, + "17046": 1, + "17048": 2, + "17049": 1, + "17051": 1, + "17053": 1, + "17054": 1, + "17056": 1, + "17057": 1, + "17058": 3, + "17060": 1, + "17061": 1, + "17062": 1, + "17064": 1, + "17066": 1, + "17069": 1, + "17076": 2, + "17077": 1, + "17080": 1, + "17083": 1, + "17085": 1, + "17086": 3, + "17089": 1, + "17091": 1, + "17092": 1, + "17093": 1, + "17094": 1, + "17095": 1, + "17096": 1, + "17106": 1, + "17107": 1, + "17109": 1, + "17114": 1, + "17118": 1, + "17123": 1, + "17124": 1, + "17130": 1, + "17140": 1, + "17141": 2, + "17142": 1, + "17146": 1, + "17147": 1, + "17149": 1, + "17150": 1, + "17151": 1, + "17157": 1, + "17162": 2, + "17169": 1, + "17173": 2, + "17174": 1, + "17177": 1, + "17178": 1, + "17183": 1, + "17186": 1, + "17187": 1, + "17189": 1, + "17190": 2, + "17191": 1, + "17192": 1, + "17193": 1, + "17194": 1, + "17195": 1, + "17196": 4, + "17198": 1, + "17200": 2, + "17202": 2, + "17204": 3, + "17205": 2, + "17206": 1, + "17207": 2, + "17208": 1, + "17209": 3, + "17210": 3, + "17211": 2, + "17212": 2, + "17214": 1, + "17216": 1, + "17217": 2, + "17219": 2, + "17220": 2, + "17222": 2, + "17223": 1, + "17224": 1, + "17225": 1, + "17226": 2, + "17227": 1, + "17229": 1, + "17234": 2, + "17237": 2, + "17238": 1, + "17242": 1, + "17243": 1, + "17245": 1, + "17246": 1, + "17261": 1, + "17265": 1, + "17273": 1, + "17274": 1, + "17278": 1, + "17279": 1, + "17280": 1, + "17290": 1, + "17298": 1, + "17306": 1, + "17308": 1, + "17309": 1, + "17310": 2, + "17323": 1, + "17331": 1, + "17337": 1, + "17342": 1, + "17348": 1, + "17351": 1, + "17356": 1, + "17357": 1, + "17362": 1, + "17364": 1, + "17365": 2, + "17367": 1, + "17379": 1, + "17381": 1, + "17382": 1, + "17384": 2, + "17386": 1, + "17387": 1, + "17389": 1, + "17390": 2, + "17391": 2, + "17397": 1, + "17403": 3, + "17405": 1, + "17409": 1, + "17413": 1, + "17416": 1, + "17418": 1, + "17422": 1, + "17424": 1, + "17426": 1, + "17427": 1, + "17430": 1, + "17431": 1, + "17433": 1, + "17435": 1, + "17436": 1, + "17437": 1, + "17438": 1, + "17440": 1, + "17441": 1, + "17443": 1, + "17444": 1, + "17445": 1, + "17447": 2, + "17448": 2, + "17449": 1, + "17450": 1, + "17454": 1, + "17466": 2, + "17469": 1, + "17471": 1, + "17473": 2, + "17474": 2, + "17475": 1, + "17477": 1, + "17478": 1, + "17485": 1, + "17491": 1, + "17492": 1, + "17498": 1, + "17500": 1, + "17509": 1, + "17524": 1, + "17532": 1, + "17557": 1, + "17559": 1, + "17562": 2, + "17564": 1, + "17567": 1, + "17570": 2, + "17572": 2, + "17573": 1, + "17574": 1, + "17575": 1, + "17576": 1, + "17578": 2, + "17580": 1, + "17589": 1, + "17591": 1, + "17605": 1, + "17610": 1, + "17622": 2, + "17627": 1, + "17633": 1, + "17634": 1, + "17638": 1, + "17640": 1, + "17641": 1, + "17642": 1, + "17645": 1, + "17650": 2, + "17651": 1, + "17655": 1, + "17659": 1, + "17660": 1, + "17665": 1, + "17671": 1, + "17684": 1, + "17688": 1, + "17693": 1, + "17702": 1, + "17703": 1, + "17704": 1, + "17705": 1, + "17707": 1, + "17710": 1, + "17711": 1, + "17714": 1, + "17723": 1, + "17725": 1, + "17727": 1, + "17730": 1, + "17734": 1, + "17739": 1, + "17743": 1, + "17751": 1, + "17752": 1, + "17759": 2, + "17766": 1, + "17775": 2, + "17781": 1, + "17782": 1, + "17796": 2, + "17798": 1, + "17800": 1, + "17811": 1, + "17812": 1, + "17817": 1, + "17821": 1, + "17840": 1, + "17843": 1, + "17845": 1, + "17846": 1, + "17849": 1, + "17854": 2, + "17860": 1, + "17862": 1, + "17863": 1, + "17865": 1, + "17870": 1, + "17871": 1, + "17873": 1, + "17874": 1, + "17877": 1, + "17882": 1, + "17883": 2, + "17884": 1, + "17886": 2, + "17887": 1, + "17888": 1, + "17889": 3, + "17890": 1, + "17892": 1, + "17893": 2, + "17894": 1, + "17895": 3, + "17896": 2, + "17897": 1, + "17898": 3, + "17900": 1, + "17902": 2, + "17904": 3, + "17905": 1, + "17906": 3, + "17907": 4, + "17908": 3, + "17909": 1, + "17910": 1, + "17911": 4, + "17912": 1, + "17913": 2, + "17914": 1, + "17916": 1, + "17919": 3, + "17921": 4, + "17924": 2, + "17925": 1, + "17926": 1, + "17927": 2, + "17928": 1, + "17930": 1, + "17931": 1, + "17934": 3, + "17937": 2, + "17938": 1, + "17940": 1, + "17941": 1, + "17943": 2, + "17945": 2, + "17946": 3, + "17947": 1, + "17948": 2, + "17949": 2, + "17950": 1, + "17951": 4, + "17953": 1, + "17954": 3, + "17958": 2, + "17959": 2, + "17963": 1, + "17965": 1, + "17966": 1, + "17969": 1, + "17970": 2, + "17971": 1, + "17975": 1, + "17976": 2, + "17977": 1, + "17978": 1, + "17980": 2, + "17983": 1, + "17984": 1, + "17985": 1, + "17986": 1, + "17989": 1, + "17990": 3, + "17991": 1, + "17992": 1, + "17996": 1, + "17999": 1, + "18001": 1, + "18005": 1, + "18006": 1, + "18010": 1, + "18012": 2, + "18018": 1, + "18027": 2, + "18031": 1, + "18033": 2, + "18039": 1, + "18040": 1, + "18042": 3, + "18043": 1, + "18046": 1, + "18048": 1, + "18049": 1, + "18050": 1, + "18051": 1, + "18054": 1, + "18061": 1, + "18062": 2, + "18063": 1, + "18064": 1, + "18069": 2, + "18077": 2, + "18081": 1, + "18084": 1, + "18091": 1, + "18095": 1, + "18096": 1, + "18102": 1, + "18106": 1, + "18109": 1, + "18112": 1, + "18117": 1, + "18121": 2, + "18128": 1, + "18129": 1, + "18130": 1, + "18131": 2, + "18132": 2, + "18134": 2, + "18136": 1, + "18140": 1, + "18142": 1, + "18144": 1, + "18145": 1, + "18147": 1, + "18150": 2, + "18154": 2, + "18156": 1, + "18163": 2, + "18164": 2, + "18165": 1, + "18168": 1, + "18172": 2, + "18175": 1, + "18178": 2, + "18179": 1, + "18181": 2, + "18183": 1, + "18187": 1, + "18188": 2, + "18189": 1, + "18190": 1, + "18193": 1, + "18196": 1, + "18197": 1, + "18198": 2, + "18200": 1, + "18201": 1, + "18202": 1, + "18205": 2, + "18206": 2, + "18209": 1, + "18210": 1, + "18212": 3, + "18213": 2, + "18217": 1, + "18218": 1, + "18219": 1, + "18221": 1, + "18222": 3, + "18223": 1, + "18224": 1, + "18226": 2, + "18229": 3, + "18230": 1, + "18231": 2, + "18232": 2, + "18233": 1, + "18234": 1, + "18238": 2, + "18239": 1, + "18241": 1, + "18252": 1, + "18259": 1, + "18260": 1, + "18261": 1, + "18262": 1, + "18263": 1, + "18264": 1, + "18265": 2, + "18266": 2, + "18267": 1, + "18268": 1, + "18269": 2, + "18270": 1, + "18271": 4, + "18272": 1, + "18273": 1, + "18274": 2, + "18277": 2, + "18278": 4, + "18279": 1, + "18281": 1, + "18282": 1, + "18286": 1, + "18287": 1, + "18288": 1, + "18292": 1, + "18293": 1, + "18294": 2, + "18296": 1, + "18297": 3, + "18299": 2, + "18300": 1, + "18301": 1, + "18305": 1, + "18306": 1, + "18308": 2, + "18309": 1, + "18310": 4, + "18317": 3, + "18318": 3, + "18319": 1, + "18320": 2, + "18321": 1, + "18322": 2, + "18323": 1, + "18324": 2, + "18327": 2, + "18328": 1, + "18329": 1, + "18330": 2, + "18331": 1, + "18335": 1, + "18338": 2, + "18340": 1, + "18344": 1, + "18347": 1, + "18348": 1, + "18362": 1, + "18365": 1, + "18368": 2, + "18370": 1, + "18373": 1, + "18375": 2, + "18377": 2, + "18379": 1, + "18381": 1, + "18389": 1, + "18390": 1, + "18391": 1, + "18395": 1, + "18397": 1, + "18400": 1, + "18403": 1, + "18411": 1, + "18414": 1, + "18416": 2, + "18418": 1, + "18424": 2, + "18425": 1, + "18426": 1, + "18428": 1, + "18430": 1, + "18437": 1, + "18440": 1, + "18441": 1, + "18443": 1, + "18444": 1, + "18448": 1, + "18452": 1, + "18453": 1, + "18455": 2, + "18458": 2, + "18466": 1, + "18467": 1, + "18475": 1, + "18476": 2, + "18478": 2, + "18479": 1, + "18481": 4, + "18482": 2, + "18483": 1, + "18484": 1, + "18485": 1, + "18487": 2, + "18488": 1, + "18489": 1, + "18491": 2, + "18492": 1, + "18493": 1, + "18497": 1, + "18498": 1, + "18503": 1, + "18511": 1, + "18514": 1, + "18515": 1, + "18517": 1, + "18522": 1, + "18524": 2, + "18525": 1, + "18528": 1, + "18531": 1, + "18533": 1, + "18534": 1, + "18535": 1, + "18540": 1, + "18541": 1, + "18547": 1, + "18548": 2, + "18549": 1, + "18550": 2, + "18552": 1, + "18553": 1, + "18554": 4, + "18555": 1, + "18556": 1, + "18557": 1, + "18559": 1, + "18560": 1, + "18561": 2, + "18562": 3, + "18563": 2, + "18564": 1, + "18565": 1, + "18567": 1, + "18568": 1, + "18569": 1, + "18570": 1, + "18571": 1, + "18573": 1, + "18574": 1, + "18575": 1, + "18578": 1, + "18580": 2, + "18581": 1, + "18586": 1, + "18587": 1, + "18588": 1, + "18589": 3, + "18592": 1, + "18595": 1, + "18596": 1, + "18597": 1, + "18598": 1, + "18599": 1, + "18602": 1, + "18607": 1, + "18609": 1, + "18613": 1, + "18615": 2, + "18616": 1, + "18617": 1, + "18618": 1, + "18621": 1, + "18624": 1, + "18626": 1, + "18627": 2, + "18629": 1, + "18635": 2, + "18654": 1, + "18954": 1, + "32772": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333535266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882eecb4ce6ed23" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "eecb4ce6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_2.html b/autobahn/client/tungstenite_case_12_3_2.html new file mode 100644 index 0000000..31ebf4c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_2.html @@ -0,0 +1,394 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.2 : Pass - 74 ms @ 2025-09-11T20:07:36.864Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=339&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: J+boTaH+EIyoBeQSbx000g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8MrOlUeo0TRZecACwAvbH/t+VPs=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
18236
19238
21121
22122
23123
24124
25125
26252
28256
296174
30130
319279
3216512
3319627
3426884
3527945
36521872
37622294
38873306
39722808
40903600
411054305
42873654
43692967
44582552
45482160
46371702
47331551
48211008
4915735
509450
5110510
528416
532106
54154
554220
562112
57157
58158
59159
60160
61161
62162
63163
64164
66166
68168
71171
2571257
Total100241084
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
14228
15230
17117
18118
19119
20120
21121
22244
24248
256150
26126
279243
2816448
2919551
3026780
3127837
32521664
33622046
34872958
35722520
36903240
371053885
38873306
39692691
40582320
41481968
42371554
43331419
4421924
4515675
469414
4710470
488384
49298
50150
514204
522104
53153
54154
55155
56156
57157
58158
59159
60160
62162
64164
67167
2521252
Total100237075
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333339266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88826a36895169de
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3661333638393531
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_2.json b/autobahn/client/tungstenite_case_12_3_2.json new file mode 100644 index 0000000..29d2de6 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_2.json @@ -0,0 +1,241 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 339, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 74, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=339&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: J+boTaH+EIyoBeQSbx000g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8MrOlUeo0TRZecACwAvbH/t+VPs=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "18": 2, + "19": 2, + "21": 1, + "22": 1, + "23": 1, + "24": 1, + "25": 1, + "26": 2, + "28": 2, + "29": 6, + "30": 1, + "31": 9, + "32": 16, + "33": 19, + "34": 26, + "35": 27, + "36": 52, + "37": 62, + "38": 87, + "39": 72, + "40": 90, + "41": 105, + "42": 87, + "43": 69, + "44": 58, + "45": 48, + "46": 37, + "47": 33, + "48": 21, + "49": 15, + "50": 9, + "51": 10, + "52": 8, + "53": 2, + "54": 1, + "55": 4, + "56": 2, + "57": 1, + "58": 1, + "59": 1, + "60": 1, + "61": 1, + "62": 1, + "63": 1, + "64": 1, + "66": 1, + "68": 1, + "71": 1, + "257": 1 + }, + "started": "2025-09-11T20:07:36.864Z", + "trafficStats": { + "incomingCompressionRatio": 0.544046875, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 34819, + "incomingOctetsWireLevel": 40819, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.17231971050288636, + "outgoingCompressionRatio": 0.544046875, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 34819, + "outgoingOctetsWireLevel": 36819, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.05743990350096212, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 2, + "15": 2, + "17": 1, + "18": 1, + "19": 1, + "20": 1, + "21": 1, + "22": 2, + "24": 2, + "25": 6, + "26": 1, + "27": 9, + "28": 16, + "29": 19, + "30": 26, + "31": 27, + "32": 52, + "33": 62, + "34": 87, + "35": 72, + "36": 90, + "37": 105, + "38": 87, + "39": 69, + "40": 58, + "41": 48, + "42": 37, + "43": 33, + "44": 21, + "45": 15, + "46": 9, + "47": 10, + "48": 8, + "49": 2, + "50": 1, + "51": 4, + "52": 2, + "53": 1, + "54": 1, + "55": 1, + "56": 1, + "57": 1, + "58": 1, + "59": 1, + "60": 1, + "62": 1, + "64": 1, + "67": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333339266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826a36895169de" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6a368951" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_3.html b/autobahn/client/tungstenite_case_12_3_3.html new file mode 100644 index 0000000..96872e3 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_3.html @@ -0,0 +1,472 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.3 : Pass - 124 ms @ 2025-09-11T20:07:36.940Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=340&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: uE19hElcH2G/fbq63pMW3A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iwLJ0TdwWdofPrhgNZOz3KDXGr0=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
26126
71171
73173
792158
80180
81181
84184
863258
872174
89189
93193
95195
963288
97197
98198
995495
1002200
1015505
1023306
1035515
1045520
1056630
1065530
1076642
1084432
1097763
1106660
111111221
112111232
113111243
114182052
115192185
116141624
117151755
118151770
119182142
120222640
121222662
122192318
123253075
124303720
125263250
126313906
127293683
128313968
129263354
130374810
131334323
134334422
135283780
136334488
137364932
138314278
139273753
140283920
141233243
142263692
143213003
144192736
145162320
146162336
147152205
148152220
149121788
15091350
151101510
1526912
1536918
1546924
155101550
1564624
15781256
1583474
1591159
1621162
1631163
1671167
1682336
1692338
1721172
1741174
1751175
1781178
1801180
1961196
2001200
2101210
2571257
Total1002130605
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
22122
67167
69169
752150
76176
77177
80180
823246
832166
85185
89189
91191
923276
93193
94194
955475
962192
975485
983294
995495
1005500
1016606
1025510
1036618
1044416
1057735
1066636
107111177
108111188
109111199
110181980
111192109
112141568
113151695
114151710
115182070
116222552
117222574
118192242
119252975
120303600
121263146
122313782
123293567
124313844
125263250
126374662
127334191
130334290
131283668
132334356
133364788
134314154
135273645
136283808
137233151
138263588
139212919
140192660
141162256
142162272
143152145
144152160
145121740
14691314
147101470
1486888
1496894
1506900
151101510
1524608
15381224
1543462
1551155
1581158
1591159
1631163
1642328
1652330
1681168
1701170
1711171
1741174
1761176
1921192
1961196
2061206
2521252
Total1002126596
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333430266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882f050534df3b8
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6630353035333464
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_3.json b/autobahn/client/tungstenite_case_12_3_3.json new file mode 100644 index 0000000..e07ab30 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_3.json @@ -0,0 +1,319 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 340, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 124, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=340&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: uE19hElcH2G/fbq63pMW3A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iwLJ0TdwWdofPrhgNZOz3KDXGr0=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "26": 1, + "71": 1, + "73": 1, + "79": 2, + "80": 1, + "81": 1, + "84": 1, + "86": 3, + "87": 2, + "89": 1, + "93": 1, + "95": 1, + "96": 3, + "97": 1, + "98": 1, + "99": 5, + "100": 2, + "101": 5, + "102": 3, + "103": 5, + "104": 5, + "105": 6, + "106": 5, + "107": 6, + "108": 4, + "109": 7, + "110": 6, + "111": 11, + "112": 11, + "113": 11, + "114": 18, + "115": 19, + "116": 14, + "117": 15, + "118": 15, + "119": 18, + "120": 22, + "121": 22, + "122": 19, + "123": 25, + "124": 30, + "125": 26, + "126": 31, + "127": 29, + "128": 31, + "129": 26, + "130": 37, + "131": 33, + "134": 33, + "135": 28, + "136": 33, + "137": 36, + "138": 31, + "139": 27, + "140": 28, + "141": 23, + "142": 26, + "143": 21, + "144": 19, + "145": 16, + "146": 16, + "147": 15, + "148": 15, + "149": 12, + "150": 9, + "151": 10, + "152": 6, + "153": 6, + "154": 6, + "155": 10, + "156": 4, + "157": 8, + "158": 3, + "159": 1, + "162": 1, + "163": 1, + "167": 1, + "168": 2, + "169": 2, + "172": 1, + "174": 1, + "175": 1, + "178": 1, + "180": 1, + "196": 1, + "200": 1, + "210": 1, + "257": 1 + }, + "started": "2025-09-11T20:07:36.940Z", + "trafficStats": { + "incomingCompressionRatio": 0.4821328125, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 123426, + "incomingOctetsWireLevel": 130340, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.056017370732260624, + "outgoingCompressionRatio": 0.4821328125, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 123426, + "outgoingOctetsWireLevel": 126340, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.02360928815646622, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "22": 1, + "67": 1, + "69": 1, + "75": 2, + "76": 1, + "77": 1, + "80": 1, + "82": 3, + "83": 2, + "85": 1, + "89": 1, + "91": 1, + "92": 3, + "93": 1, + "94": 1, + "95": 5, + "96": 2, + "97": 5, + "98": 3, + "99": 5, + "100": 5, + "101": 6, + "102": 5, + "103": 6, + "104": 4, + "105": 7, + "106": 6, + "107": 11, + "108": 11, + "109": 11, + "110": 18, + "111": 19, + "112": 14, + "113": 15, + "114": 15, + "115": 18, + "116": 22, + "117": 22, + "118": 19, + "119": 25, + "120": 30, + "121": 26, + "122": 31, + "123": 29, + "124": 31, + "125": 26, + "126": 37, + "127": 33, + "130": 33, + "131": 28, + "132": 33, + "133": 36, + "134": 31, + "135": 27, + "136": 28, + "137": 23, + "138": 26, + "139": 21, + "140": 19, + "141": 16, + "142": 16, + "143": 15, + "144": 15, + "145": 12, + "146": 9, + "147": 10, + "148": 6, + "149": 6, + "150": 6, + "151": 10, + "152": 4, + "153": 8, + "154": 3, + "155": 1, + "158": 1, + "159": 1, + "163": 1, + "164": 2, + "165": 2, + "168": 1, + "170": 1, + "171": 1, + "174": 1, + "176": 1, + "192": 1, + "196": 1, + "206": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333430266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f050534df3b8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f050534d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_4.html b/autobahn/client/tungstenite_case_12_3_4.html new file mode 100644 index 0000000..aa20dcc --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_4.html @@ -0,0 +1,616 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.4 : Pass - 252 ms @ 2025-09-11T20:07:37.066Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=341&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: HD+n0BPhc45T/pqJbpP1+g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: JfDPDJQz//PF/nMGkyHXpI2z7hg=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
3031303
3051305
3112622
3302660
3311331
3321332
3352670
3361336
3381338
3391339
3421342
3441344
3451345
34731041
3492698
3501350
3512702
3551355
3571357
3601360
3622724
3641364
36831104
3711371
3732746
3741374
37631128
37731131
3791379
3851385
3872774
3882776
3892778
3902780
3912782
3922784
3931393
39641584
39783176
3981398
3991399
40031200
40172807
40283216
403104030
40472828
40541620
40641624
40772849
40893672
40962454
410114510
411114521
41252060
41383304
41472898
41531245
41662496
4172834
41862508
41983352
42083360
42162526
422145908
42372961
424104240
425156375
426135538
427145978
428104280
429135577
430114730
43173017
432187776
43362598
43473038
435177395
436146104
437166992
438156570
439135707
440146160
4412310143
442177514
443229746
4442912876
4452712015
446146244
447188046
448135824
449135837
450167200
451114961
45283616
453198607
454135902
455156825
456135928
457146398
4582410992
459125508
460125520
46194149
46262772
46341852
46452320
46594185
466125592
467157005
468177956
46983752
470104700
47183768
4722944
47362838
47431422
47573325
4762952
47741908
47841912
47931437
48052400
4812962
4821482
4832966
48441936
4852970
48662916
4882976
4901490
4911491
4922984
4932986
49431482
4952990
49641984
4971497
49841992
49931497
50031500
50131503
50231506
5031503
50431512
50531515
50621012
5141514
51631548
5201520
5221522
5231523
5241524
5351535
54521090
5491549
5521552
5571557
5671567
6011601
Total1002440728
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
2991299
3011301
3072614
3262652
3271327
3281328
3312662
3321332
3341334
3351335
3381338
3401340
3411341
34331029
3452690
3461346
3472694
3511351
3531353
3561356
3582716
3601360
36431092
3671367
3692738
3701370
37231116
37331119
3751375
3811381
3832766
3842768
3852770
3862772
3872774
3882776
3891389
39241568
39383144
3941394
3951395
39631188
39772779
39883184
399103990
40072800
40141604
40241608
40372821
40493636
40562430
406114466
407114477
40852040
40983272
41072870
41131233
41262472
4132826
41462484
41583320
41683328
41762502
418145852
41972933
420104200
421156315
422135486
423145922
424104240
425135525
426114686
42772989
428187704
42962574
43073010
431177327
432146048
433166928
434156510
435135655
436146104
4372310051
438177446
439229658
4402912760
4412711907
442146188
443187974
444135772
445135785
446167136
447114917
44883584
449198531
450135850
451156765
452135876
453146342
4542410896
455125460
456125472
45794113
45862748
45941836
46052300
46194149
462125544
463156945
464177888
46583720
466104660
46783736
4682936
46962814
47031410
47173297
4722944
47341892
47441896
47531425
47652380
4772954
4781478
4792958
48041920
4812962
48262892
4842968
4861486
4871487
4882976
4892978
49031470
4912982
49241968
4931493
49441976
49531485
49631488
49731491
49831494
4991499
50031500
50131503
50221004
5101510
51231536
5161516
5181518
5191519
5201520
5311531
54121082
5451545
5481548
5531553
5631563
5971597
Total1002436719
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333431266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882bb1aed1db8f2
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6262316165643164
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_4.json b/autobahn/client/tungstenite_case_12_3_4.json new file mode 100644 index 0000000..e8fec4b --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_4.json @@ -0,0 +1,463 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 341, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 252, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=341&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: HD+n0BPhc45T/pqJbpP1+g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: JfDPDJQz//PF/nMGkyHXpI2z7hg=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "303": 1, + "305": 1, + "311": 2, + "330": 2, + "331": 1, + "332": 1, + "335": 2, + "336": 1, + "338": 1, + "339": 1, + "342": 1, + "344": 1, + "345": 1, + "347": 3, + "349": 2, + "350": 1, + "351": 2, + "355": 1, + "357": 1, + "360": 1, + "362": 2, + "364": 1, + "368": 3, + "371": 1, + "373": 2, + "374": 1, + "376": 3, + "377": 3, + "379": 1, + "385": 1, + "387": 2, + "388": 2, + "389": 2, + "390": 2, + "391": 2, + "392": 2, + "393": 1, + "396": 4, + "397": 8, + "398": 1, + "399": 1, + "400": 3, + "401": 7, + "402": 8, + "403": 10, + "404": 7, + "405": 4, + "406": 4, + "407": 7, + "408": 9, + "409": 6, + "410": 11, + "411": 11, + "412": 5, + "413": 8, + "414": 7, + "415": 3, + "416": 6, + "417": 2, + "418": 6, + "419": 8, + "420": 8, + "421": 6, + "422": 14, + "423": 7, + "424": 10, + "425": 15, + "426": 13, + "427": 14, + "428": 10, + "429": 13, + "430": 11, + "431": 7, + "432": 18, + "433": 6, + "434": 7, + "435": 17, + "436": 14, + "437": 16, + "438": 15, + "439": 13, + "440": 14, + "441": 23, + "442": 17, + "443": 22, + "444": 29, + "445": 27, + "446": 14, + "447": 18, + "448": 13, + "449": 13, + "450": 16, + "451": 11, + "452": 8, + "453": 19, + "454": 13, + "455": 15, + "456": 13, + "457": 14, + "458": 24, + "459": 12, + "460": 12, + "461": 9, + "462": 6, + "463": 4, + "464": 5, + "465": 9, + "466": 12, + "467": 15, + "468": 17, + "469": 8, + "470": 10, + "471": 8, + "472": 2, + "473": 6, + "474": 3, + "475": 7, + "476": 2, + "477": 4, + "478": 4, + "479": 3, + "480": 5, + "481": 2, + "482": 1, + "483": 2, + "484": 4, + "485": 2, + "486": 6, + "488": 2, + "490": 1, + "491": 1, + "492": 2, + "493": 2, + "494": 3, + "495": 2, + "496": 4, + "497": 1, + "498": 4, + "499": 3, + "500": 3, + "501": 3, + "502": 3, + "503": 1, + "504": 3, + "505": 3, + "506": 2, + "514": 1, + "516": 3, + "520": 1, + "522": 1, + "523": 1, + "524": 1, + "535": 1, + "545": 2, + "549": 1, + "552": 1, + "557": 1, + "567": 1, + "601": 1 + }, + "started": "2025-09-11T20:07:37.066Z", + "trafficStats": { + "incomingCompressionRatio": 0.4223271484375, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 432463, + "incomingOctetsWireLevel": 440463, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.018498692373682835, + "outgoingCompressionRatio": 0.4223271484375, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 432463, + "outgoingOctetsWireLevel": 436463, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.009249346186841418, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "299": 1, + "301": 1, + "307": 2, + "326": 2, + "327": 1, + "328": 1, + "331": 2, + "332": 1, + "334": 1, + "335": 1, + "338": 1, + "340": 1, + "341": 1, + "343": 3, + "345": 2, + "346": 1, + "347": 2, + "351": 1, + "353": 1, + "356": 1, + "358": 2, + "360": 1, + "364": 3, + "367": 1, + "369": 2, + "370": 1, + "372": 3, + "373": 3, + "375": 1, + "381": 1, + "383": 2, + "384": 2, + "385": 2, + "386": 2, + "387": 2, + "388": 2, + "389": 1, + "392": 4, + "393": 8, + "394": 1, + "395": 1, + "396": 3, + "397": 7, + "398": 8, + "399": 10, + "400": 7, + "401": 4, + "402": 4, + "403": 7, + "404": 9, + "405": 6, + "406": 11, + "407": 11, + "408": 5, + "409": 8, + "410": 7, + "411": 3, + "412": 6, + "413": 2, + "414": 6, + "415": 8, + "416": 8, + "417": 6, + "418": 14, + "419": 7, + "420": 10, + "421": 15, + "422": 13, + "423": 14, + "424": 10, + "425": 13, + "426": 11, + "427": 7, + "428": 18, + "429": 6, + "430": 7, + "431": 17, + "432": 14, + "433": 16, + "434": 15, + "435": 13, + "436": 14, + "437": 23, + "438": 17, + "439": 22, + "440": 29, + "441": 27, + "442": 14, + "443": 18, + "444": 13, + "445": 13, + "446": 16, + "447": 11, + "448": 8, + "449": 19, + "450": 13, + "451": 15, + "452": 13, + "453": 14, + "454": 24, + "455": 12, + "456": 12, + "457": 9, + "458": 6, + "459": 4, + "460": 5, + "461": 9, + "462": 12, + "463": 15, + "464": 17, + "465": 8, + "466": 10, + "467": 8, + "468": 2, + "469": 6, + "470": 3, + "471": 7, + "472": 2, + "473": 4, + "474": 4, + "475": 3, + "476": 5, + "477": 2, + "478": 1, + "479": 2, + "480": 4, + "481": 2, + "482": 6, + "484": 2, + "486": 1, + "487": 1, + "488": 2, + "489": 2, + "490": 3, + "491": 2, + "492": 4, + "493": 1, + "494": 4, + "495": 3, + "496": 3, + "497": 3, + "498": 3, + "499": 1, + "500": 3, + "501": 3, + "502": 2, + "510": 1, + "512": 3, + "516": 1, + "518": 1, + "519": 1, + "520": 1, + "531": 1, + "541": 2, + "545": 1, + "548": 1, + "553": 1, + "563": 1, + "597": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333431266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882bb1aed1db8f2" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "bb1aed1d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_5.html b/autobahn/client/tungstenite_case_12_3_5.html new file mode 100644 index 0000000..0cbe28d --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_5.html @@ -0,0 +1,922 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.5 : Pass - 727 ms @ 2025-09-11T20:07:37.320Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=342&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: d2N28s8pMWUBfR3GBqZvbw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: RkChg5wbKRB/Iq1wLXhbdJ1UEbs=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
128611286
128811288
129222584
129311293
129411294
129522590
129622592
129822596
130111301
130322606
130422608
130511305
130911309
131111311
131311313
131911319
139811398
140411404
140811408
141011410
141911419
142911429
143622872
143711437
145011450
145711457
146511465
146811468
146922938
147811478
148411484
148711487
149011490
149211492
149522990
149711497
150111501
150211502
150323006
150411504
150911509
151111511
151334539
151457570
151523030
151711517
151823036
151911519
152011520
152157605
152234566
152411524
152523050
152623052
152711527
153023060
153111531
153223064
153323066
153423068
153523070
153634608
153734611
153846152
153934617
154011540
154146164
154211542
154357715
154423088
154523090
154634638
154734641
154823096
154911549
155057750
155157755
155246208
155434662
155534665
155669336
1557812456
155834674
1559710913
156057800
1561812488
1562914058
1563710941
1564812512
156523130
15661117226
156757835
156811568
156923138
157057850
157146284
157211572
157369438
157469444
157557875
1576711032
157757885
157857890
157923158
158023160
158146324
158211582
158323166
1584711088
158569510
158669516
158757935
158834764
158923178
1590711130
159146364
159223184
159346372
159457970
159557975
15961117556
159769582
1598711186
159934797
160046400
1601711207
160246408
1603812824
160458020
160523210
160623212
1607711249
160834824
160923218
161011610
161158055
161258060
161311613
161446456
161546460
1616914544
161734851
161934857
162058100
162146484
162246488
162369738
162446496
162523250
162658130
162769762
162869768
162946516
163046520
163146524
163258160
163369798
163423268
163534905
163634908
163711637
1638711466
163934917
164046560
164111641
164223284
164323286
1644711508
164534935
164634938
164746588
164869888
16491118139
165046600
1651813208
165269912
165346612
1654813232
1655914895
165646624
165746628
165811658
165923318
166034980
166146644
166223324
166358315
166423328
166546660
166646664
166723334
166835004
166911669
1670610020
167123342
16721016720
167358365
1674610044
1675813400
1676915084
167758385
167823356
167946716
1680813440
168158405
168258410
1683610098
1684610104
168535055
16861118546
16871016870
1688915192
168958445
169035070
169146764
169323386
169446776
169558475
1696915264
169758485
1698711886
1699711893
170046800
17011017010
170223404
170311703
1704711928
170523410
170646824
170723414
170835124
170958545
171035130
171123422
171223424
171311713
171411714
171546860
171746868
171846872
171923438
172023440
172135163
172235166
172311723
172411724
172535175
1726712082
172711727
172835184
172935187
173035190
173211732
173323466
173411734
173523470
173611736
173723474
174223484
174411744
174935247
175011750
175123502
175223504
175523510
175711757
175823516
175923518
176011760
176111761
176311763
176411764
176611766
176911769
177111771
177435322
177523550
177635328
177911779
178011780
178811788
179111791
179311793
179411794
179511795
179611796
179811798
180011800
180123602
180411804
180811808
181411814
181811818
182011820
182423648
182523650
182611826
182911829
183111831
183223664
183311833
183511835
184011840
184411844
184823696
184911849
185111851
185211852
185411854
185811858
186511865
214212142
Total10021628407
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
128211282
128411284
128822576
128911289
129011290
129122582
129222584
129422588
129711297
129922598
130022600
130111301
130511305
130711307
130911309
131511315
139411394
140011400
140411404
140611406
141511415
142511425
143222864
143311433
144611446
145311453
146111461
146411464
146522930
147411474
148011480
148311483
148611486
148811488
149122982
149311493
149711497
149811498
149922998
150011500
150511505
150711507
150934527
151057550
151123022
151311513
151423028
151511515
151611516
151757585
151834554
152011520
152123042
152223044
152311523
152623052
152711527
152823056
152923058
153023060
153123062
153234596
153334599
153446136
153534605
153611536
153746148
153811538
153957695
154023080
154123082
154234626
154334629
154423088
154511545
154657730
154757735
154846192
155034650
155134653
155269312
1553812424
155434662
1555710885
155657780
1557812456
1558914022
1559710913
1560812480
156123122
15621117182
156357815
156411564
156523130
156657830
156746268
156811568
156969414
157069420
157157855
1572711004
157357865
157457870
157523150
157623152
157746308
157811578
157923158
1580711060
158169486
158269492
158357915
158434752
158523170
1586711102
158746348
158823176
158946356
159057950
159157955
15921117512
159369558
1594711158
159534785
159646384
1597711179
159846392
1599812792
160058000
160123202
160223204
1603711221
160434812
160523210
160611606
160758035
160858040
160911609
161046440
161146444
1612914508
161334839
161534845
161658080
161746468
161846472
161969714
162046480
162123242
162258110
162369738
162469744
162546500
162646504
162746508
162858140
162969774
163023260
163134893
163234896
163311633
1634711438
163534905
163646544
163711637
163823276
163923278
1640711480
164134923
164234926
164346572
164469864
16451118095
164646584
1647813176
164869888
164946596
1650813200
1651914859
165246608
165346612
165411654
165523310
165634968
165746628
165823316
165958295
166023320
166146644
166246648
166323326
166434992
166511665
166669996
166723334
16681016680
166958345
1670610020
1671813368
1672915048
167358365
167423348
167546700
1676813408
167758385
167858390
1679610074
1680610080
168135043
16821118502
16831016830
1684915156
168558425
168635058
168746748
168923378
169046760
169158455
1692915228
169358465
1694711858
1695711865
169646784
16971016970
169823396
169911699
1700711900
170123402
170246808
170323406
170435112
170558525
170635118
170723414
170823416
170911709
171011710
171146844
171346852
171446856
171523430
171623432
171735151
171835154
171911719
172011720
172135163
1722712054
172311723
172435172
172535175
172635178
172811728
172923458
173011730
173123462
173211732
173323466
173823476
174011740
174535235
174611746
174723494
174823496
175123502
175311753
175423508
175523510
175611756
175711757
175911759
176011760
176211762
176511765
176711767
177035310
177123542
177235316
177511775
177611776
178411784
178711787
178911789
179011790
179111791
179211792
179411794
179611796
179723594
180011800
180411804
181011810
181411814
181611816
182023640
182123642
182211822
182511825
182711827
182823656
182911829
183111831
183611836
184011840
184423688
184511845
184711847
184811848
185011850
185411854
186111861
213812138
Total10021624398
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333432266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882579fc12f5477
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3537396663313266
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_5.json b/autobahn/client/tungstenite_case_12_3_5.json new file mode 100644 index 0000000..24af1cb --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_5.json @@ -0,0 +1,769 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 342, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 727, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=342&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: d2N28s8pMWUBfR3GBqZvbw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: RkChg5wbKRB/Iq1wLXhbdJ1UEbs=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1286": 1, + "1288": 1, + "1292": 2, + "1293": 1, + "1294": 1, + "1295": 2, + "1296": 2, + "1298": 2, + "1301": 1, + "1303": 2, + "1304": 2, + "1305": 1, + "1309": 1, + "1311": 1, + "1313": 1, + "1319": 1, + "1398": 1, + "1404": 1, + "1408": 1, + "1410": 1, + "1419": 1, + "1429": 1, + "1436": 2, + "1437": 1, + "1450": 1, + "1457": 1, + "1465": 1, + "1468": 1, + "1469": 2, + "1478": 1, + "1484": 1, + "1487": 1, + "1490": 1, + "1492": 1, + "1495": 2, + "1497": 1, + "1501": 1, + "1502": 1, + "1503": 2, + "1504": 1, + "1509": 1, + "1511": 1, + "1513": 3, + "1514": 5, + "1515": 2, + "1517": 1, + "1518": 2, + "1519": 1, + "1520": 1, + "1521": 5, + "1522": 3, + "1524": 1, + "1525": 2, + "1526": 2, + "1527": 1, + "1530": 2, + "1531": 1, + "1532": 2, + "1533": 2, + "1534": 2, + "1535": 2, + "1536": 3, + "1537": 3, + "1538": 4, + "1539": 3, + "1540": 1, + "1541": 4, + "1542": 1, + "1543": 5, + "1544": 2, + "1545": 2, + "1546": 3, + "1547": 3, + "1548": 2, + "1549": 1, + "1550": 5, + "1551": 5, + "1552": 4, + "1554": 3, + "1555": 3, + "1556": 6, + "1557": 8, + "1558": 3, + "1559": 7, + "1560": 5, + "1561": 8, + "1562": 9, + "1563": 7, + "1564": 8, + "1565": 2, + "1566": 11, + "1567": 5, + "1568": 1, + "1569": 2, + "1570": 5, + "1571": 4, + "1572": 1, + "1573": 6, + "1574": 6, + "1575": 5, + "1576": 7, + "1577": 5, + "1578": 5, + "1579": 2, + "1580": 2, + "1581": 4, + "1582": 1, + "1583": 2, + "1584": 7, + "1585": 6, + "1586": 6, + "1587": 5, + "1588": 3, + "1589": 2, + "1590": 7, + "1591": 4, + "1592": 2, + "1593": 4, + "1594": 5, + "1595": 5, + "1596": 11, + "1597": 6, + "1598": 7, + "1599": 3, + "1600": 4, + "1601": 7, + "1602": 4, + "1603": 8, + "1604": 5, + "1605": 2, + "1606": 2, + "1607": 7, + "1608": 3, + "1609": 2, + "1610": 1, + "1611": 5, + "1612": 5, + "1613": 1, + "1614": 4, + "1615": 4, + "1616": 9, + "1617": 3, + "1619": 3, + "1620": 5, + "1621": 4, + "1622": 4, + "1623": 6, + "1624": 4, + "1625": 2, + "1626": 5, + "1627": 6, + "1628": 6, + "1629": 4, + "1630": 4, + "1631": 4, + "1632": 5, + "1633": 6, + "1634": 2, + "1635": 3, + "1636": 3, + "1637": 1, + "1638": 7, + "1639": 3, + "1640": 4, + "1641": 1, + "1642": 2, + "1643": 2, + "1644": 7, + "1645": 3, + "1646": 3, + "1647": 4, + "1648": 6, + "1649": 11, + "1650": 4, + "1651": 8, + "1652": 6, + "1653": 4, + "1654": 8, + "1655": 9, + "1656": 4, + "1657": 4, + "1658": 1, + "1659": 2, + "1660": 3, + "1661": 4, + "1662": 2, + "1663": 5, + "1664": 2, + "1665": 4, + "1666": 4, + "1667": 2, + "1668": 3, + "1669": 1, + "1670": 6, + "1671": 2, + "1672": 10, + "1673": 5, + "1674": 6, + "1675": 8, + "1676": 9, + "1677": 5, + "1678": 2, + "1679": 4, + "1680": 8, + "1681": 5, + "1682": 5, + "1683": 6, + "1684": 6, + "1685": 3, + "1686": 11, + "1687": 10, + "1688": 9, + "1689": 5, + "1690": 3, + "1691": 4, + "1693": 2, + "1694": 4, + "1695": 5, + "1696": 9, + "1697": 5, + "1698": 7, + "1699": 7, + "1700": 4, + "1701": 10, + "1702": 2, + "1703": 1, + "1704": 7, + "1705": 2, + "1706": 4, + "1707": 2, + "1708": 3, + "1709": 5, + "1710": 3, + "1711": 2, + "1712": 2, + "1713": 1, + "1714": 1, + "1715": 4, + "1717": 4, + "1718": 4, + "1719": 2, + "1720": 2, + "1721": 3, + "1722": 3, + "1723": 1, + "1724": 1, + "1725": 3, + "1726": 7, + "1727": 1, + "1728": 3, + "1729": 3, + "1730": 3, + "1732": 1, + "1733": 2, + "1734": 1, + "1735": 2, + "1736": 1, + "1737": 2, + "1742": 2, + "1744": 1, + "1749": 3, + "1750": 1, + "1751": 2, + "1752": 2, + "1755": 2, + "1757": 1, + "1758": 2, + "1759": 2, + "1760": 1, + "1761": 1, + "1763": 1, + "1764": 1, + "1766": 1, + "1769": 1, + "1771": 1, + "1774": 3, + "1775": 2, + "1776": 3, + "1779": 1, + "1780": 1, + "1788": 1, + "1791": 1, + "1793": 1, + "1794": 1, + "1795": 1, + "1796": 1, + "1798": 1, + "1800": 1, + "1801": 2, + "1804": 1, + "1808": 1, + "1814": 1, + "1818": 1, + "1820": 1, + "1824": 2, + "1825": 2, + "1826": 1, + "1829": 1, + "1831": 1, + "1832": 2, + "1833": 1, + "1835": 1, + "1840": 1, + "1844": 1, + "1848": 2, + "1849": 1, + "1851": 1, + "1852": 1, + "1854": 1, + "1858": 1, + "1865": 1, + "2142": 1 + }, + "started": "2025-09-11T20:07:37.320Z", + "trafficStats": { + "incomingCompressionRatio": 0.39554248046875, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 1620142, + "incomingOctetsWireLevel": 1628142, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.004937838782032686, + "outgoingCompressionRatio": 0.39554248046875, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 1620142, + "outgoingOctetsWireLevel": 1624142, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.002468919391016343, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "1282": 1, + "1284": 1, + "1288": 2, + "1289": 1, + "1290": 1, + "1291": 2, + "1292": 2, + "1294": 2, + "1297": 1, + "1299": 2, + "1300": 2, + "1301": 1, + "1305": 1, + "1307": 1, + "1309": 1, + "1315": 1, + "1394": 1, + "1400": 1, + "1404": 1, + "1406": 1, + "1415": 1, + "1425": 1, + "1432": 2, + "1433": 1, + "1446": 1, + "1453": 1, + "1461": 1, + "1464": 1, + "1465": 2, + "1474": 1, + "1480": 1, + "1483": 1, + "1486": 1, + "1488": 1, + "1491": 2, + "1493": 1, + "1497": 1, + "1498": 1, + "1499": 2, + "1500": 1, + "1505": 1, + "1507": 1, + "1509": 3, + "1510": 5, + "1511": 2, + "1513": 1, + "1514": 2, + "1515": 1, + "1516": 1, + "1517": 5, + "1518": 3, + "1520": 1, + "1521": 2, + "1522": 2, + "1523": 1, + "1526": 2, + "1527": 1, + "1528": 2, + "1529": 2, + "1530": 2, + "1531": 2, + "1532": 3, + "1533": 3, + "1534": 4, + "1535": 3, + "1536": 1, + "1537": 4, + "1538": 1, + "1539": 5, + "1540": 2, + "1541": 2, + "1542": 3, + "1543": 3, + "1544": 2, + "1545": 1, + "1546": 5, + "1547": 5, + "1548": 4, + "1550": 3, + "1551": 3, + "1552": 6, + "1553": 8, + "1554": 3, + "1555": 7, + "1556": 5, + "1557": 8, + "1558": 9, + "1559": 7, + "1560": 8, + "1561": 2, + "1562": 11, + "1563": 5, + "1564": 1, + "1565": 2, + "1566": 5, + "1567": 4, + "1568": 1, + "1569": 6, + "1570": 6, + "1571": 5, + "1572": 7, + "1573": 5, + "1574": 5, + "1575": 2, + "1576": 2, + "1577": 4, + "1578": 1, + "1579": 2, + "1580": 7, + "1581": 6, + "1582": 6, + "1583": 5, + "1584": 3, + "1585": 2, + "1586": 7, + "1587": 4, + "1588": 2, + "1589": 4, + "1590": 5, + "1591": 5, + "1592": 11, + "1593": 6, + "1594": 7, + "1595": 3, + "1596": 4, + "1597": 7, + "1598": 4, + "1599": 8, + "1600": 5, + "1601": 2, + "1602": 2, + "1603": 7, + "1604": 3, + "1605": 2, + "1606": 1, + "1607": 5, + "1608": 5, + "1609": 1, + "1610": 4, + "1611": 4, + "1612": 9, + "1613": 3, + "1615": 3, + "1616": 5, + "1617": 4, + "1618": 4, + "1619": 6, + "1620": 4, + "1621": 2, + "1622": 5, + "1623": 6, + "1624": 6, + "1625": 4, + "1626": 4, + "1627": 4, + "1628": 5, + "1629": 6, + "1630": 2, + "1631": 3, + "1632": 3, + "1633": 1, + "1634": 7, + "1635": 3, + "1636": 4, + "1637": 1, + "1638": 2, + "1639": 2, + "1640": 7, + "1641": 3, + "1642": 3, + "1643": 4, + "1644": 6, + "1645": 11, + "1646": 4, + "1647": 8, + "1648": 6, + "1649": 4, + "1650": 8, + "1651": 9, + "1652": 4, + "1653": 4, + "1654": 1, + "1655": 2, + "1656": 3, + "1657": 4, + "1658": 2, + "1659": 5, + "1660": 2, + "1661": 4, + "1662": 4, + "1663": 2, + "1664": 3, + "1665": 1, + "1666": 6, + "1667": 2, + "1668": 10, + "1669": 5, + "1670": 6, + "1671": 8, + "1672": 9, + "1673": 5, + "1674": 2, + "1675": 4, + "1676": 8, + "1677": 5, + "1678": 5, + "1679": 6, + "1680": 6, + "1681": 3, + "1682": 11, + "1683": 10, + "1684": 9, + "1685": 5, + "1686": 3, + "1687": 4, + "1689": 2, + "1690": 4, + "1691": 5, + "1692": 9, + "1693": 5, + "1694": 7, + "1695": 7, + "1696": 4, + "1697": 10, + "1698": 2, + "1699": 1, + "1700": 7, + "1701": 2, + "1702": 4, + "1703": 2, + "1704": 3, + "1705": 5, + "1706": 3, + "1707": 2, + "1708": 2, + "1709": 1, + "1710": 1, + "1711": 4, + "1713": 4, + "1714": 4, + "1715": 2, + "1716": 2, + "1717": 3, + "1718": 3, + "1719": 1, + "1720": 1, + "1721": 3, + "1722": 7, + "1723": 1, + "1724": 3, + "1725": 3, + "1726": 3, + "1728": 1, + "1729": 2, + "1730": 1, + "1731": 2, + "1732": 1, + "1733": 2, + "1738": 2, + "1740": 1, + "1745": 3, + "1746": 1, + "1747": 2, + "1748": 2, + "1751": 2, + "1753": 1, + "1754": 2, + "1755": 2, + "1756": 1, + "1757": 1, + "1759": 1, + "1760": 1, + "1762": 1, + "1765": 1, + "1767": 1, + "1770": 3, + "1771": 2, + "1772": 3, + "1775": 1, + "1776": 1, + "1784": 1, + "1787": 1, + "1789": 1, + "1790": 1, + "1791": 1, + "1792": 1, + "1794": 1, + "1796": 1, + "1797": 2, + "1800": 1, + "1804": 1, + "1810": 1, + "1814": 1, + "1816": 1, + "1820": 2, + "1821": 2, + "1822": 1, + "1825": 1, + "1827": 1, + "1828": 2, + "1829": 1, + "1831": 1, + "1836": 1, + "1840": 1, + "1844": 2, + "1845": 1, + "1847": 1, + "1848": 1, + "1850": 1, + "1854": 1, + "1861": 1, + "2138": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333432266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882579fc12f5477" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "579fc12f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_6.html b/autobahn/client/tungstenite_case_12_3_6.html new file mode 100644 index 0000000..9a4b92c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_6.html @@ -0,0 +1,1122 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.6 : Pass - 1278 ms @ 2025-09-11T20:07:38.049Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=343&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 4pa2CBsYNj2k5VQ+YJVO0g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: oH5tFXrNUw6u0/OssMqpWuXJt8s=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
254312543
255812558
256012560
256512565
262212622
265612656
266812668
267112671
268512685
269212692
269912699
271912719
272612726
277412774
277512775
277712777
278412784
280212802
281812818
281925638
283112831
283512835
284212842
284312843
285812858
286012860
286212862
287612876
290312903
291712917
292412924
292712927
293412934
293612936
293912939
294012940
294412944
295812958
296412964
297912979
298812988
298912989
299312993
299425988
299525990
300313003
300713007
301113011
301213012
301313013
302113021
302213022
302526050
302913029
303013030
303513035
303726074
303913039
304239126
304313043
304439132
304626092
304726094
304826096
304926098
305026100
305113051
3052412208
305313053
305413054
305539165
305626112
3057412228
305813058
305926118
3060412240
306126122
306226124
306326126
306439192
306513065
306726134
306813068
306913069
307013070
307126142
307239216
307313073
307426148
307539225
307626152
307726154
307826156
3079618474
3080618480
308139243
308213082
3083515415
3084515420
3085412340
308613086
3087412348
308839264
3089721623
309039270
309139273
309226184
309313093
3094515470
309539285
309639288
309739291
3098412392
3099515495
310026200
3101515505
310239306
310339309
310426208
310539315
310626212
3107412428
3108412432
3109618654
311039330
311126222
3112412448
311326226
311413114
311526230
3116928044
311713117
3118412472
3119618714
3120618720
3121412484
3122515610
312339369
312439372
3125515625
312613126
312739381
3128721896
3129618774
3130515650
3131618786
313239396
313326266
3134515670
313526270
3136412544
313726274
3138515690
3139412556
3140412560
314126282
314426288
314626292
314739441
314813148
314939447
3150412600
315213152
3153412612
3154515770
315513155
315639468
315726314
3159412636
316139483
316226324
316339489
316413164
316526330
316639498
316739501
316826336
3169515845
317013170
3171412684
317326346
317513175
317613176
317726354
317813178
317926358
3180515900
318113181
318239546
318339549
318513185
318639558
318713187
3188412752
3189515945
319013190
319213192
3193412772
319413194
319539585
319626392
319713197
319813198
319926398
320039600
320239606
320339609
3204516020
3205412820
3207516035
320839624
3209412836
321013210
3211412844
321213212
3214412856
321539645
3217516085
321826436
3219412876
322026440
322126442
322226444
3223516115
322413224
322539675
322613226
322726454
3228516140
322939687
323013230
323139693
323239696
323326466
323413234
323539705
3236412944
323726474
323826476
323926478
324039720
3241516205
324226484
324326486
324426488
3245412980
324613246
324739741
324813248
324913249
3250413000
325113251
325326506
325413254
3255516275
325613256
325713257
3258413032
325913259
3260413040
326113261
326213262
326339789
326413264
326613266
3267413068
326826536
3269516345
3270516350
327139813
327213272
327339819
3274413096
3275413100
327739831
3279516395
328039840
3281413124
3282619692
3283619698
328426568
3285413140
328639858
328739861
328813288
3289723023
329013290
329139873
329213292
3293413172
329413294
3295619770
329626592
329739891
3298619788
3299516495
3300929700
3301723107
3302723114
3303619818
3304619824
3306413224
3307516535
3308516540
330939927
3310413240
331139933
331226624
3313516565
3314413256
331526630
3316619896
331813318
3319413276
332139963
332239966
332339969
3324723268
332539975
332626652
332713327
332813328
333039990
333113331
333226664
333313333
333513335
333813338
333926678
334013340
334213342
3344413376
334513345
334813348
3353310059
335426708
335513355
3356310068
3358413432
336013360
336113361
336226724
3363516815
3364413456
336513365
336626732
336813368
336926738
337013370
337126742
3373310119
337426748
337526750
337626752
337713377
337813378
3379413516
338013380
338113381
3382620292
3383310149
3384413536
338513385
338626772
338713387
338813388
338913389
339026780
339113391
339213392
339313393
339626792
339813398
340213402
340826816
341013410
341426828
341513415
341613416
341826836
341913419
342113421
342413424
343113431
344513445
345013450
346513465
347326946
348013480
348713487
349226984
349713497
350313503
351013510
351113511
351513515
355127102
355213552
355627112
356013560
356213562
356513565
357613576
359513595
359913599
360113601
360213602
361113611
361213612
361713617
362013620
397913979
Total10023201844
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
253912539
255412554
255612556
256112561
261812618
265212652
266412664
266712667
268112681
268812688
269512695
271512715
272212722
277012770
277112771
277312773
278012780
279812798
281412814
281525630
282712827
283112831
283812838
283912839
285412854
285612856
285812858
287212872
289912899
291312913
292012920
292312923
293012930
293212932
293512935
293612936
294012940
295412954
296012960
297512975
298412984
298512985
298912989
299025980
299125982
299912999
300313003
300713007
300813008
300913009
301713017
301813018
302126042
302513025
302613026
303113031
303326066
303513035
303839114
303913039
304039120
304226084
304326086
304426088
304526090
304626092
304713047
3048412192
304913049
305013050
305139153
305226104
3053412212
305413054
305526110
3056412224
305726114
305826116
305926118
306039180
306113061
306326126
306413064
306513065
306613066
306726134
306839204
306913069
307026140
307139213
307226144
307326146
307426148
3075618450
3076618456
307739231
307813078
3079515395
3080515400
3081412324
308213082
3083412332
308439252
3085721595
308639258
308739261
308826176
308913089
3090515450
309139273
309239276
309339279
3094412376
3095515475
309626192
3097515485
309839294
309939297
310026200
310139303
310226204
3103412412
3104412416
3105618630
310639318
310726214
3108412432
310926218
311013110
311126222
3112928008
311313113
3114412456
3115618690
3116618696
3117412468
3118515590
311939357
312039360
3121515605
312213122
312339369
3124721868
3125618750
3126515630
3127618762
312839384
312926258
3130515650
313126262
3132412528
313326266
3134515670
3135412540
3136412544
313726274
314026280
314226284
314339429
314413144
314539435
3146412584
314813148
3149412596
3150515750
315113151
315239456
315326306
3155412620
315739471
315826316
315939477
316013160
316126322
316239486
316339489
316426328
3165515825
316613166
3167412668
316926338
317113171
317213172
317326346
317413174
317526350
3176515880
317713177
317839534
317939537
318113181
318239546
318313183
3184412736
3185515925
318613186
318813188
3189412756
319013190
319139573
319226384
319313193
319413194
319526390
319639588
319839594
319939597
3200516000
3201412804
3203516015
320439612
3205412820
320613206
3207412828
320813208
3210412840
321139633
3213516065
321426428
3215412860
321626432
321726434
321826436
3219516095
322013220
322139663
322213222
322326446
3224516120
322539675
322613226
322739681
322839684
322926458
323013230
323139693
3232412928
323326466
323426468
323526470
323639708
3237516185
323826476
323926478
324026480
3241412964
324213242
324339729
324413244
324513245
3246412984
324713247
324926498
325013250
3251516255
325213252
325313253
3254413016
325513255
3256413024
325713257
325813258
325939777
326013260
326213262
3263413052
326426528
3265516325
3266516330
326739801
326813268
326939807
3270413080
3271413084
327339819
3275516375
327639828
3277413108
3278619668
3279619674
328026560
3281413124
328239846
328339849
328413284
3285722995
328613286
328739861
328813288
3289413156
329013290
3291619746
329226584
329339879
3294619764
3295516475
3296929664
3297723079
3298723086
3299619794
3300619800
3302413208
3303516515
3304516520
330539915
3306413224
330739921
330826616
3309516545
3310413240
331126622
3312619872
331413314
3315413260
331739951
331839954
331939957
3320723240
332139963
332226644
332313323
332413324
332639978
332713327
332826656
332913329
333113331
333413334
333526670
333613336
333813338
3340413360
334113341
334413344
3349310047
335026700
335113351
3352310056
3354413416
335613356
335713357
335826716
3359516795
3360413440
336113361
336226724
336413364
336526730
336613366
336726734
3369310107
337026740
337126742
337226744
337313373
337413374
3375413500
337613376
337713377
3378620268
3379310137
3380413520
338113381
338226764
338313383
338413384
338513385
338626772
338713387
338813388
338913389
339226784
339413394
339813398
340426808
340613406
341026820
341113411
341213412
341426828
341513415
341713417
342013420
342713427
344113441
344613446
346113461
346926938
347613476
348313483
348826976
349313493
349913499
350613506
350713507
351113511
354727094
354813548
355227104
355613556
355813558
356113561
357213572
359113591
359513595
359713597
359813598
360713607
360813608
361313613
361613616
397513975
Total10023197835
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333433266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882bde2237fbe0a
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6264653232333766
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_6.json b/autobahn/client/tungstenite_case_12_3_6.json new file mode 100644 index 0000000..bfbcd6f --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_6.json @@ -0,0 +1,969 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 343, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1278, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=343&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 4pa2CBsYNj2k5VQ+YJVO0g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: oH5tFXrNUw6u0/OssMqpWuXJt8s=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2543": 1, + "2558": 1, + "2560": 1, + "2565": 1, + "2622": 1, + "2656": 1, + "2668": 1, + "2671": 1, + "2685": 1, + "2692": 1, + "2699": 1, + "2719": 1, + "2726": 1, + "2774": 1, + "2775": 1, + "2777": 1, + "2784": 1, + "2802": 1, + "2818": 1, + "2819": 2, + "2831": 1, + "2835": 1, + "2842": 1, + "2843": 1, + "2858": 1, + "2860": 1, + "2862": 1, + "2876": 1, + "2903": 1, + "2917": 1, + "2924": 1, + "2927": 1, + "2934": 1, + "2936": 1, + "2939": 1, + "2940": 1, + "2944": 1, + "2958": 1, + "2964": 1, + "2979": 1, + "2988": 1, + "2989": 1, + "2993": 1, + "2994": 2, + "2995": 2, + "3003": 1, + "3007": 1, + "3011": 1, + "3012": 1, + "3013": 1, + "3021": 1, + "3022": 1, + "3025": 2, + "3029": 1, + "3030": 1, + "3035": 1, + "3037": 2, + "3039": 1, + "3042": 3, + "3043": 1, + "3044": 3, + "3046": 2, + "3047": 2, + "3048": 2, + "3049": 2, + "3050": 2, + "3051": 1, + "3052": 4, + "3053": 1, + "3054": 1, + "3055": 3, + "3056": 2, + "3057": 4, + "3058": 1, + "3059": 2, + "3060": 4, + "3061": 2, + "3062": 2, + "3063": 2, + "3064": 3, + "3065": 1, + "3067": 2, + "3068": 1, + "3069": 1, + "3070": 1, + "3071": 2, + "3072": 3, + "3073": 1, + "3074": 2, + "3075": 3, + "3076": 2, + "3077": 2, + "3078": 2, + "3079": 6, + "3080": 6, + "3081": 3, + "3082": 1, + "3083": 5, + "3084": 5, + "3085": 4, + "3086": 1, + "3087": 4, + "3088": 3, + "3089": 7, + "3090": 3, + "3091": 3, + "3092": 2, + "3093": 1, + "3094": 5, + "3095": 3, + "3096": 3, + "3097": 3, + "3098": 4, + "3099": 5, + "3100": 2, + "3101": 5, + "3102": 3, + "3103": 3, + "3104": 2, + "3105": 3, + "3106": 2, + "3107": 4, + "3108": 4, + "3109": 6, + "3110": 3, + "3111": 2, + "3112": 4, + "3113": 2, + "3114": 1, + "3115": 2, + "3116": 9, + "3117": 1, + "3118": 4, + "3119": 6, + "3120": 6, + "3121": 4, + "3122": 5, + "3123": 3, + "3124": 3, + "3125": 5, + "3126": 1, + "3127": 3, + "3128": 7, + "3129": 6, + "3130": 5, + "3131": 6, + "3132": 3, + "3133": 2, + "3134": 5, + "3135": 2, + "3136": 4, + "3137": 2, + "3138": 5, + "3139": 4, + "3140": 4, + "3141": 2, + "3144": 2, + "3146": 2, + "3147": 3, + "3148": 1, + "3149": 3, + "3150": 4, + "3152": 1, + "3153": 4, + "3154": 5, + "3155": 1, + "3156": 3, + "3157": 2, + "3159": 4, + "3161": 3, + "3162": 2, + "3163": 3, + "3164": 1, + "3165": 2, + "3166": 3, + "3167": 3, + "3168": 2, + "3169": 5, + "3170": 1, + "3171": 4, + "3173": 2, + "3175": 1, + "3176": 1, + "3177": 2, + "3178": 1, + "3179": 2, + "3180": 5, + "3181": 1, + "3182": 3, + "3183": 3, + "3185": 1, + "3186": 3, + "3187": 1, + "3188": 4, + "3189": 5, + "3190": 1, + "3192": 1, + "3193": 4, + "3194": 1, + "3195": 3, + "3196": 2, + "3197": 1, + "3198": 1, + "3199": 2, + "3200": 3, + "3202": 3, + "3203": 3, + "3204": 5, + "3205": 4, + "3207": 5, + "3208": 3, + "3209": 4, + "3210": 1, + "3211": 4, + "3212": 1, + "3214": 4, + "3215": 3, + "3217": 5, + "3218": 2, + "3219": 4, + "3220": 2, + "3221": 2, + "3222": 2, + "3223": 5, + "3224": 1, + "3225": 3, + "3226": 1, + "3227": 2, + "3228": 5, + "3229": 3, + "3230": 1, + "3231": 3, + "3232": 3, + "3233": 2, + "3234": 1, + "3235": 3, + "3236": 4, + "3237": 2, + "3238": 2, + "3239": 2, + "3240": 3, + "3241": 5, + "3242": 2, + "3243": 2, + "3244": 2, + "3245": 4, + "3246": 1, + "3247": 3, + "3248": 1, + "3249": 1, + "3250": 4, + "3251": 1, + "3253": 2, + "3254": 1, + "3255": 5, + "3256": 1, + "3257": 1, + "3258": 4, + "3259": 1, + "3260": 4, + "3261": 1, + "3262": 1, + "3263": 3, + "3264": 1, + "3266": 1, + "3267": 4, + "3268": 2, + "3269": 5, + "3270": 5, + "3271": 3, + "3272": 1, + "3273": 3, + "3274": 4, + "3275": 4, + "3277": 3, + "3279": 5, + "3280": 3, + "3281": 4, + "3282": 6, + "3283": 6, + "3284": 2, + "3285": 4, + "3286": 3, + "3287": 3, + "3288": 1, + "3289": 7, + "3290": 1, + "3291": 3, + "3292": 1, + "3293": 4, + "3294": 1, + "3295": 6, + "3296": 2, + "3297": 3, + "3298": 6, + "3299": 5, + "3300": 9, + "3301": 7, + "3302": 7, + "3303": 6, + "3304": 6, + "3306": 4, + "3307": 5, + "3308": 5, + "3309": 3, + "3310": 4, + "3311": 3, + "3312": 2, + "3313": 5, + "3314": 4, + "3315": 2, + "3316": 6, + "3318": 1, + "3319": 4, + "3321": 3, + "3322": 3, + "3323": 3, + "3324": 7, + "3325": 3, + "3326": 2, + "3327": 1, + "3328": 1, + "3330": 3, + "3331": 1, + "3332": 2, + "3333": 1, + "3335": 1, + "3338": 1, + "3339": 2, + "3340": 1, + "3342": 1, + "3344": 4, + "3345": 1, + "3348": 1, + "3353": 3, + "3354": 2, + "3355": 1, + "3356": 3, + "3358": 4, + "3360": 1, + "3361": 1, + "3362": 2, + "3363": 5, + "3364": 4, + "3365": 1, + "3366": 2, + "3368": 1, + "3369": 2, + "3370": 1, + "3371": 2, + "3373": 3, + "3374": 2, + "3375": 2, + "3376": 2, + "3377": 1, + "3378": 1, + "3379": 4, + "3380": 1, + "3381": 1, + "3382": 6, + "3383": 3, + "3384": 4, + "3385": 1, + "3386": 2, + "3387": 1, + "3388": 1, + "3389": 1, + "3390": 2, + "3391": 1, + "3392": 1, + "3393": 1, + "3396": 2, + "3398": 1, + "3402": 1, + "3408": 2, + "3410": 1, + "3414": 2, + "3415": 1, + "3416": 1, + "3418": 2, + "3419": 1, + "3421": 1, + "3424": 1, + "3431": 1, + "3445": 1, + "3450": 1, + "3465": 1, + "3473": 2, + "3480": 1, + "3487": 1, + "3492": 2, + "3497": 1, + "3503": 1, + "3510": 1, + "3511": 1, + "3515": 1, + "3551": 2, + "3552": 1, + "3556": 2, + "3560": 1, + "3562": 1, + "3565": 1, + "3576": 1, + "3595": 1, + "3599": 1, + "3601": 1, + "3602": 1, + "3611": 1, + "3612": 1, + "3617": 1, + "3620": 1, + "3979": 1 + }, + "started": "2025-09-11T20:07:38.049Z", + "trafficStats": { + "incomingCompressionRatio": 0.3898411865234375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 3193579, + "incomingOctetsWireLevel": 3201579, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0025050264922207967, + "outgoingCompressionRatio": 0.3898411865234375, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 3193579, + "outgoingOctetsWireLevel": 3197579, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0012525132461103984, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "2539": 1, + "2554": 1, + "2556": 1, + "2561": 1, + "2618": 1, + "2652": 1, + "2664": 1, + "2667": 1, + "2681": 1, + "2688": 1, + "2695": 1, + "2715": 1, + "2722": 1, + "2770": 1, + "2771": 1, + "2773": 1, + "2780": 1, + "2798": 1, + "2814": 1, + "2815": 2, + "2827": 1, + "2831": 1, + "2838": 1, + "2839": 1, + "2854": 1, + "2856": 1, + "2858": 1, + "2872": 1, + "2899": 1, + "2913": 1, + "2920": 1, + "2923": 1, + "2930": 1, + "2932": 1, + "2935": 1, + "2936": 1, + "2940": 1, + "2954": 1, + "2960": 1, + "2975": 1, + "2984": 1, + "2985": 1, + "2989": 1, + "2990": 2, + "2991": 2, + "2999": 1, + "3003": 1, + "3007": 1, + "3008": 1, + "3009": 1, + "3017": 1, + "3018": 1, + "3021": 2, + "3025": 1, + "3026": 1, + "3031": 1, + "3033": 2, + "3035": 1, + "3038": 3, + "3039": 1, + "3040": 3, + "3042": 2, + "3043": 2, + "3044": 2, + "3045": 2, + "3046": 2, + "3047": 1, + "3048": 4, + "3049": 1, + "3050": 1, + "3051": 3, + "3052": 2, + "3053": 4, + "3054": 1, + "3055": 2, + "3056": 4, + "3057": 2, + "3058": 2, + "3059": 2, + "3060": 3, + "3061": 1, + "3063": 2, + "3064": 1, + "3065": 1, + "3066": 1, + "3067": 2, + "3068": 3, + "3069": 1, + "3070": 2, + "3071": 3, + "3072": 2, + "3073": 2, + "3074": 2, + "3075": 6, + "3076": 6, + "3077": 3, + "3078": 1, + "3079": 5, + "3080": 5, + "3081": 4, + "3082": 1, + "3083": 4, + "3084": 3, + "3085": 7, + "3086": 3, + "3087": 3, + "3088": 2, + "3089": 1, + "3090": 5, + "3091": 3, + "3092": 3, + "3093": 3, + "3094": 4, + "3095": 5, + "3096": 2, + "3097": 5, + "3098": 3, + "3099": 3, + "3100": 2, + "3101": 3, + "3102": 2, + "3103": 4, + "3104": 4, + "3105": 6, + "3106": 3, + "3107": 2, + "3108": 4, + "3109": 2, + "3110": 1, + "3111": 2, + "3112": 9, + "3113": 1, + "3114": 4, + "3115": 6, + "3116": 6, + "3117": 4, + "3118": 5, + "3119": 3, + "3120": 3, + "3121": 5, + "3122": 1, + "3123": 3, + "3124": 7, + "3125": 6, + "3126": 5, + "3127": 6, + "3128": 3, + "3129": 2, + "3130": 5, + "3131": 2, + "3132": 4, + "3133": 2, + "3134": 5, + "3135": 4, + "3136": 4, + "3137": 2, + "3140": 2, + "3142": 2, + "3143": 3, + "3144": 1, + "3145": 3, + "3146": 4, + "3148": 1, + "3149": 4, + "3150": 5, + "3151": 1, + "3152": 3, + "3153": 2, + "3155": 4, + "3157": 3, + "3158": 2, + "3159": 3, + "3160": 1, + "3161": 2, + "3162": 3, + "3163": 3, + "3164": 2, + "3165": 5, + "3166": 1, + "3167": 4, + "3169": 2, + "3171": 1, + "3172": 1, + "3173": 2, + "3174": 1, + "3175": 2, + "3176": 5, + "3177": 1, + "3178": 3, + "3179": 3, + "3181": 1, + "3182": 3, + "3183": 1, + "3184": 4, + "3185": 5, + "3186": 1, + "3188": 1, + "3189": 4, + "3190": 1, + "3191": 3, + "3192": 2, + "3193": 1, + "3194": 1, + "3195": 2, + "3196": 3, + "3198": 3, + "3199": 3, + "3200": 5, + "3201": 4, + "3203": 5, + "3204": 3, + "3205": 4, + "3206": 1, + "3207": 4, + "3208": 1, + "3210": 4, + "3211": 3, + "3213": 5, + "3214": 2, + "3215": 4, + "3216": 2, + "3217": 2, + "3218": 2, + "3219": 5, + "3220": 1, + "3221": 3, + "3222": 1, + "3223": 2, + "3224": 5, + "3225": 3, + "3226": 1, + "3227": 3, + "3228": 3, + "3229": 2, + "3230": 1, + "3231": 3, + "3232": 4, + "3233": 2, + "3234": 2, + "3235": 2, + "3236": 3, + "3237": 5, + "3238": 2, + "3239": 2, + "3240": 2, + "3241": 4, + "3242": 1, + "3243": 3, + "3244": 1, + "3245": 1, + "3246": 4, + "3247": 1, + "3249": 2, + "3250": 1, + "3251": 5, + "3252": 1, + "3253": 1, + "3254": 4, + "3255": 1, + "3256": 4, + "3257": 1, + "3258": 1, + "3259": 3, + "3260": 1, + "3262": 1, + "3263": 4, + "3264": 2, + "3265": 5, + "3266": 5, + "3267": 3, + "3268": 1, + "3269": 3, + "3270": 4, + "3271": 4, + "3273": 3, + "3275": 5, + "3276": 3, + "3277": 4, + "3278": 6, + "3279": 6, + "3280": 2, + "3281": 4, + "3282": 3, + "3283": 3, + "3284": 1, + "3285": 7, + "3286": 1, + "3287": 3, + "3288": 1, + "3289": 4, + "3290": 1, + "3291": 6, + "3292": 2, + "3293": 3, + "3294": 6, + "3295": 5, + "3296": 9, + "3297": 7, + "3298": 7, + "3299": 6, + "3300": 6, + "3302": 4, + "3303": 5, + "3304": 5, + "3305": 3, + "3306": 4, + "3307": 3, + "3308": 2, + "3309": 5, + "3310": 4, + "3311": 2, + "3312": 6, + "3314": 1, + "3315": 4, + "3317": 3, + "3318": 3, + "3319": 3, + "3320": 7, + "3321": 3, + "3322": 2, + "3323": 1, + "3324": 1, + "3326": 3, + "3327": 1, + "3328": 2, + "3329": 1, + "3331": 1, + "3334": 1, + "3335": 2, + "3336": 1, + "3338": 1, + "3340": 4, + "3341": 1, + "3344": 1, + "3349": 3, + "3350": 2, + "3351": 1, + "3352": 3, + "3354": 4, + "3356": 1, + "3357": 1, + "3358": 2, + "3359": 5, + "3360": 4, + "3361": 1, + "3362": 2, + "3364": 1, + "3365": 2, + "3366": 1, + "3367": 2, + "3369": 3, + "3370": 2, + "3371": 2, + "3372": 2, + "3373": 1, + "3374": 1, + "3375": 4, + "3376": 1, + "3377": 1, + "3378": 6, + "3379": 3, + "3380": 4, + "3381": 1, + "3382": 2, + "3383": 1, + "3384": 1, + "3385": 1, + "3386": 2, + "3387": 1, + "3388": 1, + "3389": 1, + "3392": 2, + "3394": 1, + "3398": 1, + "3404": 2, + "3406": 1, + "3410": 2, + "3411": 1, + "3412": 1, + "3414": 2, + "3415": 1, + "3417": 1, + "3420": 1, + "3427": 1, + "3441": 1, + "3446": 1, + "3461": 1, + "3469": 2, + "3476": 1, + "3483": 1, + "3488": 2, + "3493": 1, + "3499": 1, + "3506": 1, + "3507": 1, + "3511": 1, + "3547": 2, + "3548": 1, + "3552": 2, + "3556": 1, + "3558": 1, + "3561": 1, + "3572": 1, + "3591": 1, + "3595": 1, + "3597": 1, + "3598": 1, + "3607": 1, + "3608": 1, + "3613": 1, + "3616": 1, + "3975": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333433266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882bde2237fbe0a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "bde2237f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_7.html b/autobahn/client/tungstenite_case_12_3_7.html new file mode 100644 index 0000000..7ffeb91 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_7.html @@ -0,0 +1,1402 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.7 : Pass - 2608 ms @ 2025-09-11T20:07:39.328Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=344&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: x0kq0kYxLao4hYOh4yPWbg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /wbtNUktln1TN3CIFkrm9eC3dEI=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
552115521
553415534
554315543
558015580
558515585
561815618
562015620
562315623
563115631
565915659
567915679
568615686
570015700
572015720
572715727
574015740
575115751
576915769
580815808
581715817
582615826
585615856
585715857
587515875
587915879
588515885
588615886
589215892
589615896
589815898
590015900
590315903
590415904
5905211810
591015910
591515915
591715917
591815918
592715927
592915929
593315933
5934211868
594215942
594815948
595715957
596515965
596815968
597815978
5984211968
598515985
598815988
599015990
599215992
599315993
6000212000
600516005
601516015
602716027
602916029
603016030
603116031
603916039
604116041
605016050
605516055
6056212112
6061212122
6063212126
606416064
606516065
606616066
606916069
607116071
607216072
607316073
6074212148
6079212158
608716087
608816088
6091212182
6092212184
609416094
6097212194
609916099
610116101
610216102
610316103
6104424416
6106212212
610816108
6110212220
611116111
6112212224
6113212226
611416114
611516115
6116212232
6117318351
6118212236
6119530595
6121212242
612216122
6123636738
6124212248
6125212250
6126212252
6127530635
6128424512
612916129
6130318390
6131318393
6133530665
613416134
613616136
6138424552
6139318417
614016140
6141212282
614216142
614316143
614416144
6145212290
614716147
614816148
6150212300
615116151
615316153
6154212308
615516155
615616156
6157318471
6158212316
6159212318
616016160
616216162
6163212326
6164212328
6165424660
616616166
6167318501
616916169
6170318510
617116171
617216172
6173318519
6174318522
617516175
6176318528
617716177
6178424712
618016180
618316183
618416184
6185637110
618616186
6187318561
6188212376
618916189
6190318570
6191212382
619216192
619416194
6195212390
619616196
6197530985
6198318594
6199318597
6200212400
6201212402
6202212404
6203637218
6204424816
620516205
6206424824
6207318621
6208743456
620916209
621016210
6211424844
6212531060
621316213
6214212428
6215212430
621616216
6217318651
6218318654
6219318657
6220424880
6221424884
6222531110
6223637338
6224212448
6225212450
6227318681
6228212456
6229743603
623016230
623116231
623216232
6233424932
6234212468
6235318705
6236212472
623716237
6238212476
6239318717
6240212480
6241318723
624216242
6243318729
6244212488
6245424980
624616246
6247424988
624816248
625016250
6252212504
6253212506
625416254
6255212510
6257318771
6258212516
625916259
626016260
626216262
6264318792
6266318798
626716267
6268212536
626916269
627016270
6272212544
627316273
6276212552
627816278
628016280
6287212574
6289318867
629016290
6291318873
629216292
629316293
6294212588
6295425180
629616296
6297212594
6298212596
629916299
6300212600
630116301
630216302
630316303
630416304
6305318915
6306212612
6307212614
6309212618
6310212620
6312212624
631316313
631716317
631816318
6320318960
632216322
6323531615
632416324
6327212654
632816328
6330318990
633116331
6332212664
633316333
6334212668
633516335
6336319008
6337425348
6339212678
634016340
6342319026
6343425372
6344319032
6345425380
634616346
6347425388
6348212696
6349212698
635016350
6352425408
6353212706
635416354
6355212710
6356425424
6358212716
6359425436
6360212720
636116361
636316363
6367425468
6368319104
6369212738
6371212742
637216372
637316373
6374212748
637616376
637916379
6380212760
638116381
638416384
638516385
6391212782
639316393
640016400
640216402
640816408
6410212820
641116411
641216412
641316413
641916419
642016420
642316423
642416424
642616426
642716427
642816428
642916429
6431212862
643216432
643316433
643516435
643616436
643816438
643916439
644216442
644316443
6444319332
644816448
645016450
645116451
645216452
645316453
645716457
6458425832
646016460
646116461
6462319386
6467212934
6468212936
6469212938
647016470
6472425888
647416474
647616476
6477212954
647816478
6479212958
6480532400
6481425924
6482532410
6484212968
6485319455
6486212972
648716487
648816488
6489212978
6490319470
649116491
6492212984
6494212988
6495212990
649616496
649716497
6498212996
6500213000
650116501
650216502
6503213006
6504213008
6505426020
6506213012
6507213014
6508319524
650916509
6510426040
6511213022
6512319536
651316513
651416514
6515319545
6516213032
6518213036
652016520
6521319563
6523213046
6525213050
6526532630
6527426108
652816528
6529213058
6530319590
6531319593
6532319596
6533319599
6534639204
6535532675
6536319608
6537319611
6538639228
6539532695
6540319620
6541426164
6542426168
6543852344
6544426176
6545319635
6546426184
6547319641
6548213096
6549639294
6551319653
655216552
6553213106
655416554
6555319665
655616556
6557213114
655816558
6559319677
656016560
6561426244
6562213124
6564319692
6565319695
656616566
656716567
6568319704
656916569
657016570
657116571
6572213144
657416574
657616576
657716577
657916579
658116581
658216582
658316583
6585426340
6586213172
658816588
6589213178
659216592
6595213190
660216602
660316603
660516605
6610213220
6612319836
6617213234
661816618
661916619
662016620
6623213246
662416624
6628213256
6629213258
663016630
663216632
663316633
663416634
663716637
664116641
664316643
664416644
6647213294
6648319944
664916649
665016650
665416654
665516655
665916659
666016660
666116661
666316663
666416664
666716667
667516675
667816678
668916689
669416694
669816698
670216702
6712213424
672416724
672616726
6729213458
673416734
6735213470
673716737
673816738
674316743
674716747
6753213506
675516755
675616756
675716757
675916759
6761213522
676416764
676516765
676916769
677016770
6771213542
677316773
677516775
677616776
677816778
678216782
678516785
680616806
680816808
681116811
681516815
681716817
682316823
682716827
683116831
683216832
684116841
684416844
684816848
686616866
686916869
688516885
688616886
690116901
691616916
692516925
692816928
693916939
695116951
695516955
6964213928
696616966
696816968
697216972
698116981
698616986
698716987
699716997
739117391
Total10026348258
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
551715517
553015530
553915539
557615576
558115581
561415614
561615616
561915619
562715627
565515655
567515675
568215682
569615696
571615716
572315723
573615736
574715747
576515765
580415804
581315813
582215822
585215852
585315853
587115871
587515875
588115881
588215882
588815888
589215892
589415894
589615896
589915899
590015900
5901211802
590615906
591115911
591315913
591415914
592315923
592515925
592915929
5930211860
593815938
594415944
595315953
596115961
596415964
597415974
5980211960
598115981
598415984
598615986
598815988
598915989
5996211992
600116001
601116011
602316023
602516025
602616026
602716027
603516035
603716037
604616046
605116051
6052212104
6057212114
6059212118
606016060
606116061
606216062
606516065
606716067
606816068
606916069
6070212140
6075212150
608316083
608416084
6087212174
6088212176
609016090
6093212186
609516095
609716097
609816098
609916099
6100424400
6102212204
610416104
6106212212
610716107
6108212216
6109212218
611016110
611116111
6112212224
6113318339
6114212228
6115530575
6117212234
611816118
6119636714
6120212240
6121212242
6122212244
6123530615
6124424496
612516125
6126318378
6127318381
6129530645
613016130
613216132
6134424536
6135318405
613616136
6137212274
613816138
613916139
614016140
6141212282
614316143
614416144
6146212292
614716147
614916149
6150212300
615116151
615216152
6153318459
6154212308
6155212310
615616156
615816158
6159212318
6160212320
6161424644
616216162
6163318489
616516165
6166318498
616716167
616816168
6169318507
6170318510
617116171
6172318516
617316173
6174424696
617616176
617916179
618016180
6181637086
618216182
6183318549
6184212368
618516185
6186318558
6187212374
618816188
619016190
6191212382
619216192
6193530965
6194318582
6195318585
6196212392
6197212394
6198212396
6199637194
6200424800
620116201
6202424808
6203318609
6204743428
620516205
620616206
6207424828
6208531040
620916209
6210212420
6211212422
621216212
6213318639
6214318642
6215318645
6216424864
6217424868
6218531090
6219637314
6220212440
6221212442
6223318669
6224212448
6225743575
622616226
622716227
622816228
6229424916
6230212460
6231318693
6232212464
623316233
6234212468
6235318705
6236212472
6237318711
623816238
6239318717
6240212480
6241424964
624216242
6243424972
624416244
624616246
6248212496
6249212498
625016250
6251212502
6253318759
6254212508
625516255
625616256
625816258
6260318780
6262318786
626316263
6264212528
626516265
626616266
6268212536
626916269
6272212544
627416274
627616276
6283212566
6285318855
628616286
6287318861
628816288
628916289
6290212580
6291425164
629216292
6293212586
6294212588
629516295
6296212592
629716297
629816298
629916299
630016300
6301318903
6302212604
6303212606
6305212610
6306212612
6308212616
630916309
631316313
631416314
6316318948
631816318
6319531595
632016320
6323212646
632416324
6326318978
632716327
6328212656
632916329
6330212660
633116331
6332318996
6333425332
6335212670
633616336
6338319014
6339425356
6340319020
6341425364
634216342
6343425372
6344212688
6345212690
634616346
6348425392
6349212698
635016350
6351212702
6352425408
6354212708
6355425420
6356212712
635716357
635916359
6363425452
6364319092
6365212730
6367212734
636816368
636916369
6370212740
637216372
637516375
6376212752
637716377
638016380
638116381
6387212774
638916389
639616396
639816398
640416404
6406212812
640716407
640816408
640916409
641516415
641616416
641916419
642016420
642216422
642316423
642416424
642516425
6427212854
642816428
642916429
643116431
643216432
643416434
643516435
643816438
643916439
6440319320
644416444
644616446
644716447
644816448
644916449
645316453
6454425816
645616456
645716457
6458319374
6463212926
6464212928
6465212930
646616466
6468425872
647016470
647216472
6473212946
647416474
6475212950
6476532380
6477425908
6478532390
6480212960
6481319443
6482212964
648316483
648416484
6485212970
6486319458
648716487
6488212976
6490212980
6491212982
649216492
649316493
6494212988
6496212992
649716497
649816498
6499212998
6500213000
6501426004
6502213004
6503213006
6504319512
650516505
6506426024
6507213014
6508319524
650916509
651016510
6511319533
6512213024
6514213028
651616516
6517319551
6519213038
6521213042
6522532610
6523426092
652416524
6525213050
6526319578
6527319581
6528319584
6529319587
6530639180
6531532655
6532319596
6533319599
6534639204
6535532675
6536319608
6537426148
6538426152
6539852312
6540426160
6541319623
6542426168
6543319629
6544213088
6545639270
6547319641
654816548
6549213098
655016550
6551319653
655216552
6553213106
655416554
6555319665
655616556
6557426228
6558213116
6560319680
6561319683
656216562
656316563
6564319692
656516565
656616566
656716567
6568213136
657016570
657216572
657316573
657516575
657716577
657816578
657916579
6581426324
6582213164
658416584
6585213170
658816588
6591213182
659816598
659916599
660116601
6606213212
6608319824
6613213226
661416614
661516615
661616616
6619213238
662016620
6624213248
6625213250
662616626
662816628
662916629
663016630
663316633
663716637
663916639
664016640
6643213286
6644319932
664516645
664616646
665016650
665116651
665516655
665616656
665716657
665916659
666016660
666316663
667116671
667416674
668516685
669016690
669416694
669816698
6708213416
672016720
672216722
6725213450
673016730
6731213462
673316733
673416734
673916739
674316743
6749213498
675116751
675216752
675316753
675516755
6757213514
676016760
676116761
676516765
676616766
6767213534
676916769
677116771
677216772
677416774
677816778
678116781
680216802
680416804
680716807
681116811
681316813
681916819
682316823
682716827
682816828
683716837
684016840
684416844
686216862
686516865
688116881
688216882
689716897
691216912
692116921
692416924
693516935
694716947
695116951
6960213920
696216962
696416964
696816968
697716977
698216982
698316983
699316993
738717387
Total10026344249
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333434266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820ef69b190d1e
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3065663639623139
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_7.json b/autobahn/client/tungstenite_case_12_3_7.json new file mode 100644 index 0000000..4662f1d --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_7.json @@ -0,0 +1,1249 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 344, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2608, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=344&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: x0kq0kYxLao4hYOh4yPWbg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /wbtNUktln1TN3CIFkrm9eC3dEI=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5521": 1, + "5534": 1, + "5543": 1, + "5580": 1, + "5585": 1, + "5618": 1, + "5620": 1, + "5623": 1, + "5631": 1, + "5659": 1, + "5679": 1, + "5686": 1, + "5700": 1, + "5720": 1, + "5727": 1, + "5740": 1, + "5751": 1, + "5769": 1, + "5808": 1, + "5817": 1, + "5826": 1, + "5856": 1, + "5857": 1, + "5875": 1, + "5879": 1, + "5885": 1, + "5886": 1, + "5892": 1, + "5896": 1, + "5898": 1, + "5900": 1, + "5903": 1, + "5904": 1, + "5905": 2, + "5910": 1, + "5915": 1, + "5917": 1, + "5918": 1, + "5927": 1, + "5929": 1, + "5933": 1, + "5934": 2, + "5942": 1, + "5948": 1, + "5957": 1, + "5965": 1, + "5968": 1, + "5978": 1, + "5984": 2, + "5985": 1, + "5988": 1, + "5990": 1, + "5992": 1, + "5993": 1, + "6000": 2, + "6005": 1, + "6015": 1, + "6027": 1, + "6029": 1, + "6030": 1, + "6031": 1, + "6039": 1, + "6041": 1, + "6050": 1, + "6055": 1, + "6056": 2, + "6061": 2, + "6063": 2, + "6064": 1, + "6065": 1, + "6066": 1, + "6069": 1, + "6071": 1, + "6072": 1, + "6073": 1, + "6074": 2, + "6079": 2, + "6087": 1, + "6088": 1, + "6091": 2, + "6092": 2, + "6094": 1, + "6097": 2, + "6099": 1, + "6101": 1, + "6102": 1, + "6103": 1, + "6104": 4, + "6106": 2, + "6108": 1, + "6110": 2, + "6111": 1, + "6112": 2, + "6113": 2, + "6114": 1, + "6115": 1, + "6116": 2, + "6117": 3, + "6118": 2, + "6119": 5, + "6121": 2, + "6122": 1, + "6123": 6, + "6124": 2, + "6125": 2, + "6126": 2, + "6127": 5, + "6128": 4, + "6129": 1, + "6130": 3, + "6131": 3, + "6133": 5, + "6134": 1, + "6136": 1, + "6138": 4, + "6139": 3, + "6140": 1, + "6141": 2, + "6142": 1, + "6143": 1, + "6144": 1, + "6145": 2, + "6147": 1, + "6148": 1, + "6150": 2, + "6151": 1, + "6153": 1, + "6154": 2, + "6155": 1, + "6156": 1, + "6157": 3, + "6158": 2, + "6159": 2, + "6160": 1, + "6162": 1, + "6163": 2, + "6164": 2, + "6165": 4, + "6166": 1, + "6167": 3, + "6169": 1, + "6170": 3, + "6171": 1, + "6172": 1, + "6173": 3, + "6174": 3, + "6175": 1, + "6176": 3, + "6177": 1, + "6178": 4, + "6180": 1, + "6183": 1, + "6184": 1, + "6185": 6, + "6186": 1, + "6187": 3, + "6188": 2, + "6189": 1, + "6190": 3, + "6191": 2, + "6192": 1, + "6194": 1, + "6195": 2, + "6196": 1, + "6197": 5, + "6198": 3, + "6199": 3, + "6200": 2, + "6201": 2, + "6202": 2, + "6203": 6, + "6204": 4, + "6205": 1, + "6206": 4, + "6207": 3, + "6208": 7, + "6209": 1, + "6210": 1, + "6211": 4, + "6212": 5, + "6213": 1, + "6214": 2, + "6215": 2, + "6216": 1, + "6217": 3, + "6218": 3, + "6219": 3, + "6220": 4, + "6221": 4, + "6222": 5, + "6223": 6, + "6224": 2, + "6225": 2, + "6227": 3, + "6228": 2, + "6229": 7, + "6230": 1, + "6231": 1, + "6232": 1, + "6233": 4, + "6234": 2, + "6235": 3, + "6236": 2, + "6237": 1, + "6238": 2, + "6239": 3, + "6240": 2, + "6241": 3, + "6242": 1, + "6243": 3, + "6244": 2, + "6245": 4, + "6246": 1, + "6247": 4, + "6248": 1, + "6250": 1, + "6252": 2, + "6253": 2, + "6254": 1, + "6255": 2, + "6257": 3, + "6258": 2, + "6259": 1, + "6260": 1, + "6262": 1, + "6264": 3, + "6266": 3, + "6267": 1, + "6268": 2, + "6269": 1, + "6270": 1, + "6272": 2, + "6273": 1, + "6276": 2, + "6278": 1, + "6280": 1, + "6287": 2, + "6289": 3, + "6290": 1, + "6291": 3, + "6292": 1, + "6293": 1, + "6294": 2, + "6295": 4, + "6296": 1, + "6297": 2, + "6298": 2, + "6299": 1, + "6300": 2, + "6301": 1, + "6302": 1, + "6303": 1, + "6304": 1, + "6305": 3, + "6306": 2, + "6307": 2, + "6309": 2, + "6310": 2, + "6312": 2, + "6313": 1, + "6317": 1, + "6318": 1, + "6320": 3, + "6322": 1, + "6323": 5, + "6324": 1, + "6327": 2, + "6328": 1, + "6330": 3, + "6331": 1, + "6332": 2, + "6333": 1, + "6334": 2, + "6335": 1, + "6336": 3, + "6337": 4, + "6339": 2, + "6340": 1, + "6342": 3, + "6343": 4, + "6344": 3, + "6345": 4, + "6346": 1, + "6347": 4, + "6348": 2, + "6349": 2, + "6350": 1, + "6352": 4, + "6353": 2, + "6354": 1, + "6355": 2, + "6356": 4, + "6358": 2, + "6359": 4, + "6360": 2, + "6361": 1, + "6363": 1, + "6367": 4, + "6368": 3, + "6369": 2, + "6371": 2, + "6372": 1, + "6373": 1, + "6374": 2, + "6376": 1, + "6379": 1, + "6380": 2, + "6381": 1, + "6384": 1, + "6385": 1, + "6391": 2, + "6393": 1, + "6400": 1, + "6402": 1, + "6408": 1, + "6410": 2, + "6411": 1, + "6412": 1, + "6413": 1, + "6419": 1, + "6420": 1, + "6423": 1, + "6424": 1, + "6426": 1, + "6427": 1, + "6428": 1, + "6429": 1, + "6431": 2, + "6432": 1, + "6433": 1, + "6435": 1, + "6436": 1, + "6438": 1, + "6439": 1, + "6442": 1, + "6443": 1, + "6444": 3, + "6448": 1, + "6450": 1, + "6451": 1, + "6452": 1, + "6453": 1, + "6457": 1, + "6458": 4, + "6460": 1, + "6461": 1, + "6462": 3, + "6467": 2, + "6468": 2, + "6469": 2, + "6470": 1, + "6472": 4, + "6474": 1, + "6476": 1, + "6477": 2, + "6478": 1, + "6479": 2, + "6480": 5, + "6481": 4, + "6482": 5, + "6484": 2, + "6485": 3, + "6486": 2, + "6487": 1, + "6488": 1, + "6489": 2, + "6490": 3, + "6491": 1, + "6492": 2, + "6494": 2, + "6495": 2, + "6496": 1, + "6497": 1, + "6498": 2, + "6500": 2, + "6501": 1, + "6502": 1, + "6503": 2, + "6504": 2, + "6505": 4, + "6506": 2, + "6507": 2, + "6508": 3, + "6509": 1, + "6510": 4, + "6511": 2, + "6512": 3, + "6513": 1, + "6514": 1, + "6515": 3, + "6516": 2, + "6518": 2, + "6520": 1, + "6521": 3, + "6523": 2, + "6525": 2, + "6526": 5, + "6527": 4, + "6528": 1, + "6529": 2, + "6530": 3, + "6531": 3, + "6532": 3, + "6533": 3, + "6534": 6, + "6535": 5, + "6536": 3, + "6537": 3, + "6538": 6, + "6539": 5, + "6540": 3, + "6541": 4, + "6542": 4, + "6543": 8, + "6544": 4, + "6545": 3, + "6546": 4, + "6547": 3, + "6548": 2, + "6549": 6, + "6551": 3, + "6552": 1, + "6553": 2, + "6554": 1, + "6555": 3, + "6556": 1, + "6557": 2, + "6558": 1, + "6559": 3, + "6560": 1, + "6561": 4, + "6562": 2, + "6564": 3, + "6565": 3, + "6566": 1, + "6567": 1, + "6568": 3, + "6569": 1, + "6570": 1, + "6571": 1, + "6572": 2, + "6574": 1, + "6576": 1, + "6577": 1, + "6579": 1, + "6581": 1, + "6582": 1, + "6583": 1, + "6585": 4, + "6586": 2, + "6588": 1, + "6589": 2, + "6592": 1, + "6595": 2, + "6602": 1, + "6603": 1, + "6605": 1, + "6610": 2, + "6612": 3, + "6617": 2, + "6618": 1, + "6619": 1, + "6620": 1, + "6623": 2, + "6624": 1, + "6628": 2, + "6629": 2, + "6630": 1, + "6632": 1, + "6633": 1, + "6634": 1, + "6637": 1, + "6641": 1, + "6643": 1, + "6644": 1, + "6647": 2, + "6648": 3, + "6649": 1, + "6650": 1, + "6654": 1, + "6655": 1, + "6659": 1, + "6660": 1, + "6661": 1, + "6663": 1, + "6664": 1, + "6667": 1, + "6675": 1, + "6678": 1, + "6689": 1, + "6694": 1, + "6698": 1, + "6702": 1, + "6712": 2, + "6724": 1, + "6726": 1, + "6729": 2, + "6734": 1, + "6735": 2, + "6737": 1, + "6738": 1, + "6743": 1, + "6747": 1, + "6753": 2, + "6755": 1, + "6756": 1, + "6757": 1, + "6759": 1, + "6761": 2, + "6764": 1, + "6765": 1, + "6769": 1, + "6770": 1, + "6771": 2, + "6773": 1, + "6775": 1, + "6776": 1, + "6778": 1, + "6782": 1, + "6785": 1, + "6806": 1, + "6808": 1, + "6811": 1, + "6815": 1, + "6817": 1, + "6823": 1, + "6827": 1, + "6831": 1, + "6832": 1, + "6841": 1, + "6844": 1, + "6848": 1, + "6866": 1, + "6869": 1, + "6885": 1, + "6886": 1, + "6901": 1, + "6916": 1, + "6925": 1, + "6928": 1, + "6939": 1, + "6951": 1, + "6955": 1, + "6964": 2, + "6966": 1, + "6968": 1, + "6972": 1, + "6981": 1, + "6986": 1, + "6987": 1, + "6997": 1, + "7391": 1 + }, + "started": "2025-09-11T20:07:39.328Z", + "trafficStats": { + "incomingCompressionRatio": 0.3869624633789063, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 6339993, + "incomingOctetsWireLevel": 6347993, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0012618310461856978, + "outgoingCompressionRatio": 0.3869624633789063, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 6339993, + "outgoingOctetsWireLevel": 6343993, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0006309155230928489, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "5517": 1, + "5530": 1, + "5539": 1, + "5576": 1, + "5581": 1, + "5614": 1, + "5616": 1, + "5619": 1, + "5627": 1, + "5655": 1, + "5675": 1, + "5682": 1, + "5696": 1, + "5716": 1, + "5723": 1, + "5736": 1, + "5747": 1, + "5765": 1, + "5804": 1, + "5813": 1, + "5822": 1, + "5852": 1, + "5853": 1, + "5871": 1, + "5875": 1, + "5881": 1, + "5882": 1, + "5888": 1, + "5892": 1, + "5894": 1, + "5896": 1, + "5899": 1, + "5900": 1, + "5901": 2, + "5906": 1, + "5911": 1, + "5913": 1, + "5914": 1, + "5923": 1, + "5925": 1, + "5929": 1, + "5930": 2, + "5938": 1, + "5944": 1, + "5953": 1, + "5961": 1, + "5964": 1, + "5974": 1, + "5980": 2, + "5981": 1, + "5984": 1, + "5986": 1, + "5988": 1, + "5989": 1, + "5996": 2, + "6001": 1, + "6011": 1, + "6023": 1, + "6025": 1, + "6026": 1, + "6027": 1, + "6035": 1, + "6037": 1, + "6046": 1, + "6051": 1, + "6052": 2, + "6057": 2, + "6059": 2, + "6060": 1, + "6061": 1, + "6062": 1, + "6065": 1, + "6067": 1, + "6068": 1, + "6069": 1, + "6070": 2, + "6075": 2, + "6083": 1, + "6084": 1, + "6087": 2, + "6088": 2, + "6090": 1, + "6093": 2, + "6095": 1, + "6097": 1, + "6098": 1, + "6099": 1, + "6100": 4, + "6102": 2, + "6104": 1, + "6106": 2, + "6107": 1, + "6108": 2, + "6109": 2, + "6110": 1, + "6111": 1, + "6112": 2, + "6113": 3, + "6114": 2, + "6115": 5, + "6117": 2, + "6118": 1, + "6119": 6, + "6120": 2, + "6121": 2, + "6122": 2, + "6123": 5, + "6124": 4, + "6125": 1, + "6126": 3, + "6127": 3, + "6129": 5, + "6130": 1, + "6132": 1, + "6134": 4, + "6135": 3, + "6136": 1, + "6137": 2, + "6138": 1, + "6139": 1, + "6140": 1, + "6141": 2, + "6143": 1, + "6144": 1, + "6146": 2, + "6147": 1, + "6149": 1, + "6150": 2, + "6151": 1, + "6152": 1, + "6153": 3, + "6154": 2, + "6155": 2, + "6156": 1, + "6158": 1, + "6159": 2, + "6160": 2, + "6161": 4, + "6162": 1, + "6163": 3, + "6165": 1, + "6166": 3, + "6167": 1, + "6168": 1, + "6169": 3, + "6170": 3, + "6171": 1, + "6172": 3, + "6173": 1, + "6174": 4, + "6176": 1, + "6179": 1, + "6180": 1, + "6181": 6, + "6182": 1, + "6183": 3, + "6184": 2, + "6185": 1, + "6186": 3, + "6187": 2, + "6188": 1, + "6190": 1, + "6191": 2, + "6192": 1, + "6193": 5, + "6194": 3, + "6195": 3, + "6196": 2, + "6197": 2, + "6198": 2, + "6199": 6, + "6200": 4, + "6201": 1, + "6202": 4, + "6203": 3, + "6204": 7, + "6205": 1, + "6206": 1, + "6207": 4, + "6208": 5, + "6209": 1, + "6210": 2, + "6211": 2, + "6212": 1, + "6213": 3, + "6214": 3, + "6215": 3, + "6216": 4, + "6217": 4, + "6218": 5, + "6219": 6, + "6220": 2, + "6221": 2, + "6223": 3, + "6224": 2, + "6225": 7, + "6226": 1, + "6227": 1, + "6228": 1, + "6229": 4, + "6230": 2, + "6231": 3, + "6232": 2, + "6233": 1, + "6234": 2, + "6235": 3, + "6236": 2, + "6237": 3, + "6238": 1, + "6239": 3, + "6240": 2, + "6241": 4, + "6242": 1, + "6243": 4, + "6244": 1, + "6246": 1, + "6248": 2, + "6249": 2, + "6250": 1, + "6251": 2, + "6253": 3, + "6254": 2, + "6255": 1, + "6256": 1, + "6258": 1, + "6260": 3, + "6262": 3, + "6263": 1, + "6264": 2, + "6265": 1, + "6266": 1, + "6268": 2, + "6269": 1, + "6272": 2, + "6274": 1, + "6276": 1, + "6283": 2, + "6285": 3, + "6286": 1, + "6287": 3, + "6288": 1, + "6289": 1, + "6290": 2, + "6291": 4, + "6292": 1, + "6293": 2, + "6294": 2, + "6295": 1, + "6296": 2, + "6297": 1, + "6298": 1, + "6299": 1, + "6300": 1, + "6301": 3, + "6302": 2, + "6303": 2, + "6305": 2, + "6306": 2, + "6308": 2, + "6309": 1, + "6313": 1, + "6314": 1, + "6316": 3, + "6318": 1, + "6319": 5, + "6320": 1, + "6323": 2, + "6324": 1, + "6326": 3, + "6327": 1, + "6328": 2, + "6329": 1, + "6330": 2, + "6331": 1, + "6332": 3, + "6333": 4, + "6335": 2, + "6336": 1, + "6338": 3, + "6339": 4, + "6340": 3, + "6341": 4, + "6342": 1, + "6343": 4, + "6344": 2, + "6345": 2, + "6346": 1, + "6348": 4, + "6349": 2, + "6350": 1, + "6351": 2, + "6352": 4, + "6354": 2, + "6355": 4, + "6356": 2, + "6357": 1, + "6359": 1, + "6363": 4, + "6364": 3, + "6365": 2, + "6367": 2, + "6368": 1, + "6369": 1, + "6370": 2, + "6372": 1, + "6375": 1, + "6376": 2, + "6377": 1, + "6380": 1, + "6381": 1, + "6387": 2, + "6389": 1, + "6396": 1, + "6398": 1, + "6404": 1, + "6406": 2, + "6407": 1, + "6408": 1, + "6409": 1, + "6415": 1, + "6416": 1, + "6419": 1, + "6420": 1, + "6422": 1, + "6423": 1, + "6424": 1, + "6425": 1, + "6427": 2, + "6428": 1, + "6429": 1, + "6431": 1, + "6432": 1, + "6434": 1, + "6435": 1, + "6438": 1, + "6439": 1, + "6440": 3, + "6444": 1, + "6446": 1, + "6447": 1, + "6448": 1, + "6449": 1, + "6453": 1, + "6454": 4, + "6456": 1, + "6457": 1, + "6458": 3, + "6463": 2, + "6464": 2, + "6465": 2, + "6466": 1, + "6468": 4, + "6470": 1, + "6472": 1, + "6473": 2, + "6474": 1, + "6475": 2, + "6476": 5, + "6477": 4, + "6478": 5, + "6480": 2, + "6481": 3, + "6482": 2, + "6483": 1, + "6484": 1, + "6485": 2, + "6486": 3, + "6487": 1, + "6488": 2, + "6490": 2, + "6491": 2, + "6492": 1, + "6493": 1, + "6494": 2, + "6496": 2, + "6497": 1, + "6498": 1, + "6499": 2, + "6500": 2, + "6501": 4, + "6502": 2, + "6503": 2, + "6504": 3, + "6505": 1, + "6506": 4, + "6507": 2, + "6508": 3, + "6509": 1, + "6510": 1, + "6511": 3, + "6512": 2, + "6514": 2, + "6516": 1, + "6517": 3, + "6519": 2, + "6521": 2, + "6522": 5, + "6523": 4, + "6524": 1, + "6525": 2, + "6526": 3, + "6527": 3, + "6528": 3, + "6529": 3, + "6530": 6, + "6531": 5, + "6532": 3, + "6533": 3, + "6534": 6, + "6535": 5, + "6536": 3, + "6537": 4, + "6538": 4, + "6539": 8, + "6540": 4, + "6541": 3, + "6542": 4, + "6543": 3, + "6544": 2, + "6545": 6, + "6547": 3, + "6548": 1, + "6549": 2, + "6550": 1, + "6551": 3, + "6552": 1, + "6553": 2, + "6554": 1, + "6555": 3, + "6556": 1, + "6557": 4, + "6558": 2, + "6560": 3, + "6561": 3, + "6562": 1, + "6563": 1, + "6564": 3, + "6565": 1, + "6566": 1, + "6567": 1, + "6568": 2, + "6570": 1, + "6572": 1, + "6573": 1, + "6575": 1, + "6577": 1, + "6578": 1, + "6579": 1, + "6581": 4, + "6582": 2, + "6584": 1, + "6585": 2, + "6588": 1, + "6591": 2, + "6598": 1, + "6599": 1, + "6601": 1, + "6606": 2, + "6608": 3, + "6613": 2, + "6614": 1, + "6615": 1, + "6616": 1, + "6619": 2, + "6620": 1, + "6624": 2, + "6625": 2, + "6626": 1, + "6628": 1, + "6629": 1, + "6630": 1, + "6633": 1, + "6637": 1, + "6639": 1, + "6640": 1, + "6643": 2, + "6644": 3, + "6645": 1, + "6646": 1, + "6650": 1, + "6651": 1, + "6655": 1, + "6656": 1, + "6657": 1, + "6659": 1, + "6660": 1, + "6663": 1, + "6671": 1, + "6674": 1, + "6685": 1, + "6690": 1, + "6694": 1, + "6698": 1, + "6708": 2, + "6720": 1, + "6722": 1, + "6725": 2, + "6730": 1, + "6731": 2, + "6733": 1, + "6734": 1, + "6739": 1, + "6743": 1, + "6749": 2, + "6751": 1, + "6752": 1, + "6753": 1, + "6755": 1, + "6757": 2, + "6760": 1, + "6761": 1, + "6765": 1, + "6766": 1, + "6767": 2, + "6769": 1, + "6771": 1, + "6772": 1, + "6774": 1, + "6778": 1, + "6781": 1, + "6802": 1, + "6804": 1, + "6807": 1, + "6811": 1, + "6813": 1, + "6819": 1, + "6823": 1, + "6827": 1, + "6828": 1, + "6837": 1, + "6840": 1, + "6844": 1, + "6862": 1, + "6865": 1, + "6881": 1, + "6882": 1, + "6897": 1, + "6912": 1, + "6921": 1, + "6924": 1, + "6935": 1, + "6947": 1, + "6951": 1, + "6960": 2, + "6962": 1, + "6964": 1, + "6968": 1, + "6977": 1, + "6982": 1, + "6983": 1, + "6993": 1, + "7387": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333434266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820ef69b190d1e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0ef69b19" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_8.html b/autobahn/client/tungstenite_case_12_3_8.html new file mode 100644 index 0000000..0a84f44 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_8.html @@ -0,0 +1,1520 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.8 : Pass - 4755 ms @ 2025-09-11T20:07:41.939Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=345&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /cZtcsmvPdf1XeUX/wSVyw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zY6GhNCSXoVFYPEbTDycDRcJTCw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
12099112099
12105112105
12119112119
12121112121
12129224258
12131112131
12133112133
12139112139
12146112146
12151112151
12154112154
12159112159
12160112160
12166112166
12170224340
12172112172
12175112175
12178112178
12184336552
12185224370
12187112187
12189112189
12190112190
12195112195
12197112197
12199112199
12201112201
12202224404
12205112205
12207224414
12208112208
12216112216
12218112218
12230112230
12231112231
12232112232
12234112234
12236112236
12239224478
12247112247
12248112248
12252112252
12253112253
12257112257
12258112258
12261224522
12264224528
12269336807
12278224556
12279112279
12281112281
12282112282
12283336849
12284336852
12285112285
12287112287
12289112289
12290112290
12291224582
12292112292
12294112294
12295224590
12296112296
12300112300
12302112302
12303112303
12304112304
12306112306
12307112307
12308112308
12311112311
12313224626
12316224632
12319112319
12320112320
12321112321
12323224646
12324449296
12327112327
12328224656
12329224658
12330224660
12331224662
12332112332
12334112334
12335112335
12336112336
12338112338
12339224678
12340112340
12342449368
12343112343
12344224688
12345449380
12346112346
12348224696
12349224698
12350112350
12351337053
12353337059
12354224708
12356112356
12357112357
12358224716
12360224720
12361224722
12362561810
12363337089
12364224728
12365224730
12366224732
12367224734
12368224736
12370224740
12371224742
12372337116
12373224746
12374449496
12375112375
12376112376
12377674262
12378224756
12379112379
12380449520
12381112381
12382337146
12383224766
12384224768
12385337155
12386224772
12387112387
12388224776
12389224778
12390449560
12391449564
12392337176
12393112393
12394899152
12395449580
12396449584
12397224794
12398337194
12399337197
12400449600
12401449604
12402562010
12403449612
12404337212
12405786835
12406449624
12407674442
12408449632
12409562045
12410562050
12411337233
12412674472
12413112413
12414224828
12415449660
12416562080
12417449668
12418449672
12419224838
12421449684
12422112422
12423337269
12424562120
12425562125
12426337278
12427449708
12428562140
12429224858
12430674580
12431449724
12432337296
1243411136774
12435562175
12436224872
12437674622
12438337314
12439112439
12440337320
12441337323
12442224884
12443112443
12444112444
12445337335
12446449784
12447224894
12448337344
12449337347
12450337350
12451224902
12452224904
12453224906
12454224908
12455112455
12456224912
12457449828
12458224916
12459112459
12460224920
12461224922
12462224924
12465112465
12466112466
12467224934
12468224936
12469224938
12470224940
12471112471
12472112472
12474112474
12476112476
12477112477
12478112478
12482337446
12483449932
12484224968
12486112486
12488224976
12491337473
12492112492
12493112493
12499112499
12500112500
12502112502
12503112503
12504112504
12507112507
12508112508
12510112510
12516112516
12517112517
12518112518
12519225038
12523112523
12524337572
12525112525
12526112526
12527112527
12528225056
12532337596
12533112533
12535337605
12536112536
12537225074
12539225078
12541337623
12542112542
12543337629
12546112546
12547112547
12548337644
12551112551
12552112552
12553225106
12555112555
12556112556
12557337671
12559112559
12560112560
12561112561
12562112562
12566225132
12569112569
12570337710
12572112572
12575112575
12576225152
12578112578
12579112579
12583112583
12587112587
12588112588
12591112591
12598112598
12599225198
12600112600
12601112601
12617112617
12619225238
12620112620
12623112623
12625112625
12628112628
12629112629
12630112630
12634112634
12635112635
12637112637
12638225276
12639225278
12641112641
12642337926
12646225292
12647112647
12648112648
12651112651
12652225304
12654337962
12656112656
12657225314
12658225316
12659225318
12661112661
12662112662
12663112663
12664112664
12665112665
12666112666
12667112667
12668112668
12670112670
12671112671
12674225348
12676112676
12680338040
12682112682
12683112683
12684112684
12685338055
12687112687
12689225378
12690225380
12692225384
12693112693
12695112695
12699112699
12701112701
12703112703
12704112704
12706112706
12707112707
12710112710
12712112712
12713112713
12715112715
12716112716
12717112717
12719338157
12720225440
12731112731
12734112734
12737112737
12741225482
12742112742
12745112745
12746112746
12748112748
12750225500
12751112751
12752225504
12753225506
12754112754
12757112757
12759112759
12766112766
12769112769
12771112771
12773112773
12774112774
12775112775
12776225552
12778225556
12779112779
12780112780
12781112781
12800112800
12802112802
12808112808
12810225620
12813225626
12814225628
12816225632
12817112817
12818112818
12820112820
12825112825
12826225652
12827112827
12828112828
12830112830
12831112831
12832225664
12833112833
12836112836
12840112840
12842112842
12843112843
12848112848
12850112850
12852225704
12853112853
12854112854
12857112857
12858112858
12860112860
12863112863
12872112872
12874112874
12879112879
12882112882
12883112883
12885225770
12888112888
12890112890
12893112893
12895112895
12896225792
12902225804
12903112903
12904225808
12906112906
12908225816
12910112910
12916112916
12917112917
12918225836
12919112919
12920112920
12922112922
12923112923
12929225858
12932112932
12933112933
12934225868
12935225870
12936112936
12937112937
12944225888
12947225894
12948225896
12949225898
12951338853
12954112954
12955225910
12958112958
12959112959
12961112961
12963338889
12965225930
12966112966
12969112969
12970112970
12971112971
12972112972
12974112974
12975112975
12976112976
12977112977
12978225956
12979112979
12981112981
12982112982
12987225974
12988225976
12989225978
12990225980
12991112991
12992225984
12993225986
12994225988
12995112995
12997112997
12998112998
12999112999
13000113000
13001113001
13002113002
13003339009
13004339012
13005113005
13006339018
13007113007
13008226016
13009113009
13010113010
13012226024
13013226026
13015113015
13017113017
13018113018
13019226038
13021226042
13025226050
13026113026
13029113029
13031339093
13034113034
13035113035
13040113040
13042113042
13054113054
13056113056
13058113058
13059113059
13064113064
13068113068
13080113080
13083113083
13087113087
13088113088
13096113096
13102113102
13105113105
13109113109
13112113112
13115113115
13122113122
13123113123
13124339372
13125113125
13126113126
13128226256
13129452516
13130113130
13131339393
13132113132
13134113134
13135113135
13137113137
13142226284
13155113155
13156113156
13161113161
13167113167
13181113181
13190226380
13191226382
13192113192
13197113197
13200113200
13217113217
13226113226
13243113243
13245113245
13252226504
13255113255
13263113263
13264113264
13265113265
13266113266
13268113268
13270113270
13271113271
13272113272
13273113273
13277113277
13283113283
13285113285
13287113287
13289113289
13290113290
13298113298
13311113311
13313113313
13314113314
13326113326
13329113329
13330113330
13332113332
13340113340
13345113345
13346113346
13353113353
13354113354
13358113358
13359113359
13361226722
13362113362
13365226730
13366113366
13371113371
13377113377
13381113381
13382113382
13383226766
13392226784
13394113394
13395113395
13397113397
13400113400
13403113403
13413113413
13415113415
13416226832
13422113422
13426113426
13427113427
13429113429
13436226872
13448113448
13455113455
13462113462
13467226934
13473113473
13487113487
13489113489
13517113517
13538113538
13540113540
13552113552
13556113556
13573113573
13603113603
13604113604
13605113605
13606113606
13613113613
14136114136
Total100212648489
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
12095112095
12101112101
12115112115
12117112117
12125224250
12127112127
12129112129
12135112135
12142112142
12147112147
12150112150
12155112155
12156112156
12162112162
12166224332
12168112168
12171112171
12174112174
12180336540
12181224362
12183112183
12185112185
12186112186
12191112191
12193112193
12195112195
12197112197
12198224396
12201112201
12203224406
12204112204
12212112212
12214112214
12226112226
12227112227
12228112228
12230112230
12232112232
12235224470
12243112243
12244112244
12248112248
12249112249
12253112253
12254112254
12257224514
12260224520
12265336795
12274224548
12275112275
12277112277
12278112278
12279336837
12280336840
12281112281
12283112283
12285112285
12286112286
12287224574
12288112288
12290112290
12291224582
12292112292
12296112296
12298112298
12299112299
12300112300
12302112302
12303112303
12304112304
12307112307
12309224618
12312224624
12315112315
12316112316
12317112317
12319224638
12320449280
12323112323
12324224648
12325224650
12326224652
12327224654
12328112328
12330112330
12331112331
12332112332
12334112334
12335224670
12336112336
12338449352
12339112339
12340224680
12341449364
12342112342
12344224688
12345224690
12346112346
12347337041
12349337047
12350224700
12352112352
12353112353
12354224708
12356224712
12357224714
12358561790
12359337077
12360224720
12361224722
12362224724
12363224726
12364224728
12366224732
12367224734
12368337104
12369224738
12370449480
12371112371
12372112372
12373674238
12374224748
12375112375
12376449504
12377112377
12378337134
12379224758
12380224760
12381337143
12382224764
12383112383
12384224768
12385224770
12386449544
12387449548
12388337164
12389112389
12390899120
12391449564
12392449568
12393224786
12394337182
12395337185
12396449584
12397449588
12398561990
12399449596
12400337200
12401786807
12402449608
12403674418
12404449616
12405562025
12406562030
12407337221
12408674448
12409112409
12410224820
12411449644
12412562060
12413449652
12414449656
12415224830
12417449668
12418112418
12419337257
12420562100
12421562105
12422337266
12423449692
12424562120
12425224850
12426674556
12427449708
12428337284
1243011136730
12431562155
12432224864
12433674598
12434337302
12435112435
12436337308
12437337311
12438224876
12439112439
12440112440
12441337323
12442449768
12443224886
12444337332
12445337335
12446337338
12447224894
12448224896
12449224898
12450224900
12451112451
12452224904
12453449812
12454224908
12455112455
12456224912
12457224914
12458224916
12461112461
12462112462
12463224926
12464224928
12465224930
12466224932
12467112467
12468112468
12470112470
12472112472
12473112473
12474112474
12478337434
12479449916
12480224960
12482112482
12484224968
12487337461
12488112488
12489112489
12495112495
12496112496
12498112498
12499112499
12500112500
12503112503
12504112504
12506112506
12512112512
12513112513
12514112514
12515225030
12519112519
12520337560
12521112521
12522112522
12523112523
12524225048
12528337584
12529112529
12531337593
12532112532
12533225066
12535225070
12537337611
12538112538
12539337617
12542112542
12543112543
12544337632
12547112547
12548112548
12549225098
12551112551
12552112552
12553337659
12555112555
12556112556
12557112557
12558112558
12562225124
12565112565
12566337698
12568112568
12571112571
12572225144
12574112574
12575112575
12579112579
12583112583
12584112584
12587112587
12594112594
12595225190
12596112596
12597112597
12613112613
12615225230
12616112616
12619112619
12621112621
12624112624
12625112625
12626112626
12630112630
12631112631
12633112633
12634225268
12635225270
12637112637
12638337914
12642225284
12643112643
12644112644
12647112647
12648225296
12650337950
12652112652
12653225306
12654225308
12655225310
12657112657
12658112658
12659112659
12660112660
12661112661
12662112662
12663112663
12664112664
12666112666
12667112667
12670225340
12672112672
12676338028
12678112678
12679112679
12680112680
12681338043
12683112683
12685225370
12686225372
12688225376
12689112689
12691112691
12695112695
12697112697
12699112699
12700112700
12702112702
12703112703
12706112706
12708112708
12709112709
12711112711
12712112712
12713112713
12715338145
12716225432
12727112727
12730112730
12733112733
12737225474
12738112738
12741112741
12742112742
12744112744
12746225492
12747112747
12748225496
12749225498
12750112750
12753112753
12755112755
12762112762
12765112765
12767112767
12769112769
12770112770
12771112771
12772225544
12774225548
12775112775
12776112776
12777112777
12796112796
12798112798
12804112804
12806225612
12809225618
12810225620
12812225624
12813112813
12814112814
12816112816
12821112821
12822225644
12823112823
12824112824
12826112826
12827112827
12828225656
12829112829
12832112832
12836112836
12838112838
12839112839
12844112844
12846112846
12848225696
12849112849
12850112850
12853112853
12854112854
12856112856
12859112859
12868112868
12870112870
12875112875
12878112878
12879112879
12881225762
12884112884
12886112886
12889112889
12891112891
12892225784
12898225796
12899112899
12900225800
12902112902
12904225808
12906112906
12912112912
12913112913
12914225828
12915112915
12916112916
12918112918
12919112919
12925225850
12928112928
12929112929
12930225860
12931225862
12932112932
12933112933
12940225880
12943225886
12944225888
12945225890
12947338841
12950112950
12951225902
12954112954
12955112955
12957112957
12959338877
12961225922
12962112962
12965112965
12966112966
12967112967
12968112968
12970112970
12971112971
12972112972
12973112973
12974225948
12975112975
12977112977
12978112978
12983225966
12984225968
12985225970
12986225972
12987112987
12988225976
12989225978
12990225980
12991112991
12993112993
12994112994
12995112995
12996112996
12997112997
12998112998
12999338997
13000339000
13001113001
13002339006
13003113003
13004226008
13005113005
13006113006
13008226016
13009226018
13011113011
13013113013
13014113014
13015226030
13017226034
13021226042
13022113022
13025113025
13027339081
13030113030
13031113031
13036113036
13038113038
13050113050
13052113052
13054113054
13055113055
13060113060
13064113064
13076113076
13079113079
13083113083
13084113084
13092113092
13098113098
13101113101
13105113105
13108113108
13111113111
13118113118
13119113119
13120339360
13121113121
13122113122
13124226248
13125452500
13126113126
13127339381
13128113128
13130113130
13131113131
13133113133
13138226276
13151113151
13152113152
13157113157
13163113163
13177113177
13186226372
13187226374
13188113188
13193113193
13196113196
13213113213
13222113222
13239113239
13241113241
13248226496
13251113251
13259113259
13260113260
13261113261
13262113262
13264113264
13266113266
13267113267
13268113268
13269113269
13273113273
13279113279
13281113281
13283113283
13285113285
13286113286
13294113294
13307113307
13309113309
13310113310
13322113322
13325113325
13326113326
13328113328
13336113336
13341113341
13342113342
13349113349
13350113350
13354113354
13355113355
13357226714
13358113358
13361226722
13362113362
13367113367
13373113373
13377113377
13378113378
13379226758
13388226776
13390113390
13391113391
13393113393
13396113396
13399113399
13409113409
13411113411
13412226824
13418113418
13422113422
13423113423
13425113425
13432226864
13444113444
13451113451
13458113458
13463226926
13469113469
13483113483
13485113485
13513113513
13534113534
13536113536
13548113548
13552113552
13569113569
13599113599
13600113600
13601113601
13602113602
13609113609
14132114132
Total100212644480
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333435266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882b68ffa7cb567
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6236386666613763
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_8.json b/autobahn/client/tungstenite_case_12_3_8.json new file mode 100644 index 0000000..7a4e04c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_8.json @@ -0,0 +1,1367 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 345, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 4755, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=345&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /cZtcsmvPdf1XeUX/wSVyw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zY6GhNCSXoVFYPEbTDycDRcJTCw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "12099": 1, + "12105": 1, + "12119": 1, + "12121": 1, + "12129": 2, + "12131": 1, + "12133": 1, + "12139": 1, + "12146": 1, + "12151": 1, + "12154": 1, + "12159": 1, + "12160": 1, + "12166": 1, + "12170": 2, + "12172": 1, + "12175": 1, + "12178": 1, + "12184": 3, + "12185": 2, + "12187": 1, + "12189": 1, + "12190": 1, + "12195": 1, + "12197": 1, + "12199": 1, + "12201": 1, + "12202": 2, + "12205": 1, + "12207": 2, + "12208": 1, + "12216": 1, + "12218": 1, + "12230": 1, + "12231": 1, + "12232": 1, + "12234": 1, + "12236": 1, + "12239": 2, + "12247": 1, + "12248": 1, + "12252": 1, + "12253": 1, + "12257": 1, + "12258": 1, + "12261": 2, + "12264": 2, + "12269": 3, + "12278": 2, + "12279": 1, + "12281": 1, + "12282": 1, + "12283": 3, + "12284": 3, + "12285": 1, + "12287": 1, + "12289": 1, + "12290": 1, + "12291": 2, + "12292": 1, + "12294": 1, + "12295": 2, + "12296": 1, + "12300": 1, + "12302": 1, + "12303": 1, + "12304": 1, + "12306": 1, + "12307": 1, + "12308": 1, + "12311": 1, + "12313": 2, + "12316": 2, + "12319": 1, + "12320": 1, + "12321": 1, + "12323": 2, + "12324": 4, + "12327": 1, + "12328": 2, + "12329": 2, + "12330": 2, + "12331": 2, + "12332": 1, + "12334": 1, + "12335": 1, + "12336": 1, + "12338": 1, + "12339": 2, + "12340": 1, + "12342": 4, + "12343": 1, + "12344": 2, + "12345": 4, + "12346": 1, + "12348": 2, + "12349": 2, + "12350": 1, + "12351": 3, + "12353": 3, + "12354": 2, + "12356": 1, + "12357": 1, + "12358": 2, + "12360": 2, + "12361": 2, + "12362": 5, + "12363": 3, + "12364": 2, + "12365": 2, + "12366": 2, + "12367": 2, + "12368": 2, + "12370": 2, + "12371": 2, + "12372": 3, + "12373": 2, + "12374": 4, + "12375": 1, + "12376": 1, + "12377": 6, + "12378": 2, + "12379": 1, + "12380": 4, + "12381": 1, + "12382": 3, + "12383": 2, + "12384": 2, + "12385": 3, + "12386": 2, + "12387": 1, + "12388": 2, + "12389": 2, + "12390": 4, + "12391": 4, + "12392": 3, + "12393": 1, + "12394": 8, + "12395": 4, + "12396": 4, + "12397": 2, + "12398": 3, + "12399": 3, + "12400": 4, + "12401": 4, + "12402": 5, + "12403": 4, + "12404": 3, + "12405": 7, + "12406": 4, + "12407": 6, + "12408": 4, + "12409": 5, + "12410": 5, + "12411": 3, + "12412": 6, + "12413": 1, + "12414": 2, + "12415": 4, + "12416": 5, + "12417": 4, + "12418": 4, + "12419": 2, + "12421": 4, + "12422": 1, + "12423": 3, + "12424": 5, + "12425": 5, + "12426": 3, + "12427": 4, + "12428": 5, + "12429": 2, + "12430": 6, + "12431": 4, + "12432": 3, + "12434": 11, + "12435": 5, + "12436": 2, + "12437": 6, + "12438": 3, + "12439": 1, + "12440": 3, + "12441": 3, + "12442": 2, + "12443": 1, + "12444": 1, + "12445": 3, + "12446": 4, + "12447": 2, + "12448": 3, + "12449": 3, + "12450": 3, + "12451": 2, + "12452": 2, + "12453": 2, + "12454": 2, + "12455": 1, + "12456": 2, + "12457": 4, + "12458": 2, + "12459": 1, + "12460": 2, + "12461": 2, + "12462": 2, + "12465": 1, + "12466": 1, + "12467": 2, + "12468": 2, + "12469": 2, + "12470": 2, + "12471": 1, + "12472": 1, + "12474": 1, + "12476": 1, + "12477": 1, + "12478": 1, + "12482": 3, + "12483": 4, + "12484": 2, + "12486": 1, + "12488": 2, + "12491": 3, + "12492": 1, + "12493": 1, + "12499": 1, + "12500": 1, + "12502": 1, + "12503": 1, + "12504": 1, + "12507": 1, + "12508": 1, + "12510": 1, + "12516": 1, + "12517": 1, + "12518": 1, + "12519": 2, + "12523": 1, + "12524": 3, + "12525": 1, + "12526": 1, + "12527": 1, + "12528": 2, + "12532": 3, + "12533": 1, + "12535": 3, + "12536": 1, + "12537": 2, + "12539": 2, + "12541": 3, + "12542": 1, + "12543": 3, + "12546": 1, + "12547": 1, + "12548": 3, + "12551": 1, + "12552": 1, + "12553": 2, + "12555": 1, + "12556": 1, + "12557": 3, + "12559": 1, + "12560": 1, + "12561": 1, + "12562": 1, + "12566": 2, + "12569": 1, + "12570": 3, + "12572": 1, + "12575": 1, + "12576": 2, + "12578": 1, + "12579": 1, + "12583": 1, + "12587": 1, + "12588": 1, + "12591": 1, + "12598": 1, + "12599": 2, + "12600": 1, + "12601": 1, + "12617": 1, + "12619": 2, + "12620": 1, + "12623": 1, + "12625": 1, + "12628": 1, + "12629": 1, + "12630": 1, + "12634": 1, + "12635": 1, + "12637": 1, + "12638": 2, + "12639": 2, + "12641": 1, + "12642": 3, + "12646": 2, + "12647": 1, + "12648": 1, + "12651": 1, + "12652": 2, + "12654": 3, + "12656": 1, + "12657": 2, + "12658": 2, + "12659": 2, + "12661": 1, + "12662": 1, + "12663": 1, + "12664": 1, + "12665": 1, + "12666": 1, + "12667": 1, + "12668": 1, + "12670": 1, + "12671": 1, + "12674": 2, + "12676": 1, + "12680": 3, + "12682": 1, + "12683": 1, + "12684": 1, + "12685": 3, + "12687": 1, + "12689": 2, + "12690": 2, + "12692": 2, + "12693": 1, + "12695": 1, + "12699": 1, + "12701": 1, + "12703": 1, + "12704": 1, + "12706": 1, + "12707": 1, + "12710": 1, + "12712": 1, + "12713": 1, + "12715": 1, + "12716": 1, + "12717": 1, + "12719": 3, + "12720": 2, + "12731": 1, + "12734": 1, + "12737": 1, + "12741": 2, + "12742": 1, + "12745": 1, + "12746": 1, + "12748": 1, + "12750": 2, + "12751": 1, + "12752": 2, + "12753": 2, + "12754": 1, + "12757": 1, + "12759": 1, + "12766": 1, + "12769": 1, + "12771": 1, + "12773": 1, + "12774": 1, + "12775": 1, + "12776": 2, + "12778": 2, + "12779": 1, + "12780": 1, + "12781": 1, + "12800": 1, + "12802": 1, + "12808": 1, + "12810": 2, + "12813": 2, + "12814": 2, + "12816": 2, + "12817": 1, + "12818": 1, + "12820": 1, + "12825": 1, + "12826": 2, + "12827": 1, + "12828": 1, + "12830": 1, + "12831": 1, + "12832": 2, + "12833": 1, + "12836": 1, + "12840": 1, + "12842": 1, + "12843": 1, + "12848": 1, + "12850": 1, + "12852": 2, + "12853": 1, + "12854": 1, + "12857": 1, + "12858": 1, + "12860": 1, + "12863": 1, + "12872": 1, + "12874": 1, + "12879": 1, + "12882": 1, + "12883": 1, + "12885": 2, + "12888": 1, + "12890": 1, + "12893": 1, + "12895": 1, + "12896": 2, + "12902": 2, + "12903": 1, + "12904": 2, + "12906": 1, + "12908": 2, + "12910": 1, + "12916": 1, + "12917": 1, + "12918": 2, + "12919": 1, + "12920": 1, + "12922": 1, + "12923": 1, + "12929": 2, + "12932": 1, + "12933": 1, + "12934": 2, + "12935": 2, + "12936": 1, + "12937": 1, + "12944": 2, + "12947": 2, + "12948": 2, + "12949": 2, + "12951": 3, + "12954": 1, + "12955": 2, + "12958": 1, + "12959": 1, + "12961": 1, + "12963": 3, + "12965": 2, + "12966": 1, + "12969": 1, + "12970": 1, + "12971": 1, + "12972": 1, + "12974": 1, + "12975": 1, + "12976": 1, + "12977": 1, + "12978": 2, + "12979": 1, + "12981": 1, + "12982": 1, + "12987": 2, + "12988": 2, + "12989": 2, + "12990": 2, + "12991": 1, + "12992": 2, + "12993": 2, + "12994": 2, + "12995": 1, + "12997": 1, + "12998": 1, + "12999": 1, + "13000": 1, + "13001": 1, + "13002": 1, + "13003": 3, + "13004": 3, + "13005": 1, + "13006": 3, + "13007": 1, + "13008": 2, + "13009": 1, + "13010": 1, + "13012": 2, + "13013": 2, + "13015": 1, + "13017": 1, + "13018": 1, + "13019": 2, + "13021": 2, + "13025": 2, + "13026": 1, + "13029": 1, + "13031": 3, + "13034": 1, + "13035": 1, + "13040": 1, + "13042": 1, + "13054": 1, + "13056": 1, + "13058": 1, + "13059": 1, + "13064": 1, + "13068": 1, + "13080": 1, + "13083": 1, + "13087": 1, + "13088": 1, + "13096": 1, + "13102": 1, + "13105": 1, + "13109": 1, + "13112": 1, + "13115": 1, + "13122": 1, + "13123": 1, + "13124": 3, + "13125": 1, + "13126": 1, + "13128": 2, + "13129": 4, + "13130": 1, + "13131": 3, + "13132": 1, + "13134": 1, + "13135": 1, + "13137": 1, + "13142": 2, + "13155": 1, + "13156": 1, + "13161": 1, + "13167": 1, + "13181": 1, + "13190": 2, + "13191": 2, + "13192": 1, + "13197": 1, + "13200": 1, + "13217": 1, + "13226": 1, + "13243": 1, + "13245": 1, + "13252": 2, + "13255": 1, + "13263": 1, + "13264": 1, + "13265": 1, + "13266": 1, + "13268": 1, + "13270": 1, + "13271": 1, + "13272": 1, + "13273": 1, + "13277": 1, + "13283": 1, + "13285": 1, + "13287": 1, + "13289": 1, + "13290": 1, + "13298": 1, + "13311": 1, + "13313": 1, + "13314": 1, + "13326": 1, + "13329": 1, + "13330": 1, + "13332": 1, + "13340": 1, + "13345": 1, + "13346": 1, + "13353": 1, + "13354": 1, + "13358": 1, + "13359": 1, + "13361": 2, + "13362": 1, + "13365": 2, + "13366": 1, + "13371": 1, + "13377": 1, + "13381": 1, + "13382": 1, + "13383": 2, + "13392": 2, + "13394": 1, + "13395": 1, + "13397": 1, + "13400": 1, + "13403": 1, + "13413": 1, + "13415": 1, + "13416": 2, + "13422": 1, + "13426": 1, + "13427": 1, + "13429": 1, + "13436": 2, + "13448": 1, + "13455": 1, + "13462": 1, + "13467": 2, + "13473": 1, + "13487": 1, + "13489": 1, + "13517": 1, + "13538": 1, + "13540": 1, + "13552": 1, + "13556": 1, + "13573": 1, + "13603": 1, + "13604": 1, + "13605": 1, + "13606": 1, + "13613": 1, + "14136": 1 + }, + "started": "2025-09-11T20:07:41.939Z", + "trafficStats": { + "incomingCompressionRatio": 0.3857490234375, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 12640224, + "incomingOctetsWireLevel": 12648224, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0006329001764525692, + "outgoingCompressionRatio": 0.3857490234375, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 12640224, + "outgoingOctetsWireLevel": 12644224, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0003164500882262846, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "12095": 1, + "12101": 1, + "12115": 1, + "12117": 1, + "12125": 2, + "12127": 1, + "12129": 1, + "12135": 1, + "12142": 1, + "12147": 1, + "12150": 1, + "12155": 1, + "12156": 1, + "12162": 1, + "12166": 2, + "12168": 1, + "12171": 1, + "12174": 1, + "12180": 3, + "12181": 2, + "12183": 1, + "12185": 1, + "12186": 1, + "12191": 1, + "12193": 1, + "12195": 1, + "12197": 1, + "12198": 2, + "12201": 1, + "12203": 2, + "12204": 1, + "12212": 1, + "12214": 1, + "12226": 1, + "12227": 1, + "12228": 1, + "12230": 1, + "12232": 1, + "12235": 2, + "12243": 1, + "12244": 1, + "12248": 1, + "12249": 1, + "12253": 1, + "12254": 1, + "12257": 2, + "12260": 2, + "12265": 3, + "12274": 2, + "12275": 1, + "12277": 1, + "12278": 1, + "12279": 3, + "12280": 3, + "12281": 1, + "12283": 1, + "12285": 1, + "12286": 1, + "12287": 2, + "12288": 1, + "12290": 1, + "12291": 2, + "12292": 1, + "12296": 1, + "12298": 1, + "12299": 1, + "12300": 1, + "12302": 1, + "12303": 1, + "12304": 1, + "12307": 1, + "12309": 2, + "12312": 2, + "12315": 1, + "12316": 1, + "12317": 1, + "12319": 2, + "12320": 4, + "12323": 1, + "12324": 2, + "12325": 2, + "12326": 2, + "12327": 2, + "12328": 1, + "12330": 1, + "12331": 1, + "12332": 1, + "12334": 1, + "12335": 2, + "12336": 1, + "12338": 4, + "12339": 1, + "12340": 2, + "12341": 4, + "12342": 1, + "12344": 2, + "12345": 2, + "12346": 1, + "12347": 3, + "12349": 3, + "12350": 2, + "12352": 1, + "12353": 1, + "12354": 2, + "12356": 2, + "12357": 2, + "12358": 5, + "12359": 3, + "12360": 2, + "12361": 2, + "12362": 2, + "12363": 2, + "12364": 2, + "12366": 2, + "12367": 2, + "12368": 3, + "12369": 2, + "12370": 4, + "12371": 1, + "12372": 1, + "12373": 6, + "12374": 2, + "12375": 1, + "12376": 4, + "12377": 1, + "12378": 3, + "12379": 2, + "12380": 2, + "12381": 3, + "12382": 2, + "12383": 1, + "12384": 2, + "12385": 2, + "12386": 4, + "12387": 4, + "12388": 3, + "12389": 1, + "12390": 8, + "12391": 4, + "12392": 4, + "12393": 2, + "12394": 3, + "12395": 3, + "12396": 4, + "12397": 4, + "12398": 5, + "12399": 4, + "12400": 3, + "12401": 7, + "12402": 4, + "12403": 6, + "12404": 4, + "12405": 5, + "12406": 5, + "12407": 3, + "12408": 6, + "12409": 1, + "12410": 2, + "12411": 4, + "12412": 5, + "12413": 4, + "12414": 4, + "12415": 2, + "12417": 4, + "12418": 1, + "12419": 3, + "12420": 5, + "12421": 5, + "12422": 3, + "12423": 4, + "12424": 5, + "12425": 2, + "12426": 6, + "12427": 4, + "12428": 3, + "12430": 11, + "12431": 5, + "12432": 2, + "12433": 6, + "12434": 3, + "12435": 1, + "12436": 3, + "12437": 3, + "12438": 2, + "12439": 1, + "12440": 1, + "12441": 3, + "12442": 4, + "12443": 2, + "12444": 3, + "12445": 3, + "12446": 3, + "12447": 2, + "12448": 2, + "12449": 2, + "12450": 2, + "12451": 1, + "12452": 2, + "12453": 4, + "12454": 2, + "12455": 1, + "12456": 2, + "12457": 2, + "12458": 2, + "12461": 1, + "12462": 1, + "12463": 2, + "12464": 2, + "12465": 2, + "12466": 2, + "12467": 1, + "12468": 1, + "12470": 1, + "12472": 1, + "12473": 1, + "12474": 1, + "12478": 3, + "12479": 4, + "12480": 2, + "12482": 1, + "12484": 2, + "12487": 3, + "12488": 1, + "12489": 1, + "12495": 1, + "12496": 1, + "12498": 1, + "12499": 1, + "12500": 1, + "12503": 1, + "12504": 1, + "12506": 1, + "12512": 1, + "12513": 1, + "12514": 1, + "12515": 2, + "12519": 1, + "12520": 3, + "12521": 1, + "12522": 1, + "12523": 1, + "12524": 2, + "12528": 3, + "12529": 1, + "12531": 3, + "12532": 1, + "12533": 2, + "12535": 2, + "12537": 3, + "12538": 1, + "12539": 3, + "12542": 1, + "12543": 1, + "12544": 3, + "12547": 1, + "12548": 1, + "12549": 2, + "12551": 1, + "12552": 1, + "12553": 3, + "12555": 1, + "12556": 1, + "12557": 1, + "12558": 1, + "12562": 2, + "12565": 1, + "12566": 3, + "12568": 1, + "12571": 1, + "12572": 2, + "12574": 1, + "12575": 1, + "12579": 1, + "12583": 1, + "12584": 1, + "12587": 1, + "12594": 1, + "12595": 2, + "12596": 1, + "12597": 1, + "12613": 1, + "12615": 2, + "12616": 1, + "12619": 1, + "12621": 1, + "12624": 1, + "12625": 1, + "12626": 1, + "12630": 1, + "12631": 1, + "12633": 1, + "12634": 2, + "12635": 2, + "12637": 1, + "12638": 3, + "12642": 2, + "12643": 1, + "12644": 1, + "12647": 1, + "12648": 2, + "12650": 3, + "12652": 1, + "12653": 2, + "12654": 2, + "12655": 2, + "12657": 1, + "12658": 1, + "12659": 1, + "12660": 1, + "12661": 1, + "12662": 1, + "12663": 1, + "12664": 1, + "12666": 1, + "12667": 1, + "12670": 2, + "12672": 1, + "12676": 3, + "12678": 1, + "12679": 1, + "12680": 1, + "12681": 3, + "12683": 1, + "12685": 2, + "12686": 2, + "12688": 2, + "12689": 1, + "12691": 1, + "12695": 1, + "12697": 1, + "12699": 1, + "12700": 1, + "12702": 1, + "12703": 1, + "12706": 1, + "12708": 1, + "12709": 1, + "12711": 1, + "12712": 1, + "12713": 1, + "12715": 3, + "12716": 2, + "12727": 1, + "12730": 1, + "12733": 1, + "12737": 2, + "12738": 1, + "12741": 1, + "12742": 1, + "12744": 1, + "12746": 2, + "12747": 1, + "12748": 2, + "12749": 2, + "12750": 1, + "12753": 1, + "12755": 1, + "12762": 1, + "12765": 1, + "12767": 1, + "12769": 1, + "12770": 1, + "12771": 1, + "12772": 2, + "12774": 2, + "12775": 1, + "12776": 1, + "12777": 1, + "12796": 1, + "12798": 1, + "12804": 1, + "12806": 2, + "12809": 2, + "12810": 2, + "12812": 2, + "12813": 1, + "12814": 1, + "12816": 1, + "12821": 1, + "12822": 2, + "12823": 1, + "12824": 1, + "12826": 1, + "12827": 1, + "12828": 2, + "12829": 1, + "12832": 1, + "12836": 1, + "12838": 1, + "12839": 1, + "12844": 1, + "12846": 1, + "12848": 2, + "12849": 1, + "12850": 1, + "12853": 1, + "12854": 1, + "12856": 1, + "12859": 1, + "12868": 1, + "12870": 1, + "12875": 1, + "12878": 1, + "12879": 1, + "12881": 2, + "12884": 1, + "12886": 1, + "12889": 1, + "12891": 1, + "12892": 2, + "12898": 2, + "12899": 1, + "12900": 2, + "12902": 1, + "12904": 2, + "12906": 1, + "12912": 1, + "12913": 1, + "12914": 2, + "12915": 1, + "12916": 1, + "12918": 1, + "12919": 1, + "12925": 2, + "12928": 1, + "12929": 1, + "12930": 2, + "12931": 2, + "12932": 1, + "12933": 1, + "12940": 2, + "12943": 2, + "12944": 2, + "12945": 2, + "12947": 3, + "12950": 1, + "12951": 2, + "12954": 1, + "12955": 1, + "12957": 1, + "12959": 3, + "12961": 2, + "12962": 1, + "12965": 1, + "12966": 1, + "12967": 1, + "12968": 1, + "12970": 1, + "12971": 1, + "12972": 1, + "12973": 1, + "12974": 2, + "12975": 1, + "12977": 1, + "12978": 1, + "12983": 2, + "12984": 2, + "12985": 2, + "12986": 2, + "12987": 1, + "12988": 2, + "12989": 2, + "12990": 2, + "12991": 1, + "12993": 1, + "12994": 1, + "12995": 1, + "12996": 1, + "12997": 1, + "12998": 1, + "12999": 3, + "13000": 3, + "13001": 1, + "13002": 3, + "13003": 1, + "13004": 2, + "13005": 1, + "13006": 1, + "13008": 2, + "13009": 2, + "13011": 1, + "13013": 1, + "13014": 1, + "13015": 2, + "13017": 2, + "13021": 2, + "13022": 1, + "13025": 1, + "13027": 3, + "13030": 1, + "13031": 1, + "13036": 1, + "13038": 1, + "13050": 1, + "13052": 1, + "13054": 1, + "13055": 1, + "13060": 1, + "13064": 1, + "13076": 1, + "13079": 1, + "13083": 1, + "13084": 1, + "13092": 1, + "13098": 1, + "13101": 1, + "13105": 1, + "13108": 1, + "13111": 1, + "13118": 1, + "13119": 1, + "13120": 3, + "13121": 1, + "13122": 1, + "13124": 2, + "13125": 4, + "13126": 1, + "13127": 3, + "13128": 1, + "13130": 1, + "13131": 1, + "13133": 1, + "13138": 2, + "13151": 1, + "13152": 1, + "13157": 1, + "13163": 1, + "13177": 1, + "13186": 2, + "13187": 2, + "13188": 1, + "13193": 1, + "13196": 1, + "13213": 1, + "13222": 1, + "13239": 1, + "13241": 1, + "13248": 2, + "13251": 1, + "13259": 1, + "13260": 1, + "13261": 1, + "13262": 1, + "13264": 1, + "13266": 1, + "13267": 1, + "13268": 1, + "13269": 1, + "13273": 1, + "13279": 1, + "13281": 1, + "13283": 1, + "13285": 1, + "13286": 1, + "13294": 1, + "13307": 1, + "13309": 1, + "13310": 1, + "13322": 1, + "13325": 1, + "13326": 1, + "13328": 1, + "13336": 1, + "13341": 1, + "13342": 1, + "13349": 1, + "13350": 1, + "13354": 1, + "13355": 1, + "13357": 2, + "13358": 1, + "13361": 2, + "13362": 1, + "13367": 1, + "13373": 1, + "13377": 1, + "13378": 1, + "13379": 2, + "13388": 2, + "13390": 1, + "13391": 1, + "13393": 1, + "13396": 1, + "13399": 1, + "13409": 1, + "13411": 1, + "13412": 2, + "13418": 1, + "13422": 1, + "13423": 1, + "13425": 1, + "13432": 2, + "13444": 1, + "13451": 1, + "13458": 1, + "13463": 2, + "13469": 1, + "13483": 1, + "13485": 1, + "13513": 1, + "13534": 1, + "13536": 1, + "13548": 1, + "13552": 1, + "13569": 1, + "13599": 1, + "13600": 1, + "13601": 1, + "13602": 1, + "13609": 1, + "14132": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333435266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b68ffa7cb567" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b68ffa7c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_3_9.html b/autobahn/client/tungstenite_case_12_3_9.html new file mode 100644 index 0000000..b98d8d0 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_9.html @@ -0,0 +1,1685 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.3.9 : Pass - 9196 ms @ 2025-09-11T20:07:46.695Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=346&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: MVXGmBUpKBgsJ7kptGmUGw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: glxcTYhwsIqm98wN3yenpDkqRCI=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
12486112486
14480114480
24486124486
24489124489
24497124497
24499124499
24500249000
24502124502
24503124503
24505124505
24507124507
24512124512
24513124513
24516124516
24521124521
24522124522
24523124523
24525124525
24535124535
24549249098
24551124551
24555124555
24558124558
24561124561
24565124565
24566124566
24567124567
24570124570
24577124577
24606124606
24612124612
24626124626
24630373890
24632124632
24633124633
24636124636
24639124639
24642124642
24643124643
24646124646
246475123235
24649124649
24650124650
24652124652
24653124653
24654124654
24655124655
24656124656
24657124657
24658249316
24660373980
24661124661
24664249328
24666124666
24667124667
24668124668
24669374007
24670124670
24671124671
24672498688
24673249346
24674498696
24675374025
24676124676
24677124677
24679374037
24680124680
24681124681
24682249364
24684124684
24688374064
24689124689
24690124690
24691124691
24692249384
24694124694
24697249394
24698249396
24699249398
24702124702
24703124703
24705249410
24706249412
24707498828
24708124708
24709249418
24710374130
24711374133
24713374139
24715124715
24717374151
24719374157
24720124720
24721124721
24723124723
24724374172
24725249450
24726124726
24727249454
24728124728
24729374187
24730249460
24731249462
24732249464
24733249466
24734498936
24736124736
24737249474
24738374214
24740249480
24741249482
24742498968
24743249486
24744498976
24746124746
24747124747
24748249496
24749124749
24751249502
24753249506
24754374262
24757249514
24759374277
24760374280
24761249522
24762249524
24763249526
24764124764
247655123825
24766124766
24767249534
24768124768
24769249538
24770124770
24771124771
24772499088
24773124773
24774124774
24779249558
24780374340
24783249566
24784124784
24785124785
24786374358
24787124787
24788124788
24789249578
247945123970
24797374391
24798124798
24800124800
24802249604
24804124804
24807124807
24809374427
24810124810
24813124813
24818124818
24819124819
24825249650
24829124829
24830124830
24831124831
24837124837
24839124839
24841249682
24843249686
24844124844
24850124850
24851124851
24853124853
24858124858
24859124859
24860249720
24861124861
24862124862
24863124863
24864124864
24870124870
24871124871
24877124877
24878124878
24892124892
24893124893
24897124897
24909124909
24917124917
24921124921
24928374784
24929124929
24931124931
24932124932
24933124933
24937124937
24939124939
24941374823
24944124944
24945249890
24946124946
24947124947
24949124949
24950124950
24951124951
24953124953
24954124954
24958124958
24959124959
24961124961
24962124962
24964124964
24965249930
24966124966
24967249934
24968124968
24969249938
24970124970
24971374913
24974374922
24976124976
24977124977
24980124980
24981124981
24990124990
24992124992
24995124995
24996124996
24997124997
24998124998
25000125000
25001125001
25009125009
25010125010
25012125012
25013125013
25016125016
25019125019
25020125020
25024125024
25026125026
25027375081
25029125029
25031125031
25032125032
25034375102
25035250070
25036125036
25037125037
25038250076
25039125039
25040125040
25041125041
25042125042
25043125043
25045125045
25047375141
25048250096
25049125049
25053250106
25054250108
25055250110
25056250112
25057125057
25058125058
25059125059
25060125060
25061125061
25062125062
250635125315
25066125066
25067250134
25074250148
25076250152
25077250154
25078125078
25080250160
25081125081
25082250164
25085375255
25087125087
25089125089
25091125091
25092375276
25093125093
25095125095
25096125096
25097125097
25100125100
25105125105
25108250216
25109125109
25118125118
25123125123
25126125126
25127125127
25128125128
25129125129
25131250262
25132125132
25133125133
25140125140
25144125144
25147125147
25150125150
25151125151
25155125155
25157125157
25162125162
25165125165
25169125169
25170125170
25175250350
25176125176
25177125177
25179125179
25181125181
25186250372
25187125187
25188125188
25189125189
25190125190
25191125191
25192125192
25193125193
25194125194
25195125195
25196125196
25197250394
25198125198
25200125200
25201125201
25202250404
25204125204
25205125205
25206250412
25209125209
25210375630
25215125215
25216125216
25220375660
25221375663
25222125222
25223125223
25224125224
25226125226
25227125227
25229125229
25230375690
25231125231
25232250464
25236250472
25237125237
25238250476
25239375717
25240250480
25241125241
252425126210
25243125243
25244125244
25245250490
25247125247
25248250496
25249125249
25250250500
25252125252
252534101012
25254250508
25257375771
25258375774
252594101036
25262125262
25263125263
25265125265
25266250532
25269125269
25274125274
25276125276
25277250554
25280250560
25282125282
25283125283
25287125287
25292250584
25294250588
25295250590
25298250596
25299125299
25300250600
25301125301
25302250604
25305125305
25308125308
25309250618
25316125316
25318125318
25321125321
25322125322
25323125323
25330125330
25333250666
25334125334
25337125337
25338250676
25339125339
25340125340
25342125342
25348250696
25349250698
25350125350
25352250704
25354125354
25357125357
25360125360
25363125363
25367125367
25375125375
25385125385
25395250790
25396250792
25400125400
25404125404
25419250838
25421125421
25430125430
25431125431
25436125436
25443125443
25448125448
25451125451
25456125456
25459250918
25461125461
25462250924
25464125464
25474250948
25478125478
25488125488
25491125491
25492125492
25493125493
25496125496
25501125501
25504125504
25507376521
25509251018
25512125512
25515125515
25518125518
25519251038
25521251042
25522251044
25523251046
25524125524
25527125527
25529376587
25534125534
25537125537
25538251076
25539125539
25541125541
25542251084
25543251086
255444102176
25545376635
25546125546
25547125547
25548125548
25551376653
25552125552
25553376659
25554251108
25555125555
25556376668
25558376674
25559251118
25562125562
25563125563
25566125566
25568125568
25569125569
25570251140
25572125572
25574125574
25575251150
25576125576
25577125577
25578125578
25580125580
25586125586
25588125588
25590125590
25594125594
25600125600
25601125601
25609125609
25613125613
25617125617
25624125624
25628125628
25631125631
25647125647
25650125650
25656125656
25658251316
25659251318
25662125662
25670251340
25672251344
25674125674
25677125677
25679377037
25682251364
25685125685
25687125687
25691251382
256934102772
25696251392
25697125697
25698125698
25699125699
25700125700
25701125701
25702377106
25703125703
25704125704
25705125705
25706125706
25707377121
25708251416
25710125710
25714251428
25716125716
25717125717
25718125718
25719125719
25720251440
25722125722
25724125724
25726125726
25727251454
25728251456
25729251458
25730125730
25731377193
25732125732
25733251466
25734251468
257354102940
25738125738
25739377217
25740125740
25741125741
25742125742
25743251486
25745377235
25746125746
25748251496
25749251498
25750125750
25752125752
25753125753
25754251508
25757251514
25758125758
25759125759
25760125760
25761125761
25764125764
25766251532
25771125771
25772125772
25774125774
25776125776
25781251562
25786125786
25787125787
25788251576
25789125789
25790125790
25791125791
25793125793
25794251588
25795125795
25796251592
25797377391
25798251596
25801251602
25802251604
25803125803
25805125805
25806125806
25807125807
25811125811
25812125812
25813251626
25818125818
25819251638
25822125822
25825125825
25830125830
25832125832
25833125833
25839251678
25853125853
25855125855
25858125858
25860125860
25873125873
25876125876
25879125879
25881251762
25888251776
25889125889
25890251780
25892251784
25893125893
25903125903
25909125909
25912125912
25913125913
25915125915
25920125920
25921125921
25936125936
25954125954
25973125973
25982125982
25985125985
26000126000
26017126017
26027126027
26037126037
26039126039
26041126041
26047126047
26065126065
26078126078
26089126089
26093126093
26094126094
26100126100
26118126118
26124126124
26129126129
26140126140
26150126150
26153126153
26156126156
26158126158
26159126159
26160252320
26161126161
26163126163
26165126165
26169252338
26170126170
26171126171
26173126173
26174126174
26175378525
26184252368
26185252370
26187126187
26193252386
26194126194
26195126195
26196126196
26198126198
26200252400
26201126201
26206126206
26209126209
26212126212
26215126215
26220126220
26223126223
26224126224
26231126231
26252126252
26253126253
26259126259
26260126260
26261126261
26267126267
26274126274
26276126276
26287126287
26292126292
26297126297
26298126298
26300126300
26305252610
26311126311
26321126321
26322126322
Total100325257085
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
24482124482
24485124485
24493124493
24495124495
24496248992
24498124498
24499124499
24501124501
24503124503
24508124508
24509124509
24512124512
24517124517
24518124518
24519124519
24521124521
24531124531
24545249090
24547124547
24551124551
24554124554
24557124557
24561124561
24562124562
24563124563
24566124566
24573124573
24602124602
24608124608
24622124622
24626373878
24628124628
24629124629
24632124632
24635124635
24638124638
24639124639
24642124642
246435123215
24645124645
24646124646
24648124648
24649124649
24650124650
24651124651
24652124652
24653124653
24654249308
24656373968
24657124657
24660249320
24662124662
24663124663
24664124664
24665373995
24666124666
24667124667
24668498672
24669249338
24670498680
24671374013
24672124672
24673124673
24675374025
24676124676
24677124677
24678249356
24680124680
24684374052
24685124685
24686124686
24687124687
24688249376
24690124690
24693249386
24694249388
24695249390
24698124698
24699124699
24701249402
24702249404
24703498812
24704124704
24705249410
24706374118
24707374121
24709374127
24711124711
24713374139
24715374145
24716124716
24717124717
24719124719
24720374160
24721249442
24722124722
24723249446
24724124724
24725374175
24726249452
24727249454
24728249456
24729249458
24730498920
24732124732
24733249466
24734374202
24736249472
24737249474
24738498952
24739249478
24740498960
24742124742
24743124743
24744249488
24745124745
24747249494
24749249498
24750374250
24753249506
24755374265
24756374268
24757249514
24758249516
24759249518
24760124760
247615123805
24762124762
24763249526
24764124764
24765249530
24766124766
24767124767
24768499072
24769124769
24770124770
24775249550
24776374328
24779249558
24780124780
24781124781
24782374346
24783124783
24784124784
24785249570
247905123950
24793374379
24794124794
24796124796
24798249596
24800124800
24803124803
24805374415
24806124806
24809124809
24814124814
24815124815
24821249642
24825124825
24826124826
24827124827
24833124833
24835124835
24837249674
24839249678
24840124840
24846124846
24847124847
24849124849
24854124854
24855124855
24856249712
24857124857
24858124858
24859124859
24860124860
24866124866
24867124867
24873124873
24874124874
24888124888
24889124889
24893124893
24905124905
24913124913
24917124917
24924374772
24925124925
24927124927
24928124928
24929124929
24933124933
24935124935
24937374811
24940124940
24941249882
24942124942
24943124943
24945124945
24946124946
24947124947
24949124949
24950124950
24954124954
24955124955
24957124957
24958124958
24960124960
24961249922
24962124962
24963249926
24964124964
24965249930
24966124966
24967374901
24970374910
24972124972
24973124973
24976124976
24977124977
24986124986
24988124988
24991124991
24992124992
24993124993
24994124994
24996124996
24997124997
25005125005
25006125006
25008125008
25009125009
25012125012
25015125015
25016125016
25020125020
25022125022
25023375069
25025125025
25027125027
25028125028
25030375090
25031250062
25032125032
25033125033
25034250068
25035125035
25036125036
25037125037
25038125038
25039125039
25041125041
25043375129
25044250088
25045125045
25049250098
25050250100
25051250102
25052250104
25053125053
25054125054
25055125055
25056125056
25057125057
25058125058
250595125295
25062125062
25063250126
25070250140
25072250144
25073250146
25074125074
25076250152
25077125077
25078250156
25081375243
25083125083
25085125085
25087125087
25088375264
25089125089
25091125091
25092125092
25093125093
25096125096
25101125101
25104250208
25105125105
25114125114
25119125119
25122125122
25123125123
25124125124
25125125125
25127250254
25128125128
25129125129
25136125136
25140125140
25143125143
25146125146
25147125147
25151125151
25153125153
25158125158
25161125161
25165125165
25166125166
25171250342
25172125172
25173125173
25175125175
25177125177
25182250364
25183125183
25184125184
25185125185
25186125186
25187125187
25188125188
25189125189
25190125190
25191125191
25192125192
25193250386
25194125194
25196125196
25197125197
25198250396
25200125200
25201125201
25202250404
25205125205
25206375618
25211125211
25212125212
25216375648
25217375651
25218125218
25219125219
25220125220
25222125222
25223125223
25225125225
25226375678
25227125227
25228250456
25232250464
25233125233
25234250468
25235375705
25236250472
25237125237
252385126190
25239125239
25240125240
25241250482
25243125243
25244250488
25245125245
25246250492
25248125248
252494100996
25250250500
25253375759
25254375762
252554101020
25258125258
25259125259
25261125261
25262250524
25265125265
25270125270
25272125272
25273250546
25276250552
25278125278
25279125279
25283125283
25288250576
25290250580
25291250582
25294250588
25295125295
25296250592
25297125297
25298250596
25301125301
25304125304
25305250610
25312125312
25314125314
25317125317
25318125318
25319125319
25326125326
25329250658
25330125330
25333125333
25334250668
25335125335
25336125336
25338125338
25344250688
25345250690
25346125346
25348250696
25350125350
25353125353
25356125356
25359125359
25363125363
25371125371
25381125381
25391250782
25392250784
25396125396
25400125400
25415250830
25417125417
25426125426
25427125427
25432125432
25439125439
25444125444
25447125447
25452125452
25455250910
25457125457
25458250916
25460125460
25470250940
25474125474
25484125484
25487125487
25488125488
25489125489
25492125492
25497125497
25500125500
25503376509
25505251010
25508125508
25511125511
25514125514
25515251030
25517251034
25518251036
25519251038
25520125520
25523125523
25525376575
25530125530
25533125533
25534251068
25535125535
25537125537
25538251076
25539251078
255404102160
25541376623
25542125542
25543125543
25544125544
25547376641
25548125548
25549376647
25550251100
25551125551
25552376656
25554376662
25555251110
25558125558
25559125559
25562125562
25564125564
25565125565
25566251132
25568125568
25570125570
25571251142
25572125572
25573125573
25574125574
25576125576
25582125582
25584125584
25586125586
25590125590
25596125596
25597125597
25605125605
25609125609
25613125613
25620125620
25624125624
25627125627
25643125643
25646125646
25652125652
25654251308
25655251310
25658125658
25666251332
25668251336
25670125670
25673125673
25675377025
25678251356
25681125681
25683125683
25687251374
256894102756
25692251384
25693125693
25694125694
25695125695
25696125696
25697125697
25698377094
25699125699
25700125700
25701125701
25702125702
25703377109
25704251408
25706125706
25710251420
25712125712
25713125713
25714125714
25715125715
25716251432
25718125718
25720125720
25722125722
25723251446
25724251448
25725251450
25726125726
25727377181
25728125728
25729251458
25730251460
257314102924
25734125734
25735377205
25736125736
25737125737
25738125738
25739251478
25741377223
25742125742
25744251488
25745251490
25746125746
25748125748
25749125749
25750251500
25753251506
25754125754
25755125755
25756125756
25757125757
25760125760
25762251524
25767125767
25768125768
25770125770
25772125772
25777251554
25782125782
25783125783
25784251568
25785125785
25786125786
25787125787
25789125789
25790251580
25791125791
25792251584
25793377379
25794251588
25797251594
25798251596
25799125799
25801125801
25802125802
25803125803
25807125807
25808125808
25809251618
25814125814
25815251630
25818125818
25821125821
25826125826
25828125828
25829125829
25835251670
25849125849
25851125851
25854125854
25856125856
25869125869
25872125872
25875125875
25877251754
25884251768
25885125885
25886251772
25888251776
25889125889
25899125899
25905125905
25908125908
25909125909
25911125911
25916125916
25917125917
25932125932
25950125950
25969125969
25978125978
25981125981
25996125996
26013126013
26023126023
26033126033
26035126035
26037126037
26043126043
26061126061
26074126074
26085126085
26089126089
26090126090
26096126096
26114126114
26120126120
26125126125
26136126136
26146126146
26149126149
26152126152
26154126154
26155126155
26156252312
26157126157
26159126159
26161126161
26165252330
26166126166
26167126167
26169126169
26170126170
26171378513
26180252360
26181252362
26183126183
26189252378
26190126190
26191126191
26192126192
26194126194
26196252392
26197126197
26202126202
26205126205
26208126208
26211126211
26216126216
26219126219
26220126220
26227126227
26248126248
26249126249
26255126255
26256126256
26257126257
26263126263
26270126270
26272126272
26283126283
26288126288
26293126293
26294126294
26296126296
26301252602
26307126307
26317126317
26318126318
26962126962
Total100225253076
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333436266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88829eed0aa79d05
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3965656430616137
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_3_9.json b/autobahn/client/tungstenite_case_12_3_9.json new file mode 100644 index 0000000..0a5e73e --- /dev/null +++ b/autobahn/client/tungstenite_case_12_3_9.json @@ -0,0 +1,1532 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 346, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 9196, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=346&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: MVXGmBUpKBgsJ7kptGmUGw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: glxcTYhwsIqm98wN3yenpDkqRCI=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.3.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "12486": 1, + "14480": 1, + "24486": 1, + "24489": 1, + "24497": 1, + "24499": 1, + "24500": 2, + "24502": 1, + "24503": 1, + "24505": 1, + "24507": 1, + "24512": 1, + "24513": 1, + "24516": 1, + "24521": 1, + "24522": 1, + "24523": 1, + "24525": 1, + "24535": 1, + "24549": 2, + "24551": 1, + "24555": 1, + "24558": 1, + "24561": 1, + "24565": 1, + "24566": 1, + "24567": 1, + "24570": 1, + "24577": 1, + "24606": 1, + "24612": 1, + "24626": 1, + "24630": 3, + "24632": 1, + "24633": 1, + "24636": 1, + "24639": 1, + "24642": 1, + "24643": 1, + "24646": 1, + "24647": 5, + "24649": 1, + "24650": 1, + "24652": 1, + "24653": 1, + "24654": 1, + "24655": 1, + "24656": 1, + "24657": 1, + "24658": 2, + "24660": 3, + "24661": 1, + "24664": 2, + "24666": 1, + "24667": 1, + "24668": 1, + "24669": 3, + "24670": 1, + "24671": 1, + "24672": 4, + "24673": 2, + "24674": 4, + "24675": 3, + "24676": 1, + "24677": 1, + "24679": 3, + "24680": 1, + "24681": 1, + "24682": 2, + "24684": 1, + "24688": 3, + "24689": 1, + "24690": 1, + "24691": 1, + "24692": 2, + "24694": 1, + "24697": 2, + "24698": 2, + "24699": 2, + "24702": 1, + "24703": 1, + "24705": 2, + "24706": 2, + "24707": 4, + "24708": 1, + "24709": 2, + "24710": 3, + "24711": 3, + "24713": 3, + "24715": 1, + "24717": 3, + "24719": 3, + "24720": 1, + "24721": 1, + "24723": 1, + "24724": 3, + "24725": 2, + "24726": 1, + "24727": 2, + "24728": 1, + "24729": 3, + "24730": 2, + "24731": 2, + "24732": 2, + "24733": 2, + "24734": 4, + "24736": 1, + "24737": 2, + "24738": 3, + "24740": 2, + "24741": 2, + "24742": 4, + "24743": 2, + "24744": 4, + "24746": 1, + "24747": 1, + "24748": 2, + "24749": 1, + "24751": 2, + "24753": 2, + "24754": 3, + "24757": 2, + "24759": 3, + "24760": 3, + "24761": 2, + "24762": 2, + "24763": 2, + "24764": 1, + "24765": 5, + "24766": 1, + "24767": 2, + "24768": 1, + "24769": 2, + "24770": 1, + "24771": 1, + "24772": 4, + "24773": 1, + "24774": 1, + "24779": 2, + "24780": 3, + "24783": 2, + "24784": 1, + "24785": 1, + "24786": 3, + "24787": 1, + "24788": 1, + "24789": 2, + "24794": 5, + "24797": 3, + "24798": 1, + "24800": 1, + "24802": 2, + "24804": 1, + "24807": 1, + "24809": 3, + "24810": 1, + "24813": 1, + "24818": 1, + "24819": 1, + "24825": 2, + "24829": 1, + "24830": 1, + "24831": 1, + "24837": 1, + "24839": 1, + "24841": 2, + "24843": 2, + "24844": 1, + "24850": 1, + "24851": 1, + "24853": 1, + "24858": 1, + "24859": 1, + "24860": 2, + "24861": 1, + "24862": 1, + "24863": 1, + "24864": 1, + "24870": 1, + "24871": 1, + "24877": 1, + "24878": 1, + "24892": 1, + "24893": 1, + "24897": 1, + "24909": 1, + "24917": 1, + "24921": 1, + "24928": 3, + "24929": 1, + "24931": 1, + "24932": 1, + "24933": 1, + "24937": 1, + "24939": 1, + "24941": 3, + "24944": 1, + "24945": 2, + "24946": 1, + "24947": 1, + "24949": 1, + "24950": 1, + "24951": 1, + "24953": 1, + "24954": 1, + "24958": 1, + "24959": 1, + "24961": 1, + "24962": 1, + "24964": 1, + "24965": 2, + "24966": 1, + "24967": 2, + "24968": 1, + "24969": 2, + "24970": 1, + "24971": 3, + "24974": 3, + "24976": 1, + "24977": 1, + "24980": 1, + "24981": 1, + "24990": 1, + "24992": 1, + "24995": 1, + "24996": 1, + "24997": 1, + "24998": 1, + "25000": 1, + "25001": 1, + "25009": 1, + "25010": 1, + "25012": 1, + "25013": 1, + "25016": 1, + "25019": 1, + "25020": 1, + "25024": 1, + "25026": 1, + "25027": 3, + "25029": 1, + "25031": 1, + "25032": 1, + "25034": 3, + "25035": 2, + "25036": 1, + "25037": 1, + "25038": 2, + "25039": 1, + "25040": 1, + "25041": 1, + "25042": 1, + "25043": 1, + "25045": 1, + "25047": 3, + "25048": 2, + "25049": 1, + "25053": 2, + "25054": 2, + "25055": 2, + "25056": 2, + "25057": 1, + "25058": 1, + "25059": 1, + "25060": 1, + "25061": 1, + "25062": 1, + "25063": 5, + "25066": 1, + "25067": 2, + "25074": 2, + "25076": 2, + "25077": 2, + "25078": 1, + "25080": 2, + "25081": 1, + "25082": 2, + "25085": 3, + "25087": 1, + "25089": 1, + "25091": 1, + "25092": 3, + "25093": 1, + "25095": 1, + "25096": 1, + "25097": 1, + "25100": 1, + "25105": 1, + "25108": 2, + "25109": 1, + "25118": 1, + "25123": 1, + "25126": 1, + "25127": 1, + "25128": 1, + "25129": 1, + "25131": 2, + "25132": 1, + "25133": 1, + "25140": 1, + "25144": 1, + "25147": 1, + "25150": 1, + "25151": 1, + "25155": 1, + "25157": 1, + "25162": 1, + "25165": 1, + "25169": 1, + "25170": 1, + "25175": 2, + "25176": 1, + "25177": 1, + "25179": 1, + "25181": 1, + "25186": 2, + "25187": 1, + "25188": 1, + "25189": 1, + "25190": 1, + "25191": 1, + "25192": 1, + "25193": 1, + "25194": 1, + "25195": 1, + "25196": 1, + "25197": 2, + "25198": 1, + "25200": 1, + "25201": 1, + "25202": 2, + "25204": 1, + "25205": 1, + "25206": 2, + "25209": 1, + "25210": 3, + "25215": 1, + "25216": 1, + "25220": 3, + "25221": 3, + "25222": 1, + "25223": 1, + "25224": 1, + "25226": 1, + "25227": 1, + "25229": 1, + "25230": 3, + "25231": 1, + "25232": 2, + "25236": 2, + "25237": 1, + "25238": 2, + "25239": 3, + "25240": 2, + "25241": 1, + "25242": 5, + "25243": 1, + "25244": 1, + "25245": 2, + "25247": 1, + "25248": 2, + "25249": 1, + "25250": 2, + "25252": 1, + "25253": 4, + "25254": 2, + "25257": 3, + "25258": 3, + "25259": 4, + "25262": 1, + "25263": 1, + "25265": 1, + "25266": 2, + "25269": 1, + "25274": 1, + "25276": 1, + "25277": 2, + "25280": 2, + "25282": 1, + "25283": 1, + "25287": 1, + "25292": 2, + "25294": 2, + "25295": 2, + "25298": 2, + "25299": 1, + "25300": 2, + "25301": 1, + "25302": 2, + "25305": 1, + "25308": 1, + "25309": 2, + "25316": 1, + "25318": 1, + "25321": 1, + "25322": 1, + "25323": 1, + "25330": 1, + "25333": 2, + "25334": 1, + "25337": 1, + "25338": 2, + "25339": 1, + "25340": 1, + "25342": 1, + "25348": 2, + "25349": 2, + "25350": 1, + "25352": 2, + "25354": 1, + "25357": 1, + "25360": 1, + "25363": 1, + "25367": 1, + "25375": 1, + "25385": 1, + "25395": 2, + "25396": 2, + "25400": 1, + "25404": 1, + "25419": 2, + "25421": 1, + "25430": 1, + "25431": 1, + "25436": 1, + "25443": 1, + "25448": 1, + "25451": 1, + "25456": 1, + "25459": 2, + "25461": 1, + "25462": 2, + "25464": 1, + "25474": 2, + "25478": 1, + "25488": 1, + "25491": 1, + "25492": 1, + "25493": 1, + "25496": 1, + "25501": 1, + "25504": 1, + "25507": 3, + "25509": 2, + "25512": 1, + "25515": 1, + "25518": 1, + "25519": 2, + "25521": 2, + "25522": 2, + "25523": 2, + "25524": 1, + "25527": 1, + "25529": 3, + "25534": 1, + "25537": 1, + "25538": 2, + "25539": 1, + "25541": 1, + "25542": 2, + "25543": 2, + "25544": 4, + "25545": 3, + "25546": 1, + "25547": 1, + "25548": 1, + "25551": 3, + "25552": 1, + "25553": 3, + "25554": 2, + "25555": 1, + "25556": 3, + "25558": 3, + "25559": 2, + "25562": 1, + "25563": 1, + "25566": 1, + "25568": 1, + "25569": 1, + "25570": 2, + "25572": 1, + "25574": 1, + "25575": 2, + "25576": 1, + "25577": 1, + "25578": 1, + "25580": 1, + "25586": 1, + "25588": 1, + "25590": 1, + "25594": 1, + "25600": 1, + "25601": 1, + "25609": 1, + "25613": 1, + "25617": 1, + "25624": 1, + "25628": 1, + "25631": 1, + "25647": 1, + "25650": 1, + "25656": 1, + "25658": 2, + "25659": 2, + "25662": 1, + "25670": 2, + "25672": 2, + "25674": 1, + "25677": 1, + "25679": 3, + "25682": 2, + "25685": 1, + "25687": 1, + "25691": 2, + "25693": 4, + "25696": 2, + "25697": 1, + "25698": 1, + "25699": 1, + "25700": 1, + "25701": 1, + "25702": 3, + "25703": 1, + "25704": 1, + "25705": 1, + "25706": 1, + "25707": 3, + "25708": 2, + "25710": 1, + "25714": 2, + "25716": 1, + "25717": 1, + "25718": 1, + "25719": 1, + "25720": 2, + "25722": 1, + "25724": 1, + "25726": 1, + "25727": 2, + "25728": 2, + "25729": 2, + "25730": 1, + "25731": 3, + "25732": 1, + "25733": 2, + "25734": 2, + "25735": 4, + "25738": 1, + "25739": 3, + "25740": 1, + "25741": 1, + "25742": 1, + "25743": 2, + "25745": 3, + "25746": 1, + "25748": 2, + "25749": 2, + "25750": 1, + "25752": 1, + "25753": 1, + "25754": 2, + "25757": 2, + "25758": 1, + "25759": 1, + "25760": 1, + "25761": 1, + "25764": 1, + "25766": 2, + "25771": 1, + "25772": 1, + "25774": 1, + "25776": 1, + "25781": 2, + "25786": 1, + "25787": 1, + "25788": 2, + "25789": 1, + "25790": 1, + "25791": 1, + "25793": 1, + "25794": 2, + "25795": 1, + "25796": 2, + "25797": 3, + "25798": 2, + "25801": 2, + "25802": 2, + "25803": 1, + "25805": 1, + "25806": 1, + "25807": 1, + "25811": 1, + "25812": 1, + "25813": 2, + "25818": 1, + "25819": 2, + "25822": 1, + "25825": 1, + "25830": 1, + "25832": 1, + "25833": 1, + "25839": 2, + "25853": 1, + "25855": 1, + "25858": 1, + "25860": 1, + "25873": 1, + "25876": 1, + "25879": 1, + "25881": 2, + "25888": 2, + "25889": 1, + "25890": 2, + "25892": 2, + "25893": 1, + "25903": 1, + "25909": 1, + "25912": 1, + "25913": 1, + "25915": 1, + "25920": 1, + "25921": 1, + "25936": 1, + "25954": 1, + "25973": 1, + "25982": 1, + "25985": 1, + "26000": 1, + "26017": 1, + "26027": 1, + "26037": 1, + "26039": 1, + "26041": 1, + "26047": 1, + "26065": 1, + "26078": 1, + "26089": 1, + "26093": 1, + "26094": 1, + "26100": 1, + "26118": 1, + "26124": 1, + "26129": 1, + "26140": 1, + "26150": 1, + "26153": 1, + "26156": 1, + "26158": 1, + "26159": 1, + "26160": 2, + "26161": 1, + "26163": 1, + "26165": 1, + "26169": 2, + "26170": 1, + "26171": 1, + "26173": 1, + "26174": 1, + "26175": 3, + "26184": 2, + "26185": 2, + "26187": 1, + "26193": 2, + "26194": 1, + "26195": 1, + "26196": 1, + "26198": 1, + "26200": 2, + "26201": 1, + "26206": 1, + "26209": 1, + "26212": 1, + "26215": 1, + "26220": 1, + "26223": 1, + "26224": 1, + "26231": 1, + "26252": 1, + "26253": 1, + "26259": 1, + "26260": 1, + "26261": 1, + "26267": 1, + "26274": 1, + "26276": 1, + "26287": 1, + "26292": 1, + "26297": 1, + "26298": 1, + "26300": 1, + "26305": 2, + "26311": 1, + "26321": 1, + "26322": 1 + }, + "started": "2025-09-11T20:07:46.695Z", + "trafficStats": { + "incomingCompressionRatio": 0.38526641845703125, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 25248820, + "incomingOctetsWireLevel": 25256820, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0003168464902518217, + "outgoingCompressionRatio": 0.38526641845703125, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 25248820, + "outgoingOctetsWireLevel": 25252820, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.00015842324512591085, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "24482": 1, + "24485": 1, + "24493": 1, + "24495": 1, + "24496": 2, + "24498": 1, + "24499": 1, + "24501": 1, + "24503": 1, + "24508": 1, + "24509": 1, + "24512": 1, + "24517": 1, + "24518": 1, + "24519": 1, + "24521": 1, + "24531": 1, + "24545": 2, + "24547": 1, + "24551": 1, + "24554": 1, + "24557": 1, + "24561": 1, + "24562": 1, + "24563": 1, + "24566": 1, + "24573": 1, + "24602": 1, + "24608": 1, + "24622": 1, + "24626": 3, + "24628": 1, + "24629": 1, + "24632": 1, + "24635": 1, + "24638": 1, + "24639": 1, + "24642": 1, + "24643": 5, + "24645": 1, + "24646": 1, + "24648": 1, + "24649": 1, + "24650": 1, + "24651": 1, + "24652": 1, + "24653": 1, + "24654": 2, + "24656": 3, + "24657": 1, + "24660": 2, + "24662": 1, + "24663": 1, + "24664": 1, + "24665": 3, + "24666": 1, + "24667": 1, + "24668": 4, + "24669": 2, + "24670": 4, + "24671": 3, + "24672": 1, + "24673": 1, + "24675": 3, + "24676": 1, + "24677": 1, + "24678": 2, + "24680": 1, + "24684": 3, + "24685": 1, + "24686": 1, + "24687": 1, + "24688": 2, + "24690": 1, + "24693": 2, + "24694": 2, + "24695": 2, + "24698": 1, + "24699": 1, + "24701": 2, + "24702": 2, + "24703": 4, + "24704": 1, + "24705": 2, + "24706": 3, + "24707": 3, + "24709": 3, + "24711": 1, + "24713": 3, + "24715": 3, + "24716": 1, + "24717": 1, + "24719": 1, + "24720": 3, + "24721": 2, + "24722": 1, + "24723": 2, + "24724": 1, + "24725": 3, + "24726": 2, + "24727": 2, + "24728": 2, + "24729": 2, + "24730": 4, + "24732": 1, + "24733": 2, + "24734": 3, + "24736": 2, + "24737": 2, + "24738": 4, + "24739": 2, + "24740": 4, + "24742": 1, + "24743": 1, + "24744": 2, + "24745": 1, + "24747": 2, + "24749": 2, + "24750": 3, + "24753": 2, + "24755": 3, + "24756": 3, + "24757": 2, + "24758": 2, + "24759": 2, + "24760": 1, + "24761": 5, + "24762": 1, + "24763": 2, + "24764": 1, + "24765": 2, + "24766": 1, + "24767": 1, + "24768": 4, + "24769": 1, + "24770": 1, + "24775": 2, + "24776": 3, + "24779": 2, + "24780": 1, + "24781": 1, + "24782": 3, + "24783": 1, + "24784": 1, + "24785": 2, + "24790": 5, + "24793": 3, + "24794": 1, + "24796": 1, + "24798": 2, + "24800": 1, + "24803": 1, + "24805": 3, + "24806": 1, + "24809": 1, + "24814": 1, + "24815": 1, + "24821": 2, + "24825": 1, + "24826": 1, + "24827": 1, + "24833": 1, + "24835": 1, + "24837": 2, + "24839": 2, + "24840": 1, + "24846": 1, + "24847": 1, + "24849": 1, + "24854": 1, + "24855": 1, + "24856": 2, + "24857": 1, + "24858": 1, + "24859": 1, + "24860": 1, + "24866": 1, + "24867": 1, + "24873": 1, + "24874": 1, + "24888": 1, + "24889": 1, + "24893": 1, + "24905": 1, + "24913": 1, + "24917": 1, + "24924": 3, + "24925": 1, + "24927": 1, + "24928": 1, + "24929": 1, + "24933": 1, + "24935": 1, + "24937": 3, + "24940": 1, + "24941": 2, + "24942": 1, + "24943": 1, + "24945": 1, + "24946": 1, + "24947": 1, + "24949": 1, + "24950": 1, + "24954": 1, + "24955": 1, + "24957": 1, + "24958": 1, + "24960": 1, + "24961": 2, + "24962": 1, + "24963": 2, + "24964": 1, + "24965": 2, + "24966": 1, + "24967": 3, + "24970": 3, + "24972": 1, + "24973": 1, + "24976": 1, + "24977": 1, + "24986": 1, + "24988": 1, + "24991": 1, + "24992": 1, + "24993": 1, + "24994": 1, + "24996": 1, + "24997": 1, + "25005": 1, + "25006": 1, + "25008": 1, + "25009": 1, + "25012": 1, + "25015": 1, + "25016": 1, + "25020": 1, + "25022": 1, + "25023": 3, + "25025": 1, + "25027": 1, + "25028": 1, + "25030": 3, + "25031": 2, + "25032": 1, + "25033": 1, + "25034": 2, + "25035": 1, + "25036": 1, + "25037": 1, + "25038": 1, + "25039": 1, + "25041": 1, + "25043": 3, + "25044": 2, + "25045": 1, + "25049": 2, + "25050": 2, + "25051": 2, + "25052": 2, + "25053": 1, + "25054": 1, + "25055": 1, + "25056": 1, + "25057": 1, + "25058": 1, + "25059": 5, + "25062": 1, + "25063": 2, + "25070": 2, + "25072": 2, + "25073": 2, + "25074": 1, + "25076": 2, + "25077": 1, + "25078": 2, + "25081": 3, + "25083": 1, + "25085": 1, + "25087": 1, + "25088": 3, + "25089": 1, + "25091": 1, + "25092": 1, + "25093": 1, + "25096": 1, + "25101": 1, + "25104": 2, + "25105": 1, + "25114": 1, + "25119": 1, + "25122": 1, + "25123": 1, + "25124": 1, + "25125": 1, + "25127": 2, + "25128": 1, + "25129": 1, + "25136": 1, + "25140": 1, + "25143": 1, + "25146": 1, + "25147": 1, + "25151": 1, + "25153": 1, + "25158": 1, + "25161": 1, + "25165": 1, + "25166": 1, + "25171": 2, + "25172": 1, + "25173": 1, + "25175": 1, + "25177": 1, + "25182": 2, + "25183": 1, + "25184": 1, + "25185": 1, + "25186": 1, + "25187": 1, + "25188": 1, + "25189": 1, + "25190": 1, + "25191": 1, + "25192": 1, + "25193": 2, + "25194": 1, + "25196": 1, + "25197": 1, + "25198": 2, + "25200": 1, + "25201": 1, + "25202": 2, + "25205": 1, + "25206": 3, + "25211": 1, + "25212": 1, + "25216": 3, + "25217": 3, + "25218": 1, + "25219": 1, + "25220": 1, + "25222": 1, + "25223": 1, + "25225": 1, + "25226": 3, + "25227": 1, + "25228": 2, + "25232": 2, + "25233": 1, + "25234": 2, + "25235": 3, + "25236": 2, + "25237": 1, + "25238": 5, + "25239": 1, + "25240": 1, + "25241": 2, + "25243": 1, + "25244": 2, + "25245": 1, + "25246": 2, + "25248": 1, + "25249": 4, + "25250": 2, + "25253": 3, + "25254": 3, + "25255": 4, + "25258": 1, + "25259": 1, + "25261": 1, + "25262": 2, + "25265": 1, + "25270": 1, + "25272": 1, + "25273": 2, + "25276": 2, + "25278": 1, + "25279": 1, + "25283": 1, + "25288": 2, + "25290": 2, + "25291": 2, + "25294": 2, + "25295": 1, + "25296": 2, + "25297": 1, + "25298": 2, + "25301": 1, + "25304": 1, + "25305": 2, + "25312": 1, + "25314": 1, + "25317": 1, + "25318": 1, + "25319": 1, + "25326": 1, + "25329": 2, + "25330": 1, + "25333": 1, + "25334": 2, + "25335": 1, + "25336": 1, + "25338": 1, + "25344": 2, + "25345": 2, + "25346": 1, + "25348": 2, + "25350": 1, + "25353": 1, + "25356": 1, + "25359": 1, + "25363": 1, + "25371": 1, + "25381": 1, + "25391": 2, + "25392": 2, + "25396": 1, + "25400": 1, + "25415": 2, + "25417": 1, + "25426": 1, + "25427": 1, + "25432": 1, + "25439": 1, + "25444": 1, + "25447": 1, + "25452": 1, + "25455": 2, + "25457": 1, + "25458": 2, + "25460": 1, + "25470": 2, + "25474": 1, + "25484": 1, + "25487": 1, + "25488": 1, + "25489": 1, + "25492": 1, + "25497": 1, + "25500": 1, + "25503": 3, + "25505": 2, + "25508": 1, + "25511": 1, + "25514": 1, + "25515": 2, + "25517": 2, + "25518": 2, + "25519": 2, + "25520": 1, + "25523": 1, + "25525": 3, + "25530": 1, + "25533": 1, + "25534": 2, + "25535": 1, + "25537": 1, + "25538": 2, + "25539": 2, + "25540": 4, + "25541": 3, + "25542": 1, + "25543": 1, + "25544": 1, + "25547": 3, + "25548": 1, + "25549": 3, + "25550": 2, + "25551": 1, + "25552": 3, + "25554": 3, + "25555": 2, + "25558": 1, + "25559": 1, + "25562": 1, + "25564": 1, + "25565": 1, + "25566": 2, + "25568": 1, + "25570": 1, + "25571": 2, + "25572": 1, + "25573": 1, + "25574": 1, + "25576": 1, + "25582": 1, + "25584": 1, + "25586": 1, + "25590": 1, + "25596": 1, + "25597": 1, + "25605": 1, + "25609": 1, + "25613": 1, + "25620": 1, + "25624": 1, + "25627": 1, + "25643": 1, + "25646": 1, + "25652": 1, + "25654": 2, + "25655": 2, + "25658": 1, + "25666": 2, + "25668": 2, + "25670": 1, + "25673": 1, + "25675": 3, + "25678": 2, + "25681": 1, + "25683": 1, + "25687": 2, + "25689": 4, + "25692": 2, + "25693": 1, + "25694": 1, + "25695": 1, + "25696": 1, + "25697": 1, + "25698": 3, + "25699": 1, + "25700": 1, + "25701": 1, + "25702": 1, + "25703": 3, + "25704": 2, + "25706": 1, + "25710": 2, + "25712": 1, + "25713": 1, + "25714": 1, + "25715": 1, + "25716": 2, + "25718": 1, + "25720": 1, + "25722": 1, + "25723": 2, + "25724": 2, + "25725": 2, + "25726": 1, + "25727": 3, + "25728": 1, + "25729": 2, + "25730": 2, + "25731": 4, + "25734": 1, + "25735": 3, + "25736": 1, + "25737": 1, + "25738": 1, + "25739": 2, + "25741": 3, + "25742": 1, + "25744": 2, + "25745": 2, + "25746": 1, + "25748": 1, + "25749": 1, + "25750": 2, + "25753": 2, + "25754": 1, + "25755": 1, + "25756": 1, + "25757": 1, + "25760": 1, + "25762": 2, + "25767": 1, + "25768": 1, + "25770": 1, + "25772": 1, + "25777": 2, + "25782": 1, + "25783": 1, + "25784": 2, + "25785": 1, + "25786": 1, + "25787": 1, + "25789": 1, + "25790": 2, + "25791": 1, + "25792": 2, + "25793": 3, + "25794": 2, + "25797": 2, + "25798": 2, + "25799": 1, + "25801": 1, + "25802": 1, + "25803": 1, + "25807": 1, + "25808": 1, + "25809": 2, + "25814": 1, + "25815": 2, + "25818": 1, + "25821": 1, + "25826": 1, + "25828": 1, + "25829": 1, + "25835": 2, + "25849": 1, + "25851": 1, + "25854": 1, + "25856": 1, + "25869": 1, + "25872": 1, + "25875": 1, + "25877": 2, + "25884": 2, + "25885": 1, + "25886": 2, + "25888": 2, + "25889": 1, + "25899": 1, + "25905": 1, + "25908": 1, + "25909": 1, + "25911": 1, + "25916": 1, + "25917": 1, + "25932": 1, + "25950": 1, + "25969": 1, + "25978": 1, + "25981": 1, + "25996": 1, + "26013": 1, + "26023": 1, + "26033": 1, + "26035": 1, + "26037": 1, + "26043": 1, + "26061": 1, + "26074": 1, + "26085": 1, + "26089": 1, + "26090": 1, + "26096": 1, + "26114": 1, + "26120": 1, + "26125": 1, + "26136": 1, + "26146": 1, + "26149": 1, + "26152": 1, + "26154": 1, + "26155": 1, + "26156": 2, + "26157": 1, + "26159": 1, + "26161": 1, + "26165": 2, + "26166": 1, + "26167": 1, + "26169": 1, + "26170": 1, + "26171": 3, + "26180": 2, + "26181": 2, + "26183": 1, + "26189": 2, + "26190": 1, + "26191": 1, + "26192": 1, + "26194": 1, + "26196": 2, + "26197": 1, + "26202": 1, + "26205": 1, + "26208": 1, + "26211": 1, + "26216": 1, + "26219": 1, + "26220": 1, + "26227": 1, + "26248": 1, + "26249": 1, + "26255": 1, + "26256": 1, + "26257": 1, + "26263": 1, + "26270": 1, + "26272": 1, + "26283": 1, + "26288": 1, + "26293": 1, + "26294": 1, + "26296": 1, + "26301": 2, + "26307": 1, + "26317": 1, + "26318": 1, + "26962": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333436266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829eed0aa79d05" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9eed0aa7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_1.html b/autobahn/client/tungstenite_case_12_4_1.html new file mode 100644 index 0000000..0c936d5 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_1.html @@ -0,0 +1,328 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.1 : Pass - 473 ms @ 2025-09-11T20:09:39.686Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=356&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 4eHiwmrxYzKaddoMBbW+kQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: hdhJCswJmVVC/Z/F5xgjmtQ++JI=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
104524520
111361496
1240480
13861118
1448672
1551765
1637592
1732544
1823414
1920380
2016320
2121441
2217374
238184
2413312
2571257
Total100212877
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
64522712
7136952
840320
986774
1048480
1151561
1237444
1332416
1423322
1520300
1616256
1721357
1817306
198152
2013260
2521252
Total10028868
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333536266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822630e46f25d8
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3236333065343666
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_1.json b/autobahn/client/tungstenite_case_12_4_1.json new file mode 100644 index 0000000..bd02ed3 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_1.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 356, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 473, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=356&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 4eHiwmrxYzKaddoMBbW+kQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: hdhJCswJmVVC/Z/F5xgjmtQ++JI=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 452, + "11": 136, + "12": 40, + "13": 86, + "14": 48, + "15": 51, + "16": 37, + "17": 32, + "18": 23, + "19": 20, + "20": 16, + "21": 21, + "22": 17, + "23": 8, + "24": 13, + "257": 1 + }, + "started": "2025-09-11T20:09:39.686Z", + "trafficStats": { + "incomingCompressionRatio": 0.41325, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 6612, + "incomingOctetsWireLevel": 12612, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.9074410163339383, + "outgoingCompressionRatio": 0.41325, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 6612, + "outgoingOctetsWireLevel": 8612, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.3024803387779794, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 452, + "7": 136, + "8": 40, + "9": 86, + "10": 48, + "11": 51, + "12": 37, + "13": 32, + "14": 23, + "15": 20, + "16": 16, + "17": 21, + "18": 17, + "19": 8, + "20": 13, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333536266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822630e46f25d8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2630e46f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_10.html b/autobahn/client/tungstenite_case_12_4_10.html new file mode 100644 index 0000000..abba960 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_10.html @@ -0,0 +1,1430 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.10 : Pass - 5141 ms @ 2025-09-11T20:09:46.540Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=365&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: lWkQ6xHykDklSh7z+TLtIw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: nFiwMxKmxvml1SpmLgKPGrEVFvc=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
593715937
5938317814
594315943
594415944
594815948
594915949
595315953
596115961
596215962
602416024
603016030
6031212062
6036212072
6067212134
607116071
607216072
608616086
608816088
6116212232
6139212278
6153212306
6157212314
615916159
6164318492
616616166
617216172
6175212350
618116181
6182318546
618616186
618716187
6207212414
6217212434
625016250
625316253
6258212516
627116271
627316273
627416274
627516275
627816278
6279318837
629916299
630316303
6353212706
637716377
641916419
642316423
642916429
6430212860
6441212882
646316463
646916469
648716487
649716497
649816498
650516505
651616516
652216522
655616556
6557319671
659616596
659816598
663516635
663916639
665916659
672516725
672616726
672716727
672916729
673116731
6732213464
673316733
673716737
674216742
674416744
6746213492
675616756
675716757
678316783
678516785
6786213572
6787213574
6788320364
678916789
679016790
6791213582
679416794
679616796
679916799
680516805
6812213624
681316813
681916819
682116821
686816868
693216932
693516935
693616936
694016940
694616946
695016950
6953213906
695416954
6956213912
695716957
695816958
696616966
696816968
6969320907
697116971
6974427896
6975213950
697616976
6978213956
697916979
698116981
698316983
6985213970
698616986
6991213982
6993320979
699616996
699816998
700517005
7006214012
700717007
7009428036
7010214020
701117011
701217012
7014428056
7015321045
701617016
701717017
7019321057
7021214042
7024428096
7025535125
7026214052
702717027
7028321084
703017030
703117031
703217032
703317033
703417034
703617036
703717037
7039214078
704017040
7041428164
7043535215
704617046
7047428188
7049214098
7051214102
7052214104
7054428216
705517055
7056321168
7057214114
705817058
7059321177
7060214120
706117061
706217062
7063321189
7065214130
7066214132
7067428268
7068321204
7069214138
7070428280
7071214142
7072321216
707317073
707417074
7076214152
7077428308
707817078
707917079
708017080
708217082
7084321252
7085321255
708617086
708717087
708917089
709317093
7096428384
7099428396
710017100
7101321303
7102214204
7103214206
710417104
7106321318
7108321324
7109535545
7111214222
711217112
711517115
7117321351
711817118
711917119
7120428480
7121214242
7122321366
712317123
712417124
7125214250
7126321378
7127214254
712817128
713017130
713117131
7132214264
7133214266
7134214268
7135214270
713617136
713817138
714017140
714217142
714317143
714417144
7145321435
7146214292
714717147
714817148
714917149
7155214310
7156214312
7157321471
7158428632
7159535795
7160214320
7162428648
7163214326
7165214330
7166642996
716717167
7168428672
7169428676
7170321510
7171321513
7172214344
717317173
7175428700
717717177
7178214356
7179321537
718017180
718217182
718317183
718517185
7186321558
7187214374
7188214376
719017190
719117191
7192214384
719317193
719517195
7199321597
7202214404
7203214406
7204321612
7205214410
7206214412
7207214414
720817208
7209214418
7210214420
721117211
7214214428
721617216
721717217
721817218
7219321657
722217222
722417224
7225214450
722617226
723117231
7232214464
723417234
723517235
723717237
723817238
7241321723
7242214484
724317243
724617246
7249214498
725017250
725417254
725517255
725617256
7257321771
725817258
7259536295
7260321780
7261321783
726217262
7263214526
7265321795
726917269
7270429080
7271214542
727317273
7274214548
7275429100
727617276
7277429108
727817278
728117281
7282321846
728417284
728517285
728617286
728717287
728917289
7293214586
729417294
729517295
7297214594
7298321894
7299214598
730217302
730317303
730517305
7307214614
7308214616
7309321927
7310643860
7313214626
7314321942
731917319
732017320
732417324
732517325
7329214658
7331321993
7332214664
733317333
733417334
733617336
7337429348
733817338
7340322020
7341322023
7342536710
7343322029
7344751408
7345322035
7347429388
7348536740
7349429396
7350214700
735117351
7352214704
7353214706
7354322062
7355322065
7356536780
7357322071
735817358
7359536795
736017360
736117361
7362214724
736317363
7365429460
7366214732
7367214734
736817368
7369214738
737017370
737117371
737217372
7373214746
7374322122
7375214750
7377214754
7378214756
737917379
7380322140
7382214764
738317383
7384214768
7386214772
738817388
739017390
7391214782
739417394
7396429584
739717397
7398214796
7399214798
7400322200
7401322203
7402429608
7403214806
7404429616
740517405
7406322218
740717407
7408322224
7409322227
7411537055
741217412
7413429652
7414214828
741517415
741617416
741717417
741817418
7419214838
742017420
742217422
7423214846
7424214848
742717427
7428214856
7430537150
743117431
7432322296
7433322299
7434322302
743517435
743617436
743717437
7438214876
7439322317
7440322320
744117441
7442214884
744517445
7446322338
744817448
744917449
7450322350
745117451
745217452
745317453
7455214910
7464214928
7467214934
7468214936
747317473
7474214948
747517475
747717477
747817478
747917479
748017480
748117481
748217482
748317483
748717487
7494214988
7495214990
7496429984
749717497
750117501
7502322506
750517505
7510215020
751217512
7513537565
751417514
751617516
751717517
7520215040
762117621
762417624
762517625
762817628
763117631
763217632
763517635
763617636
764017640
764117641
7642215284
7645215290
7646322938
7647215294
764817648
764917649
765017650
7651215302
7652322956
7661215322
768017680
768517685
7699215398
770317703
770717707
7711215422
772217722
772517725
773217732
773817738
779917799
781717817
782017820
785517855
786017860
786317863
786917869
7902215804
7903215806
793417934
793917939
794517945
795017950
8009216018
8020216040
803918039
8093216186
813718137
813918139
8150216300
8170216340
8175216350
817618176
817818178
819018190
819118191
819518195
820418204
8229216458
823818238
823918239
8259216518
8261216522
8262216524
826618266
8271216542
827518275
827718277
8278216556
827918279
8283216566
8288216576
8302216604
8322216644
835018350
835218352
8363216726
836818368
837018370
8401216802
840618406
841018410
841418414
841918419
847818478
848218482
848818488
848918489
849318493
853518535
Total10027222443
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
593315933
5934317802
593915939
594015940
594415944
594515945
594915949
595715957
595815958
602016020
602616026
6027212054
6032212064
6063212126
606716067
606816068
608216082
608416084
6112212224
6135212270
6149212298
6153212306
615516155
6160318480
616216162
616816168
6171212342
617716177
6178318534
618216182
618316183
6203212406
6213212426
624616246
624916249
6254212508
626716267
626916269
627016270
627116271
627416274
6275318825
629516295
629916299
6349212698
637316373
641516415
641916419
642516425
6426212852
6437212874
645916459
646516465
648316483
649316493
649416494
650116501
651216512
651816518
655216552
6553319659
659216592
659416594
663116631
663516635
665516655
672116721
672216722
672316723
672516725
672716727
6728213456
672916729
673316733
673816738
674016740
6742213484
675216752
675316753
677916779
678116781
6782213564
6783213566
6784320352
678516785
678616786
6787213574
679016790
679216792
679516795
680116801
6808213616
680916809
681516815
681716817
686416864
692816928
693116931
693216932
693616936
694216942
694616946
6949213898
695016950
6952213904
695316953
695416954
696216962
696416964
6965320895
696716967
6970427880
6971213942
697216972
6974213948
697516975
697716977
697916979
6981213962
698216982
6987213974
6989320967
699216992
699416994
700117001
7002214004
700317003
7005428020
7006214012
700717007
700817008
7010428040
7011321033
701217012
701317013
7015321045
7017214034
7020428080
7021535105
7022214044
702317023
7024321072
702617026
702717027
702817028
702917029
703017030
703217032
703317033
7035214070
703617036
7037428148
7039535195
704217042
7043428172
7045214090
7047214094
7048214096
7050428200
705117051
7052321156
7053214106
705417054
7055321165
7056214112
705717057
705817058
7059321177
7061214122
7062214124
7063428252
7064321192
7065214130
7066428264
7067214134
7068321204
706917069
707017070
7072214144
7073428292
707417074
707517075
707617076
707817078
7080321240
7081321243
708217082
708317083
708517085
708917089
7092428368
7095428380
709617096
7097321291
7098214196
7099214198
710017100
7102321306
7104321312
7105535525
7107214214
710817108
711117111
7113321339
711417114
711517115
7116428464
7117214234
7118321354
711917119
712017120
7121214242
7122321366
7123214246
712417124
712617126
712717127
7128214256
7129214258
7130214260
7131214262
713217132
713417134
713617136
713817138
713917139
714017140
7141321423
7142214284
714317143
714417144
714517145
7151214302
7152214304
7153321459
7154428616
7155535775
7156214312
7158428632
7159214318
7161214322
7162642972
716317163
7164428656
7165428660
7166321498
7167321501
7168214336
716917169
7171428684
717317173
7174214348
7175321525
717617176
717817178
717917179
718117181
7182321546
7183214366
7184214368
718617186
718717187
7188214376
718917189
719117191
7195321585
7198214396
7199214398
7200321600
7201214402
7202214404
7203214406
720417204
7205214410
7206214412
720717207
7210214420
721217212
721317213
721417214
7215321645
721817218
722017220
7221214442
722217222
722717227
7228214456
723017230
723117231
723317233
723417234
7237321711
7238214476
723917239
724217242
7245214490
724617246
725017250
725117251
725217252
7253321759
725417254
7255536275
7256321768
7257321771
725817258
7259214518
7261321783
726517265
7266429064
7267214534
726917269
7270214540
7271429084
727217272
7273429092
727417274
727717277
7278321834
728017280
728117281
728217282
728317283
728517285
7289214578
729017290
729117291
7293214586
7294321882
7295214590
729817298
729917299
730117301
7303214606
7304214608
7305321915
7306643836
7309214618
7310321930
731517315
731617316
732017320
732117321
7325214650
7327321981
7328214656
732917329
733017330
733217332
7333429332
733417334
7336322008
7337322011
7338536690
7339322017
7340751380
7341322023
7343429372
7344536720
7345429380
7346214692
734717347
7348214696
7349214698
7350322050
7351322053
7352536760
7353322059
735417354
7355536775
735617356
735717357
7358214716
735917359
7361429444
7362214724
7363214726
736417364
7365214730
736617366
736717367
736817368
7369214738
7370322110
7371214742
7373214746
7374214748
737517375
7376322128
7378214756
737917379
7380214760
7382214764
738417384
738617386
7387214774
739017390
7392429568
739317393
7394214788
7395214790
7396322188
7397322191
7398429592
7399214798
7400429600
740117401
7402322206
740317403
7404322212
7405322215
7407537035
740817408
7409429636
7410214820
741117411
741217412
741317413
741417414
7415214830
741617416
741817418
7419214838
7420214840
742317423
7424214848
7426537130
742717427
7428322284
7429322287
7430322290
743117431
743217432
743317433
7434214868
7435322305
7436322308
743717437
7438214876
744117441
7442322326
744417444
744517445
7446322338
744717447
744817448
744917449
7451214902
7460214920
7463214926
7464214928
746917469
7470214940
747117471
747317473
747417474
747517475
747617476
747717477
747817478
747917479
748317483
7490214980
7491214982
7492429968
749317493
749717497
7498322494
750117501
7506215012
750817508
7509537545
751017510
751217512
751317513
7516215032
761717617
762017620
762117621
762417624
762717627
762817628
763117631
763217632
763617636
763717637
7638215276
7641215282
7642322926
7643215286
764417644
764517645
764617646
7647215294
7648322944
7657215314
767617676
768117681
7695215390
769917699
770317703
7707215414
771817718
772117721
772817728
773417734
779517795
781317813
781617816
785117851
785617856
785917859
786517865
7898215796
7899215798
793017930
793517935
794117941
794617946
8005216010
8016216032
803518035
8089216178
813318133
813518135
8146216292
8166216332
8171216342
817218172
817418174
818618186
818718187
819118191
819518195
8225216450
823418234
823518235
8255216510
8257216514
8258216516
826218262
8267216534
827118271
827318273
8274216548
827518275
8279216558
8284216568
8298216596
8318216636
834618346
834818348
8359216718
836418364
836618366
8397216794
840218402
840618406
841018410
841518415
847418474
847818478
848418484
848518485
848918489
853118531
Total10027218429
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333635266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882a607a7c3a5ef
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6136303761376333
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_10.json b/autobahn/client/tungstenite_case_12_4_10.json new file mode 100644 index 0000000..0e7e89c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_10.json @@ -0,0 +1,1277 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 365, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 5141, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=365&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: lWkQ6xHykDklSh7z+TLtIw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: nFiwMxKmxvml1SpmLgKPGrEVFvc=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5937": 1, + "5938": 3, + "5943": 1, + "5944": 1, + "5948": 1, + "5949": 1, + "5953": 1, + "5961": 1, + "5962": 1, + "6024": 1, + "6030": 1, + "6031": 2, + "6036": 2, + "6067": 2, + "6071": 1, + "6072": 1, + "6086": 1, + "6088": 1, + "6116": 2, + "6139": 2, + "6153": 2, + "6157": 2, + "6159": 1, + "6164": 3, + "6166": 1, + "6172": 1, + "6175": 2, + "6181": 1, + "6182": 3, + "6186": 1, + "6187": 1, + "6207": 2, + "6217": 2, + "6250": 1, + "6253": 1, + "6258": 2, + "6271": 1, + "6273": 1, + "6274": 1, + "6275": 1, + "6278": 1, + "6279": 3, + "6299": 1, + "6303": 1, + "6353": 2, + "6377": 1, + "6419": 1, + "6423": 1, + "6429": 1, + "6430": 2, + "6441": 2, + "6463": 1, + "6469": 1, + "6487": 1, + "6497": 1, + "6498": 1, + "6505": 1, + "6516": 1, + "6522": 1, + "6556": 1, + "6557": 3, + "6596": 1, + "6598": 1, + "6635": 1, + "6639": 1, + "6659": 1, + "6725": 1, + "6726": 1, + "6727": 1, + "6729": 1, + "6731": 1, + "6732": 2, + "6733": 1, + "6737": 1, + "6742": 1, + "6744": 1, + "6746": 2, + "6756": 1, + "6757": 1, + "6783": 1, + "6785": 1, + "6786": 2, + "6787": 2, + "6788": 3, + "6789": 1, + "6790": 1, + "6791": 2, + "6794": 1, + "6796": 1, + "6799": 1, + "6805": 1, + "6812": 2, + "6813": 1, + "6819": 1, + "6821": 1, + "6868": 1, + "6932": 1, + "6935": 1, + "6936": 1, + "6940": 1, + "6946": 1, + "6950": 1, + "6953": 2, + "6954": 1, + "6956": 2, + "6957": 1, + "6958": 1, + "6966": 1, + "6968": 1, + "6969": 3, + "6971": 1, + "6974": 4, + "6975": 2, + "6976": 1, + "6978": 2, + "6979": 1, + "6981": 1, + "6983": 1, + "6985": 2, + "6986": 1, + "6991": 2, + "6993": 3, + "6996": 1, + "6998": 1, + "7005": 1, + "7006": 2, + "7007": 1, + "7009": 4, + "7010": 2, + "7011": 1, + "7012": 1, + "7014": 4, + "7015": 3, + "7016": 1, + "7017": 1, + "7019": 3, + "7021": 2, + "7024": 4, + "7025": 5, + "7026": 2, + "7027": 1, + "7028": 3, + "7030": 1, + "7031": 1, + "7032": 1, + "7033": 1, + "7034": 1, + "7036": 1, + "7037": 1, + "7039": 2, + "7040": 1, + "7041": 4, + "7043": 5, + "7046": 1, + "7047": 4, + "7049": 2, + "7051": 2, + "7052": 2, + "7054": 4, + "7055": 1, + "7056": 3, + "7057": 2, + "7058": 1, + "7059": 3, + "7060": 2, + "7061": 1, + "7062": 1, + "7063": 3, + "7065": 2, + "7066": 2, + "7067": 4, + "7068": 3, + "7069": 2, + "7070": 4, + "7071": 2, + "7072": 3, + "7073": 1, + "7074": 1, + "7076": 2, + "7077": 4, + "7078": 1, + "7079": 1, + "7080": 1, + "7082": 1, + "7084": 3, + "7085": 3, + "7086": 1, + "7087": 1, + "7089": 1, + "7093": 1, + "7096": 4, + "7099": 4, + "7100": 1, + "7101": 3, + "7102": 2, + "7103": 2, + "7104": 1, + "7106": 3, + "7108": 3, + "7109": 5, + "7111": 2, + "7112": 1, + "7115": 1, + "7117": 3, + "7118": 1, + "7119": 1, + "7120": 4, + "7121": 2, + "7122": 3, + "7123": 1, + "7124": 1, + "7125": 2, + "7126": 3, + "7127": 2, + "7128": 1, + "7130": 1, + "7131": 1, + "7132": 2, + "7133": 2, + "7134": 2, + "7135": 2, + "7136": 1, + "7138": 1, + "7140": 1, + "7142": 1, + "7143": 1, + "7144": 1, + "7145": 3, + "7146": 2, + "7147": 1, + "7148": 1, + "7149": 1, + "7155": 2, + "7156": 2, + "7157": 3, + "7158": 4, + "7159": 5, + "7160": 2, + "7162": 4, + "7163": 2, + "7165": 2, + "7166": 6, + "7167": 1, + "7168": 4, + "7169": 4, + "7170": 3, + "7171": 3, + "7172": 2, + "7173": 1, + "7175": 4, + "7177": 1, + "7178": 2, + "7179": 3, + "7180": 1, + "7182": 1, + "7183": 1, + "7185": 1, + "7186": 3, + "7187": 2, + "7188": 2, + "7190": 1, + "7191": 1, + "7192": 2, + "7193": 1, + "7195": 1, + "7199": 3, + "7202": 2, + "7203": 2, + "7204": 3, + "7205": 2, + "7206": 2, + "7207": 2, + "7208": 1, + "7209": 2, + "7210": 2, + "7211": 1, + "7214": 2, + "7216": 1, + "7217": 1, + "7218": 1, + "7219": 3, + "7222": 1, + "7224": 1, + "7225": 2, + "7226": 1, + "7231": 1, + "7232": 2, + "7234": 1, + "7235": 1, + "7237": 1, + "7238": 1, + "7241": 3, + "7242": 2, + "7243": 1, + "7246": 1, + "7249": 2, + "7250": 1, + "7254": 1, + "7255": 1, + "7256": 1, + "7257": 3, + "7258": 1, + "7259": 5, + "7260": 3, + "7261": 3, + "7262": 1, + "7263": 2, + "7265": 3, + "7269": 1, + "7270": 4, + "7271": 2, + "7273": 1, + "7274": 2, + "7275": 4, + "7276": 1, + "7277": 4, + "7278": 1, + "7281": 1, + "7282": 3, + "7284": 1, + "7285": 1, + "7286": 1, + "7287": 1, + "7289": 1, + "7293": 2, + "7294": 1, + "7295": 1, + "7297": 2, + "7298": 3, + "7299": 2, + "7302": 1, + "7303": 1, + "7305": 1, + "7307": 2, + "7308": 2, + "7309": 3, + "7310": 6, + "7313": 2, + "7314": 3, + "7319": 1, + "7320": 1, + "7324": 1, + "7325": 1, + "7329": 2, + "7331": 3, + "7332": 2, + "7333": 1, + "7334": 1, + "7336": 1, + "7337": 4, + "7338": 1, + "7340": 3, + "7341": 3, + "7342": 5, + "7343": 3, + "7344": 7, + "7345": 3, + "7347": 4, + "7348": 5, + "7349": 4, + "7350": 2, + "7351": 1, + "7352": 2, + "7353": 2, + "7354": 3, + "7355": 3, + "7356": 5, + "7357": 3, + "7358": 1, + "7359": 5, + "7360": 1, + "7361": 1, + "7362": 2, + "7363": 1, + "7365": 4, + "7366": 2, + "7367": 2, + "7368": 1, + "7369": 2, + "7370": 1, + "7371": 1, + "7372": 1, + "7373": 2, + "7374": 3, + "7375": 2, + "7377": 2, + "7378": 2, + "7379": 1, + "7380": 3, + "7382": 2, + "7383": 1, + "7384": 2, + "7386": 2, + "7388": 1, + "7390": 1, + "7391": 2, + "7394": 1, + "7396": 4, + "7397": 1, + "7398": 2, + "7399": 2, + "7400": 3, + "7401": 3, + "7402": 4, + "7403": 2, + "7404": 4, + "7405": 1, + "7406": 3, + "7407": 1, + "7408": 3, + "7409": 3, + "7411": 5, + "7412": 1, + "7413": 4, + "7414": 2, + "7415": 1, + "7416": 1, + "7417": 1, + "7418": 1, + "7419": 2, + "7420": 1, + "7422": 1, + "7423": 2, + "7424": 2, + "7427": 1, + "7428": 2, + "7430": 5, + "7431": 1, + "7432": 3, + "7433": 3, + "7434": 3, + "7435": 1, + "7436": 1, + "7437": 1, + "7438": 2, + "7439": 3, + "7440": 3, + "7441": 1, + "7442": 2, + "7445": 1, + "7446": 3, + "7448": 1, + "7449": 1, + "7450": 3, + "7451": 1, + "7452": 1, + "7453": 1, + "7455": 2, + "7464": 2, + "7467": 2, + "7468": 2, + "7473": 1, + "7474": 2, + "7475": 1, + "7477": 1, + "7478": 1, + "7479": 1, + "7480": 1, + "7481": 1, + "7482": 1, + "7483": 1, + "7487": 1, + "7494": 2, + "7495": 2, + "7496": 4, + "7497": 1, + "7501": 1, + "7502": 3, + "7505": 1, + "7510": 2, + "7512": 1, + "7513": 5, + "7514": 1, + "7516": 1, + "7517": 1, + "7520": 2, + "7621": 1, + "7624": 1, + "7625": 1, + "7628": 1, + "7631": 1, + "7632": 1, + "7635": 1, + "7636": 1, + "7640": 1, + "7641": 1, + "7642": 2, + "7645": 2, + "7646": 3, + "7647": 2, + "7648": 1, + "7649": 1, + "7650": 1, + "7651": 2, + "7652": 3, + "7661": 2, + "7680": 1, + "7685": 1, + "7699": 2, + "7703": 1, + "7707": 1, + "7711": 2, + "7722": 1, + "7725": 1, + "7732": 1, + "7738": 1, + "7799": 1, + "7817": 1, + "7820": 1, + "7855": 1, + "7860": 1, + "7863": 1, + "7869": 1, + "7902": 2, + "7903": 2, + "7934": 1, + "7939": 1, + "7945": 1, + "7950": 1, + "8009": 2, + "8020": 2, + "8039": 1, + "8093": 2, + "8137": 1, + "8139": 1, + "8150": 2, + "8170": 2, + "8175": 2, + "8176": 1, + "8178": 1, + "8190": 1, + "8191": 1, + "8195": 1, + "8204": 1, + "8229": 2, + "8238": 1, + "8239": 1, + "8259": 2, + "8261": 2, + "8262": 2, + "8266": 1, + "8271": 2, + "8275": 1, + "8277": 1, + "8278": 2, + "8279": 1, + "8283": 2, + "8288": 2, + "8302": 2, + "8322": 2, + "8350": 1, + "8352": 1, + "8363": 2, + "8368": 1, + "8370": 1, + "8401": 2, + "8406": 1, + "8410": 1, + "8414": 1, + "8419": 1, + "8478": 1, + "8482": 1, + "8488": 1, + "8489": 1, + "8493": 1, + "8535": 1 + }, + "started": "2025-09-11T20:09:46.540Z", + "trafficStats": { + "incomingCompressionRatio": 0.05503417584529367, + "incomingOctetsAppLevel": 131085419, + "incomingOctetsWebSocketLevel": 7214178, + "incomingOctetsWireLevel": 7222178, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0011089274481444734, + "outgoingCompressionRatio": 0.05503413770222606, + "outgoingOctetsAppLevel": 131085419, + "outgoingOctetsWebSocketLevel": 7214173, + "outgoingOctetsWireLevel": 7218173, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0005544641083600297, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "5933": 1, + "5934": 3, + "5939": 1, + "5940": 1, + "5944": 1, + "5945": 1, + "5949": 1, + "5957": 1, + "5958": 1, + "6020": 1, + "6026": 1, + "6027": 2, + "6032": 2, + "6063": 2, + "6067": 1, + "6068": 1, + "6082": 1, + "6084": 1, + "6112": 2, + "6135": 2, + "6149": 2, + "6153": 2, + "6155": 1, + "6160": 3, + "6162": 1, + "6168": 1, + "6171": 2, + "6177": 1, + "6178": 3, + "6182": 1, + "6183": 1, + "6203": 2, + "6213": 2, + "6246": 1, + "6249": 1, + "6254": 2, + "6267": 1, + "6269": 1, + "6270": 1, + "6271": 1, + "6274": 1, + "6275": 3, + "6295": 1, + "6299": 1, + "6349": 2, + "6373": 1, + "6415": 1, + "6419": 1, + "6425": 1, + "6426": 2, + "6437": 2, + "6459": 1, + "6465": 1, + "6483": 1, + "6493": 1, + "6494": 1, + "6501": 1, + "6512": 1, + "6518": 1, + "6552": 1, + "6553": 3, + "6592": 1, + "6594": 1, + "6631": 1, + "6635": 1, + "6655": 1, + "6721": 1, + "6722": 1, + "6723": 1, + "6725": 1, + "6727": 1, + "6728": 2, + "6729": 1, + "6733": 1, + "6738": 1, + "6740": 1, + "6742": 2, + "6752": 1, + "6753": 1, + "6779": 1, + "6781": 1, + "6782": 2, + "6783": 2, + "6784": 3, + "6785": 1, + "6786": 1, + "6787": 2, + "6790": 1, + "6792": 1, + "6795": 1, + "6801": 1, + "6808": 2, + "6809": 1, + "6815": 1, + "6817": 1, + "6864": 1, + "6928": 1, + "6931": 1, + "6932": 1, + "6936": 1, + "6942": 1, + "6946": 1, + "6949": 2, + "6950": 1, + "6952": 2, + "6953": 1, + "6954": 1, + "6962": 1, + "6964": 1, + "6965": 3, + "6967": 1, + "6970": 4, + "6971": 2, + "6972": 1, + "6974": 2, + "6975": 1, + "6977": 1, + "6979": 1, + "6981": 2, + "6982": 1, + "6987": 2, + "6989": 3, + "6992": 1, + "6994": 1, + "7001": 1, + "7002": 2, + "7003": 1, + "7005": 4, + "7006": 2, + "7007": 1, + "7008": 1, + "7010": 4, + "7011": 3, + "7012": 1, + "7013": 1, + "7015": 3, + "7017": 2, + "7020": 4, + "7021": 5, + "7022": 2, + "7023": 1, + "7024": 3, + "7026": 1, + "7027": 1, + "7028": 1, + "7029": 1, + "7030": 1, + "7032": 1, + "7033": 1, + "7035": 2, + "7036": 1, + "7037": 4, + "7039": 5, + "7042": 1, + "7043": 4, + "7045": 2, + "7047": 2, + "7048": 2, + "7050": 4, + "7051": 1, + "7052": 3, + "7053": 2, + "7054": 1, + "7055": 3, + "7056": 2, + "7057": 1, + "7058": 1, + "7059": 3, + "7061": 2, + "7062": 2, + "7063": 4, + "7064": 3, + "7065": 2, + "7066": 4, + "7067": 2, + "7068": 3, + "7069": 1, + "7070": 1, + "7072": 2, + "7073": 4, + "7074": 1, + "7075": 1, + "7076": 1, + "7078": 1, + "7080": 3, + "7081": 3, + "7082": 1, + "7083": 1, + "7085": 1, + "7089": 1, + "7092": 4, + "7095": 4, + "7096": 1, + "7097": 3, + "7098": 2, + "7099": 2, + "7100": 1, + "7102": 3, + "7104": 3, + "7105": 5, + "7107": 2, + "7108": 1, + "7111": 1, + "7113": 3, + "7114": 1, + "7115": 1, + "7116": 4, + "7117": 2, + "7118": 3, + "7119": 1, + "7120": 1, + "7121": 2, + "7122": 3, + "7123": 2, + "7124": 1, + "7126": 1, + "7127": 1, + "7128": 2, + "7129": 2, + "7130": 2, + "7131": 2, + "7132": 1, + "7134": 1, + "7136": 1, + "7138": 1, + "7139": 1, + "7140": 1, + "7141": 3, + "7142": 2, + "7143": 1, + "7144": 1, + "7145": 1, + "7151": 2, + "7152": 2, + "7153": 3, + "7154": 4, + "7155": 5, + "7156": 2, + "7158": 4, + "7159": 2, + "7161": 2, + "7162": 6, + "7163": 1, + "7164": 4, + "7165": 4, + "7166": 3, + "7167": 3, + "7168": 2, + "7169": 1, + "7171": 4, + "7173": 1, + "7174": 2, + "7175": 3, + "7176": 1, + "7178": 1, + "7179": 1, + "7181": 1, + "7182": 3, + "7183": 2, + "7184": 2, + "7186": 1, + "7187": 1, + "7188": 2, + "7189": 1, + "7191": 1, + "7195": 3, + "7198": 2, + "7199": 2, + "7200": 3, + "7201": 2, + "7202": 2, + "7203": 2, + "7204": 1, + "7205": 2, + "7206": 2, + "7207": 1, + "7210": 2, + "7212": 1, + "7213": 1, + "7214": 1, + "7215": 3, + "7218": 1, + "7220": 1, + "7221": 2, + "7222": 1, + "7227": 1, + "7228": 2, + "7230": 1, + "7231": 1, + "7233": 1, + "7234": 1, + "7237": 3, + "7238": 2, + "7239": 1, + "7242": 1, + "7245": 2, + "7246": 1, + "7250": 1, + "7251": 1, + "7252": 1, + "7253": 3, + "7254": 1, + "7255": 5, + "7256": 3, + "7257": 3, + "7258": 1, + "7259": 2, + "7261": 3, + "7265": 1, + "7266": 4, + "7267": 2, + "7269": 1, + "7270": 2, + "7271": 4, + "7272": 1, + "7273": 4, + "7274": 1, + "7277": 1, + "7278": 3, + "7280": 1, + "7281": 1, + "7282": 1, + "7283": 1, + "7285": 1, + "7289": 2, + "7290": 1, + "7291": 1, + "7293": 2, + "7294": 3, + "7295": 2, + "7298": 1, + "7299": 1, + "7301": 1, + "7303": 2, + "7304": 2, + "7305": 3, + "7306": 6, + "7309": 2, + "7310": 3, + "7315": 1, + "7316": 1, + "7320": 1, + "7321": 1, + "7325": 2, + "7327": 3, + "7328": 2, + "7329": 1, + "7330": 1, + "7332": 1, + "7333": 4, + "7334": 1, + "7336": 3, + "7337": 3, + "7338": 5, + "7339": 3, + "7340": 7, + "7341": 3, + "7343": 4, + "7344": 5, + "7345": 4, + "7346": 2, + "7347": 1, + "7348": 2, + "7349": 2, + "7350": 3, + "7351": 3, + "7352": 5, + "7353": 3, + "7354": 1, + "7355": 5, + "7356": 1, + "7357": 1, + "7358": 2, + "7359": 1, + "7361": 4, + "7362": 2, + "7363": 2, + "7364": 1, + "7365": 2, + "7366": 1, + "7367": 1, + "7368": 1, + "7369": 2, + "7370": 3, + "7371": 2, + "7373": 2, + "7374": 2, + "7375": 1, + "7376": 3, + "7378": 2, + "7379": 1, + "7380": 2, + "7382": 2, + "7384": 1, + "7386": 1, + "7387": 2, + "7390": 1, + "7392": 4, + "7393": 1, + "7394": 2, + "7395": 2, + "7396": 3, + "7397": 3, + "7398": 4, + "7399": 2, + "7400": 4, + "7401": 1, + "7402": 3, + "7403": 1, + "7404": 3, + "7405": 3, + "7407": 5, + "7408": 1, + "7409": 4, + "7410": 2, + "7411": 1, + "7412": 1, + "7413": 1, + "7414": 1, + "7415": 2, + "7416": 1, + "7418": 1, + "7419": 2, + "7420": 2, + "7423": 1, + "7424": 2, + "7426": 5, + "7427": 1, + "7428": 3, + "7429": 3, + "7430": 3, + "7431": 1, + "7432": 1, + "7433": 1, + "7434": 2, + "7435": 3, + "7436": 3, + "7437": 1, + "7438": 2, + "7441": 1, + "7442": 3, + "7444": 1, + "7445": 1, + "7446": 3, + "7447": 1, + "7448": 1, + "7449": 1, + "7451": 2, + "7460": 2, + "7463": 2, + "7464": 2, + "7469": 1, + "7470": 2, + "7471": 1, + "7473": 1, + "7474": 1, + "7475": 1, + "7476": 1, + "7477": 1, + "7478": 1, + "7479": 1, + "7483": 1, + "7490": 2, + "7491": 2, + "7492": 4, + "7493": 1, + "7497": 1, + "7498": 3, + "7501": 1, + "7506": 2, + "7508": 1, + "7509": 5, + "7510": 1, + "7512": 1, + "7513": 1, + "7516": 2, + "7617": 1, + "7620": 1, + "7621": 1, + "7624": 1, + "7627": 1, + "7628": 1, + "7631": 1, + "7632": 1, + "7636": 1, + "7637": 1, + "7638": 2, + "7641": 2, + "7642": 3, + "7643": 2, + "7644": 1, + "7645": 1, + "7646": 1, + "7647": 2, + "7648": 3, + "7657": 2, + "7676": 1, + "7681": 1, + "7695": 2, + "7699": 1, + "7703": 1, + "7707": 2, + "7718": 1, + "7721": 1, + "7728": 1, + "7734": 1, + "7795": 1, + "7813": 1, + "7816": 1, + "7851": 1, + "7856": 1, + "7859": 1, + "7865": 1, + "7898": 2, + "7899": 2, + "7930": 1, + "7935": 1, + "7941": 1, + "7946": 1, + "8005": 2, + "8016": 2, + "8035": 1, + "8089": 2, + "8133": 1, + "8135": 1, + "8146": 2, + "8166": 2, + "8171": 2, + "8172": 1, + "8174": 1, + "8186": 1, + "8187": 1, + "8191": 1, + "8195": 1, + "8225": 2, + "8234": 1, + "8235": 1, + "8255": 2, + "8257": 2, + "8258": 2, + "8262": 1, + "8267": 2, + "8271": 1, + "8273": 1, + "8274": 2, + "8275": 1, + "8279": 2, + "8284": 2, + "8298": 2, + "8318": 2, + "8346": 1, + "8348": 1, + "8359": 2, + "8364": 1, + "8366": 1, + "8397": 2, + "8402": 1, + "8406": 1, + "8410": 1, + "8415": 1, + "8474": 1, + "8478": 1, + "8484": 1, + "8485": 1, + "8489": 1, + "8531": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333635266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a607a7c3a5ef" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a607a7c3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_11.html b/autobahn/client/tungstenite_case_12_4_11.html new file mode 100644 index 0000000..39dd482 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_11.html @@ -0,0 +1,981 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.11 : Pass - 752 ms @ 2025-09-11T20:09:51.683Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=366&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: s/qywpcKjZYK2e0sQH/gKg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 9v1He/WNXsHcQKiKd704ptT5dTg=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1771177
1782356
1792358
1802360
1812362
1821182
1833549
1842368
1855925
18661116
18761122
1883564
1891189
1901190
1911191
1921192
1935965
1941194
1951195
1962392
1973591
1981198
2001200
2021202
2031203
2083624
2091209
2101210
2122424
2134852
2152430
2171217
2201220
2211221
2221222
2241224
2253675
22661356
2271227
22851140
2292458
2303690
2313693
2343702
2354940
2363708
2383714
2392478
2402480
2413723
2422484
2431243
24451220
2452490
2462492
2473741
2482496
2493747
25051250
25192259
25271764
25341012
2542508
25541020
25741028
2581258
2611261
2632526
2661266
2702540
2712542
27241088
2733819
2741274
2753825
27641104
2781278
2791279
28051400
2811281
2823846
2832566
2841284
285102850
2862572
28761722
28851440
2892578
29051450
2913873
29241168
29351465
29441176
29561770
2961296
2972594
29841192
2991299
3001300
3011301
30341212
3041304
3051305
3062612
3072614
3082616
31141244
3123936
3131313
31451570
31541260
31641264
31761902
3183954
3201320
3212642
3223966
32341292
3243972
32561950
32682608
32851640
3312662
3341334
3352670
3362672
3371337
3381338
3391339
3402680
3411341
3422684
3431343
3442688
34531035
3461346
3472694
34831044
34931047
35041400
35251760
35331059
3541354
35562130
3562712
35751785
35831074
35962154
3602720
3612722
36241448
3632726
36451820
36541460
3662732
36793303
36851840
36982952
370124440
37151855
37272604
37393357
374124488
37531125
37662256
37741508
37841512
37941516
380103800
38141524
3822764
3832766
3841384
38531155
38683088
38741548
3882776
38951945
39051950
39231176
3941394
3952790
3961396
39841592
3992798
4001400
4041404
4071407
4082816
4091409
41031230
4112822
41241648
4141414
4152830
41641664
41783336
41831254
41941676
42031260
42141684
42241688
4231423
42431272
4252850
42631278
4271427
42862568
42962574
4302860
4322864
4331433
4341434
43541740
4371437
4401440
4411441
44231326
44431332
4451445
4461446
4472894
44852240
4492898
45031350
4511451
45252260
45341812
4542908
4551455
45631368
4572914
4582916
4591459
46031380
4611461
46341852
4642928
4661466
4691469
4732946
4742948
4751475
4781478
4802960
48231446
48331449
4842968
48531455
4871487
4891489
4902980
4912982
4932986
4941494
4951495
49652480
4972994
4981498
49931497
50021000
5021502
5031503
50452520
50531515
50621012
5081508
5091509
51031530
5121512
5151515
51721034
5211521
5381538
53921078
5421542
5431543
54521090
5471547
5481548
5501550
55421108
5571557
5581558
56142244
5621562
5631563
5641564
5681568
5691569
5721572
5751575
57721154
57921158
5801580
5811581
5821582
58321166
58421168
58521170
58621172
5891589
5921592
5961596
5971597
59821196
60321206
6051605
60721214
61021220
61121222
6131613
6141614
61631848
6171617
6201620
6281628
6331633
6351635
63631908
6371637
6381638
6441644
64531935
65142604
65221304
6551655
66021320
6611661
6641664
6661666
6681668
6721672
6741674
68021360
6811681
6821682
6851685
6911691
6951695
6981698
7021702
71232136
7151715
7161716
7171717
7191719
72421448
7351735
7391739
74121482
74321486
75021500
75632268
75721514
75821516
7591759
76021520
76421528
7651765
7661766
7681768
7701770
77121542
7761776
77832334
78021560
78121562
78321566
7841784
7851785
8051805
8131813
8431843
8491849
8601860
8851885
8861886
8911891
9021902
9281928
9291929
9331933
9461946
94721894
9561956
9621962
96621932
97121942
97321946
9741974
9891989
9931993
102711027
104911049
105611056
106511065
107711077
114711147
117211172
119611196
121111211
121511215
122311223
123511235
124211242
124511245
125911259
126322526
126511265
126611266
126711267
131111311
132411324
132711327
133311333
135511355
156011560
156511565
157611576
158711587
159511595
170311703
172011720
173411734
176311763
176811768
178211782
180011800
181511815
183111831
184311843
205712057
206512065
208512085
210012100
210712107
212212122
212412124
214912149
215812158
219212192
221912219
228812288
Total1002467463
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
224
326
4520
6212
7214
8216
9436
10550
11555
12112
13339
14456
16116
17234
186108
19238
20480
21484
22122
2311253
24372
258200
266156
274108
285140
294116
305150
317217
325160
337231
34268
353105
366216
37137
38276
393117
40140
415205
42142
435215
443132
455225
464184
47294
494196
504200
512102
525260
536318
545270
556330
563168
57157
58158
594236
603180
616366
624248
637441
649576
652130
667462
672134
683204
694276
70170
71171
72172
732146
743222
752150
76176
77177
783234
792158
804320
81181
822164
833249
84184
854340
864344
874348
884352
892178
905450
913273
923276
938744
942188
957665
964384
976582
985490
993297
1004400
1012202
1026612
1034412
1043312
1059945
1065530
1078856
108121296
1095545
1108880
111101110
112131456
1133339
1146684
1155575
1164464
1177819
118131534
1195595
1203360
1212242
1221122
1233369
1248992
1254500
1263378
12781016
1306780
1323396
1341134
1356810
1363408
1384552
1393417
1402280
1444576
1451145
1471147
1483444
1491149
1504600
1512302
1525760
1541154
1552310
1566936
15791413
1584632
1594636
1603480
1615805
1624648
1632326
1645820
1653495
1664664
1672334
16871176
16971183
1702340
1722344
1732346
1744696
17591575
1762352
1773531
1781178
1794716
1804720
18161086
182101820
18371281
18471288
1852370
1863558
1874748
18861128
18971323
1905950
1912382
19271344
19371351
19461164
1952390
19671372
1972394
1983594
1995995
2004800
2014804
2021202
20351015
20451020
2051205
2062412
2071207
2084832
20951045
2112422
2133639
2143642
2151215
2161216
2173651
2182436
2191219
2203660
2214884
22291998
22361338
22471568
22571575
2263678
22761362
2281228
2291229
23051150
23171617
2323696
2332466
23461404
23551175
23681888
23761422
2384952
23951195
240102400
2414964
24261452
24351215
24492196
24561470
24671722
24792223
248102480
24961494
25061500
25141004
2523756
2533759
2542508
25541020
2573771
2592518
2601278332280
Total2280467550
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01278
11000
81
Total2279
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333636266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882f134cd88f2dc
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6631333463643838
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_11.json b/autobahn/client/tungstenite_case_12_4_11.json new file mode 100644 index 0000000..a0e7b7f --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_11.json @@ -0,0 +1,828 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 366, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 752, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=366&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: s/qywpcKjZYK2e0sQH/gKg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 9v1He/WNXsHcQKiKd704ptT5dTg=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "177": 1, + "178": 2, + "179": 2, + "180": 2, + "181": 2, + "182": 1, + "183": 3, + "184": 2, + "185": 5, + "186": 6, + "187": 6, + "188": 3, + "189": 1, + "190": 1, + "191": 1, + "192": 1, + "193": 5, + "194": 1, + "195": 1, + "196": 2, + "197": 3, + "198": 1, + "200": 1, + "202": 1, + "203": 1, + "208": 3, + "209": 1, + "210": 1, + "212": 2, + "213": 4, + "215": 2, + "217": 1, + "220": 1, + "221": 1, + "222": 1, + "224": 1, + "225": 3, + "226": 6, + "227": 1, + "228": 5, + "229": 2, + "230": 3, + "231": 3, + "234": 3, + "235": 4, + "236": 3, + "238": 3, + "239": 2, + "240": 2, + "241": 3, + "242": 2, + "243": 1, + "244": 5, + "245": 2, + "246": 2, + "247": 3, + "248": 2, + "249": 3, + "250": 5, + "251": 9, + "252": 7, + "253": 4, + "254": 2, + "255": 4, + "257": 4, + "258": 1, + "261": 1, + "263": 2, + "266": 1, + "270": 2, + "271": 2, + "272": 4, + "273": 3, + "274": 1, + "275": 3, + "276": 4, + "278": 1, + "279": 1, + "280": 5, + "281": 1, + "282": 3, + "283": 2, + "284": 1, + "285": 10, + "286": 2, + "287": 6, + "288": 5, + "289": 2, + "290": 5, + "291": 3, + "292": 4, + "293": 5, + "294": 4, + "295": 6, + "296": 1, + "297": 2, + "298": 4, + "299": 1, + "300": 1, + "301": 1, + "303": 4, + "304": 1, + "305": 1, + "306": 2, + "307": 2, + "308": 2, + "311": 4, + "312": 3, + "313": 1, + "314": 5, + "315": 4, + "316": 4, + "317": 6, + "318": 3, + "320": 1, + "321": 2, + "322": 3, + "323": 4, + "324": 3, + "325": 6, + "326": 8, + "328": 5, + "331": 2, + "334": 1, + "335": 2, + "336": 2, + "337": 1, + "338": 1, + "339": 1, + "340": 2, + "341": 1, + "342": 2, + "343": 1, + "344": 2, + "345": 3, + "346": 1, + "347": 2, + "348": 3, + "349": 3, + "350": 4, + "352": 5, + "353": 3, + "354": 1, + "355": 6, + "356": 2, + "357": 5, + "358": 3, + "359": 6, + "360": 2, + "361": 2, + "362": 4, + "363": 2, + "364": 5, + "365": 4, + "366": 2, + "367": 9, + "368": 5, + "369": 8, + "370": 12, + "371": 5, + "372": 7, + "373": 9, + "374": 12, + "375": 3, + "376": 6, + "377": 4, + "378": 4, + "379": 4, + "380": 10, + "381": 4, + "382": 2, + "383": 2, + "384": 1, + "385": 3, + "386": 8, + "387": 4, + "388": 2, + "389": 5, + "390": 5, + "392": 3, + "394": 1, + "395": 2, + "396": 1, + "398": 4, + "399": 2, + "400": 1, + "404": 1, + "407": 1, + "408": 2, + "409": 1, + "410": 3, + "411": 2, + "412": 4, + "414": 1, + "415": 2, + "416": 4, + "417": 8, + "418": 3, + "419": 4, + "420": 3, + "421": 4, + "422": 4, + "423": 1, + "424": 3, + "425": 2, + "426": 3, + "427": 1, + "428": 6, + "429": 6, + "430": 2, + "432": 2, + "433": 1, + "434": 1, + "435": 4, + "437": 1, + "440": 1, + "441": 1, + "442": 3, + "444": 3, + "445": 1, + "446": 1, + "447": 2, + "448": 5, + "449": 2, + "450": 3, + "451": 1, + "452": 5, + "453": 4, + "454": 2, + "455": 1, + "456": 3, + "457": 2, + "458": 2, + "459": 1, + "460": 3, + "461": 1, + "463": 4, + "464": 2, + "466": 1, + "469": 1, + "473": 2, + "474": 2, + "475": 1, + "478": 1, + "480": 2, + "482": 3, + "483": 3, + "484": 2, + "485": 3, + "487": 1, + "489": 1, + "490": 2, + "491": 2, + "493": 2, + "494": 1, + "495": 1, + "496": 5, + "497": 2, + "498": 1, + "499": 3, + "500": 2, + "502": 1, + "503": 1, + "504": 5, + "505": 3, + "506": 2, + "508": 1, + "509": 1, + "510": 3, + "512": 1, + "515": 1, + "517": 2, + "521": 1, + "538": 1, + "539": 2, + "542": 1, + "543": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "554": 2, + "557": 1, + "558": 1, + "561": 4, + "562": 1, + "563": 1, + "564": 1, + "568": 1, + "569": 1, + "572": 1, + "575": 1, + "577": 2, + "579": 2, + "580": 1, + "581": 1, + "582": 1, + "583": 2, + "584": 2, + "585": 2, + "586": 2, + "589": 1, + "592": 1, + "596": 1, + "597": 1, + "598": 2, + "603": 2, + "605": 1, + "607": 2, + "610": 2, + "611": 2, + "613": 1, + "614": 1, + "616": 3, + "617": 1, + "620": 1, + "628": 1, + "633": 1, + "635": 1, + "636": 3, + "637": 1, + "638": 1, + "644": 1, + "645": 3, + "651": 4, + "652": 2, + "655": 1, + "660": 2, + "661": 1, + "664": 1, + "666": 1, + "668": 1, + "672": 1, + "674": 1, + "680": 2, + "681": 1, + "682": 1, + "685": 1, + "691": 1, + "695": 1, + "698": 1, + "702": 1, + "712": 3, + "715": 1, + "716": 1, + "717": 1, + "719": 1, + "724": 2, + "735": 1, + "739": 1, + "741": 2, + "743": 2, + "750": 2, + "756": 3, + "757": 2, + "758": 2, + "759": 1, + "760": 2, + "764": 2, + "765": 1, + "766": 1, + "768": 1, + "770": 1, + "771": 2, + "776": 1, + "778": 3, + "780": 2, + "781": 2, + "783": 2, + "784": 1, + "785": 1, + "805": 1, + "813": 1, + "843": 1, + "849": 1, + "860": 1, + "885": 1, + "886": 1, + "891": 1, + "902": 1, + "928": 1, + "929": 1, + "933": 1, + "946": 1, + "947": 2, + "956": 1, + "962": 1, + "966": 2, + "971": 2, + "973": 2, + "974": 1, + "989": 1, + "993": 1, + "1027": 1, + "1049": 1, + "1056": 1, + "1065": 1, + "1077": 1, + "1147": 1, + "1172": 1, + "1196": 1, + "1211": 1, + "1215": 1, + "1223": 1, + "1235": 1, + "1242": 1, + "1245": 1, + "1259": 1, + "1263": 2, + "1265": 1, + "1266": 1, + "1267": 1, + "1311": 1, + "1324": 1, + "1327": 1, + "1333": 1, + "1355": 1, + "1560": 1, + "1565": 1, + "1576": 1, + "1587": 1, + "1595": 1, + "1703": 1, + "1720": 1, + "1734": 1, + "1763": 1, + "1768": 1, + "1782": 1, + "1800": 1, + "1815": 1, + "1831": 1, + "1843": 1, + "2057": 1, + "2065": 1, + "2085": 1, + "2100": 1, + "2107": 1, + "2122": 1, + "2124": 1, + "2149": 1, + "2158": 1, + "2192": 1, + "2219": 1, + "2288": 1 + }, + "started": "2025-09-11T20:09:51.683Z", + "trafficStats": { + "incomingCompressionRatio": 0.056048716702163125, + "incomingOctetsAppLevel": 8192837, + "incomingOctetsWebSocketLevel": 459198, + "incomingOctetsWireLevel": 467198, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.01742167866584785, + "outgoingCompressionRatio": 0.056048716702163125, + "outgoingOctetsAppLevel": 8192837, + "outgoingOctetsWebSocketLevel": 459198, + "outgoingOctetsWireLevel": 467294, + "outgoingWebSocketFrames": 2278, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.017630738809838023, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 1278, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 2, + "3": 2, + "4": 5, + "6": 2, + "7": 2, + "8": 2, + "9": 4, + "10": 5, + "11": 5, + "12": 1, + "13": 3, + "14": 4, + "16": 1, + "17": 2, + "18": 6, + "19": 2, + "20": 4, + "21": 4, + "22": 1, + "23": 11, + "24": 3, + "25": 8, + "26": 6, + "27": 4, + "28": 5, + "29": 4, + "30": 5, + "31": 7, + "32": 5, + "33": 7, + "34": 2, + "35": 3, + "36": 6, + "37": 1, + "38": 2, + "39": 3, + "40": 1, + "41": 5, + "42": 1, + "43": 5, + "44": 3, + "45": 5, + "46": 4, + "47": 2, + "49": 4, + "50": 4, + "51": 2, + "52": 5, + "53": 6, + "54": 5, + "55": 6, + "56": 3, + "57": 1, + "58": 1, + "59": 4, + "60": 3, + "61": 6, + "62": 4, + "63": 7, + "64": 9, + "65": 2, + "66": 7, + "67": 2, + "68": 3, + "69": 4, + "70": 1, + "71": 1, + "72": 1, + "73": 2, + "74": 3, + "75": 2, + "76": 1, + "77": 1, + "78": 3, + "79": 2, + "80": 4, + "81": 1, + "82": 2, + "83": 3, + "84": 1, + "85": 4, + "86": 4, + "87": 4, + "88": 4, + "89": 2, + "90": 5, + "91": 3, + "92": 3, + "93": 8, + "94": 2, + "95": 7, + "96": 4, + "97": 6, + "98": 5, + "99": 3, + "100": 4, + "101": 2, + "102": 6, + "103": 4, + "104": 3, + "105": 9, + "106": 5, + "107": 8, + "108": 12, + "109": 5, + "110": 8, + "111": 10, + "112": 13, + "113": 3, + "114": 6, + "115": 5, + "116": 4, + "117": 7, + "118": 13, + "119": 5, + "120": 3, + "121": 2, + "122": 1, + "123": 3, + "124": 8, + "125": 4, + "126": 3, + "127": 8, + "130": 6, + "132": 3, + "134": 1, + "135": 6, + "136": 3, + "138": 4, + "139": 3, + "140": 2, + "144": 4, + "145": 1, + "147": 1, + "148": 3, + "149": 1, + "150": 4, + "151": 2, + "152": 5, + "154": 1, + "155": 2, + "156": 6, + "157": 9, + "158": 4, + "159": 4, + "160": 3, + "161": 5, + "162": 4, + "163": 2, + "164": 5, + "165": 3, + "166": 4, + "167": 2, + "168": 7, + "169": 7, + "170": 2, + "172": 2, + "173": 2, + "174": 4, + "175": 9, + "176": 2, + "177": 3, + "178": 1, + "179": 4, + "180": 4, + "181": 6, + "182": 10, + "183": 7, + "184": 7, + "185": 2, + "186": 3, + "187": 4, + "188": 6, + "189": 7, + "190": 5, + "191": 2, + "192": 7, + "193": 7, + "194": 6, + "195": 2, + "196": 7, + "197": 2, + "198": 3, + "199": 5, + "200": 4, + "201": 4, + "202": 1, + "203": 5, + "204": 5, + "205": 1, + "206": 2, + "207": 1, + "208": 4, + "209": 5, + "211": 2, + "213": 3, + "214": 3, + "215": 1, + "216": 1, + "217": 3, + "218": 2, + "219": 1, + "220": 3, + "221": 4, + "222": 9, + "223": 6, + "224": 7, + "225": 7, + "226": 3, + "227": 6, + "228": 1, + "229": 1, + "230": 5, + "231": 7, + "232": 3, + "233": 2, + "234": 6, + "235": 5, + "236": 8, + "237": 6, + "238": 4, + "239": 5, + "240": 10, + "241": 4, + "242": 6, + "243": 5, + "244": 9, + "245": 6, + "246": 7, + "247": 9, + "248": 10, + "249": 6, + "250": 6, + "251": 4, + "252": 3, + "253": 3, + "254": 2, + "255": 4, + "257": 3, + "259": 2, + "260": 1278 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333636266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f134cd88f2dc" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f134cd88" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_12.html b/autobahn/client/tungstenite_case_12_4_12.html new file mode 100644 index 0000000..1868108 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_12.html @@ -0,0 +1,1087 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.12 : Pass - 772 ms @ 2025-09-11T20:09:52.436Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=367&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: km3nNlHbak72JqLs8Yzz/Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: OyApnjaejJPbo3vSmkUoZHV1r18=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
3311331
3321332
33431002
3352670
3381338
3421342
3471347
3511351
3551355
3681368
3741374
3751375
3791379
3851385
3951395
3981398
3991399
4001400
4031403
4131413
41631248
4191419
4201420
4212842
42341692
42441696
4251425
42731281
4282856
4291429
43031290
43131293
4351435
4371437
43931317
4411441
4431443
4441444
44531335
44631338
44731341
44831344
44983592
45041800
4522904
45373171
45431362
45583640
45641824
45752285
4591459
4641464
4652930
4691469
5181518
5231523
5251525
5261526
52731581
5281528
5291529
53121062
5401540
5411541
5421542
5431543
5441544
5451545
55321106
5561556
55821116
5621562
56331689
5641564
56521130
56621132
5681568
5691569
5721572
57421148
5761576
5771577
5781578
5791579
5801580
5811581
58221164
58421168
5871587
5931593
5941594
5981598
60821216
60921218
6101610
61121222
6121612
61321226
6151615
61621232
6181618
6201620
62121242
6231623
6241624
6251625
6261626
62821256
6291629
63021260
63121262
63221264
6331633
63431902
6351635
63642544
63731911
6381638
63963834
64063840
64163846
64285136
64331929
64453220
645117095
6461646
64742588
64863888
64931947
65021300
65142604
65295868
6531653
6541654
65553275
65742628
65853290
65942636
66063960
66142644
66242648
66353315
6641664
66531995
66621332
6671667
66842672
66942676
6701670
67185368
67221344
67332019
67432022
67532025
67632028
67832034
67921358
68032040
6811681
68221364
68353415
68432052
68521370
68653430
68764122
68932067
69032070
69142764
69274844
69321386
69464164
69532085
69642784
69732091
69864188
69953495
70053500
7011701
70274914
70353515
70432112
7051705
7061706
70764242
70842832
70964254
71074970
7121712
71342852
71432142
71542860
7161716
71721434
71921438
72021440
72142884
72264332
72342892
7251725
72642904
7271727
72842912
72942916
73032190
7311731
7331733
73421468
7351735
73642944
73732211
73821476
73932217
74232226
74332229
74542980
7461746
74721494
7511751
75332259
7581758
7611761
76221524
76332289
7701770
7741774
77521550
7761776
7811781
7841784
7911791
7991799
8001800
8021802
8061806
8071807
8111811
8131813
8151815
8181818
8201820
8211821
8251825
8261826
8291829
8301830
8311831
8321832
8341834
83532505
8361836
8371837
8381838
8421842
8431843
8451845
8491849
8521852
8551855
8581858
8671867
86821736
8701870
8711871
8751875
8801880
8841884
8851885
8881888
8891889
8901890
8931893
8951895
8961896
8991899
9001900
9021902
9091909
9101910
91121822
91254560
91332739
9171917
9181918
9241924
9291929
93132793
9341934
9371937
9411941
9421942
9451945
94932847
9541954
9591959
9601960
96232886
96321926
96421928
9681968
9751975
97621952
9781978
98021960
98132943
98221964
9831983
98532955
9891989
9901990
99121982
9931993
9941994
99521990
9971997
99821996
100322006
100422008
100522010
100633018
100711007
100811008
101122022
101322026
101411014
101611016
101711017
101811018
101955095
102011020
102111021
102311023
102422048
102611026
102833084
102911029
103022060
103111031
103211032
103311033
103411034
103511035
103633108
103811038
104011040
104133123
104211042
104411044
104722094
105122102
105422108
105511055
105733171
105811058
105922118
106133183
106233186
106311063
106411064
106611066
106722134
106822136
106911069
107311073
107811078
108311083
108411084
108511085
108733261
108911089
109011090
109311093
109611096
110211102
110411104
110511105
111011110
111222224
111511115
111811118
111911119
112011120
112211122
112422248
112511125
112611126
112911129
113022260
113122262
113311133
113411134
113611136
114022280
114322286
114522290
115011150
115411154
115511155
115611156
115711157
115811158
116711167
117111171
118411184
118511185
118722374
119011190
119133573
119322386
119633588
119711197
119822396
119911199
120111201
120211202
120411204
120622412
120911209
121511215
122011220
123211232
123411234
123611236
123711237
124211242
124411244
124611246
124811248
127011270
127622552
128111281
128611286
128811288
129511295
130111301
130211302
130422608
130611306
130711307
130822616
130933927
131411314
131511315
132511325
133611336
134911349
135111351
135511355
135711357
136011360
136611366
139111391
139911399
140322806
140511405
144911449
148511485
151911519
152711527
153711537
154411544
155511555
155911559
156511565
157011570
157111571
157234716
157911579
158111581
158323166
158511585
158723174
158811588
158911589
159234776
159411594
159611596
160123202
160211602
160811608
164011640
164311643
164411644
164711647
164923298
165211652
165611656
166511665
167923358
168011680
169911699
170011700
170246808
170523410
184011840
185911859
187211872
188711887
191011910
193011930
197111971
197911979
202012020
207412074
207712077
208512085
209512095
212212122
214612146
228112281
232612326
234912349
236312363
237712377
237912379
240012400
241512415
244812448
247812478
248012480
248224964
248312483
249112491
249637488
249712497
250412504
250612506
251112511
251212512
251612516
251712517
251825036
251912519
252325046
252712527
253712537
254112541
254212542
254412544
254712547
255512555
255712557
255912559
256812568
257112571
257812578
261512615
Total1002905932
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
2510
313
428
5315
6318
7214
8216
9436
10330
11444
12224
13339
14114
15115
16232
17468
18236
20240
21363
22366
236138
24372
25375
26252
274108
284112
294116
30390
314124
324128
33266
34134
35270
36136
374148
383114
395195
40280
414164
42142
43286
44288
455225
463138
474188
483144
49149
505250
512102
522104
532106
543162
552110
563168
574228
582116
594236
604240
615305
622124
634252
643192
65165
664264
67167
682136
695345
70170
712142
724288
732146
743222
753225
762152
78178
804320
81181
822164
84184
852170
88188
893267
904360
912182
923276
934372
945470
953285
962192
972194
983294
99199
1003300
1014404
1022204
1033309
1041104
1054420
1064424
1073321
1081108
1106660
1112222
1124448
1136678
1144456
1154460
1164464
1174468
1184472
1195595
1202240
1217847
1227854
1238984
12491116
1255625
1267882
127121524
1303390
1314524
1326792
1333399
1343402
1355675
13691224
1372274
1383414
139111529
14081120
1417987
1425710
1436858
1446864
1455725
1465730
1475735
1481148
1493447
1502300
1511151
1525760
1535765
1541154
15581240
1566936
1575785
1583474
159101590
1605800
1612322
16291458
16391467
16471148
16581320
1662332
16781336
16881344
1695845
170122040
171101710
1721172
1735865
17461044
17571225
17681408
17761062
17881424
17961074
1804720
1815905
18271274
18381464
18461104
1854740
186101860
187101870
188101880
189101890
19081520
19181528
19291728
193132509
194101940
19581560
19671372
19791773
1984792
1995995
2001200
2013603
2034812
20471428
20561230
20681648
2074828
2084832
20971463
21081680
2113633
2124848
21371491
2144856
2153645
2161216
2172434
2184872
2194876
22051100
2214884
2223666
22351115
2241224
2251225
22651130
2273681
22961374
2301230
2314924
2322464
2333699
2344936
2353705
2362472
2373711
2393717
2412482
2423726
2431243
2441244
2452490
2463738
24792223
2483744
2492498
2512502
2523756
2532506
2542508
2563768
2571257
25851290
2593777
2602964770640
Total3966913021
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02964
11000
81
Total3965
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333637266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888241732cbf429b
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3431373332636266
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_12.json b/autobahn/client/tungstenite_case_12_4_12.json new file mode 100644 index 0000000..b2da5c8 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_12.json @@ -0,0 +1,934 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 367, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 772, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=367&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: km3nNlHbak72JqLs8Yzz/Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: OyApnjaejJPbo3vSmkUoZHV1r18=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "331": 1, + "332": 1, + "334": 3, + "335": 2, + "338": 1, + "342": 1, + "347": 1, + "351": 1, + "355": 1, + "368": 1, + "374": 1, + "375": 1, + "379": 1, + "385": 1, + "395": 1, + "398": 1, + "399": 1, + "400": 1, + "403": 1, + "413": 1, + "416": 3, + "419": 1, + "420": 1, + "421": 2, + "423": 4, + "424": 4, + "425": 1, + "427": 3, + "428": 2, + "429": 1, + "430": 3, + "431": 3, + "435": 1, + "437": 1, + "439": 3, + "441": 1, + "443": 1, + "444": 1, + "445": 3, + "446": 3, + "447": 3, + "448": 3, + "449": 8, + "450": 4, + "452": 2, + "453": 7, + "454": 3, + "455": 8, + "456": 4, + "457": 5, + "459": 1, + "464": 1, + "465": 2, + "469": 1, + "518": 1, + "523": 1, + "525": 1, + "526": 1, + "527": 3, + "528": 1, + "529": 1, + "531": 2, + "540": 1, + "541": 1, + "542": 1, + "543": 1, + "544": 1, + "545": 1, + "553": 2, + "556": 1, + "558": 2, + "562": 1, + "563": 3, + "564": 1, + "565": 2, + "566": 2, + "568": 1, + "569": 1, + "572": 1, + "574": 2, + "576": 1, + "577": 1, + "578": 1, + "579": 1, + "580": 1, + "581": 1, + "582": 2, + "584": 2, + "587": 1, + "593": 1, + "594": 1, + "598": 1, + "608": 2, + "609": 2, + "610": 1, + "611": 2, + "612": 1, + "613": 2, + "615": 1, + "616": 2, + "618": 1, + "620": 1, + "621": 2, + "623": 1, + "624": 1, + "625": 1, + "626": 1, + "628": 2, + "629": 1, + "630": 2, + "631": 2, + "632": 2, + "633": 1, + "634": 3, + "635": 1, + "636": 4, + "637": 3, + "638": 1, + "639": 6, + "640": 6, + "641": 6, + "642": 8, + "643": 3, + "644": 5, + "645": 11, + "646": 1, + "647": 4, + "648": 6, + "649": 3, + "650": 2, + "651": 4, + "652": 9, + "653": 1, + "654": 1, + "655": 5, + "657": 4, + "658": 5, + "659": 4, + "660": 6, + "661": 4, + "662": 4, + "663": 5, + "664": 1, + "665": 3, + "666": 2, + "667": 1, + "668": 4, + "669": 4, + "670": 1, + "671": 8, + "672": 2, + "673": 3, + "674": 3, + "675": 3, + "676": 3, + "678": 3, + "679": 2, + "680": 3, + "681": 1, + "682": 2, + "683": 5, + "684": 3, + "685": 2, + "686": 5, + "687": 6, + "689": 3, + "690": 3, + "691": 4, + "692": 7, + "693": 2, + "694": 6, + "695": 3, + "696": 4, + "697": 3, + "698": 6, + "699": 5, + "700": 5, + "701": 1, + "702": 7, + "703": 5, + "704": 3, + "705": 1, + "706": 1, + "707": 6, + "708": 4, + "709": 6, + "710": 7, + "712": 1, + "713": 4, + "714": 3, + "715": 4, + "716": 1, + "717": 2, + "719": 2, + "720": 2, + "721": 4, + "722": 6, + "723": 4, + "725": 1, + "726": 4, + "727": 1, + "728": 4, + "729": 4, + "730": 3, + "731": 1, + "733": 1, + "734": 2, + "735": 1, + "736": 4, + "737": 3, + "738": 2, + "739": 3, + "742": 3, + "743": 3, + "745": 4, + "746": 1, + "747": 2, + "751": 1, + "753": 3, + "758": 1, + "761": 1, + "762": 2, + "763": 3, + "770": 1, + "774": 1, + "775": 2, + "776": 1, + "781": 1, + "784": 1, + "791": 1, + "799": 1, + "800": 1, + "802": 1, + "806": 1, + "807": 1, + "811": 1, + "813": 1, + "815": 1, + "818": 1, + "820": 1, + "821": 1, + "825": 1, + "826": 1, + "829": 1, + "830": 1, + "831": 1, + "832": 1, + "834": 1, + "835": 3, + "836": 1, + "837": 1, + "838": 1, + "842": 1, + "843": 1, + "845": 1, + "849": 1, + "852": 1, + "855": 1, + "858": 1, + "867": 1, + "868": 2, + "870": 1, + "871": 1, + "875": 1, + "880": 1, + "884": 1, + "885": 1, + "888": 1, + "889": 1, + "890": 1, + "893": 1, + "895": 1, + "896": 1, + "899": 1, + "900": 1, + "902": 1, + "909": 1, + "910": 1, + "911": 2, + "912": 5, + "913": 3, + "917": 1, + "918": 1, + "924": 1, + "929": 1, + "931": 3, + "934": 1, + "937": 1, + "941": 1, + "942": 1, + "945": 1, + "949": 3, + "954": 1, + "959": 1, + "960": 1, + "962": 3, + "963": 2, + "964": 2, + "968": 1, + "975": 1, + "976": 2, + "978": 1, + "980": 2, + "981": 3, + "982": 2, + "983": 1, + "985": 3, + "989": 1, + "990": 1, + "991": 2, + "993": 1, + "994": 1, + "995": 2, + "997": 1, + "998": 2, + "1003": 2, + "1004": 2, + "1005": 2, + "1006": 3, + "1007": 1, + "1008": 1, + "1011": 2, + "1013": 2, + "1014": 1, + "1016": 1, + "1017": 1, + "1018": 1, + "1019": 5, + "1020": 1, + "1021": 1, + "1023": 1, + "1024": 2, + "1026": 1, + "1028": 3, + "1029": 1, + "1030": 2, + "1031": 1, + "1032": 1, + "1033": 1, + "1034": 1, + "1035": 1, + "1036": 3, + "1038": 1, + "1040": 1, + "1041": 3, + "1042": 1, + "1044": 1, + "1047": 2, + "1051": 2, + "1054": 2, + "1055": 1, + "1057": 3, + "1058": 1, + "1059": 2, + "1061": 3, + "1062": 3, + "1063": 1, + "1064": 1, + "1066": 1, + "1067": 2, + "1068": 2, + "1069": 1, + "1073": 1, + "1078": 1, + "1083": 1, + "1084": 1, + "1085": 1, + "1087": 3, + "1089": 1, + "1090": 1, + "1093": 1, + "1096": 1, + "1102": 1, + "1104": 1, + "1105": 1, + "1110": 1, + "1112": 2, + "1115": 1, + "1118": 1, + "1119": 1, + "1120": 1, + "1122": 1, + "1124": 2, + "1125": 1, + "1126": 1, + "1129": 1, + "1130": 2, + "1131": 2, + "1133": 1, + "1134": 1, + "1136": 1, + "1140": 2, + "1143": 2, + "1145": 2, + "1150": 1, + "1154": 1, + "1155": 1, + "1156": 1, + "1157": 1, + "1158": 1, + "1167": 1, + "1171": 1, + "1184": 1, + "1185": 1, + "1187": 2, + "1190": 1, + "1191": 3, + "1193": 2, + "1196": 3, + "1197": 1, + "1198": 2, + "1199": 1, + "1201": 1, + "1202": 1, + "1204": 1, + "1206": 2, + "1209": 1, + "1215": 1, + "1220": 1, + "1232": 1, + "1234": 1, + "1236": 1, + "1237": 1, + "1242": 1, + "1244": 1, + "1246": 1, + "1248": 1, + "1270": 1, + "1276": 2, + "1281": 1, + "1286": 1, + "1288": 1, + "1295": 1, + "1301": 1, + "1302": 1, + "1304": 2, + "1306": 1, + "1307": 1, + "1308": 2, + "1309": 3, + "1314": 1, + "1315": 1, + "1325": 1, + "1336": 1, + "1349": 1, + "1351": 1, + "1355": 1, + "1357": 1, + "1360": 1, + "1366": 1, + "1391": 1, + "1399": 1, + "1403": 2, + "1405": 1, + "1449": 1, + "1485": 1, + "1519": 1, + "1527": 1, + "1537": 1, + "1544": 1, + "1555": 1, + "1559": 1, + "1565": 1, + "1570": 1, + "1571": 1, + "1572": 3, + "1579": 1, + "1581": 1, + "1583": 2, + "1585": 1, + "1587": 2, + "1588": 1, + "1589": 1, + "1592": 3, + "1594": 1, + "1596": 1, + "1601": 2, + "1602": 1, + "1608": 1, + "1640": 1, + "1643": 1, + "1644": 1, + "1647": 1, + "1649": 2, + "1652": 1, + "1656": 1, + "1665": 1, + "1679": 2, + "1680": 1, + "1699": 1, + "1700": 1, + "1702": 4, + "1705": 2, + "1840": 1, + "1859": 1, + "1872": 1, + "1887": 1, + "1910": 1, + "1930": 1, + "1971": 1, + "1979": 1, + "2020": 1, + "2074": 1, + "2077": 1, + "2085": 1, + "2095": 1, + "2122": 1, + "2146": 1, + "2281": 1, + "2326": 1, + "2349": 1, + "2363": 1, + "2377": 1, + "2379": 1, + "2400": 1, + "2415": 1, + "2448": 1, + "2478": 1, + "2480": 1, + "2482": 2, + "2483": 1, + "2491": 1, + "2496": 3, + "2497": 1, + "2504": 1, + "2506": 1, + "2511": 1, + "2512": 1, + "2516": 1, + "2517": 1, + "2518": 2, + "2519": 1, + "2523": 2, + "2527": 1, + "2537": 1, + "2541": 1, + "2542": 1, + "2544": 1, + "2547": 1, + "2555": 1, + "2557": 1, + "2559": 1, + "2568": 1, + "2571": 1, + "2578": 1, + "2615": 1 + }, + "started": "2025-09-11T20:09:52.436Z", + "trafficStats": { + "incomingCompressionRatio": 0.05478364820391276, + "incomingOctetsAppLevel": 16385674, + "incomingOctetsWebSocketLevel": 897667, + "incomingOctetsWireLevel": 905667, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.008911990749353602, + "outgoingCompressionRatio": 0.05478364820391276, + "outgoingOctetsAppLevel": 16385674, + "outgoingOctetsWebSocketLevel": 897667, + "outgoingOctetsWireLevel": 912765, + "outgoingWebSocketFrames": 3964, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016819154541717587, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 2964, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 5, + "3": 1, + "4": 2, + "5": 3, + "6": 3, + "7": 2, + "8": 2, + "9": 4, + "10": 3, + "11": 4, + "12": 2, + "13": 3, + "14": 1, + "15": 1, + "16": 2, + "17": 4, + "18": 2, + "20": 2, + "21": 3, + "22": 3, + "23": 6, + "24": 3, + "25": 3, + "26": 2, + "27": 4, + "28": 4, + "29": 4, + "30": 3, + "31": 4, + "32": 4, + "33": 2, + "34": 1, + "35": 2, + "36": 1, + "37": 4, + "38": 3, + "39": 5, + "40": 2, + "41": 4, + "42": 1, + "43": 2, + "44": 2, + "45": 5, + "46": 3, + "47": 4, + "48": 3, + "49": 1, + "50": 5, + "51": 2, + "52": 2, + "53": 2, + "54": 3, + "55": 2, + "56": 3, + "57": 4, + "58": 2, + "59": 4, + "60": 4, + "61": 5, + "62": 2, + "63": 4, + "64": 3, + "65": 1, + "66": 4, + "67": 1, + "68": 2, + "69": 5, + "70": 1, + "71": 2, + "72": 4, + "73": 2, + "74": 3, + "75": 3, + "76": 2, + "78": 1, + "80": 4, + "81": 1, + "82": 2, + "84": 1, + "85": 2, + "88": 1, + "89": 3, + "90": 4, + "91": 2, + "92": 3, + "93": 4, + "94": 5, + "95": 3, + "96": 2, + "97": 2, + "98": 3, + "99": 1, + "100": 3, + "101": 4, + "102": 2, + "103": 3, + "104": 1, + "105": 4, + "106": 4, + "107": 3, + "108": 1, + "110": 6, + "111": 2, + "112": 4, + "113": 6, + "114": 4, + "115": 4, + "116": 4, + "117": 4, + "118": 4, + "119": 5, + "120": 2, + "121": 7, + "122": 7, + "123": 8, + "124": 9, + "125": 5, + "126": 7, + "127": 12, + "130": 3, + "131": 4, + "132": 6, + "133": 3, + "134": 3, + "135": 5, + "136": 9, + "137": 2, + "138": 3, + "139": 11, + "140": 8, + "141": 7, + "142": 5, + "143": 6, + "144": 6, + "145": 5, + "146": 5, + "147": 5, + "148": 1, + "149": 3, + "150": 2, + "151": 1, + "152": 5, + "153": 5, + "154": 1, + "155": 8, + "156": 6, + "157": 5, + "158": 3, + "159": 10, + "160": 5, + "161": 2, + "162": 9, + "163": 9, + "164": 7, + "165": 8, + "166": 2, + "167": 8, + "168": 8, + "169": 5, + "170": 12, + "171": 10, + "172": 1, + "173": 5, + "174": 6, + "175": 7, + "176": 8, + "177": 6, + "178": 8, + "179": 6, + "180": 4, + "181": 5, + "182": 7, + "183": 8, + "184": 6, + "185": 4, + "186": 10, + "187": 10, + "188": 10, + "189": 10, + "190": 8, + "191": 8, + "192": 9, + "193": 13, + "194": 10, + "195": 8, + "196": 7, + "197": 9, + "198": 4, + "199": 5, + "200": 1, + "201": 3, + "203": 4, + "204": 7, + "205": 6, + "206": 8, + "207": 4, + "208": 4, + "209": 7, + "210": 8, + "211": 3, + "212": 4, + "213": 7, + "214": 4, + "215": 3, + "216": 1, + "217": 2, + "218": 4, + "219": 4, + "220": 5, + "221": 4, + "222": 3, + "223": 5, + "224": 1, + "225": 1, + "226": 5, + "227": 3, + "229": 6, + "230": 1, + "231": 4, + "232": 2, + "233": 3, + "234": 4, + "235": 3, + "236": 2, + "237": 3, + "239": 3, + "241": 2, + "242": 3, + "243": 1, + "244": 1, + "245": 2, + "246": 3, + "247": 9, + "248": 3, + "249": 2, + "251": 2, + "252": 3, + "253": 2, + "254": 2, + "256": 3, + "257": 1, + "258": 5, + "259": 3, + "260": 2964 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333637266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888241732cbf429b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "41732cbf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_13.html b/autobahn/client/tungstenite_case_12_4_13.html new file mode 100644 index 0000000..3b2cbec --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_13.html @@ -0,0 +1,1234 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.13 : Pass - 1672 ms @ 2025-09-11T20:09:53.210Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=368&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: kwxE5M3iRKjGCtVCwV5T2w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: an95Wstd9bbIneTtqP95m6ioDro=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
8491849
85343412
8541854
85554275
85621712
8571857
85821716
8591859
8601860
86121722
8631863
8671867
8761876
8801880
9081908
9111911
9221922
9321932
9511951
9671967
9751975
9811981
9921992
100411004
102111021
102511025
103711037
104211042
104411044
104811048
105111051
105611056
106311063
106422128
106611066
106811068
106922138
107022140
107255360
107311073
107411074
107611076
107711077
108022160
108122162
108222164
108333249
108422168
108522170
108711087
108822176
108922178
109011090
109133273
109222184
109333279
109433282
109511095
109622192
109711097
109811098
110011100
110211102
110311103
110433312
110511105
110611106
110833324
111011110
111111111
111411114
111611116
111722234
112022240
112111121
112344492
112433372
112522250
112611126
112722254
112833384
112911129
113011130
113111131
113322266
113411134
113622272
113811138
114011140
114222284
114711147
116811168
117311173
117411174
117611176
117811178
117911179
118511185
118811188
119011190
119222384
119522390
119611196
120011200
120211202
120511205
120611206
121311213
121411214
121711217
122011220
122511225
123211232
123311233
123611236
123911239
124511245
124633738
124722494
124822496
125011250
125133753
125322506
125411254
125511255
126022520
126111261
126222524
126311263
126411264
126511265
126711267
126833804
127211272
127311273
127411274
128011280
128411284
128511285
128733861
128933867
129056450
129145164
129311293
129411294
129511295
129645184
129722594
129911299
130122602
130222604
130322606
130411304
130633918
130733921
130845232
130922618
131256560
131356565
131422628
131556575
131622632
131767902
131822636
131922638
132056600
132167926
132322646
132511325
132622652
133111331
133211332
133311333
133411334
133522670
133711337
133822676
133911339
134011340
134222684
134445376
134511345
134611346
134811348
134922698
135022700
135111351
135211352
135811358
135911359
136122722
136322726
136411364
136711367
136845472
136911369
137011370
137222744
137311373
137511375
137611376
137711377
138022760
138111381
138234146
138311383
138434152
138522770
138634158
138722774
138822776
139011390
139111391
139311393
139434182
139545580
139622792
139745588
139834194
139922798
140022800
140134203
1402811216
140357015
140422808
140611406
140768442
141022820
141622832
141911419
142211422
142311423
142611426
142811428
143011430
143611436
143922878
144011440
144211442
144311443
144411444
144711447
144811448
145022900
145111451
145311453
145522910
145611456
146311463
146511465
146822936
147022940
147211472
147311473
147411474
147711477
147811478
148111481
148222964
148311483
148511485
148622972
148811488
149111491
149222984
149411494
149611496
149811498
150223004
151011510
151211512
151611516
152511525
153311533
153611536
153823076
154011540
154111541
154211542
154623092
155023100
155511555
155911559
156211562
156311563
156511565
156711567
156923138
157011570
158011580
158111581
158611586
158723174
158811588
158923178
159223184
159311593
159411594
159511595
159811598
160011600
160111601
160423208
160823216
160923218
161411614
161511615
161611616
161711617
161811618
161934857
162011620
162111621
162211622
162323246
162523250
162711627
163323266
163511635
163811638
164211642
164411644
164711647
165023300
165123302
165458270
165623312
165723314
165811658
165911659
166011660
166323326
166423328
166523330
166634998
166823336
166911669
167011670
167111671
167223344
167411674
167611676
167811678
167935037
168023360
168135043
168311683
168423368
168511685
168811688
168923378
169123382
169323386
169523390
169611696
169811698
169911699
170023400
170211702
170311703
170511705
170611706
170746828
170923418
171223424
171335139
171423428
171658580
171711717
171911719
172011720
172223444
172511725
172711727
173223464
173911739
175311753
175911759
176811768
179811798
182111821
184011840
184411844
186711867
187011870
187311873
188211882
189523790
190611906
190911909
191211912
191311913
191423828
191523830
191823836
192011920
192123842
192311923
192411924
192511925
192711927
192823856
192923858
193035790
193123862
193911939
195311953
195911959
197211972
198511985
198811988
198911989
199411994
199511995
199611996
202012020
202212022
204612046
209512095
210512105
211612116
211912119
212124242
212412124
212812128
212912129
213112131
213224264
213312133
213624272
214112141
214624292
214924298
215324306
215624312
215712157
215824316
216012160
216112161
216412164
216512165
216612166
217036510
217324346
217536525
217612176
217712177
217812178
218012180
218212182
218324366
218524370
218912189
219012190
219212192
219412194
219524390
220512205
220612206
220712207
220824416
220912209
221012210
221112211
221512215
221624432
221724434
221812218
222324446
222512225
222612226
222712227
223012230
223212232
223424468
223512235
223912239
224324486
224812248
225512255
225712257
226712267
226812268
227012270
227124542
227424548
227924558
228012280
228224564
228424568
228612286
228824576
229012290
229112291
229312293
229412294
229512295
229624592
229712297
229912299
230236906
230324606
230424608
230612306
230712307
230812308
230912309
231012310
231236936
231424628
231712317
233012330
233224664
233412334
234112341
234212342
234612346
234712347
235012350
235212352
235312353
235412354
235812358
235912359
236312363
237312373
238012380
239612396
241012410
241512415
243512435
243812438
244712447
245112451
245712457
246012460
247112471
247312473
247924958
248012480
248212482
253012530
253212532
254825096
254912549
255512555
256912569
257912579
258312583
258725174
258812588
259012590
259412594
259612596
260512605
261712617
262512625
262712627
262812628
264012640
264412644
265112651
266212662
268012680
268112681
270012700
270412704
272012720
273612736
273725474
274012740
274625492
275612756
275712757
276212762
276312763
276612766
276712767
277725554
278512785
278712787
278812788
278912789
279012790
279238376
279438382
279525590
279612796
279912799
280012800
281812818
286112861
287612876
293912939
294012940
294212942
294312943
294612946
294712947
295012950
295212952
295312953
295412954
295525910
295712957
295838874
295925918
296312963
296525930
296712967
296812968
296912969
297925958
298312983
298812988
299412994
299612996
300326006
300813008
301513015
301713017
301913019
302026040
302113021
302313023
302513025
302613026
302813028
303413034
303713037
304126082
304213042
304513045
304713047
305013050
306113061
306213062
306313063
306613066
306713067
306913069
307213072
307313073
307713077
308713087
311613116
312013120
312213122
313013130
314913149
315013150
315313153
315513155
317213172
317313173
317413174
318013180
319113191
319313193
319413194
319613196
320013200
320513205
321613216
322313223
322526450
325813258
326013260
326113261
326326526
327213272
327313273
327813278
327913279
328526570
328713287
331013310
331413314
332213322
332313323
332413324
334013340
334413344
334613346
336613366
Total10021793705
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
236
3412
41040
5420
616
7321
8324
9218
10550
11222
12224
13339
14114
15230
16232
17468
18236
205100
217147
227154
23492
24248
25125
266156
277189
284112
295145
30390
317217
324128
33399
347238
356210
36272
373111
383114
396234
405200
41141
428336
43286
444176
453135
464184
474188
48296
493147
504200
516306
526312
536318
544216
552110
563168
57157
587406
595295
602120
614244
627434
636378
645320
653195
665330
675335
68168
69169
703210
71171
725360
733219
746444
758600
762152
777539
788624
796474
803240
819729
828656
834332
845420
853255
865430
876522
892178
903270
914364
922184
936558
946564
956570
967672
975485
986588
995495
1006600
1013303
1027714
1033309
1044416
1053315
1064424
1072214
1087756
1096654
1104440
1116666
112111232
1133339
1146684
1158920
116151740
117101170
1185590
1192238
1204480
121121452
1225610
1235615
1247868
1253375
1264504
1273381
1304520
1314524
1327924
1335665
1345670
1355675
1363408
1372274
1386828
13981112
1406840
1413423
1422284
1436858
1443432
1454580
1462292
1472294
1483444
1496894
1502300
1513453
1522304
1533459
1541154
1555775
1565780
1573471
1583474
1595795
1605800
1622324
1636978
1645820
1654660
1664664
16771169
1682336
1693507
17161026
17261032
17361038
17461044
1751175
17681408
1772354
1782356
1793537
1802360
1811181
18271274
1833549
1843552
1853555
1863558
1874748
1882376
1893567
1901190
1912382
1925960
1933579
1941194
1952390
1962392
1974788
1984792
1995995
2003600
2012402
2024808
20351015
2042408
2053615
2061206
2071207
2084832
2093627
2101210
2112422
2121212
2133639
2142428
2151215
2161216
2172434
21861308
21951095
2203660
2213663
22251110
2234892
2243672
2254900
2264904
2274908
22861368
23061380
2312462
23271624
2331233
2344936
2352470
2364944
2371237
2382476
2392478
24051200
2414964
2422484
2432486
2443732
2452490
2463738
2474988
2481248
2493747
25041000
2512502
25261512
2532506
25441016
2551255
2563768
25741028
2583774
2593777
26065071691820
Total75091814594
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
06507
11000
81
Total7508
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333638266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888253b75315505f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3533623735333135
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_13.json b/autobahn/client/tungstenite_case_12_4_13.json new file mode 100644 index 0000000..4f00015 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_13.json @@ -0,0 +1,1081 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 368, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1672, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=368&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: kwxE5M3iRKjGCtVCwV5T2w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: an95Wstd9bbIneTtqP95m6ioDro=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "849": 1, + "853": 4, + "854": 1, + "855": 5, + "856": 2, + "857": 1, + "858": 2, + "859": 1, + "860": 1, + "861": 2, + "863": 1, + "867": 1, + "876": 1, + "880": 1, + "908": 1, + "911": 1, + "922": 1, + "932": 1, + "951": 1, + "967": 1, + "975": 1, + "981": 1, + "992": 1, + "1004": 1, + "1021": 1, + "1025": 1, + "1037": 1, + "1042": 1, + "1044": 1, + "1048": 1, + "1051": 1, + "1056": 1, + "1063": 1, + "1064": 2, + "1066": 1, + "1068": 1, + "1069": 2, + "1070": 2, + "1072": 5, + "1073": 1, + "1074": 1, + "1076": 1, + "1077": 1, + "1080": 2, + "1081": 2, + "1082": 2, + "1083": 3, + "1084": 2, + "1085": 2, + "1087": 1, + "1088": 2, + "1089": 2, + "1090": 1, + "1091": 3, + "1092": 2, + "1093": 3, + "1094": 3, + "1095": 1, + "1096": 2, + "1097": 1, + "1098": 1, + "1100": 1, + "1102": 1, + "1103": 1, + "1104": 3, + "1105": 1, + "1106": 1, + "1108": 3, + "1110": 1, + "1111": 1, + "1114": 1, + "1116": 1, + "1117": 2, + "1120": 2, + "1121": 1, + "1123": 4, + "1124": 3, + "1125": 2, + "1126": 1, + "1127": 2, + "1128": 3, + "1129": 1, + "1130": 1, + "1131": 1, + "1133": 2, + "1134": 1, + "1136": 2, + "1138": 1, + "1140": 1, + "1142": 2, + "1147": 1, + "1168": 1, + "1173": 1, + "1174": 1, + "1176": 1, + "1178": 1, + "1179": 1, + "1185": 1, + "1188": 1, + "1190": 1, + "1192": 2, + "1195": 2, + "1196": 1, + "1200": 1, + "1202": 1, + "1205": 1, + "1206": 1, + "1213": 1, + "1214": 1, + "1217": 1, + "1220": 1, + "1225": 1, + "1232": 1, + "1233": 1, + "1236": 1, + "1239": 1, + "1245": 1, + "1246": 3, + "1247": 2, + "1248": 2, + "1250": 1, + "1251": 3, + "1253": 2, + "1254": 1, + "1255": 1, + "1260": 2, + "1261": 1, + "1262": 2, + "1263": 1, + "1264": 1, + "1265": 1, + "1267": 1, + "1268": 3, + "1272": 1, + "1273": 1, + "1274": 1, + "1280": 1, + "1284": 1, + "1285": 1, + "1287": 3, + "1289": 3, + "1290": 5, + "1291": 4, + "1293": 1, + "1294": 1, + "1295": 1, + "1296": 4, + "1297": 2, + "1299": 1, + "1301": 2, + "1302": 2, + "1303": 2, + "1304": 1, + "1306": 3, + "1307": 3, + "1308": 4, + "1309": 2, + "1312": 5, + "1313": 5, + "1314": 2, + "1315": 5, + "1316": 2, + "1317": 6, + "1318": 2, + "1319": 2, + "1320": 5, + "1321": 6, + "1323": 2, + "1325": 1, + "1326": 2, + "1331": 1, + "1332": 1, + "1333": 1, + "1334": 1, + "1335": 2, + "1337": 1, + "1338": 2, + "1339": 1, + "1340": 1, + "1342": 2, + "1344": 4, + "1345": 1, + "1346": 1, + "1348": 1, + "1349": 2, + "1350": 2, + "1351": 1, + "1352": 1, + "1358": 1, + "1359": 1, + "1361": 2, + "1363": 2, + "1364": 1, + "1367": 1, + "1368": 4, + "1369": 1, + "1370": 1, + "1372": 2, + "1373": 1, + "1375": 1, + "1376": 1, + "1377": 1, + "1380": 2, + "1381": 1, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 2, + "1386": 3, + "1387": 2, + "1388": 2, + "1390": 1, + "1391": 1, + "1393": 1, + "1394": 3, + "1395": 4, + "1396": 2, + "1397": 4, + "1398": 3, + "1399": 2, + "1400": 2, + "1401": 3, + "1402": 8, + "1403": 5, + "1404": 2, + "1406": 1, + "1407": 6, + "1410": 2, + "1416": 2, + "1419": 1, + "1422": 1, + "1423": 1, + "1426": 1, + "1428": 1, + "1430": 1, + "1436": 1, + "1439": 2, + "1440": 1, + "1442": 1, + "1443": 1, + "1444": 1, + "1447": 1, + "1448": 1, + "1450": 2, + "1451": 1, + "1453": 1, + "1455": 2, + "1456": 1, + "1463": 1, + "1465": 1, + "1468": 2, + "1470": 2, + "1472": 1, + "1473": 1, + "1474": 1, + "1477": 1, + "1478": 1, + "1481": 1, + "1482": 2, + "1483": 1, + "1485": 1, + "1486": 2, + "1488": 1, + "1491": 1, + "1492": 2, + "1494": 1, + "1496": 1, + "1498": 1, + "1502": 2, + "1510": 1, + "1512": 1, + "1516": 1, + "1525": 1, + "1533": 1, + "1536": 1, + "1538": 2, + "1540": 1, + "1541": 1, + "1542": 1, + "1546": 2, + "1550": 2, + "1555": 1, + "1559": 1, + "1562": 1, + "1563": 1, + "1565": 1, + "1567": 1, + "1569": 2, + "1570": 1, + "1580": 1, + "1581": 1, + "1586": 1, + "1587": 2, + "1588": 1, + "1589": 2, + "1592": 2, + "1593": 1, + "1594": 1, + "1595": 1, + "1598": 1, + "1600": 1, + "1601": 1, + "1604": 2, + "1608": 2, + "1609": 2, + "1614": 1, + "1615": 1, + "1616": 1, + "1617": 1, + "1618": 1, + "1619": 3, + "1620": 1, + "1621": 1, + "1622": 1, + "1623": 2, + "1625": 2, + "1627": 1, + "1633": 2, + "1635": 1, + "1638": 1, + "1642": 1, + "1644": 1, + "1647": 1, + "1650": 2, + "1651": 2, + "1654": 5, + "1656": 2, + "1657": 2, + "1658": 1, + "1659": 1, + "1660": 1, + "1663": 2, + "1664": 2, + "1665": 2, + "1666": 3, + "1668": 2, + "1669": 1, + "1670": 1, + "1671": 1, + "1672": 2, + "1674": 1, + "1676": 1, + "1678": 1, + "1679": 3, + "1680": 2, + "1681": 3, + "1683": 1, + "1684": 2, + "1685": 1, + "1688": 1, + "1689": 2, + "1691": 2, + "1693": 2, + "1695": 2, + "1696": 1, + "1698": 1, + "1699": 1, + "1700": 2, + "1702": 1, + "1703": 1, + "1705": 1, + "1706": 1, + "1707": 4, + "1709": 2, + "1712": 2, + "1713": 3, + "1714": 2, + "1716": 5, + "1717": 1, + "1719": 1, + "1720": 1, + "1722": 2, + "1725": 1, + "1727": 1, + "1732": 2, + "1739": 1, + "1753": 1, + "1759": 1, + "1768": 1, + "1798": 1, + "1821": 1, + "1840": 1, + "1844": 1, + "1867": 1, + "1870": 1, + "1873": 1, + "1882": 1, + "1895": 2, + "1906": 1, + "1909": 1, + "1912": 1, + "1913": 1, + "1914": 2, + "1915": 2, + "1918": 2, + "1920": 1, + "1921": 2, + "1923": 1, + "1924": 1, + "1925": 1, + "1927": 1, + "1928": 2, + "1929": 2, + "1930": 3, + "1931": 2, + "1939": 1, + "1953": 1, + "1959": 1, + "1972": 1, + "1985": 1, + "1988": 1, + "1989": 1, + "1994": 1, + "1995": 1, + "1996": 1, + "2020": 1, + "2022": 1, + "2046": 1, + "2095": 1, + "2105": 1, + "2116": 1, + "2119": 1, + "2121": 2, + "2124": 1, + "2128": 1, + "2129": 1, + "2131": 1, + "2132": 2, + "2133": 1, + "2136": 2, + "2141": 1, + "2146": 2, + "2149": 2, + "2153": 2, + "2156": 2, + "2157": 1, + "2158": 2, + "2160": 1, + "2161": 1, + "2164": 1, + "2165": 1, + "2166": 1, + "2170": 3, + "2173": 2, + "2175": 3, + "2176": 1, + "2177": 1, + "2178": 1, + "2180": 1, + "2182": 1, + "2183": 2, + "2185": 2, + "2189": 1, + "2190": 1, + "2192": 1, + "2194": 1, + "2195": 2, + "2205": 1, + "2206": 1, + "2207": 1, + "2208": 2, + "2209": 1, + "2210": 1, + "2211": 1, + "2215": 1, + "2216": 2, + "2217": 2, + "2218": 1, + "2223": 2, + "2225": 1, + "2226": 1, + "2227": 1, + "2230": 1, + "2232": 1, + "2234": 2, + "2235": 1, + "2239": 1, + "2243": 2, + "2248": 1, + "2255": 1, + "2257": 1, + "2267": 1, + "2268": 1, + "2270": 1, + "2271": 2, + "2274": 2, + "2279": 2, + "2280": 1, + "2282": 2, + "2284": 2, + "2286": 1, + "2288": 2, + "2290": 1, + "2291": 1, + "2293": 1, + "2294": 1, + "2295": 1, + "2296": 2, + "2297": 1, + "2299": 1, + "2302": 3, + "2303": 2, + "2304": 2, + "2306": 1, + "2307": 1, + "2308": 1, + "2309": 1, + "2310": 1, + "2312": 3, + "2314": 2, + "2317": 1, + "2330": 1, + "2332": 2, + "2334": 1, + "2341": 1, + "2342": 1, + "2346": 1, + "2347": 1, + "2350": 1, + "2352": 1, + "2353": 1, + "2354": 1, + "2358": 1, + "2359": 1, + "2363": 1, + "2373": 1, + "2380": 1, + "2396": 1, + "2410": 1, + "2415": 1, + "2435": 1, + "2438": 1, + "2447": 1, + "2451": 1, + "2457": 1, + "2460": 1, + "2471": 1, + "2473": 1, + "2479": 2, + "2480": 1, + "2482": 1, + "2530": 1, + "2532": 1, + "2548": 2, + "2549": 1, + "2555": 1, + "2569": 1, + "2579": 1, + "2583": 1, + "2587": 2, + "2588": 1, + "2590": 1, + "2594": 1, + "2596": 1, + "2605": 1, + "2617": 1, + "2625": 1, + "2627": 1, + "2628": 1, + "2640": 1, + "2644": 1, + "2651": 1, + "2662": 1, + "2680": 1, + "2681": 1, + "2700": 1, + "2704": 1, + "2720": 1, + "2736": 1, + "2737": 2, + "2740": 1, + "2746": 2, + "2756": 1, + "2757": 1, + "2762": 1, + "2763": 1, + "2766": 1, + "2767": 1, + "2777": 2, + "2785": 1, + "2787": 1, + "2788": 1, + "2789": 1, + "2790": 1, + "2792": 3, + "2794": 3, + "2795": 2, + "2796": 1, + "2799": 1, + "2800": 1, + "2818": 1, + "2861": 1, + "2876": 1, + "2939": 1, + "2940": 1, + "2942": 1, + "2943": 1, + "2946": 1, + "2947": 1, + "2950": 1, + "2952": 1, + "2953": 1, + "2954": 1, + "2955": 2, + "2957": 1, + "2958": 3, + "2959": 2, + "2963": 1, + "2965": 2, + "2967": 1, + "2968": 1, + "2969": 1, + "2979": 2, + "2983": 1, + "2988": 1, + "2994": 1, + "2996": 1, + "3003": 2, + "3008": 1, + "3015": 1, + "3017": 1, + "3019": 1, + "3020": 2, + "3021": 1, + "3023": 1, + "3025": 1, + "3026": 1, + "3028": 1, + "3034": 1, + "3037": 1, + "3041": 2, + "3042": 1, + "3045": 1, + "3047": 1, + "3050": 1, + "3061": 1, + "3062": 1, + "3063": 1, + "3066": 1, + "3067": 1, + "3069": 1, + "3072": 1, + "3073": 1, + "3077": 1, + "3087": 1, + "3116": 1, + "3120": 1, + "3122": 1, + "3130": 1, + "3149": 1, + "3150": 1, + "3153": 1, + "3155": 1, + "3172": 1, + "3173": 1, + "3174": 1, + "3180": 1, + "3191": 1, + "3193": 1, + "3194": 1, + "3196": 1, + "3200": 1, + "3205": 1, + "3216": 1, + "3223": 1, + "3225": 2, + "3258": 1, + "3260": 1, + "3261": 1, + "3263": 2, + "3272": 1, + "3273": 1, + "3278": 1, + "3279": 1, + "3285": 2, + "3287": 1, + "3310": 1, + "3314": 1, + "3322": 1, + "3323": 1, + "3324": 1, + "3340": 1, + "3344": 1, + "3346": 1, + "3366": 1 + }, + "started": "2025-09-11T20:09:53.210Z", + "trafficStats": { + "incomingCompressionRatio": 0.054481738132956876, + "incomingOctetsAppLevel": 32771348, + "incomingOctetsWebSocketLevel": 1785440, + "incomingOctetsWireLevel": 1793440, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0044806882337126985, + "outgoingCompressionRatio": 0.054481738132956876, + "outgoingOctetsAppLevel": 32771348, + "outgoingOctetsWebSocketLevel": 1785440, + "outgoingOctetsWireLevel": 1814338, + "outgoingWebSocketFrames": 7507, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016185366072228695, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 6507, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 3, + "3": 4, + "4": 10, + "5": 4, + "6": 1, + "7": 3, + "8": 3, + "9": 2, + "10": 5, + "11": 2, + "12": 2, + "13": 3, + "14": 1, + "15": 2, + "16": 2, + "17": 4, + "18": 2, + "20": 5, + "21": 7, + "22": 7, + "23": 4, + "24": 2, + "25": 1, + "26": 6, + "27": 7, + "28": 4, + "29": 5, + "30": 3, + "31": 7, + "32": 4, + "33": 3, + "34": 7, + "35": 6, + "36": 2, + "37": 3, + "38": 3, + "39": 6, + "40": 5, + "41": 1, + "42": 8, + "43": 2, + "44": 4, + "45": 3, + "46": 4, + "47": 4, + "48": 2, + "49": 3, + "50": 4, + "51": 6, + "52": 6, + "53": 6, + "54": 4, + "55": 2, + "56": 3, + "57": 1, + "58": 7, + "59": 5, + "60": 2, + "61": 4, + "62": 7, + "63": 6, + "64": 5, + "65": 3, + "66": 5, + "67": 5, + "68": 1, + "69": 1, + "70": 3, + "71": 1, + "72": 5, + "73": 3, + "74": 6, + "75": 8, + "76": 2, + "77": 7, + "78": 8, + "79": 6, + "80": 3, + "81": 9, + "82": 8, + "83": 4, + "84": 5, + "85": 3, + "86": 5, + "87": 6, + "89": 2, + "90": 3, + "91": 4, + "92": 2, + "93": 6, + "94": 6, + "95": 6, + "96": 7, + "97": 5, + "98": 6, + "99": 5, + "100": 6, + "101": 3, + "102": 7, + "103": 3, + "104": 4, + "105": 3, + "106": 4, + "107": 2, + "108": 7, + "109": 6, + "110": 4, + "111": 6, + "112": 11, + "113": 3, + "114": 6, + "115": 8, + "116": 15, + "117": 10, + "118": 5, + "119": 2, + "120": 4, + "121": 12, + "122": 5, + "123": 5, + "124": 7, + "125": 3, + "126": 4, + "127": 3, + "130": 4, + "131": 4, + "132": 7, + "133": 5, + "134": 5, + "135": 5, + "136": 3, + "137": 2, + "138": 6, + "139": 8, + "140": 6, + "141": 3, + "142": 2, + "143": 6, + "144": 3, + "145": 4, + "146": 2, + "147": 2, + "148": 3, + "149": 6, + "150": 2, + "151": 3, + "152": 2, + "153": 3, + "154": 1, + "155": 5, + "156": 5, + "157": 3, + "158": 3, + "159": 5, + "160": 5, + "162": 2, + "163": 6, + "164": 5, + "165": 4, + "166": 4, + "167": 7, + "168": 2, + "169": 3, + "171": 6, + "172": 6, + "173": 6, + "174": 6, + "175": 1, + "176": 8, + "177": 2, + "178": 2, + "179": 3, + "180": 2, + "181": 1, + "182": 7, + "183": 3, + "184": 3, + "185": 3, + "186": 3, + "187": 4, + "188": 2, + "189": 3, + "190": 1, + "191": 2, + "192": 5, + "193": 3, + "194": 1, + "195": 2, + "196": 2, + "197": 4, + "198": 4, + "199": 5, + "200": 3, + "201": 2, + "202": 4, + "203": 5, + "204": 2, + "205": 3, + "206": 1, + "207": 1, + "208": 4, + "209": 3, + "210": 1, + "211": 2, + "212": 1, + "213": 3, + "214": 2, + "215": 1, + "216": 1, + "217": 2, + "218": 6, + "219": 5, + "220": 3, + "221": 3, + "222": 5, + "223": 4, + "224": 3, + "225": 4, + "226": 4, + "227": 4, + "228": 6, + "230": 6, + "231": 2, + "232": 7, + "233": 1, + "234": 4, + "235": 2, + "236": 4, + "237": 1, + "238": 2, + "239": 2, + "240": 5, + "241": 4, + "242": 2, + "243": 2, + "244": 3, + "245": 2, + "246": 3, + "247": 4, + "248": 1, + "249": 3, + "250": 4, + "251": 2, + "252": 6, + "253": 2, + "254": 4, + "255": 1, + "256": 3, + "257": 4, + "258": 3, + "259": 3, + "260": 6507 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333638266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888253b75315505f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "53b75315" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_14.html b/autobahn/client/tungstenite_case_12_4_14.html new file mode 100644 index 0000000..9bc39fc --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_14.html @@ -0,0 +1,1129 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.14 : Pass - 2473 ms @ 2025-09-11T20:09:54.884Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=369&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: NLnDXi0lSJFgwlS4EYMG9Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: yV7u1PytbhEKFkjh9pMbeM+oQFw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
257612576
258025160
259112591
259212592
259512595
259612596
2598410392
259925198
260112601
260212602
260337809
260425208
260537815
260612606
2608410432
260925218
261037830
261112611
261237836
2613410452
261512615
261612616
2617513085
261812618
261937857
262037860
262125242
262312623
262412624
2625410500
262612626
262712627
2629615774
263025260
263112631
2632513160
2634513170
2636410544
263825276
263912639
264125282
264225284
264337929
264512645
264837944
264925298
265012650
265125302
265712657
265812658
266912669
2677410708
267812678
268325366
268512685
268625372
268712687
269025380
269212692
2696410784
270012700
270512705
270612706
270925418
271012710
271212712
271312713
271412714
271512715
272025440
272312723
272412724
272712727
272812728
272912729
273025460
273138193
273812738
273912739
274125482
2743410972
274512745
274625492
274712747
274812748
274925498
275012750
275325506
275425508
275825516
276012760
276112761
276212762
276338289
276438292
276512765
276738301
2768616608
2769411076
277025540
277125542
277225544
2773411092
277438322
277512775
277625552
2777822216
277812778
278112781
278338349
278412784
278538355
278612786
278725574
278812788
278925578
279025580
279625592
279812798
279912799
280038400
280138403
2802719614
280312803
2807411228
280912809
281038430
281112811
281212812
281312813
281512815
281725634
281838454
282012820
282125642
282325646
282412824
2826411304
282738481
282812828
282912829
283025660
283112831
2832411328
283312833
283512835
283612836
283812838
284025680
284138523
285012850
285112851
2855411420
286325726
286412864
286625732
286912869
287425748
287512875
287712877
287812878
289112891
289525790
289812898
290525810
291012910
291138733
291438742
291625832
292712927
292912929
293038790
296012960
296112961
296412964
297025940
297125942
297338919
297412974
297612976
298512985
298612986
298725974
298825976
298912989
299412994
299725994
300013000
300413004
301013010
301926038
303013030
303413034
303513035
304013040
304313043
307213072
307513075
308113081
309013090
311626232
314213142
314413144
315726314
316226324
316313163
318426368
318813188
318913189
319213192
319426388
319626392
319939597
320213202
320626412
3208412832
320913209
321013210
321113211
321213212
321626432
321913219
322113221
322413224
322513225
322613226
322926458
323413234
323613236
323713237
323813238
324026480
324226484
324626492
325413254
326226524
326813268
327013270
327326546
327826556
330926618
331313313
331413314
331613316
331813318
332226644
332313323
332413324
334913349
335726714
337913379
3381310143
339626792
340113401
3402310206
340513405
340613406
341226824
341613416
3419517095
342013420
342113421
342313423
342426848
343913439
344013440
344113441
344413444
344526890
347613476
347913479
348413484
348813488
349313493
349513495
349626992
349813498
350913509
351013510
351213512
351313513
351413514
351613516
352113521
356013560
356213562
356613566
356713567
358427168
362013620
363313633
363413634
363713637
363827276
364127282
365413654
365827316
365913659
366213662
366513665
366613666
366913669
369827396
370027400
370527410
3706414824
370727414
371313713
371527430
371813718
3725311175
372613726
372727454
372813728
372913729
373013730
373227464
373527470
373613736
373727474
374013740
374227484
374413744
374513745
374813748
375027500
375113751
377513775
377913779
378727574
378813788
378913789
379027580
379427588
379527590
379627592
3797311391
380027600
380213802
380513805
381513815
381713817
382713827
384813848
385313853
387713877
388113881
390513905
390713907
391927838
392813928
393113931
394313943
397413974
397913979
398427968
398513985
398713987
398927978
399213992
399313993
399413994
399513995
399713997
399813998
400328006
401614016
401914019
402814028
403214032
4033520165
403414034
403514035
403628072
403814038
404914049
405214052
406714067
407614076
410714107
411114111
412114121
412714127
414914149
415214152
415314153
415414154
416214162
416528330
418128362
423914239
424114241
425314253
425614256
427128542
428128562
428428568
428814288
429414294
4295312885
429614296
429814298
4299312897
430028600
430114301
430414304
430614306
430714307
430914309
431014310
431214312
431314313
431414314
431514315
432314323
432414324
432628652
432728654
432814328
433414334
433728674
434414344
4345313035
434628692
434714347
435014350
435128702
4352313056
435514355
435628712
435728714
435814358
436214362
436314363
436428728
436514365
436728734
437328746
437428748
4376313128
4377626262
4378313134
437914379
438014380
438128762
438228764
4384521920
438528770
4386313158
438728774
438814388
438914389
439028780
4391626346
4392521960
439314393
439414394
439514395
439628792
439728794
439814398
439914399
440028800
440114401
4402313206
440314403
440428808
440528810
440614406
440728814
440828816
440928818
441014410
441114411
441428828
4415417660
4416626496
44171044170
4419313257
442014420
442314423
442428848
442528850
442614426
4430313290
4431313293
443228864
4434522170
4435522175
443614436
443714437
443814438
444114441
444214442
444328886
4444313332
4445417780
444628892
4447522235
445128902
4453313359
445714457
446028920
446228924
446328926
446728934
446828936
447128942
447214472
447514475
4476417904
448014480
448514485
448714487
448828976
449014490
449314493
449614496
449814498
450014500
450429008
450929018
451229024
4515313545
451629032
451714517
451814518
451914519
452114521
452929058
4531313593
453214532
453729074
453829076
453929078
454129082
454229084
454729094
454829096
456114561
456814568
457514575
457729154
457914579
4588313764
459114591
4625418500
462814628
462914629
463214632
463714637
464714647
464814648
464914649
465614656
465814658
465914659
466329326
466729334
467414674
467814678
467914679
468014680
468314683
468429368
468714687
469314693
469429388
469614696
469729394
469829396
469914699
470014700
470414704
470529410
4706314118
470914709
471014710
472014720
472414724
472629452
472714727
4728837824
4729523645
473414734
473514735
Total10023597889
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
224
313
4624
5525
6318
7321
8216
9436
10550
11555
12112
13113
14456
15460
16348
186108
1910190
20360
21121
22122
235115
24248
25250
266156
27254
284112
294116
30390
31262
326192
3313429
346204
354140
36272
374148
386228
395195
40280
413123
428336
434172
4410440
454180
465230
4712564
483144
495245
504200
5110510
525260
537371
543162
553165
563168
575285
587406
5915885
603180
615305
623186
638504
645320
653195
669594
673201
6811748
693207
706420
71171
727504
739657
742148
753225
769684
778616
783234
798632
803240
826492
837581
846504
85121020
865430
875435
883264
899801
903270
913273
927644
932186
942188
954380
96196
97197
99199
1022204
1031103
1042208
1054420
1064424
1072214
1085540
1092218
1107770
1117777
1123336
1133339
114101140
1157805
1166696
1175585
1186708
1191119
1203360
1215605
1221122
1231123
1243372
1252250
1261126
1271127
1304520
1311131
132101320
1331133
1342268
1352270
1362272
1374548
1381138
1393417
1407980
1415705
1423426
1432286
1445720
1455725
1461146
1473441
1486888
1495745
1505750
1514604
1522304
15391377
1544616
15681248
1571157
1581158
1596954
1605800
1613483
1624648
1634652
1645820
1653495
1666996
1675835
1682336
1691169
1702340
1712342
1721172
1732346
1742348
1755875
1761176
1775885
1782356
1794716
1802360
18161086
1825910
1833549
18461104
1854740
1865930
1871187
1882376
18981512
1904760
1914764
1925960
1945970
1953585
1962392
1973591
1982396
199101990
20061200
2013603
2024808
2033609
20471428
20561230
20651030
20751035
20851040
20981672
21051050
2111211
21261272
21391917
2144856
2152430
2172434
2194876
2202440
22151105
2221222
22361338
2242448
2252450
2264904
2273681
2282456
2291229
2301230
23261392
2332466
2343702
2353705
2363708
23761422
23881904
2392478
2401240
2421242
2434972
2441244
2454980
24671722
2473741
2482496
2491249
2501250
2513753
25271764
2532506
2543762
2552510
2563768
25741028
2581258
2592518
260135593525340
Total145613647024
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
013559
11000
81
Total14560
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333639266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88827d4ccad77ea4
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3764346363616437
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_14.json b/autobahn/client/tungstenite_case_12_4_14.json new file mode 100644 index 0000000..2a4f886 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_14.json @@ -0,0 +1,976 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 369, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2473, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=369&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: NLnDXi0lSJFgwlS4EYMG9Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: yV7u1PytbhEKFkjh9pMbeM+oQFw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2576": 1, + "2580": 2, + "2591": 1, + "2592": 1, + "2595": 1, + "2596": 1, + "2598": 4, + "2599": 2, + "2601": 1, + "2602": 1, + "2603": 3, + "2604": 2, + "2605": 3, + "2606": 1, + "2608": 4, + "2609": 2, + "2610": 3, + "2611": 1, + "2612": 3, + "2613": 4, + "2615": 1, + "2616": 1, + "2617": 5, + "2618": 1, + "2619": 3, + "2620": 3, + "2621": 2, + "2623": 1, + "2624": 1, + "2625": 4, + "2626": 1, + "2627": 1, + "2629": 6, + "2630": 2, + "2631": 1, + "2632": 5, + "2634": 5, + "2636": 4, + "2638": 2, + "2639": 1, + "2641": 2, + "2642": 2, + "2643": 3, + "2645": 1, + "2648": 3, + "2649": 2, + "2650": 1, + "2651": 2, + "2657": 1, + "2658": 1, + "2669": 1, + "2677": 4, + "2678": 1, + "2683": 2, + "2685": 1, + "2686": 2, + "2687": 1, + "2690": 2, + "2692": 1, + "2696": 4, + "2700": 1, + "2705": 1, + "2706": 1, + "2709": 2, + "2710": 1, + "2712": 1, + "2713": 1, + "2714": 1, + "2715": 1, + "2720": 2, + "2723": 1, + "2724": 1, + "2727": 1, + "2728": 1, + "2729": 1, + "2730": 2, + "2731": 3, + "2738": 1, + "2739": 1, + "2741": 2, + "2743": 4, + "2745": 1, + "2746": 2, + "2747": 1, + "2748": 1, + "2749": 2, + "2750": 1, + "2753": 2, + "2754": 2, + "2758": 2, + "2760": 1, + "2761": 1, + "2762": 1, + "2763": 3, + "2764": 3, + "2765": 1, + "2767": 3, + "2768": 6, + "2769": 4, + "2770": 2, + "2771": 2, + "2772": 2, + "2773": 4, + "2774": 3, + "2775": 1, + "2776": 2, + "2777": 8, + "2778": 1, + "2781": 1, + "2783": 3, + "2784": 1, + "2785": 3, + "2786": 1, + "2787": 2, + "2788": 1, + "2789": 2, + "2790": 2, + "2796": 2, + "2798": 1, + "2799": 1, + "2800": 3, + "2801": 3, + "2802": 7, + "2803": 1, + "2807": 4, + "2809": 1, + "2810": 3, + "2811": 1, + "2812": 1, + "2813": 1, + "2815": 1, + "2817": 2, + "2818": 3, + "2820": 1, + "2821": 2, + "2823": 2, + "2824": 1, + "2826": 4, + "2827": 3, + "2828": 1, + "2829": 1, + "2830": 2, + "2831": 1, + "2832": 4, + "2833": 1, + "2835": 1, + "2836": 1, + "2838": 1, + "2840": 2, + "2841": 3, + "2850": 1, + "2851": 1, + "2855": 4, + "2863": 2, + "2864": 1, + "2866": 2, + "2869": 1, + "2874": 2, + "2875": 1, + "2877": 1, + "2878": 1, + "2891": 1, + "2895": 2, + "2898": 1, + "2905": 2, + "2910": 1, + "2911": 3, + "2914": 3, + "2916": 2, + "2927": 1, + "2929": 1, + "2930": 3, + "2960": 1, + "2961": 1, + "2964": 1, + "2970": 2, + "2971": 2, + "2973": 3, + "2974": 1, + "2976": 1, + "2985": 1, + "2986": 1, + "2987": 2, + "2988": 2, + "2989": 1, + "2994": 1, + "2997": 2, + "3000": 1, + "3004": 1, + "3010": 1, + "3019": 2, + "3030": 1, + "3034": 1, + "3035": 1, + "3040": 1, + "3043": 1, + "3072": 1, + "3075": 1, + "3081": 1, + "3090": 1, + "3116": 2, + "3142": 1, + "3144": 1, + "3157": 2, + "3162": 2, + "3163": 1, + "3184": 2, + "3188": 1, + "3189": 1, + "3192": 1, + "3194": 2, + "3196": 2, + "3199": 3, + "3202": 1, + "3206": 2, + "3208": 4, + "3209": 1, + "3210": 1, + "3211": 1, + "3212": 1, + "3216": 2, + "3219": 1, + "3221": 1, + "3224": 1, + "3225": 1, + "3226": 1, + "3229": 2, + "3234": 1, + "3236": 1, + "3237": 1, + "3238": 1, + "3240": 2, + "3242": 2, + "3246": 2, + "3254": 1, + "3262": 2, + "3268": 1, + "3270": 1, + "3273": 2, + "3278": 2, + "3309": 2, + "3313": 1, + "3314": 1, + "3316": 1, + "3318": 1, + "3322": 2, + "3323": 1, + "3324": 1, + "3349": 1, + "3357": 2, + "3379": 1, + "3381": 3, + "3396": 2, + "3401": 1, + "3402": 3, + "3405": 1, + "3406": 1, + "3412": 2, + "3416": 1, + "3419": 5, + "3420": 1, + "3421": 1, + "3423": 1, + "3424": 2, + "3439": 1, + "3440": 1, + "3441": 1, + "3444": 1, + "3445": 2, + "3476": 1, + "3479": 1, + "3484": 1, + "3488": 1, + "3493": 1, + "3495": 1, + "3496": 2, + "3498": 1, + "3509": 1, + "3510": 1, + "3512": 1, + "3513": 1, + "3514": 1, + "3516": 1, + "3521": 1, + "3560": 1, + "3562": 1, + "3566": 1, + "3567": 1, + "3584": 2, + "3620": 1, + "3633": 1, + "3634": 1, + "3637": 1, + "3638": 2, + "3641": 2, + "3654": 1, + "3658": 2, + "3659": 1, + "3662": 1, + "3665": 1, + "3666": 1, + "3669": 1, + "3698": 2, + "3700": 2, + "3705": 2, + "3706": 4, + "3707": 2, + "3713": 1, + "3715": 2, + "3718": 1, + "3725": 3, + "3726": 1, + "3727": 2, + "3728": 1, + "3729": 1, + "3730": 1, + "3732": 2, + "3735": 2, + "3736": 1, + "3737": 2, + "3740": 1, + "3742": 2, + "3744": 1, + "3745": 1, + "3748": 1, + "3750": 2, + "3751": 1, + "3775": 1, + "3779": 1, + "3787": 2, + "3788": 1, + "3789": 1, + "3790": 2, + "3794": 2, + "3795": 2, + "3796": 2, + "3797": 3, + "3800": 2, + "3802": 1, + "3805": 1, + "3815": 1, + "3817": 1, + "3827": 1, + "3848": 1, + "3853": 1, + "3877": 1, + "3881": 1, + "3905": 1, + "3907": 1, + "3919": 2, + "3928": 1, + "3931": 1, + "3943": 1, + "3974": 1, + "3979": 1, + "3984": 2, + "3985": 1, + "3987": 1, + "3989": 2, + "3992": 1, + "3993": 1, + "3994": 1, + "3995": 1, + "3997": 1, + "3998": 1, + "4003": 2, + "4016": 1, + "4019": 1, + "4028": 1, + "4032": 1, + "4033": 5, + "4034": 1, + "4035": 1, + "4036": 2, + "4038": 1, + "4049": 1, + "4052": 1, + "4067": 1, + "4076": 1, + "4107": 1, + "4111": 1, + "4121": 1, + "4127": 1, + "4149": 1, + "4152": 1, + "4153": 1, + "4154": 1, + "4162": 1, + "4165": 2, + "4181": 2, + "4239": 1, + "4241": 1, + "4253": 1, + "4256": 1, + "4271": 2, + "4281": 2, + "4284": 2, + "4288": 1, + "4294": 1, + "4295": 3, + "4296": 1, + "4298": 1, + "4299": 3, + "4300": 2, + "4301": 1, + "4304": 1, + "4306": 1, + "4307": 1, + "4309": 1, + "4310": 1, + "4312": 1, + "4313": 1, + "4314": 1, + "4315": 1, + "4323": 1, + "4324": 1, + "4326": 2, + "4327": 2, + "4328": 1, + "4334": 1, + "4337": 2, + "4344": 1, + "4345": 3, + "4346": 2, + "4347": 1, + "4350": 1, + "4351": 2, + "4352": 3, + "4355": 1, + "4356": 2, + "4357": 2, + "4358": 1, + "4362": 1, + "4363": 1, + "4364": 2, + "4365": 1, + "4367": 2, + "4373": 2, + "4374": 2, + "4376": 3, + "4377": 6, + "4378": 3, + "4379": 1, + "4380": 1, + "4381": 2, + "4382": 2, + "4384": 5, + "4385": 2, + "4386": 3, + "4387": 2, + "4388": 1, + "4389": 1, + "4390": 2, + "4391": 6, + "4392": 5, + "4393": 1, + "4394": 1, + "4395": 1, + "4396": 2, + "4397": 2, + "4398": 1, + "4399": 1, + "4400": 2, + "4401": 1, + "4402": 3, + "4403": 1, + "4404": 2, + "4405": 2, + "4406": 1, + "4407": 2, + "4408": 2, + "4409": 2, + "4410": 1, + "4411": 1, + "4414": 2, + "4415": 4, + "4416": 6, + "4417": 10, + "4419": 3, + "4420": 1, + "4423": 1, + "4424": 2, + "4425": 2, + "4426": 1, + "4430": 3, + "4431": 3, + "4432": 2, + "4434": 5, + "4435": 5, + "4436": 1, + "4437": 1, + "4438": 1, + "4441": 1, + "4442": 1, + "4443": 2, + "4444": 3, + "4445": 4, + "4446": 2, + "4447": 5, + "4451": 2, + "4453": 3, + "4457": 1, + "4460": 2, + "4462": 2, + "4463": 2, + "4467": 2, + "4468": 2, + "4471": 2, + "4472": 1, + "4475": 1, + "4476": 4, + "4480": 1, + "4485": 1, + "4487": 1, + "4488": 2, + "4490": 1, + "4493": 1, + "4496": 1, + "4498": 1, + "4500": 1, + "4504": 2, + "4509": 2, + "4512": 2, + "4515": 3, + "4516": 2, + "4517": 1, + "4518": 1, + "4519": 1, + "4521": 1, + "4529": 2, + "4531": 3, + "4532": 1, + "4537": 2, + "4538": 2, + "4539": 2, + "4541": 2, + "4542": 2, + "4547": 2, + "4548": 2, + "4561": 1, + "4568": 1, + "4575": 1, + "4577": 2, + "4579": 1, + "4588": 3, + "4591": 1, + "4625": 4, + "4628": 1, + "4629": 1, + "4632": 1, + "4637": 1, + "4647": 1, + "4648": 1, + "4649": 1, + "4656": 1, + "4658": 1, + "4659": 1, + "4663": 2, + "4667": 2, + "4674": 1, + "4678": 1, + "4679": 1, + "4680": 1, + "4683": 1, + "4684": 2, + "4687": 1, + "4693": 1, + "4694": 2, + "4696": 1, + "4697": 2, + "4698": 2, + "4699": 1, + "4700": 1, + "4704": 1, + "4705": 2, + "4706": 3, + "4709": 1, + "4710": 1, + "4720": 1, + "4724": 1, + "4726": 2, + "4727": 1, + "4728": 8, + "4729": 5, + "4734": 1, + "4735": 1 + }, + "started": "2025-09-11T20:09:54.884Z", + "trafficStats": { + "incomingCompressionRatio": 0.054767697094305956, + "incomingOctetsAppLevel": 65542723, + "incomingOctetsWebSocketLevel": 3589624, + "incomingOctetsWireLevel": 3597624, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0022286456743101785, + "outgoingCompressionRatio": 0.054767697094305956, + "outgoingOctetsAppLevel": 65542723, + "outgoingOctetsWebSocketLevel": 3589624, + "outgoingOctetsWireLevel": 3646768, + "outgoingWebSocketFrames": 14559, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015919216051597605, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 13559, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 2, + "3": 1, + "4": 6, + "5": 5, + "6": 3, + "7": 3, + "8": 2, + "9": 4, + "10": 5, + "11": 5, + "12": 1, + "13": 1, + "14": 4, + "15": 4, + "16": 3, + "18": 6, + "19": 10, + "20": 3, + "21": 1, + "22": 1, + "23": 5, + "24": 2, + "25": 2, + "26": 6, + "27": 2, + "28": 4, + "29": 4, + "30": 3, + "31": 2, + "32": 6, + "33": 13, + "34": 6, + "35": 4, + "36": 2, + "37": 4, + "38": 6, + "39": 5, + "40": 2, + "41": 3, + "42": 8, + "43": 4, + "44": 10, + "45": 4, + "46": 5, + "47": 12, + "48": 3, + "49": 5, + "50": 4, + "51": 10, + "52": 5, + "53": 7, + "54": 3, + "55": 3, + "56": 3, + "57": 5, + "58": 7, + "59": 15, + "60": 3, + "61": 5, + "62": 3, + "63": 8, + "64": 5, + "65": 3, + "66": 9, + "67": 3, + "68": 11, + "69": 3, + "70": 6, + "71": 1, + "72": 7, + "73": 9, + "74": 2, + "75": 3, + "76": 9, + "77": 8, + "78": 3, + "79": 8, + "80": 3, + "82": 6, + "83": 7, + "84": 6, + "85": 12, + "86": 5, + "87": 5, + "88": 3, + "89": 9, + "90": 3, + "91": 3, + "92": 7, + "93": 2, + "94": 2, + "95": 4, + "96": 1, + "97": 1, + "99": 1, + "102": 2, + "103": 1, + "104": 2, + "105": 4, + "106": 4, + "107": 2, + "108": 5, + "109": 2, + "110": 7, + "111": 7, + "112": 3, + "113": 3, + "114": 10, + "115": 7, + "116": 6, + "117": 5, + "118": 6, + "119": 1, + "120": 3, + "121": 5, + "122": 1, + "123": 1, + "124": 3, + "125": 2, + "126": 1, + "127": 1, + "130": 4, + "131": 1, + "132": 10, + "133": 1, + "134": 2, + "135": 2, + "136": 2, + "137": 4, + "138": 1, + "139": 3, + "140": 7, + "141": 5, + "142": 3, + "143": 2, + "144": 5, + "145": 5, + "146": 1, + "147": 3, + "148": 6, + "149": 5, + "150": 5, + "151": 4, + "152": 2, + "153": 9, + "154": 4, + "156": 8, + "157": 1, + "158": 1, + "159": 6, + "160": 5, + "161": 3, + "162": 4, + "163": 4, + "164": 5, + "165": 3, + "166": 6, + "167": 5, + "168": 2, + "169": 1, + "170": 2, + "171": 2, + "172": 1, + "173": 2, + "174": 2, + "175": 5, + "176": 1, + "177": 5, + "178": 2, + "179": 4, + "180": 2, + "181": 6, + "182": 5, + "183": 3, + "184": 6, + "185": 4, + "186": 5, + "187": 1, + "188": 2, + "189": 8, + "190": 4, + "191": 4, + "192": 5, + "194": 5, + "195": 3, + "196": 2, + "197": 3, + "198": 2, + "199": 10, + "200": 6, + "201": 3, + "202": 4, + "203": 3, + "204": 7, + "205": 6, + "206": 5, + "207": 5, + "208": 5, + "209": 8, + "210": 5, + "211": 1, + "212": 6, + "213": 9, + "214": 4, + "215": 2, + "217": 2, + "219": 4, + "220": 2, + "221": 5, + "222": 1, + "223": 6, + "224": 2, + "225": 2, + "226": 4, + "227": 3, + "228": 2, + "229": 1, + "230": 1, + "232": 6, + "233": 2, + "234": 3, + "235": 3, + "236": 3, + "237": 6, + "238": 8, + "239": 2, + "240": 1, + "242": 1, + "243": 4, + "244": 1, + "245": 4, + "246": 7, + "247": 3, + "248": 2, + "249": 1, + "250": 1, + "251": 3, + "252": 7, + "253": 2, + "254": 3, + "255": 2, + "256": 3, + "257": 4, + "258": 1, + "259": 2, + "260": 13559 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333639266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827d4ccad77ea4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7d4ccad7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_15.html b/autobahn/client/tungstenite_case_12_4_15.html new file mode 100644 index 0000000..12c742c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_15.html @@ -0,0 +1,1114 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.15 : Pass - 3504 ms @ 2025-09-11T20:09:57.359Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=370&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: sNuwe9EPPrOZhfMZREdQcg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iXgHlevc6wsG+IRo7VFBR1I44mc=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
593715937
5938317814
594315943
594415944
594815948
594915949
595315953
596115961
596215962
602416024
603016030
6031212062
6036212072
6067212134
607116071
607216072
608616086
608816088
6116212232
6139212278
6153212306
6157212314
615916159
6164318492
616616166
617216172
6175212350
618116181
6182318546
618616186
618716187
6207212414
6217212434
625016250
625316253
6258212516
627116271
627316273
627416274
627516275
627816278
6279318837
629916299
630316303
6353212706
637716377
641916419
642316423
642916429
6430212860
6441212882
646316463
646916469
648716487
649716497
649816498
650516505
651616516
652216522
655616556
6557319671
659616596
659816598
663516635
663916639
665916659
672516725
672616726
672716727
672916729
673116731
6732213464
673316733
673716737
674216742
674416744
6746213492
675616756
675716757
678316783
678516785
6786213572
6787213574
6788320364
678916789
679016790
6791213582
679416794
679616796
679916799
680516805
6812213624
681316813
681916819
682116821
686816868
693216932
693516935
693616936
694016940
694616946
695016950
6953213906
695416954
6956213912
695716957
695816958
696616966
696816968
6969320907
697116971
6974427896
6975213950
697616976
6978213956
697916979
698116981
698316983
6985213970
698616986
6991213982
6993320979
699616996
699816998
700517005
7006214012
700717007
7009428036
7010214020
701117011
701217012
7014428056
7015321045
701617016
701717017
7019321057
7021214042
7024428096
7025535125
7026214052
702717027
7028321084
703017030
703117031
703217032
703317033
703417034
703617036
703717037
7039214078
704017040
7041428164
7043535215
704617046
7047428188
7049214098
7051214102
7052214104
7054428216
705517055
7056321168
7057214114
705817058
7059321177
7060214120
706117061
706217062
7063321189
7065214130
7066214132
7067428268
7068321204
7069214138
7070428280
7071214142
7072321216
707317073
707417074
7076214152
7077428308
707817078
707917079
708017080
708217082
7084321252
7085321255
708617086
708717087
708917089
709317093
7096428384
7099428396
710017100
7101321303
7102214204
7103214206
710417104
7106321318
7108321324
7109535545
7111214222
711217112
711517115
7117321351
711817118
711917119
7120428480
7121214242
7122321366
712317123
712417124
7125214250
7126321378
7127214254
712817128
713017130
713117131
7132214264
7133214266
7134214268
7135214270
713617136
713817138
714017140
714217142
714317143
714417144
7145321435
7146214292
714717147
714817148
714917149
7155214310
7156214312
7157321471
7158428632
7159535795
7160214320
7162428648
7163214326
7165214330
7166642996
716717167
7168428672
7169428676
7170321510
7171321513
7172214344
717317173
7175428700
717717177
7178214356
7179321537
718017180
718217182
718317183
718517185
7186321558
7187214374
7188214376
719017190
719117191
7192214384
719317193
719517195
7199321597
7202214404
7203214406
7204321612
7205214410
7206214412
7207214414
720817208
7209214418
7210214420
721117211
7214214428
721617216
721717217
721817218
7219321657
722217222
722417224
7225214450
722617226
723117231
7232214464
723417234
723517235
723717237
723817238
7241321723
7242214484
724317243
724617246
7249214498
725017250
725417254
725517255
725617256
7257321771
725817258
7259536295
7260321780
7261321783
726217262
7263214526
7265321795
726917269
7270429080
7271214542
727317273
7274214548
7275429100
727617276
7277429108
727817278
728117281
7282321846
728417284
728517285
728617286
728717287
728917289
7293214586
729417294
729517295
7297214594
7298321894
7299214598
730217302
730317303
730517305
7307214614
7308214616
7309321927
7310643860
7313214626
7314321942
731917319
732017320
732417324
732517325
7329214658
7331321993
7332214664
733317333
733417334
733617336
7337429348
733817338
7340322020
7341322023
7342536710
7343322029
7344751408
7345322035
7347429388
7348536740
7349429396
7350214700
735117351
7352214704
7353214706
7354322062
7355322065
7356536780
7357322071
735817358
7359536795
736017360
736117361
7362214724
736317363
7365429460
7366214732
7367214734
736817368
7369214738
737017370
737117371
737217372
7373214746
7374322122
7375214750
7377214754
7378214756
737917379
7380322140
7382214764
738317383
7384214768
7386214772
738817388
739017390
7391214782
739417394
7396429584
739717397
7398214796
7399214798
7400322200
7401322203
7402429608
7403214806
7404429616
740517405
7406322218
740717407
7408322224
7409322227
7411537055
741217412
7413429652
7414214828
741517415
741617416
741717417
741817418
7419214838
742017420
742217422
7423214846
7424214848
742717427
7428214856
7430537150
743117431
7432322296
7433322299
7434322302
743517435
743617436
743717437
7438214876
7439322317
7440322320
744117441
7442214884
744517445
7446322338
744817448
744917449
7450322350
745117451
745217452
745317453
7455214910
7464214928
7467214934
7468214936
747317473
7474214948
747517475
747717477
747817478
747917479
748017480
748117481
748217482
748317483
748717487
7494214988
7495214990
7496429984
749717497
750117501
7502322506
750517505
7510215020
751217512
7513537565
751417514
751617516
751717517
7520215040
762117621
762417624
762517625
762817628
763117631
763217632
763517635
763617636
764017640
764117641
7642215284
7645215290
7646322938
7647215294
764817648
764917649
765017650
7651215302
7652322956
7661215322
768017680
768517685
7699215398
770317703
770717707
7711215422
772217722
772517725
773217732
773817738
779917799
781717817
782017820
785517855
786017860
786317863
786917869
7902215804
7903215806
793417934
793917939
794517945
795017950
8009216018
8020216040
803918039
8093216186
813718137
813918139
8150216300
8170216340
8175216350
817618176
817818178
819018190
819118191
819518195
820418204
8229216458
823818238
823918239
8259216518
8261216522
8262216524
826618266
8271216542
827518275
827718277
8278216556
827918279
8283216566
8288216576
8302216604
8322216644
835018350
835218352
8363216726
836818368
837018370
8401216802
840618406
841018410
841418414
841918419
847818478
848218482
848818488
848918489
849318493
853518535
Total10027222443
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
236
3721
4624
5420
6212
7321
8432
9545
10330
11222
12560
13565
14684
15115
16580
17468
18472
19238
20360
21363
22366
23246
24372
259225
284112
29258
30390
315155
326192
33266
344136
357245
365180
374148
384152
393117
404160
41141
42142
433129
446264
454180
46146
47147
483144
49298
504200
516306
523156
532106
54154
55155
564224
577399
583174
59159
603180
614244
636378
646384
654260
664264
6712804
685340
692138
702140
712142
724288
734292
757525
76176
77177
783234
79179
807560
814324
823246
838664
844336
857595
864344
875435
883264
893267
904360
918728
923276
93193
942188
952190
968768
976582
98198
993297
1003300
1017707
1021102
1037721
1043312
1064424
1076642
1087756
1091109
1105550
1111111
1122224
1133339
1141114
1152230
1162232
1181118
1193357
1201120
1215605
1221122
1238984
1248992
125101250
1263378
1271127
1304520
131101310
1321132
1334532
1341134
1354540
1366816
1373411
138111518
1394556
1403420
1414564
1424568
1433429
1444576
1452290
1461146
1474588
1481148
1492298
1502300
1515755
15271064
15391377
1545770
1553465
1564624
1573471
1581158
1594636
1604640
1616966
1622324
1631163
1642328
1654660
1662332
1672334
16861008
16961014
17061020
1715855
17281376
1734692
1741174
17561050
17661056
1775885
1782356
1793537
18071260
1812362
1823546
18371281
18461104
18571295
1863558
18771309
1882376
1891189
1905950
1911191
1924768
193101930
1944776
1954780
1964784
1974788
1981198
1993597
2002400
20151005
2024808
2034812
20451020
20581640
20651030
2073621
20861248
2092418
21081680
2113633
2124848
2131213
21461284
2151215
2163648
2174868
21891962
21981752
2202440
2211221
2223666
2233669
224102240
2251225
2263678
2273681
2284912
22971603
23081840
2314924
23251160
2334932
2343702
2354940
2364944
2373711
2381238
23971673
2403720
24171687
24261452
24361458
2443732
2451245
24651230
24761482
2481248
2492498
25092250
25141004
25282016
25341012
2543762
25571785
25641024
2572514
25851290
25961554
260276607191600
Total286627328163
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
027660
11000
81
Total28661
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333730266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88824da43fbb4e4c
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3464613433666262
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_15.json b/autobahn/client/tungstenite_case_12_4_15.json new file mode 100644 index 0000000..d563b3e --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_15.json @@ -0,0 +1,961 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 370, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 3504, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=370&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: sNuwe9EPPrOZhfMZREdQcg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iXgHlevc6wsG+IRo7VFBR1I44mc=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5937": 1, + "5938": 3, + "5943": 1, + "5944": 1, + "5948": 1, + "5949": 1, + "5953": 1, + "5961": 1, + "5962": 1, + "6024": 1, + "6030": 1, + "6031": 2, + "6036": 2, + "6067": 2, + "6071": 1, + "6072": 1, + "6086": 1, + "6088": 1, + "6116": 2, + "6139": 2, + "6153": 2, + "6157": 2, + "6159": 1, + "6164": 3, + "6166": 1, + "6172": 1, + "6175": 2, + "6181": 1, + "6182": 3, + "6186": 1, + "6187": 1, + "6207": 2, + "6217": 2, + "6250": 1, + "6253": 1, + "6258": 2, + "6271": 1, + "6273": 1, + "6274": 1, + "6275": 1, + "6278": 1, + "6279": 3, + "6299": 1, + "6303": 1, + "6353": 2, + "6377": 1, + "6419": 1, + "6423": 1, + "6429": 1, + "6430": 2, + "6441": 2, + "6463": 1, + "6469": 1, + "6487": 1, + "6497": 1, + "6498": 1, + "6505": 1, + "6516": 1, + "6522": 1, + "6556": 1, + "6557": 3, + "6596": 1, + "6598": 1, + "6635": 1, + "6639": 1, + "6659": 1, + "6725": 1, + "6726": 1, + "6727": 1, + "6729": 1, + "6731": 1, + "6732": 2, + "6733": 1, + "6737": 1, + "6742": 1, + "6744": 1, + "6746": 2, + "6756": 1, + "6757": 1, + "6783": 1, + "6785": 1, + "6786": 2, + "6787": 2, + "6788": 3, + "6789": 1, + "6790": 1, + "6791": 2, + "6794": 1, + "6796": 1, + "6799": 1, + "6805": 1, + "6812": 2, + "6813": 1, + "6819": 1, + "6821": 1, + "6868": 1, + "6932": 1, + "6935": 1, + "6936": 1, + "6940": 1, + "6946": 1, + "6950": 1, + "6953": 2, + "6954": 1, + "6956": 2, + "6957": 1, + "6958": 1, + "6966": 1, + "6968": 1, + "6969": 3, + "6971": 1, + "6974": 4, + "6975": 2, + "6976": 1, + "6978": 2, + "6979": 1, + "6981": 1, + "6983": 1, + "6985": 2, + "6986": 1, + "6991": 2, + "6993": 3, + "6996": 1, + "6998": 1, + "7005": 1, + "7006": 2, + "7007": 1, + "7009": 4, + "7010": 2, + "7011": 1, + "7012": 1, + "7014": 4, + "7015": 3, + "7016": 1, + "7017": 1, + "7019": 3, + "7021": 2, + "7024": 4, + "7025": 5, + "7026": 2, + "7027": 1, + "7028": 3, + "7030": 1, + "7031": 1, + "7032": 1, + "7033": 1, + "7034": 1, + "7036": 1, + "7037": 1, + "7039": 2, + "7040": 1, + "7041": 4, + "7043": 5, + "7046": 1, + "7047": 4, + "7049": 2, + "7051": 2, + "7052": 2, + "7054": 4, + "7055": 1, + "7056": 3, + "7057": 2, + "7058": 1, + "7059": 3, + "7060": 2, + "7061": 1, + "7062": 1, + "7063": 3, + "7065": 2, + "7066": 2, + "7067": 4, + "7068": 3, + "7069": 2, + "7070": 4, + "7071": 2, + "7072": 3, + "7073": 1, + "7074": 1, + "7076": 2, + "7077": 4, + "7078": 1, + "7079": 1, + "7080": 1, + "7082": 1, + "7084": 3, + "7085": 3, + "7086": 1, + "7087": 1, + "7089": 1, + "7093": 1, + "7096": 4, + "7099": 4, + "7100": 1, + "7101": 3, + "7102": 2, + "7103": 2, + "7104": 1, + "7106": 3, + "7108": 3, + "7109": 5, + "7111": 2, + "7112": 1, + "7115": 1, + "7117": 3, + "7118": 1, + "7119": 1, + "7120": 4, + "7121": 2, + "7122": 3, + "7123": 1, + "7124": 1, + "7125": 2, + "7126": 3, + "7127": 2, + "7128": 1, + "7130": 1, + "7131": 1, + "7132": 2, + "7133": 2, + "7134": 2, + "7135": 2, + "7136": 1, + "7138": 1, + "7140": 1, + "7142": 1, + "7143": 1, + "7144": 1, + "7145": 3, + "7146": 2, + "7147": 1, + "7148": 1, + "7149": 1, + "7155": 2, + "7156": 2, + "7157": 3, + "7158": 4, + "7159": 5, + "7160": 2, + "7162": 4, + "7163": 2, + "7165": 2, + "7166": 6, + "7167": 1, + "7168": 4, + "7169": 4, + "7170": 3, + "7171": 3, + "7172": 2, + "7173": 1, + "7175": 4, + "7177": 1, + "7178": 2, + "7179": 3, + "7180": 1, + "7182": 1, + "7183": 1, + "7185": 1, + "7186": 3, + "7187": 2, + "7188": 2, + "7190": 1, + "7191": 1, + "7192": 2, + "7193": 1, + "7195": 1, + "7199": 3, + "7202": 2, + "7203": 2, + "7204": 3, + "7205": 2, + "7206": 2, + "7207": 2, + "7208": 1, + "7209": 2, + "7210": 2, + "7211": 1, + "7214": 2, + "7216": 1, + "7217": 1, + "7218": 1, + "7219": 3, + "7222": 1, + "7224": 1, + "7225": 2, + "7226": 1, + "7231": 1, + "7232": 2, + "7234": 1, + "7235": 1, + "7237": 1, + "7238": 1, + "7241": 3, + "7242": 2, + "7243": 1, + "7246": 1, + "7249": 2, + "7250": 1, + "7254": 1, + "7255": 1, + "7256": 1, + "7257": 3, + "7258": 1, + "7259": 5, + "7260": 3, + "7261": 3, + "7262": 1, + "7263": 2, + "7265": 3, + "7269": 1, + "7270": 4, + "7271": 2, + "7273": 1, + "7274": 2, + "7275": 4, + "7276": 1, + "7277": 4, + "7278": 1, + "7281": 1, + "7282": 3, + "7284": 1, + "7285": 1, + "7286": 1, + "7287": 1, + "7289": 1, + "7293": 2, + "7294": 1, + "7295": 1, + "7297": 2, + "7298": 3, + "7299": 2, + "7302": 1, + "7303": 1, + "7305": 1, + "7307": 2, + "7308": 2, + "7309": 3, + "7310": 6, + "7313": 2, + "7314": 3, + "7319": 1, + "7320": 1, + "7324": 1, + "7325": 1, + "7329": 2, + "7331": 3, + "7332": 2, + "7333": 1, + "7334": 1, + "7336": 1, + "7337": 4, + "7338": 1, + "7340": 3, + "7341": 3, + "7342": 5, + "7343": 3, + "7344": 7, + "7345": 3, + "7347": 4, + "7348": 5, + "7349": 4, + "7350": 2, + "7351": 1, + "7352": 2, + "7353": 2, + "7354": 3, + "7355": 3, + "7356": 5, + "7357": 3, + "7358": 1, + "7359": 5, + "7360": 1, + "7361": 1, + "7362": 2, + "7363": 1, + "7365": 4, + "7366": 2, + "7367": 2, + "7368": 1, + "7369": 2, + "7370": 1, + "7371": 1, + "7372": 1, + "7373": 2, + "7374": 3, + "7375": 2, + "7377": 2, + "7378": 2, + "7379": 1, + "7380": 3, + "7382": 2, + "7383": 1, + "7384": 2, + "7386": 2, + "7388": 1, + "7390": 1, + "7391": 2, + "7394": 1, + "7396": 4, + "7397": 1, + "7398": 2, + "7399": 2, + "7400": 3, + "7401": 3, + "7402": 4, + "7403": 2, + "7404": 4, + "7405": 1, + "7406": 3, + "7407": 1, + "7408": 3, + "7409": 3, + "7411": 5, + "7412": 1, + "7413": 4, + "7414": 2, + "7415": 1, + "7416": 1, + "7417": 1, + "7418": 1, + "7419": 2, + "7420": 1, + "7422": 1, + "7423": 2, + "7424": 2, + "7427": 1, + "7428": 2, + "7430": 5, + "7431": 1, + "7432": 3, + "7433": 3, + "7434": 3, + "7435": 1, + "7436": 1, + "7437": 1, + "7438": 2, + "7439": 3, + "7440": 3, + "7441": 1, + "7442": 2, + "7445": 1, + "7446": 3, + "7448": 1, + "7449": 1, + "7450": 3, + "7451": 1, + "7452": 1, + "7453": 1, + "7455": 2, + "7464": 2, + "7467": 2, + "7468": 2, + "7473": 1, + "7474": 2, + "7475": 1, + "7477": 1, + "7478": 1, + "7479": 1, + "7480": 1, + "7481": 1, + "7482": 1, + "7483": 1, + "7487": 1, + "7494": 2, + "7495": 2, + "7496": 4, + "7497": 1, + "7501": 1, + "7502": 3, + "7505": 1, + "7510": 2, + "7512": 1, + "7513": 5, + "7514": 1, + "7516": 1, + "7517": 1, + "7520": 2, + "7621": 1, + "7624": 1, + "7625": 1, + "7628": 1, + "7631": 1, + "7632": 1, + "7635": 1, + "7636": 1, + "7640": 1, + "7641": 1, + "7642": 2, + "7645": 2, + "7646": 3, + "7647": 2, + "7648": 1, + "7649": 1, + "7650": 1, + "7651": 2, + "7652": 3, + "7661": 2, + "7680": 1, + "7685": 1, + "7699": 2, + "7703": 1, + "7707": 1, + "7711": 2, + "7722": 1, + "7725": 1, + "7732": 1, + "7738": 1, + "7799": 1, + "7817": 1, + "7820": 1, + "7855": 1, + "7860": 1, + "7863": 1, + "7869": 1, + "7902": 2, + "7903": 2, + "7934": 1, + "7939": 1, + "7945": 1, + "7950": 1, + "8009": 2, + "8020": 2, + "8039": 1, + "8093": 2, + "8137": 1, + "8139": 1, + "8150": 2, + "8170": 2, + "8175": 2, + "8176": 1, + "8178": 1, + "8190": 1, + "8191": 1, + "8195": 1, + "8204": 1, + "8229": 2, + "8238": 1, + "8239": 1, + "8259": 2, + "8261": 2, + "8262": 2, + "8266": 1, + "8271": 2, + "8275": 1, + "8277": 1, + "8278": 2, + "8279": 1, + "8283": 2, + "8288": 2, + "8302": 2, + "8322": 2, + "8350": 1, + "8352": 1, + "8363": 2, + "8368": 1, + "8370": 1, + "8401": 2, + "8406": 1, + "8410": 1, + "8414": 1, + "8419": 1, + "8478": 1, + "8482": 1, + "8488": 1, + "8489": 1, + "8493": 1, + "8535": 1 + }, + "started": "2025-09-11T20:09:57.359Z", + "trafficStats": { + "incomingCompressionRatio": 0.05503417584529367, + "incomingOctetsAppLevel": 131085419, + "incomingOctetsWebSocketLevel": 7214178, + "incomingOctetsWireLevel": 7222178, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0011089274481444734, + "outgoingCompressionRatio": 0.05503413770222606, + "outgoingOctetsAppLevel": 131085419, + "outgoingOctetsWebSocketLevel": 7214173, + "outgoingOctetsWireLevel": 7327907, + "outgoingWebSocketFrames": 28660, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015765355225054904, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 27660, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 3, + "3": 7, + "4": 6, + "5": 4, + "6": 2, + "7": 3, + "8": 4, + "9": 5, + "10": 3, + "11": 2, + "12": 5, + "13": 5, + "14": 6, + "15": 1, + "16": 5, + "17": 4, + "18": 4, + "19": 2, + "20": 3, + "21": 3, + "22": 3, + "23": 2, + "24": 3, + "25": 9, + "28": 4, + "29": 2, + "30": 3, + "31": 5, + "32": 6, + "33": 2, + "34": 4, + "35": 7, + "36": 5, + "37": 4, + "38": 4, + "39": 3, + "40": 4, + "41": 1, + "42": 1, + "43": 3, + "44": 6, + "45": 4, + "46": 1, + "47": 1, + "48": 3, + "49": 2, + "50": 4, + "51": 6, + "52": 3, + "53": 2, + "54": 1, + "55": 1, + "56": 4, + "57": 7, + "58": 3, + "59": 1, + "60": 3, + "61": 4, + "63": 6, + "64": 6, + "65": 4, + "66": 4, + "67": 12, + "68": 5, + "69": 2, + "70": 2, + "71": 2, + "72": 4, + "73": 4, + "75": 7, + "76": 1, + "77": 1, + "78": 3, + "79": 1, + "80": 7, + "81": 4, + "82": 3, + "83": 8, + "84": 4, + "85": 7, + "86": 4, + "87": 5, + "88": 3, + "89": 3, + "90": 4, + "91": 8, + "92": 3, + "93": 1, + "94": 2, + "95": 2, + "96": 8, + "97": 6, + "98": 1, + "99": 3, + "100": 3, + "101": 7, + "102": 1, + "103": 7, + "104": 3, + "106": 4, + "107": 6, + "108": 7, + "109": 1, + "110": 5, + "111": 1, + "112": 2, + "113": 3, + "114": 1, + "115": 2, + "116": 2, + "118": 1, + "119": 3, + "120": 1, + "121": 5, + "122": 1, + "123": 8, + "124": 8, + "125": 10, + "126": 3, + "127": 1, + "130": 4, + "131": 10, + "132": 1, + "133": 4, + "134": 1, + "135": 4, + "136": 6, + "137": 3, + "138": 11, + "139": 4, + "140": 3, + "141": 4, + "142": 4, + "143": 3, + "144": 4, + "145": 2, + "146": 1, + "147": 4, + "148": 1, + "149": 2, + "150": 2, + "151": 5, + "152": 7, + "153": 9, + "154": 5, + "155": 3, + "156": 4, + "157": 3, + "158": 1, + "159": 4, + "160": 4, + "161": 6, + "162": 2, + "163": 1, + "164": 2, + "165": 4, + "166": 2, + "167": 2, + "168": 6, + "169": 6, + "170": 6, + "171": 5, + "172": 8, + "173": 4, + "174": 1, + "175": 6, + "176": 6, + "177": 5, + "178": 2, + "179": 3, + "180": 7, + "181": 2, + "182": 3, + "183": 7, + "184": 6, + "185": 7, + "186": 3, + "187": 7, + "188": 2, + "189": 1, + "190": 5, + "191": 1, + "192": 4, + "193": 10, + "194": 4, + "195": 4, + "196": 4, + "197": 4, + "198": 1, + "199": 3, + "200": 2, + "201": 5, + "202": 4, + "203": 4, + "204": 5, + "205": 8, + "206": 5, + "207": 3, + "208": 6, + "209": 2, + "210": 8, + "211": 3, + "212": 4, + "213": 1, + "214": 6, + "215": 1, + "216": 3, + "217": 4, + "218": 9, + "219": 8, + "220": 2, + "221": 1, + "222": 3, + "223": 3, + "224": 10, + "225": 1, + "226": 3, + "227": 3, + "228": 4, + "229": 7, + "230": 8, + "231": 4, + "232": 5, + "233": 4, + "234": 3, + "235": 4, + "236": 4, + "237": 3, + "238": 1, + "239": 7, + "240": 3, + "241": 7, + "242": 6, + "243": 6, + "244": 3, + "245": 1, + "246": 5, + "247": 6, + "248": 1, + "249": 2, + "250": 9, + "251": 4, + "252": 8, + "253": 4, + "254": 3, + "255": 7, + "256": 4, + "257": 2, + "258": 5, + "259": 6, + "260": 27660 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333730266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824da43fbb4e4c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4da43fbb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_16.html b/autobahn/client/tungstenite_case_12_4_16.html new file mode 100644 index 0000000..9fcefec --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_16.html @@ -0,0 +1,1364 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.16 : Pass - 3850 ms @ 2025-09-11T20:10:00.865Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=371&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: w+W7cclJuJbPNvwIu202gg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VXQO9mgltUvVtXTHkoSq7GZ6TzM=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
593715937
5938317814
594315943
594415944
594815948
594915949
595315953
596115961
596215962
602416024
603016030
6031212062
6036212072
6067212134
607116071
607216072
608616086
608816088
6116212232
6139212278
6153212306
6157212314
615916159
6164318492
616616166
617216172
6175212350
618116181
6182318546
618616186
618716187
6207212414
6217212434
625016250
625316253
6258212516
627116271
627316273
627416274
627516275
627816278
6279318837
629916299
630316303
6353212706
637716377
641916419
642316423
642916429
6430212860
6441212882
646316463
646916469
648716487
649716497
649816498
650516505
651616516
652216522
655616556
6557319671
659616596
659816598
663516635
663916639
665916659
672516725
672616726
672716727
672916729
673116731
6732213464
673316733
673716737
674216742
674416744
6746213492
675616756
675716757
678316783
678516785
6786213572
6787213574
6788320364
678916789
679016790
6791213582
679416794
679616796
679916799
680516805
6812213624
681316813
681916819
682116821
686816868
693216932
693516935
693616936
694016940
694616946
695016950
6953213906
695416954
6956213912
695716957
695816958
696616966
696816968
6969320907
697116971
6974427896
6975213950
697616976
6978213956
697916979
698116981
698316983
6985213970
698616986
6991213982
6993320979
699616996
699816998
700517005
7006214012
700717007
7009428036
7010214020
701117011
701217012
7014428056
7015321045
701617016
701717017
7019321057
7021214042
7024428096
7025535125
7026214052
702717027
7028321084
703017030
703117031
703217032
703317033
703417034
703617036
703717037
7039214078
704017040
7041428164
7043535215
704617046
7047428188
7049214098
7051214102
7052214104
7054428216
705517055
7056321168
7057214114
705817058
7059321177
7060214120
706117061
706217062
7063321189
7065214130
7066214132
7067428268
7068321204
7069214138
7070428280
7071214142
7072321216
707317073
707417074
7076214152
7077428308
707817078
707917079
708017080
708217082
7084321252
7085321255
708617086
708717087
708917089
709317093
7096428384
7099428396
710017100
7101321303
7102214204
7103214206
710417104
7106321318
7108321324
7109535545
7111214222
711217112
711517115
7117321351
711817118
711917119
7120428480
7121214242
7122321366
712317123
712417124
7125214250
7126321378
7127214254
712817128
713017130
713117131
7132214264
7133214266
7134214268
7135214270
713617136
713817138
714017140
714217142
714317143
714417144
7145321435
7146214292
714717147
714817148
714917149
7155214310
7156214312
7157321471
7158428632
7159535795
7160214320
7162428648
7163214326
7165214330
7166642996
716717167
7168428672
7169428676
7170321510
7171321513
7172214344
717317173
7175428700
717717177
7178214356
7179321537
718017180
718217182
718317183
718517185
7186321558
7187214374
7188214376
719017190
719117191
7192214384
719317193
719517195
7199321597
7202214404
7203214406
7204321612
7205214410
7206214412
7207214414
720817208
7209214418
7210214420
721117211
7214214428
721617216
721717217
721817218
7219321657
722217222
722417224
7225214450
722617226
723117231
7232214464
723417234
723517235
723717237
723817238
7241321723
7242214484
724317243
724617246
7249214498
725017250
725417254
725517255
725617256
7257321771
725817258
7259536295
7260321780
7261321783
726217262
7263214526
7265321795
726917269
7270429080
7271214542
727317273
7274214548
7275429100
727617276
7277429108
727817278
728117281
7282321846
728417284
728517285
728617286
728717287
728917289
7293214586
729417294
729517295
7297214594
7298321894
7299214598
730217302
730317303
730517305
7307214614
7308214616
7309321927
7310643860
7313214626
7314321942
731917319
732017320
732417324
732517325
7329214658
7331321993
7332214664
733317333
733417334
733617336
7337429348
733817338
7340322020
7341322023
7342536710
7343322029
7344751408
7345322035
7347429388
7348536740
7349429396
7350214700
735117351
7352214704
7353214706
7354322062
7355322065
7356536780
7357322071
735817358
7359536795
736017360
736117361
7362214724
736317363
7365429460
7366214732
7367214734
736817368
7369214738
737017370
737117371
737217372
7373214746
7374322122
7375214750
7377214754
7378214756
737917379
7380322140
7382214764
738317383
7384214768
7386214772
738817388
739017390
7391214782
739417394
7396429584
739717397
7398214796
7399214798
7400322200
7401322203
7402429608
7403214806
7404429616
740517405
7406322218
740717407
7408322224
7409322227
7411537055
741217412
7413429652
7414214828
741517415
741617416
741717417
741817418
7419214838
742017420
742217422
7423214846
7424214848
742717427
7428214856
7430537150
743117431
7432322296
7433322299
7434322302
743517435
743617436
743717437
7438214876
7439322317
7440322320
744117441
7442214884
744517445
7446322338
744817448
744917449
7450322350
745117451
745217452
745317453
7455214910
7464214928
7467214934
7468214936
747317473
7474214948
747517475
747717477
747817478
747917479
748017480
748117481
748217482
748317483
748717487
7494214988
7495214990
7496429984
749717497
750117501
7502322506
750517505
7510215020
751217512
7513537565
751417514
751617516
751717517
7520215040
762117621
762417624
762517625
762817628
763117631
763217632
763517635
763617636
764017640
764117641
7642215284
7645215290
7646322938
7647215294
764817648
764917649
765017650
7651215302
7652322956
7661215322
768017680
768517685
7699215398
770317703
770717707
7711215422
772217722
772517725
773217732
773817738
779917799
781717817
782017820
785517855
786017860
786317863
786917869
7902215804
7903215806
793417934
793917939
794517945
795017950
8009216018
8020216040
803918039
8093216186
813718137
813918139
8150216300
8170216340
8175216350
817618176
817818178
819018190
819118191
819518195
820418204
8229216458
823818238
823918239
8259216518
8261216522
8262216524
826618266
8271216542
827518275
827718277
8278216556
827918279
8283216566
8288216576
8302216604
8322216644
835018350
835218352
8363216726
836818368
837018370
8401216802
840618406
841018410
841418414
841918419
847818478
848218482
848818488
848918489
849318493
853518535
Total10027222443
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
339
4312
5315
616
7214
818
9218
11111
12336
13226
14570
16232
17117
18236
19119
21121
22122
255125
28256
29258
30390
315155
325160
33266
34134
35270
363108
37274
403120
41141
42142
43143
44144
453135
48148
50150
512102
52152
573171
582116
60160
613183
633189
643192
675335
683204
69169
72172
732146
752150
76176
77177
79179
803240
812162
82182
833249
84184
857595
863258
873261
88188
892178
902180
913273
95195
964384
972194
99199
1003300
1014404
1021102
1035515
1043312
1071107
1085540
1101110
1111111
1121112
1131113
1151115
1192238
1201120
1212242
1233369
1246744
1253375
1302260
1314524
1331133
1352270
1362272
1373411
1386828
1412282
1423426
1471147
1481148
1511151
1521152
1531153
1541154
1551155
1561156
1572314
1593477
1602320
1611161
1621162
1641164
1654660
1661166
1672334
1683504
1693507
1705850
1713513
17281376
1733519
1741174
1754700
1765880
1774708
1782356
1791179
1802360
1812362
1823546
1833549
1845920
1853555
1861186
1875935
1881188
1891189
1902380
1911191
1934772
1942388
1952390
1961196
1972394
1981198
1991199
2001200
2012402
2023606
2032406
20561230
2062412
2071207
2083624
2103630
2111211
2122424
2143642
2161216
2182436
2192438
2221222
2231223
2244896
2251225
2262452
2272454
2283684
2294916
2304920
2312462
2324928
2331233
2343702
2351235
2363708
2373711
23951195
2401240
2414964
2422484
2431243
2441244
2451245
2461246
2472494
2481248
2501250
2512502
2523756
2551255
2562512
25851290
2591259
2603780
2613783
2623786
2631263
2641264
2651265
2662532
2673801
2683804
2691269
2702540
2711271
2731273
2743822
2751275
2761276
2771277
2783834
2791279
2801280
2812562
2823846
2832566
2861286
2923876
2933879
2952590
2962592
2971297
3011301
3022604
3031303
3051305
3061306
3071307
3081308
3091309
3101310
3111311
3152630
3211321
3222644
3232646
32441296
3251325
3291329
3303990
3331333
3382676
3392678
3401340
34151705
3421342
3441344
3451345
3482696
3491349
3501350
3571357
3681368
3741374
4081408
40931227
4481448
4491449
4501450
4521452
4531453
4561456
4591459
4601460
4631463
4641464
4681468
4691469
4702940
4732946
47431422
4752950
4761476
4771477
4781478
4792958
48031440
4871487
4892978
4911491
5081508
5111511
5131513
52721054
5311531
5351535
53921078
5501550
5531553
5601560
5661566
5771577
5781578
5791579
5811581
5831583
58421168
5851585
5891589
5941594
5961596
59821196
6081608
6091609
6271627
6351635
6371637
63821276
63921278
64031920
6411641
6421642
64321286
6451645
6461646
64821296
6511651
6571657
66421328
6651665
6711671
6731673
6831683
6881688
6911691
6971697
7201720
73021460
73121462
7621762
7671767
7731773
7781778
7841784
7871787
7881788
7921792
7981798
8021802
80521610
8061806
80821616
8091809
8101810
8131813
81432442
8181818
8191819
82021640
82132463
8231823
8241824
8251825
82643304
82721654
8281828
8291829
83021660
8311831
8331833
8351835
83754185
83821676
84321686
84532535
84832544
8501850
8571857
85821716
8591859
86143444
86221724
8631863
8641864
86643464
86743468
8681868
8691869
87132613
87321746
87643504
87754385
87821756
8791879
88032640
8821882
8831883
8841884
8851885
8861886
8881888
8891889
89121782
8921892
89343572
89554475
8981898
89943596
9001900
90121802
90321806
90421808
90654530
90732721
90832724
90921818
9101910
91132733
91243648
9131913
9141914
91532745
91721834
91821836
91943676
92032760
92143684
92243688
92321846
92432772
9251925
9261926
92821856
92943716
9301930
9311931
9321932
9341934
93632808
93732811
9381938
9391939
9411941
94321886
9451945
9471947
94854740
95143804
9521952
95332859
95421908
95521910
9561956
95832874
96032880
96154805
9621962
96321926
96421928
9651965
96721934
96932907
9701970
9711971
97243888
97321946
97432922
9751975
9761976
97721954
97854890
97921958
9801980
9821982
9831983
98421968
98521970
98621972
98721974
9881988
9901990
99232976
9941994
9951995
9961996
99732991
99843992
9991999
100011000
100111001
100322006
100411004
100611006
100722014
100822016
100933027
101044040
101155055
101222024
101444056
101544060
101722034
101877126
101922038
102044080
102144084
102233066
102344092
102422048
102511025
102755135
102865786762184
Total75807244351
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
06578
11000
81
Total7579
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333731266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822bd337c5283b
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3262643333376335
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_16.json b/autobahn/client/tungstenite_case_12_4_16.json new file mode 100644 index 0000000..5a63c64 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_16.json @@ -0,0 +1,1211 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 371, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 3850, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=371&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: w+W7cclJuJbPNvwIu202gg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VXQO9mgltUvVtXTHkoSq7GZ6TzM=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5937": 1, + "5938": 3, + "5943": 1, + "5944": 1, + "5948": 1, + "5949": 1, + "5953": 1, + "5961": 1, + "5962": 1, + "6024": 1, + "6030": 1, + "6031": 2, + "6036": 2, + "6067": 2, + "6071": 1, + "6072": 1, + "6086": 1, + "6088": 1, + "6116": 2, + "6139": 2, + "6153": 2, + "6157": 2, + "6159": 1, + "6164": 3, + "6166": 1, + "6172": 1, + "6175": 2, + "6181": 1, + "6182": 3, + "6186": 1, + "6187": 1, + "6207": 2, + "6217": 2, + "6250": 1, + "6253": 1, + "6258": 2, + "6271": 1, + "6273": 1, + "6274": 1, + "6275": 1, + "6278": 1, + "6279": 3, + "6299": 1, + "6303": 1, + "6353": 2, + "6377": 1, + "6419": 1, + "6423": 1, + "6429": 1, + "6430": 2, + "6441": 2, + "6463": 1, + "6469": 1, + "6487": 1, + "6497": 1, + "6498": 1, + "6505": 1, + "6516": 1, + "6522": 1, + "6556": 1, + "6557": 3, + "6596": 1, + "6598": 1, + "6635": 1, + "6639": 1, + "6659": 1, + "6725": 1, + "6726": 1, + "6727": 1, + "6729": 1, + "6731": 1, + "6732": 2, + "6733": 1, + "6737": 1, + "6742": 1, + "6744": 1, + "6746": 2, + "6756": 1, + "6757": 1, + "6783": 1, + "6785": 1, + "6786": 2, + "6787": 2, + "6788": 3, + "6789": 1, + "6790": 1, + "6791": 2, + "6794": 1, + "6796": 1, + "6799": 1, + "6805": 1, + "6812": 2, + "6813": 1, + "6819": 1, + "6821": 1, + "6868": 1, + "6932": 1, + "6935": 1, + "6936": 1, + "6940": 1, + "6946": 1, + "6950": 1, + "6953": 2, + "6954": 1, + "6956": 2, + "6957": 1, + "6958": 1, + "6966": 1, + "6968": 1, + "6969": 3, + "6971": 1, + "6974": 4, + "6975": 2, + "6976": 1, + "6978": 2, + "6979": 1, + "6981": 1, + "6983": 1, + "6985": 2, + "6986": 1, + "6991": 2, + "6993": 3, + "6996": 1, + "6998": 1, + "7005": 1, + "7006": 2, + "7007": 1, + "7009": 4, + "7010": 2, + "7011": 1, + "7012": 1, + "7014": 4, + "7015": 3, + "7016": 1, + "7017": 1, + "7019": 3, + "7021": 2, + "7024": 4, + "7025": 5, + "7026": 2, + "7027": 1, + "7028": 3, + "7030": 1, + "7031": 1, + "7032": 1, + "7033": 1, + "7034": 1, + "7036": 1, + "7037": 1, + "7039": 2, + "7040": 1, + "7041": 4, + "7043": 5, + "7046": 1, + "7047": 4, + "7049": 2, + "7051": 2, + "7052": 2, + "7054": 4, + "7055": 1, + "7056": 3, + "7057": 2, + "7058": 1, + "7059": 3, + "7060": 2, + "7061": 1, + "7062": 1, + "7063": 3, + "7065": 2, + "7066": 2, + "7067": 4, + "7068": 3, + "7069": 2, + "7070": 4, + "7071": 2, + "7072": 3, + "7073": 1, + "7074": 1, + "7076": 2, + "7077": 4, + "7078": 1, + "7079": 1, + "7080": 1, + "7082": 1, + "7084": 3, + "7085": 3, + "7086": 1, + "7087": 1, + "7089": 1, + "7093": 1, + "7096": 4, + "7099": 4, + "7100": 1, + "7101": 3, + "7102": 2, + "7103": 2, + "7104": 1, + "7106": 3, + "7108": 3, + "7109": 5, + "7111": 2, + "7112": 1, + "7115": 1, + "7117": 3, + "7118": 1, + "7119": 1, + "7120": 4, + "7121": 2, + "7122": 3, + "7123": 1, + "7124": 1, + "7125": 2, + "7126": 3, + "7127": 2, + "7128": 1, + "7130": 1, + "7131": 1, + "7132": 2, + "7133": 2, + "7134": 2, + "7135": 2, + "7136": 1, + "7138": 1, + "7140": 1, + "7142": 1, + "7143": 1, + "7144": 1, + "7145": 3, + "7146": 2, + "7147": 1, + "7148": 1, + "7149": 1, + "7155": 2, + "7156": 2, + "7157": 3, + "7158": 4, + "7159": 5, + "7160": 2, + "7162": 4, + "7163": 2, + "7165": 2, + "7166": 6, + "7167": 1, + "7168": 4, + "7169": 4, + "7170": 3, + "7171": 3, + "7172": 2, + "7173": 1, + "7175": 4, + "7177": 1, + "7178": 2, + "7179": 3, + "7180": 1, + "7182": 1, + "7183": 1, + "7185": 1, + "7186": 3, + "7187": 2, + "7188": 2, + "7190": 1, + "7191": 1, + "7192": 2, + "7193": 1, + "7195": 1, + "7199": 3, + "7202": 2, + "7203": 2, + "7204": 3, + "7205": 2, + "7206": 2, + "7207": 2, + "7208": 1, + "7209": 2, + "7210": 2, + "7211": 1, + "7214": 2, + "7216": 1, + "7217": 1, + "7218": 1, + "7219": 3, + "7222": 1, + "7224": 1, + "7225": 2, + "7226": 1, + "7231": 1, + "7232": 2, + "7234": 1, + "7235": 1, + "7237": 1, + "7238": 1, + "7241": 3, + "7242": 2, + "7243": 1, + "7246": 1, + "7249": 2, + "7250": 1, + "7254": 1, + "7255": 1, + "7256": 1, + "7257": 3, + "7258": 1, + "7259": 5, + "7260": 3, + "7261": 3, + "7262": 1, + "7263": 2, + "7265": 3, + "7269": 1, + "7270": 4, + "7271": 2, + "7273": 1, + "7274": 2, + "7275": 4, + "7276": 1, + "7277": 4, + "7278": 1, + "7281": 1, + "7282": 3, + "7284": 1, + "7285": 1, + "7286": 1, + "7287": 1, + "7289": 1, + "7293": 2, + "7294": 1, + "7295": 1, + "7297": 2, + "7298": 3, + "7299": 2, + "7302": 1, + "7303": 1, + "7305": 1, + "7307": 2, + "7308": 2, + "7309": 3, + "7310": 6, + "7313": 2, + "7314": 3, + "7319": 1, + "7320": 1, + "7324": 1, + "7325": 1, + "7329": 2, + "7331": 3, + "7332": 2, + "7333": 1, + "7334": 1, + "7336": 1, + "7337": 4, + "7338": 1, + "7340": 3, + "7341": 3, + "7342": 5, + "7343": 3, + "7344": 7, + "7345": 3, + "7347": 4, + "7348": 5, + "7349": 4, + "7350": 2, + "7351": 1, + "7352": 2, + "7353": 2, + "7354": 3, + "7355": 3, + "7356": 5, + "7357": 3, + "7358": 1, + "7359": 5, + "7360": 1, + "7361": 1, + "7362": 2, + "7363": 1, + "7365": 4, + "7366": 2, + "7367": 2, + "7368": 1, + "7369": 2, + "7370": 1, + "7371": 1, + "7372": 1, + "7373": 2, + "7374": 3, + "7375": 2, + "7377": 2, + "7378": 2, + "7379": 1, + "7380": 3, + "7382": 2, + "7383": 1, + "7384": 2, + "7386": 2, + "7388": 1, + "7390": 1, + "7391": 2, + "7394": 1, + "7396": 4, + "7397": 1, + "7398": 2, + "7399": 2, + "7400": 3, + "7401": 3, + "7402": 4, + "7403": 2, + "7404": 4, + "7405": 1, + "7406": 3, + "7407": 1, + "7408": 3, + "7409": 3, + "7411": 5, + "7412": 1, + "7413": 4, + "7414": 2, + "7415": 1, + "7416": 1, + "7417": 1, + "7418": 1, + "7419": 2, + "7420": 1, + "7422": 1, + "7423": 2, + "7424": 2, + "7427": 1, + "7428": 2, + "7430": 5, + "7431": 1, + "7432": 3, + "7433": 3, + "7434": 3, + "7435": 1, + "7436": 1, + "7437": 1, + "7438": 2, + "7439": 3, + "7440": 3, + "7441": 1, + "7442": 2, + "7445": 1, + "7446": 3, + "7448": 1, + "7449": 1, + "7450": 3, + "7451": 1, + "7452": 1, + "7453": 1, + "7455": 2, + "7464": 2, + "7467": 2, + "7468": 2, + "7473": 1, + "7474": 2, + "7475": 1, + "7477": 1, + "7478": 1, + "7479": 1, + "7480": 1, + "7481": 1, + "7482": 1, + "7483": 1, + "7487": 1, + "7494": 2, + "7495": 2, + "7496": 4, + "7497": 1, + "7501": 1, + "7502": 3, + "7505": 1, + "7510": 2, + "7512": 1, + "7513": 5, + "7514": 1, + "7516": 1, + "7517": 1, + "7520": 2, + "7621": 1, + "7624": 1, + "7625": 1, + "7628": 1, + "7631": 1, + "7632": 1, + "7635": 1, + "7636": 1, + "7640": 1, + "7641": 1, + "7642": 2, + "7645": 2, + "7646": 3, + "7647": 2, + "7648": 1, + "7649": 1, + "7650": 1, + "7651": 2, + "7652": 3, + "7661": 2, + "7680": 1, + "7685": 1, + "7699": 2, + "7703": 1, + "7707": 1, + "7711": 2, + "7722": 1, + "7725": 1, + "7732": 1, + "7738": 1, + "7799": 1, + "7817": 1, + "7820": 1, + "7855": 1, + "7860": 1, + "7863": 1, + "7869": 1, + "7902": 2, + "7903": 2, + "7934": 1, + "7939": 1, + "7945": 1, + "7950": 1, + "8009": 2, + "8020": 2, + "8039": 1, + "8093": 2, + "8137": 1, + "8139": 1, + "8150": 2, + "8170": 2, + "8175": 2, + "8176": 1, + "8178": 1, + "8190": 1, + "8191": 1, + "8195": 1, + "8204": 1, + "8229": 2, + "8238": 1, + "8239": 1, + "8259": 2, + "8261": 2, + "8262": 2, + "8266": 1, + "8271": 2, + "8275": 1, + "8277": 1, + "8278": 2, + "8279": 1, + "8283": 2, + "8288": 2, + "8302": 2, + "8322": 2, + "8350": 1, + "8352": 1, + "8363": 2, + "8368": 1, + "8370": 1, + "8401": 2, + "8406": 1, + "8410": 1, + "8414": 1, + "8419": 1, + "8478": 1, + "8482": 1, + "8488": 1, + "8489": 1, + "8493": 1, + "8535": 1 + }, + "started": "2025-09-11T20:10:00.865Z", + "trafficStats": { + "incomingCompressionRatio": 0.05503417584529367, + "incomingOctetsAppLevel": 131085419, + "incomingOctetsWebSocketLevel": 7214178, + "incomingOctetsWireLevel": 7222178, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0011089274481444734, + "outgoingCompressionRatio": 0.05503413770222606, + "outgoingOctetsAppLevel": 131085419, + "outgoingOctetsWebSocketLevel": 7214173, + "outgoingOctetsWireLevel": 7244095, + "outgoingWebSocketFrames": 7578, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.004147668762587202, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 6578, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 3, + "4": 3, + "5": 3, + "6": 1, + "7": 2, + "8": 1, + "9": 2, + "11": 1, + "12": 3, + "13": 2, + "14": 5, + "16": 2, + "17": 1, + "18": 2, + "19": 1, + "21": 1, + "22": 1, + "25": 5, + "28": 2, + "29": 2, + "30": 3, + "31": 5, + "32": 5, + "33": 2, + "34": 1, + "35": 2, + "36": 3, + "37": 2, + "40": 3, + "41": 1, + "42": 1, + "43": 1, + "44": 1, + "45": 3, + "48": 1, + "50": 1, + "51": 2, + "52": 1, + "57": 3, + "58": 2, + "60": 1, + "61": 3, + "63": 3, + "64": 3, + "67": 5, + "68": 3, + "69": 1, + "72": 1, + "73": 2, + "75": 2, + "76": 1, + "77": 1, + "79": 1, + "80": 3, + "81": 2, + "82": 1, + "83": 3, + "84": 1, + "85": 7, + "86": 3, + "87": 3, + "88": 1, + "89": 2, + "90": 2, + "91": 3, + "95": 1, + "96": 4, + "97": 2, + "99": 1, + "100": 3, + "101": 4, + "102": 1, + "103": 5, + "104": 3, + "107": 1, + "108": 5, + "110": 1, + "111": 1, + "112": 1, + "113": 1, + "115": 1, + "119": 2, + "120": 1, + "121": 2, + "123": 3, + "124": 6, + "125": 3, + "130": 2, + "131": 4, + "133": 1, + "135": 2, + "136": 2, + "137": 3, + "138": 6, + "141": 2, + "142": 3, + "147": 1, + "148": 1, + "151": 1, + "152": 1, + "153": 1, + "154": 1, + "155": 1, + "156": 1, + "157": 2, + "159": 3, + "160": 2, + "161": 1, + "162": 1, + "164": 1, + "165": 4, + "166": 1, + "167": 2, + "168": 3, + "169": 3, + "170": 5, + "171": 3, + "172": 8, + "173": 3, + "174": 1, + "175": 4, + "176": 5, + "177": 4, + "178": 2, + "179": 1, + "180": 2, + "181": 2, + "182": 3, + "183": 3, + "184": 5, + "185": 3, + "186": 1, + "187": 5, + "188": 1, + "189": 1, + "190": 2, + "191": 1, + "193": 4, + "194": 2, + "195": 2, + "196": 1, + "197": 2, + "198": 1, + "199": 1, + "200": 1, + "201": 2, + "202": 3, + "203": 2, + "205": 6, + "206": 2, + "207": 1, + "208": 3, + "210": 3, + "211": 1, + "212": 2, + "214": 3, + "216": 1, + "218": 2, + "219": 2, + "222": 1, + "223": 1, + "224": 4, + "225": 1, + "226": 2, + "227": 2, + "228": 3, + "229": 4, + "230": 4, + "231": 2, + "232": 4, + "233": 1, + "234": 3, + "235": 1, + "236": 3, + "237": 3, + "239": 5, + "240": 1, + "241": 4, + "242": 2, + "243": 1, + "244": 1, + "245": 1, + "246": 1, + "247": 2, + "248": 1, + "250": 1, + "251": 2, + "252": 3, + "255": 1, + "256": 2, + "258": 5, + "259": 1, + "260": 3, + "261": 3, + "262": 3, + "263": 1, + "264": 1, + "265": 1, + "266": 2, + "267": 3, + "268": 3, + "269": 1, + "270": 2, + "271": 1, + "273": 1, + "274": 3, + "275": 1, + "276": 1, + "277": 1, + "278": 3, + "279": 1, + "280": 1, + "281": 2, + "282": 3, + "283": 2, + "286": 1, + "292": 3, + "293": 3, + "295": 2, + "296": 2, + "297": 1, + "301": 1, + "302": 2, + "303": 1, + "305": 1, + "306": 1, + "307": 1, + "308": 1, + "309": 1, + "310": 1, + "311": 1, + "315": 2, + "321": 1, + "322": 2, + "323": 2, + "324": 4, + "325": 1, + "329": 1, + "330": 3, + "333": 1, + "338": 2, + "339": 2, + "340": 1, + "341": 5, + "342": 1, + "344": 1, + "345": 1, + "348": 2, + "349": 1, + "350": 1, + "357": 1, + "368": 1, + "374": 1, + "408": 1, + "409": 3, + "448": 1, + "449": 1, + "450": 1, + "452": 1, + "453": 1, + "456": 1, + "459": 1, + "460": 1, + "463": 1, + "464": 1, + "468": 1, + "469": 1, + "470": 2, + "473": 2, + "474": 3, + "475": 2, + "476": 1, + "477": 1, + "478": 1, + "479": 2, + "480": 3, + "487": 1, + "489": 2, + "491": 1, + "508": 1, + "511": 1, + "513": 1, + "527": 2, + "531": 1, + "535": 1, + "539": 2, + "550": 1, + "553": 1, + "560": 1, + "566": 1, + "577": 1, + "578": 1, + "579": 1, + "581": 1, + "583": 1, + "584": 2, + "585": 1, + "589": 1, + "594": 1, + "596": 1, + "598": 2, + "608": 1, + "609": 1, + "627": 1, + "635": 1, + "637": 1, + "638": 2, + "639": 2, + "640": 3, + "641": 1, + "642": 1, + "643": 2, + "645": 1, + "646": 1, + "648": 2, + "651": 1, + "657": 1, + "664": 2, + "665": 1, + "671": 1, + "673": 1, + "683": 1, + "688": 1, + "691": 1, + "697": 1, + "720": 1, + "730": 2, + "731": 2, + "762": 1, + "767": 1, + "773": 1, + "778": 1, + "784": 1, + "787": 1, + "788": 1, + "792": 1, + "798": 1, + "802": 1, + "805": 2, + "806": 1, + "808": 2, + "809": 1, + "810": 1, + "813": 1, + "814": 3, + "818": 1, + "819": 1, + "820": 2, + "821": 3, + "823": 1, + "824": 1, + "825": 1, + "826": 4, + "827": 2, + "828": 1, + "829": 1, + "830": 2, + "831": 1, + "833": 1, + "835": 1, + "837": 5, + "838": 2, + "843": 2, + "845": 3, + "848": 3, + "850": 1, + "857": 1, + "858": 2, + "859": 1, + "861": 4, + "862": 2, + "863": 1, + "864": 1, + "866": 4, + "867": 4, + "868": 1, + "869": 1, + "871": 3, + "873": 2, + "876": 4, + "877": 5, + "878": 2, + "879": 1, + "880": 3, + "882": 1, + "883": 1, + "884": 1, + "885": 1, + "886": 1, + "888": 1, + "889": 1, + "891": 2, + "892": 1, + "893": 4, + "895": 5, + "898": 1, + "899": 4, + "900": 1, + "901": 2, + "903": 2, + "904": 2, + "906": 5, + "907": 3, + "908": 3, + "909": 2, + "910": 1, + "911": 3, + "912": 4, + "913": 1, + "914": 1, + "915": 3, + "917": 2, + "918": 2, + "919": 4, + "920": 3, + "921": 4, + "922": 4, + "923": 2, + "924": 3, + "925": 1, + "926": 1, + "928": 2, + "929": 4, + "930": 1, + "931": 1, + "932": 1, + "934": 1, + "936": 3, + "937": 3, + "938": 1, + "939": 1, + "941": 1, + "943": 2, + "945": 1, + "947": 1, + "948": 5, + "951": 4, + "952": 1, + "953": 3, + "954": 2, + "955": 2, + "956": 1, + "958": 3, + "960": 3, + "961": 5, + "962": 1, + "963": 2, + "964": 2, + "965": 1, + "967": 2, + "969": 3, + "970": 1, + "971": 1, + "972": 4, + "973": 2, + "974": 3, + "975": 1, + "976": 1, + "977": 2, + "978": 5, + "979": 2, + "980": 1, + "982": 1, + "983": 1, + "984": 2, + "985": 2, + "986": 2, + "987": 2, + "988": 1, + "990": 1, + "992": 3, + "994": 1, + "995": 1, + "996": 1, + "997": 3, + "998": 4, + "999": 1, + "1000": 1, + "1001": 1, + "1003": 2, + "1004": 1, + "1006": 1, + "1007": 2, + "1008": 2, + "1009": 3, + "1010": 4, + "1011": 5, + "1012": 2, + "1014": 4, + "1015": 4, + "1017": 2, + "1018": 7, + "1019": 2, + "1020": 4, + "1021": 4, + "1022": 3, + "1023": 4, + "1024": 2, + "1025": 1, + "1027": 5, + "1028": 6578 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333731266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822bd337c5283b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2bd337c5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_17.html b/autobahn/client/tungstenite_case_12_4_17.html new file mode 100644 index 0000000..7efc218 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_17.html @@ -0,0 +1,1432 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.17 : Pass - 3768 ms @ 2025-09-11T20:10:04.716Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=372&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: zgBOgmEM59Cbfx03xe9Mcw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: oViPFdC29ScTjKzuo80TPoAbBOw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
593715937
5938317814
594315943
594415944
594815948
594915949
595315953
596115961
596215962
602416024
603016030
6031212062
6036212072
6067212134
607116071
607216072
608616086
608816088
6116212232
6139212278
6153212306
6157212314
615916159
6164318492
616616166
617216172
6175212350
618116181
6182318546
618616186
618716187
6207212414
6217212434
625016250
625316253
6258212516
627116271
627316273
627416274
627516275
627816278
6279318837
629916299
630316303
6353212706
637716377
641916419
642316423
642916429
6430212860
6441212882
646316463
646916469
648716487
649716497
649816498
650516505
651616516
652216522
655616556
6557319671
659616596
659816598
663516635
663916639
665916659
672516725
672616726
672716727
672916729
673116731
6732213464
673316733
673716737
674216742
674416744
6746213492
675616756
675716757
678316783
678516785
6786213572
6787213574
6788320364
678916789
679016790
6791213582
679416794
679616796
679916799
680516805
6812213624
681316813
681916819
682116821
686816868
693216932
693516935
693616936
694016940
694616946
695016950
6953213906
695416954
6956213912
695716957
695816958
696616966
696816968
6969320907
697116971
6974427896
6975213950
697616976
6978213956
697916979
698116981
698316983
6985213970
698616986
6991213982
6993320979
699616996
699816998
700517005
7006214012
700717007
7009428036
7010214020
701117011
701217012
7014428056
7015321045
701617016
701717017
7019321057
7021214042
7024428096
7025535125
7026214052
702717027
7028321084
703017030
703117031
703217032
703317033
703417034
703617036
703717037
7039214078
704017040
7041428164
7043535215
704617046
7047428188
7049214098
7051214102
7052214104
7054428216
705517055
7056321168
7057214114
705817058
7059321177
7060214120
706117061
706217062
7063321189
7065214130
7066214132
7067428268
7068321204
7069214138
7070428280
7071214142
7072321216
707317073
707417074
7076214152
7077428308
707817078
707917079
708017080
708217082
7084321252
7085321255
708617086
708717087
708917089
709317093
7096428384
7099428396
710017100
7101321303
7102214204
7103214206
710417104
7106321318
7108321324
7109535545
7111214222
711217112
711517115
7117321351
711817118
711917119
7120428480
7121214242
7122321366
712317123
712417124
7125214250
7126321378
7127214254
712817128
713017130
713117131
7132214264
7133214266
7134214268
7135214270
713617136
713817138
714017140
714217142
714317143
714417144
7145321435
7146214292
714717147
714817148
714917149
7155214310
7156214312
7157321471
7158428632
7159535795
7160214320
7162428648
7163214326
7165214330
7166642996
716717167
7168428672
7169428676
7170321510
7171321513
7172214344
717317173
7175428700
717717177
7178214356
7179321537
718017180
718217182
718317183
718517185
7186321558
7187214374
7188214376
719017190
719117191
7192214384
719317193
719517195
7199321597
7202214404
7203214406
7204321612
7205214410
7206214412
7207214414
720817208
7209214418
7210214420
721117211
7214214428
721617216
721717217
721817218
7219321657
722217222
722417224
7225214450
722617226
723117231
7232214464
723417234
723517235
723717237
723817238
7241321723
7242214484
724317243
724617246
7249214498
725017250
725417254
725517255
725617256
7257321771
725817258
7259536295
7260321780
7261321783
726217262
7263214526
7265321795
726917269
7270429080
7271214542
727317273
7274214548
7275429100
727617276
7277429108
727817278
728117281
7282321846
728417284
728517285
728617286
728717287
728917289
7293214586
729417294
729517295
7297214594
7298321894
7299214598
730217302
730317303
730517305
7307214614
7308214616
7309321927
7310643860
7313214626
7314321942
731917319
732017320
732417324
732517325
7329214658
7331321993
7332214664
733317333
733417334
733617336
7337429348
733817338
7340322020
7341322023
7342536710
7343322029
7344751408
7345322035
7347429388
7348536740
7349429396
7350214700
735117351
7352214704
7353214706
7354322062
7355322065
7356536780
7357322071
735817358
7359536795
736017360
736117361
7362214724
736317363
7365429460
7366214732
7367214734
736817368
7369214738
737017370
737117371
737217372
7373214746
7374322122
7375214750
7377214754
7378214756
737917379
7380322140
7382214764
738317383
7384214768
7386214772
738817388
739017390
7391214782
739417394
7396429584
739717397
7398214796
7399214798
7400322200
7401322203
7402429608
7403214806
7404429616
740517405
7406322218
740717407
7408322224
7409322227
7411537055
741217412
7413429652
7414214828
741517415
741617416
741717417
741817418
7419214838
742017420
742217422
7423214846
7424214848
742717427
7428214856
7430537150
743117431
7432322296
7433322299
7434322302
743517435
743617436
743717437
7438214876
7439322317
7440322320
744117441
7442214884
744517445
7446322338
744817448
744917449
7450322350
745117451
745217452
745317453
7455214910
7464214928
7467214934
7468214936
747317473
7474214948
747517475
747717477
747817478
747917479
748017480
748117481
748217482
748317483
748717487
7494214988
7495214990
7496429984
749717497
750117501
7502322506
750517505
7510215020
751217512
7513537565
751417514
751617516
751717517
7520215040
762117621
762417624
762517625
762817628
763117631
763217632
763517635
763617636
764017640
764117641
7642215284
7645215290
7646322938
7647215294
764817648
764917649
765017650
7651215302
7652322956
7661215322
768017680
768517685
7699215398
770317703
770717707
7711215422
772217722
772517725
773217732
773817738
779917799
781717817
782017820
785517855
786017860
786317863
786917869
7902215804
7903215806
793417934
793917939
794517945
795017950
8009216018
8020216040
803918039
8093216186
813718137
813918139
8150216300
8170216340
8175216350
817618176
817818178
819018190
819118191
819518195
820418204
8229216458
823818238
823918239
8259216518
8261216522
8262216524
826618266
8271216542
827518275
827718277
8278216556
827918279
8283216566
8288216576
8302216604
8322216644
835018350
835218352
8363216726
836818368
837018370
8401216802
840618406
841018410
841418414
841918419
847818478
848218482
848818488
848918489
849318493
853518535
Total10027222443
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
31262
40140
41141
612122
632126
642128
68168
732146
77177
79179
802160
81181
852170
902180
1042208
1242248
1541154
1561156
1672334
1721172
1741174
2052410
2101210
2141214
2181218
2231223
2521252
2821282
2861286
2921292
2931293
2971297
3391339
183711837
183835514
184311843
184411844
184811848
184911849
185311853
186111861
186211862
192411924
193011930
193123862
193623872
196723934
197111971
197211972
198611986
198811988
201624032
203924078
205324106
205724114
205912059
206436192
206612066
207212072
207524150
208112081
208236246
208612086
208712087
210724214
211724234
215012150
215312153
215824316
217112171
217312173
217412174
217512175
217812178
217936537
219912199
220312203
225324506
227712277
231912319
232312323
232912329
233024660
234124682
236312363
236912369
238712387
239712397
239812398
240512405
241612416
242212422
245612456
245737371
249612496
249812498
253512535
253912539
255912559
262512625
262612626
262712627
262912629
263112631
263225264
263312633
263712637
264212642
264412644
264625292
265612656
265712657
268312683
268512685
268625372
268725374
268838064
268912689
269012690
269125382
269412694
269612696
269912699
270512705
271225424
271312713
271912719
272112721
276812768
283212832
283512835
283612836
284012840
284612846
285012850
285325706
285412854
285625712
285712857
285812858
286612866
286812868
286938607
287112871
2874411496
287525750
287612876
287825756
287912879
288112881
288312883
288525770
288612886
289125782
289338679
289612896
289812898
290512905
290625812
290712907
2909411636
291025820
291112911
291212912
2914411656
291538745
291612916
291712917
291938757
292125842
2924411696
2925514625
292625852
292712927
292838784
293012930
293112931
293212932
293312933
293412934
293612936
293712937
293925878
294012940
2941411764
2943514715
294612946
2947411788
294925898
295125902
295225904
2954411816
295512955
295638868
295725914
295812958
295938877
296025920
296112961
296212962
296338889
296525930
296625932
2967411868
296838904
296925938
2970411880
297125942
297238916
297312973
297412974
297625952
2977411908
297812978
297912979
298012980
298212982
298438952
298538955
298612986
298712987
298912989
299312993
2996411984
2999411996
300013000
300139003
300226004
300326006
300413004
300639018
300839024
3009515045
301126022
301213012
301513015
301739051
301813018
301913019
3020412080
302126042
302239066
302313023
302413024
302526050
302639078
302726054
302813028
303013030
303113031
303226064
303326066
303426068
303526070
303613036
303813038
304013040
304213042
304313043
304413044
304539135
304626092
304713047
304813048
304913049
305526110
305626112
305739171
3058412232
3059515295
306026120
3062412248
306326126
306526130
3066618396
306713067
3068412272
3069412276
307039210
307139213
307226144
307313073
3075412300
307713077
307826156
307939237
308013080
308213082
308313083
308513085
308639258
308726174
308826176
309013090
309113091
309226184
309313093
309513095
309939297
310226204
310326206
310439312
310526210
310626212
310726214
310813108
310926218
311026220
311113111
311426228
311613116
311713117
311813118
311939357
312213122
312413124
312526250
312613126
313113131
313226264
313413134
313513135
313713137
313813138
314139423
314226284
314313143
314613146
314926298
315013150
315413154
315513155
315613156
315739471
315813158
3159515795
316039480
316139483
316213162
316326326
316539495
316913169
3170412680
317126342
317313173
317426348
3175412700
317613176
3177412708
317813178
318113181
318239546
318413184
318513185
318613186
318713187
318913189
319326386
319413194
319513195
319726394
319839594
319926398
320213202
320313203
320513205
320726414
320826416
320939627
3210619260
321326426
321439642
321913219
322013220
322413224
322513225
322926458
323139693
323226464
323313233
323413234
323613236
3237412948
323813238
324039720
324139723
3242516210
324339729
3244722708
324539735
3247412988
3248516240
3249412996
325026500
325113251
325226504
325326506
325439762
325539765
3256516280
325739771
325813258
3259516295
326013260
326113261
326226524
326313263
3265413060
326626532
326726534
326813268
326926538
327013270
327113271
327213272
327326546
327439822
327526550
327726554
327826556
327913279
328039840
328226564
328313283
328426568
328626572
328813288
329013290
329126582
329413294
3296413184
329713297
329826596
329926598
330039900
330139903
3302413208
330326606
3304413216
330513305
330639918
330713307
330839924
330939927
3311516555
331213312
3313413252
331426628
331513315
331613316
331713317
331813318
331926638
332013320
332213322
332326646
332426648
332713327
332826656
3330516650
333113331
333239996
333339999
3334310002
333513335
333613336
333713337
333826676
3339310017
3340310020
334113341
334226684
334513345
3346310038
334813348
334913349
3350310050
335113351
335213352
335313353
335526710
336426728
336726734
336826736
337313373
337426748
337513375
337713377
337813378
337913379
338013380
338113381
338213382
338313383
338713387
339426788
339526790
3396413584
339713397
340113401
3402310206
340513405
341026820
341213412
3413517065
341413414
341613416
341713417
342026840
352113521
352413524
352513525
352813528
353113531
353213532
353513535
353613536
354013540
354113541
354227084
354527090
3546310638
354727094
354813548
354913549
355013550
355127102
3552310656
356127122
358013580
358513585
359927198
360313603
360713607
361127222
362213622
362513625
363213632
363813638
369913699
371713717
372013720
375513755
376013760
376313763
376913769
380227604
380327606
383413834
383913839
384513845
385013850
390927818
392027840
393913939
399327986
403714037
403914039
405028100
407028140
407528150
407614076
407814078
409014090
409114091
409514095
409914099
410010444280400
Total20467222553
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01044
11000
81
Total2045
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333732266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882b75e2e8fb4b6
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6237356532653866
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_17.json b/autobahn/client/tungstenite_case_12_4_17.json new file mode 100644 index 0000000..3855d4b --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_17.json @@ -0,0 +1,1279 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 372, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 3768, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=372&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: zgBOgmEM59Cbfx03xe9Mcw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: oViPFdC29ScTjKzuo80TPoAbBOw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5937": 1, + "5938": 3, + "5943": 1, + "5944": 1, + "5948": 1, + "5949": 1, + "5953": 1, + "5961": 1, + "5962": 1, + "6024": 1, + "6030": 1, + "6031": 2, + "6036": 2, + "6067": 2, + "6071": 1, + "6072": 1, + "6086": 1, + "6088": 1, + "6116": 2, + "6139": 2, + "6153": 2, + "6157": 2, + "6159": 1, + "6164": 3, + "6166": 1, + "6172": 1, + "6175": 2, + "6181": 1, + "6182": 3, + "6186": 1, + "6187": 1, + "6207": 2, + "6217": 2, + "6250": 1, + "6253": 1, + "6258": 2, + "6271": 1, + "6273": 1, + "6274": 1, + "6275": 1, + "6278": 1, + "6279": 3, + "6299": 1, + "6303": 1, + "6353": 2, + "6377": 1, + "6419": 1, + "6423": 1, + "6429": 1, + "6430": 2, + "6441": 2, + "6463": 1, + "6469": 1, + "6487": 1, + "6497": 1, + "6498": 1, + "6505": 1, + "6516": 1, + "6522": 1, + "6556": 1, + "6557": 3, + "6596": 1, + "6598": 1, + "6635": 1, + "6639": 1, + "6659": 1, + "6725": 1, + "6726": 1, + "6727": 1, + "6729": 1, + "6731": 1, + "6732": 2, + "6733": 1, + "6737": 1, + "6742": 1, + "6744": 1, + "6746": 2, + "6756": 1, + "6757": 1, + "6783": 1, + "6785": 1, + "6786": 2, + "6787": 2, + "6788": 3, + "6789": 1, + "6790": 1, + "6791": 2, + "6794": 1, + "6796": 1, + "6799": 1, + "6805": 1, + "6812": 2, + "6813": 1, + "6819": 1, + "6821": 1, + "6868": 1, + "6932": 1, + "6935": 1, + "6936": 1, + "6940": 1, + "6946": 1, + "6950": 1, + "6953": 2, + "6954": 1, + "6956": 2, + "6957": 1, + "6958": 1, + "6966": 1, + "6968": 1, + "6969": 3, + "6971": 1, + "6974": 4, + "6975": 2, + "6976": 1, + "6978": 2, + "6979": 1, + "6981": 1, + "6983": 1, + "6985": 2, + "6986": 1, + "6991": 2, + "6993": 3, + "6996": 1, + "6998": 1, + "7005": 1, + "7006": 2, + "7007": 1, + "7009": 4, + "7010": 2, + "7011": 1, + "7012": 1, + "7014": 4, + "7015": 3, + "7016": 1, + "7017": 1, + "7019": 3, + "7021": 2, + "7024": 4, + "7025": 5, + "7026": 2, + "7027": 1, + "7028": 3, + "7030": 1, + "7031": 1, + "7032": 1, + "7033": 1, + "7034": 1, + "7036": 1, + "7037": 1, + "7039": 2, + "7040": 1, + "7041": 4, + "7043": 5, + "7046": 1, + "7047": 4, + "7049": 2, + "7051": 2, + "7052": 2, + "7054": 4, + "7055": 1, + "7056": 3, + "7057": 2, + "7058": 1, + "7059": 3, + "7060": 2, + "7061": 1, + "7062": 1, + "7063": 3, + "7065": 2, + "7066": 2, + "7067": 4, + "7068": 3, + "7069": 2, + "7070": 4, + "7071": 2, + "7072": 3, + "7073": 1, + "7074": 1, + "7076": 2, + "7077": 4, + "7078": 1, + "7079": 1, + "7080": 1, + "7082": 1, + "7084": 3, + "7085": 3, + "7086": 1, + "7087": 1, + "7089": 1, + "7093": 1, + "7096": 4, + "7099": 4, + "7100": 1, + "7101": 3, + "7102": 2, + "7103": 2, + "7104": 1, + "7106": 3, + "7108": 3, + "7109": 5, + "7111": 2, + "7112": 1, + "7115": 1, + "7117": 3, + "7118": 1, + "7119": 1, + "7120": 4, + "7121": 2, + "7122": 3, + "7123": 1, + "7124": 1, + "7125": 2, + "7126": 3, + "7127": 2, + "7128": 1, + "7130": 1, + "7131": 1, + "7132": 2, + "7133": 2, + "7134": 2, + "7135": 2, + "7136": 1, + "7138": 1, + "7140": 1, + "7142": 1, + "7143": 1, + "7144": 1, + "7145": 3, + "7146": 2, + "7147": 1, + "7148": 1, + "7149": 1, + "7155": 2, + "7156": 2, + "7157": 3, + "7158": 4, + "7159": 5, + "7160": 2, + "7162": 4, + "7163": 2, + "7165": 2, + "7166": 6, + "7167": 1, + "7168": 4, + "7169": 4, + "7170": 3, + "7171": 3, + "7172": 2, + "7173": 1, + "7175": 4, + "7177": 1, + "7178": 2, + "7179": 3, + "7180": 1, + "7182": 1, + "7183": 1, + "7185": 1, + "7186": 3, + "7187": 2, + "7188": 2, + "7190": 1, + "7191": 1, + "7192": 2, + "7193": 1, + "7195": 1, + "7199": 3, + "7202": 2, + "7203": 2, + "7204": 3, + "7205": 2, + "7206": 2, + "7207": 2, + "7208": 1, + "7209": 2, + "7210": 2, + "7211": 1, + "7214": 2, + "7216": 1, + "7217": 1, + "7218": 1, + "7219": 3, + "7222": 1, + "7224": 1, + "7225": 2, + "7226": 1, + "7231": 1, + "7232": 2, + "7234": 1, + "7235": 1, + "7237": 1, + "7238": 1, + "7241": 3, + "7242": 2, + "7243": 1, + "7246": 1, + "7249": 2, + "7250": 1, + "7254": 1, + "7255": 1, + "7256": 1, + "7257": 3, + "7258": 1, + "7259": 5, + "7260": 3, + "7261": 3, + "7262": 1, + "7263": 2, + "7265": 3, + "7269": 1, + "7270": 4, + "7271": 2, + "7273": 1, + "7274": 2, + "7275": 4, + "7276": 1, + "7277": 4, + "7278": 1, + "7281": 1, + "7282": 3, + "7284": 1, + "7285": 1, + "7286": 1, + "7287": 1, + "7289": 1, + "7293": 2, + "7294": 1, + "7295": 1, + "7297": 2, + "7298": 3, + "7299": 2, + "7302": 1, + "7303": 1, + "7305": 1, + "7307": 2, + "7308": 2, + "7309": 3, + "7310": 6, + "7313": 2, + "7314": 3, + "7319": 1, + "7320": 1, + "7324": 1, + "7325": 1, + "7329": 2, + "7331": 3, + "7332": 2, + "7333": 1, + "7334": 1, + "7336": 1, + "7337": 4, + "7338": 1, + "7340": 3, + "7341": 3, + "7342": 5, + "7343": 3, + "7344": 7, + "7345": 3, + "7347": 4, + "7348": 5, + "7349": 4, + "7350": 2, + "7351": 1, + "7352": 2, + "7353": 2, + "7354": 3, + "7355": 3, + "7356": 5, + "7357": 3, + "7358": 1, + "7359": 5, + "7360": 1, + "7361": 1, + "7362": 2, + "7363": 1, + "7365": 4, + "7366": 2, + "7367": 2, + "7368": 1, + "7369": 2, + "7370": 1, + "7371": 1, + "7372": 1, + "7373": 2, + "7374": 3, + "7375": 2, + "7377": 2, + "7378": 2, + "7379": 1, + "7380": 3, + "7382": 2, + "7383": 1, + "7384": 2, + "7386": 2, + "7388": 1, + "7390": 1, + "7391": 2, + "7394": 1, + "7396": 4, + "7397": 1, + "7398": 2, + "7399": 2, + "7400": 3, + "7401": 3, + "7402": 4, + "7403": 2, + "7404": 4, + "7405": 1, + "7406": 3, + "7407": 1, + "7408": 3, + "7409": 3, + "7411": 5, + "7412": 1, + "7413": 4, + "7414": 2, + "7415": 1, + "7416": 1, + "7417": 1, + "7418": 1, + "7419": 2, + "7420": 1, + "7422": 1, + "7423": 2, + "7424": 2, + "7427": 1, + "7428": 2, + "7430": 5, + "7431": 1, + "7432": 3, + "7433": 3, + "7434": 3, + "7435": 1, + "7436": 1, + "7437": 1, + "7438": 2, + "7439": 3, + "7440": 3, + "7441": 1, + "7442": 2, + "7445": 1, + "7446": 3, + "7448": 1, + "7449": 1, + "7450": 3, + "7451": 1, + "7452": 1, + "7453": 1, + "7455": 2, + "7464": 2, + "7467": 2, + "7468": 2, + "7473": 1, + "7474": 2, + "7475": 1, + "7477": 1, + "7478": 1, + "7479": 1, + "7480": 1, + "7481": 1, + "7482": 1, + "7483": 1, + "7487": 1, + "7494": 2, + "7495": 2, + "7496": 4, + "7497": 1, + "7501": 1, + "7502": 3, + "7505": 1, + "7510": 2, + "7512": 1, + "7513": 5, + "7514": 1, + "7516": 1, + "7517": 1, + "7520": 2, + "7621": 1, + "7624": 1, + "7625": 1, + "7628": 1, + "7631": 1, + "7632": 1, + "7635": 1, + "7636": 1, + "7640": 1, + "7641": 1, + "7642": 2, + "7645": 2, + "7646": 3, + "7647": 2, + "7648": 1, + "7649": 1, + "7650": 1, + "7651": 2, + "7652": 3, + "7661": 2, + "7680": 1, + "7685": 1, + "7699": 2, + "7703": 1, + "7707": 1, + "7711": 2, + "7722": 1, + "7725": 1, + "7732": 1, + "7738": 1, + "7799": 1, + "7817": 1, + "7820": 1, + "7855": 1, + "7860": 1, + "7863": 1, + "7869": 1, + "7902": 2, + "7903": 2, + "7934": 1, + "7939": 1, + "7945": 1, + "7950": 1, + "8009": 2, + "8020": 2, + "8039": 1, + "8093": 2, + "8137": 1, + "8139": 1, + "8150": 2, + "8170": 2, + "8175": 2, + "8176": 1, + "8178": 1, + "8190": 1, + "8191": 1, + "8195": 1, + "8204": 1, + "8229": 2, + "8238": 1, + "8239": 1, + "8259": 2, + "8261": 2, + "8262": 2, + "8266": 1, + "8271": 2, + "8275": 1, + "8277": 1, + "8278": 2, + "8279": 1, + "8283": 2, + "8288": 2, + "8302": 2, + "8322": 2, + "8350": 1, + "8352": 1, + "8363": 2, + "8368": 1, + "8370": 1, + "8401": 2, + "8406": 1, + "8410": 1, + "8414": 1, + "8419": 1, + "8478": 1, + "8482": 1, + "8488": 1, + "8489": 1, + "8493": 1, + "8535": 1 + }, + "started": "2025-09-11T20:10:04.716Z", + "trafficStats": { + "incomingCompressionRatio": 0.05503417584529367, + "incomingOctetsAppLevel": 131085419, + "incomingOctetsWebSocketLevel": 7214178, + "incomingOctetsWireLevel": 7222178, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0011089274481444734, + "outgoingCompressionRatio": 0.05503413770222606, + "outgoingOctetsAppLevel": 131085419, + "outgoingOctetsWebSocketLevel": 7214173, + "outgoingOctetsWireLevel": 7222297, + "outgoingWebSocketFrames": 2044, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0011261166040792202, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 1044, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "31": 2, + "40": 1, + "41": 1, + "61": 2, + "63": 2, + "64": 2, + "68": 1, + "73": 2, + "77": 1, + "79": 1, + "80": 2, + "81": 1, + "85": 2, + "90": 2, + "104": 2, + "124": 2, + "154": 1, + "156": 1, + "167": 2, + "172": 1, + "174": 1, + "205": 2, + "210": 1, + "214": 1, + "218": 1, + "223": 1, + "252": 1, + "282": 1, + "286": 1, + "292": 1, + "293": 1, + "297": 1, + "339": 1, + "1837": 1, + "1838": 3, + "1843": 1, + "1844": 1, + "1848": 1, + "1849": 1, + "1853": 1, + "1861": 1, + "1862": 1, + "1924": 1, + "1930": 1, + "1931": 2, + "1936": 2, + "1967": 2, + "1971": 1, + "1972": 1, + "1986": 1, + "1988": 1, + "2016": 2, + "2039": 2, + "2053": 2, + "2057": 2, + "2059": 1, + "2064": 3, + "2066": 1, + "2072": 1, + "2075": 2, + "2081": 1, + "2082": 3, + "2086": 1, + "2087": 1, + "2107": 2, + "2117": 2, + "2150": 1, + "2153": 1, + "2158": 2, + "2171": 1, + "2173": 1, + "2174": 1, + "2175": 1, + "2178": 1, + "2179": 3, + "2199": 1, + "2203": 1, + "2253": 2, + "2277": 1, + "2319": 1, + "2323": 1, + "2329": 1, + "2330": 2, + "2341": 2, + "2363": 1, + "2369": 1, + "2387": 1, + "2397": 1, + "2398": 1, + "2405": 1, + "2416": 1, + "2422": 1, + "2456": 1, + "2457": 3, + "2496": 1, + "2498": 1, + "2535": 1, + "2539": 1, + "2559": 1, + "2625": 1, + "2626": 1, + "2627": 1, + "2629": 1, + "2631": 1, + "2632": 2, + "2633": 1, + "2637": 1, + "2642": 1, + "2644": 1, + "2646": 2, + "2656": 1, + "2657": 1, + "2683": 1, + "2685": 1, + "2686": 2, + "2687": 2, + "2688": 3, + "2689": 1, + "2690": 1, + "2691": 2, + "2694": 1, + "2696": 1, + "2699": 1, + "2705": 1, + "2712": 2, + "2713": 1, + "2719": 1, + "2721": 1, + "2768": 1, + "2832": 1, + "2835": 1, + "2836": 1, + "2840": 1, + "2846": 1, + "2850": 1, + "2853": 2, + "2854": 1, + "2856": 2, + "2857": 1, + "2858": 1, + "2866": 1, + "2868": 1, + "2869": 3, + "2871": 1, + "2874": 4, + "2875": 2, + "2876": 1, + "2878": 2, + "2879": 1, + "2881": 1, + "2883": 1, + "2885": 2, + "2886": 1, + "2891": 2, + "2893": 3, + "2896": 1, + "2898": 1, + "2905": 1, + "2906": 2, + "2907": 1, + "2909": 4, + "2910": 2, + "2911": 1, + "2912": 1, + "2914": 4, + "2915": 3, + "2916": 1, + "2917": 1, + "2919": 3, + "2921": 2, + "2924": 4, + "2925": 5, + "2926": 2, + "2927": 1, + "2928": 3, + "2930": 1, + "2931": 1, + "2932": 1, + "2933": 1, + "2934": 1, + "2936": 1, + "2937": 1, + "2939": 2, + "2940": 1, + "2941": 4, + "2943": 5, + "2946": 1, + "2947": 4, + "2949": 2, + "2951": 2, + "2952": 2, + "2954": 4, + "2955": 1, + "2956": 3, + "2957": 2, + "2958": 1, + "2959": 3, + "2960": 2, + "2961": 1, + "2962": 1, + "2963": 3, + "2965": 2, + "2966": 2, + "2967": 4, + "2968": 3, + "2969": 2, + "2970": 4, + "2971": 2, + "2972": 3, + "2973": 1, + "2974": 1, + "2976": 2, + "2977": 4, + "2978": 1, + "2979": 1, + "2980": 1, + "2982": 1, + "2984": 3, + "2985": 3, + "2986": 1, + "2987": 1, + "2989": 1, + "2993": 1, + "2996": 4, + "2999": 4, + "3000": 1, + "3001": 3, + "3002": 2, + "3003": 2, + "3004": 1, + "3006": 3, + "3008": 3, + "3009": 5, + "3011": 2, + "3012": 1, + "3015": 1, + "3017": 3, + "3018": 1, + "3019": 1, + "3020": 4, + "3021": 2, + "3022": 3, + "3023": 1, + "3024": 1, + "3025": 2, + "3026": 3, + "3027": 2, + "3028": 1, + "3030": 1, + "3031": 1, + "3032": 2, + "3033": 2, + "3034": 2, + "3035": 2, + "3036": 1, + "3038": 1, + "3040": 1, + "3042": 1, + "3043": 1, + "3044": 1, + "3045": 3, + "3046": 2, + "3047": 1, + "3048": 1, + "3049": 1, + "3055": 2, + "3056": 2, + "3057": 3, + "3058": 4, + "3059": 5, + "3060": 2, + "3062": 4, + "3063": 2, + "3065": 2, + "3066": 6, + "3067": 1, + "3068": 4, + "3069": 4, + "3070": 3, + "3071": 3, + "3072": 2, + "3073": 1, + "3075": 4, + "3077": 1, + "3078": 2, + "3079": 3, + "3080": 1, + "3082": 1, + "3083": 1, + "3085": 1, + "3086": 3, + "3087": 2, + "3088": 2, + "3090": 1, + "3091": 1, + "3092": 2, + "3093": 1, + "3095": 1, + "3099": 3, + "3102": 2, + "3103": 2, + "3104": 3, + "3105": 2, + "3106": 2, + "3107": 2, + "3108": 1, + "3109": 2, + "3110": 2, + "3111": 1, + "3114": 2, + "3116": 1, + "3117": 1, + "3118": 1, + "3119": 3, + "3122": 1, + "3124": 1, + "3125": 2, + "3126": 1, + "3131": 1, + "3132": 2, + "3134": 1, + "3135": 1, + "3137": 1, + "3138": 1, + "3141": 3, + "3142": 2, + "3143": 1, + "3146": 1, + "3149": 2, + "3150": 1, + "3154": 1, + "3155": 1, + "3156": 1, + "3157": 3, + "3158": 1, + "3159": 5, + "3160": 3, + "3161": 3, + "3162": 1, + "3163": 2, + "3165": 3, + "3169": 1, + "3170": 4, + "3171": 2, + "3173": 1, + "3174": 2, + "3175": 4, + "3176": 1, + "3177": 4, + "3178": 1, + "3181": 1, + "3182": 3, + "3184": 1, + "3185": 1, + "3186": 1, + "3187": 1, + "3189": 1, + "3193": 2, + "3194": 1, + "3195": 1, + "3197": 2, + "3198": 3, + "3199": 2, + "3202": 1, + "3203": 1, + "3205": 1, + "3207": 2, + "3208": 2, + "3209": 3, + "3210": 6, + "3213": 2, + "3214": 3, + "3219": 1, + "3220": 1, + "3224": 1, + "3225": 1, + "3229": 2, + "3231": 3, + "3232": 2, + "3233": 1, + "3234": 1, + "3236": 1, + "3237": 4, + "3238": 1, + "3240": 3, + "3241": 3, + "3242": 5, + "3243": 3, + "3244": 7, + "3245": 3, + "3247": 4, + "3248": 5, + "3249": 4, + "3250": 2, + "3251": 1, + "3252": 2, + "3253": 2, + "3254": 3, + "3255": 3, + "3256": 5, + "3257": 3, + "3258": 1, + "3259": 5, + "3260": 1, + "3261": 1, + "3262": 2, + "3263": 1, + "3265": 4, + "3266": 2, + "3267": 2, + "3268": 1, + "3269": 2, + "3270": 1, + "3271": 1, + "3272": 1, + "3273": 2, + "3274": 3, + "3275": 2, + "3277": 2, + "3278": 2, + "3279": 1, + "3280": 3, + "3282": 2, + "3283": 1, + "3284": 2, + "3286": 2, + "3288": 1, + "3290": 1, + "3291": 2, + "3294": 1, + "3296": 4, + "3297": 1, + "3298": 2, + "3299": 2, + "3300": 3, + "3301": 3, + "3302": 4, + "3303": 2, + "3304": 4, + "3305": 1, + "3306": 3, + "3307": 1, + "3308": 3, + "3309": 3, + "3311": 5, + "3312": 1, + "3313": 4, + "3314": 2, + "3315": 1, + "3316": 1, + "3317": 1, + "3318": 1, + "3319": 2, + "3320": 1, + "3322": 1, + "3323": 2, + "3324": 2, + "3327": 1, + "3328": 2, + "3330": 5, + "3331": 1, + "3332": 3, + "3333": 3, + "3334": 3, + "3335": 1, + "3336": 1, + "3337": 1, + "3338": 2, + "3339": 3, + "3340": 3, + "3341": 1, + "3342": 2, + "3345": 1, + "3346": 3, + "3348": 1, + "3349": 1, + "3350": 3, + "3351": 1, + "3352": 1, + "3353": 1, + "3355": 2, + "3364": 2, + "3367": 2, + "3368": 2, + "3373": 1, + "3374": 2, + "3375": 1, + "3377": 1, + "3378": 1, + "3379": 1, + "3380": 1, + "3381": 1, + "3382": 1, + "3383": 1, + "3387": 1, + "3394": 2, + "3395": 2, + "3396": 4, + "3397": 1, + "3401": 1, + "3402": 3, + "3405": 1, + "3410": 2, + "3412": 1, + "3413": 5, + "3414": 1, + "3416": 1, + "3417": 1, + "3420": 2, + "3521": 1, + "3524": 1, + "3525": 1, + "3528": 1, + "3531": 1, + "3532": 1, + "3535": 1, + "3536": 1, + "3540": 1, + "3541": 1, + "3542": 2, + "3545": 2, + "3546": 3, + "3547": 2, + "3548": 1, + "3549": 1, + "3550": 1, + "3551": 2, + "3552": 3, + "3561": 2, + "3580": 1, + "3585": 1, + "3599": 2, + "3603": 1, + "3607": 1, + "3611": 2, + "3622": 1, + "3625": 1, + "3632": 1, + "3638": 1, + "3699": 1, + "3717": 1, + "3720": 1, + "3755": 1, + "3760": 1, + "3763": 1, + "3769": 1, + "3802": 2, + "3803": 2, + "3834": 1, + "3839": 1, + "3845": 1, + "3850": 1, + "3909": 2, + "3920": 2, + "3939": 1, + "3993": 2, + "4037": 1, + "4039": 1, + "4050": 2, + "4070": 2, + "4075": 2, + "4076": 1, + "4078": 1, + "4090": 1, + "4091": 1, + "4095": 1, + "4099": 1, + "4100": 1044 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333732266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b75e2e8fb4b6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b75e2e8f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_18.html b/autobahn/client/tungstenite_case_12_4_18.html new file mode 100644 index 0000000..c67c2fa --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_18.html @@ -0,0 +1,1430 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.18 : Pass - 3728 ms @ 2025-09-11T20:10:08.486Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=373&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Ud3d72YEJNmzwZrt7z1Cog==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zV7R0TRNShwbavV3jcAGfa6sRXg=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
593715937
5938317814
594315943
594415944
594815948
594915949
595315953
596115961
596215962
602416024
603016030
6031212062
6036212072
6067212134
607116071
607216072
608616086
608816088
6116212232
6139212278
6153212306
6157212314
615916159
6164318492
616616166
617216172
6175212350
618116181
6182318546
618616186
618716187
6207212414
6217212434
625016250
625316253
6258212516
627116271
627316273
627416274
627516275
627816278
6279318837
629916299
630316303
6353212706
637716377
641916419
642316423
642916429
6430212860
6441212882
646316463
646916469
648716487
649716497
649816498
650516505
651616516
652216522
655616556
6557319671
659616596
659816598
663516635
663916639
665916659
672516725
672616726
672716727
672916729
673116731
6732213464
673316733
673716737
674216742
674416744
6746213492
675616756
675716757
678316783
678516785
6786213572
6787213574
6788320364
678916789
679016790
6791213582
679416794
679616796
679916799
680516805
6812213624
681316813
681916819
682116821
686816868
693216932
693516935
693616936
694016940
694616946
695016950
6953213906
695416954
6956213912
695716957
695816958
696616966
696816968
6969320907
697116971
6974427896
6975213950
697616976
6978213956
697916979
698116981
698316983
6985213970
698616986
6991213982
6993320979
699616996
699816998
700517005
7006214012
700717007
7009428036
7010214020
701117011
701217012
7014428056
7015321045
701617016
701717017
7019321057
7021214042
7024428096
7025535125
7026214052
702717027
7028321084
703017030
703117031
703217032
703317033
703417034
703617036
703717037
7039214078
704017040
7041428164
7043535215
704617046
7047428188
7049214098
7051214102
7052214104
7054428216
705517055
7056321168
7057214114
705817058
7059321177
7060214120
706117061
706217062
7063321189
7065214130
7066214132
7067428268
7068321204
7069214138
7070428280
7071214142
7072321216
707317073
707417074
7076214152
7077428308
707817078
707917079
708017080
708217082
7084321252
7085321255
708617086
708717087
708917089
709317093
7096428384
7099428396
710017100
7101321303
7102214204
7103214206
710417104
7106321318
7108321324
7109535545
7111214222
711217112
711517115
7117321351
711817118
711917119
7120428480
7121214242
7122321366
712317123
712417124
7125214250
7126321378
7127214254
712817128
713017130
713117131
7132214264
7133214266
7134214268
7135214270
713617136
713817138
714017140
714217142
714317143
714417144
7145321435
7146214292
714717147
714817148
714917149
7155214310
7156214312
7157321471
7158428632
7159535795
7160214320
7162428648
7163214326
7165214330
7166642996
716717167
7168428672
7169428676
7170321510
7171321513
7172214344
717317173
7175428700
717717177
7178214356
7179321537
718017180
718217182
718317183
718517185
7186321558
7187214374
7188214376
719017190
719117191
7192214384
719317193
719517195
7199321597
7202214404
7203214406
7204321612
7205214410
7206214412
7207214414
720817208
7209214418
7210214420
721117211
7214214428
721617216
721717217
721817218
7219321657
722217222
722417224
7225214450
722617226
723117231
7232214464
723417234
723517235
723717237
723817238
7241321723
7242214484
724317243
724617246
7249214498
725017250
725417254
725517255
725617256
7257321771
725817258
7259536295
7260321780
7261321783
726217262
7263214526
7265321795
726917269
7270429080
7271214542
727317273
7274214548
7275429100
727617276
7277429108
727817278
728117281
7282321846
728417284
728517285
728617286
728717287
728917289
7293214586
729417294
729517295
7297214594
7298321894
7299214598
730217302
730317303
730517305
7307214614
7308214616
7309321927
7310643860
7313214626
7314321942
731917319
732017320
732417324
732517325
7329214658
7331321993
7332214664
733317333
733417334
733617336
7337429348
733817338
7340322020
7341322023
7342536710
7343322029
7344751408
7345322035
7347429388
7348536740
7349429396
7350214700
735117351
7352214704
7353214706
7354322062
7355322065
7356536780
7357322071
735817358
7359536795
736017360
736117361
7362214724
736317363
7365429460
7366214732
7367214734
736817368
7369214738
737017370
737117371
737217372
7373214746
7374322122
7375214750
7377214754
7378214756
737917379
7380322140
7382214764
738317383
7384214768
7386214772
738817388
739017390
7391214782
739417394
7396429584
739717397
7398214796
7399214798
7400322200
7401322203
7402429608
7403214806
7404429616
740517405
7406322218
740717407
7408322224
7409322227
7411537055
741217412
7413429652
7414214828
741517415
741617416
741717417
741817418
7419214838
742017420
742217422
7423214846
7424214848
742717427
7428214856
7430537150
743117431
7432322296
7433322299
7434322302
743517435
743617436
743717437
7438214876
7439322317
7440322320
744117441
7442214884
744517445
7446322338
744817448
744917449
7450322350
745117451
745217452
745317453
7455214910
7464214928
7467214934
7468214936
747317473
7474214948
747517475
747717477
747817478
747917479
748017480
748117481
748217482
748317483
748717487
7494214988
7495214990
7496429984
749717497
750117501
7502322506
750517505
7510215020
751217512
7513537565
751417514
751617516
751717517
7520215040
762117621
762417624
762517625
762817628
763117631
763217632
763517635
763617636
764017640
764117641
7642215284
7645215290
7646322938
7647215294
764817648
764917649
765017650
7651215302
7652322956
7661215322
768017680
768517685
7699215398
770317703
770717707
7711215422
772217722
772517725
773217732
773817738
779917799
781717817
782017820
785517855
786017860
786317863
786917869
7902215804
7903215806
793417934
793917939
794517945
795017950
8009216018
8020216040
803918039
8093216186
813718137
813918139
8150216300
8170216340
8175216350
817618176
817818178
819018190
819118191
819518195
820418204
8229216458
823818238
823918239
8259216518
8261216522
8262216524
826618266
8271216542
827518275
827718277
8278216556
827918279
8283216566
8288216576
8302216604
8322216644
835018350
835218352
8363216726
836818368
837018370
8401216802
840618406
841018410
841418414
841918419
847818478
848218482
848818488
848918489
849318493
853518535
Total10027222443
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
593315933
5934317802
593915939
594015940
594415944
594515945
594915949
595715957
595815958
602016020
602616026
6027212054
6032212064
6063212126
606716067
606816068
608216082
608416084
6112212224
6135212270
6149212298
6153212306
615516155
6160318480
616216162
616816168
6171212342
617716177
6178318534
618216182
618316183
6203212406
6213212426
624616246
624916249
6254212508
626716267
626916269
627016270
627116271
627416274
6275318825
629516295
629916299
6349212698
637316373
641516415
641916419
642516425
6426212852
6437212874
645916459
646516465
648316483
649316493
649416494
650116501
651216512
651816518
655216552
6553319659
659216592
659416594
663116631
663516635
665516655
672116721
672216722
672316723
672516725
672716727
6728213456
672916729
673316733
673816738
674016740
6742213484
675216752
675316753
677916779
678116781
6782213564
6783213566
6784320352
678516785
678616786
6787213574
679016790
679216792
679516795
680116801
6808213616
680916809
681516815
681716817
686416864
692816928
693116931
693216932
693616936
694216942
694616946
6949213898
695016950
6952213904
695316953
695416954
696216962
696416964
6965320895
696716967
6970427880
6971213942
697216972
6974213948
697516975
697716977
697916979
6981213962
698216982
6987213974
6989320967
699216992
699416994
700117001
7002214004
700317003
7005428020
7006214012
700717007
700817008
7010428040
7011321033
701217012
701317013
7015321045
7017214034
7020428080
7021535105
7022214044
702317023
7024321072
702617026
702717027
702817028
702917029
703017030
703217032
703317033
7035214070
703617036
7037428148
7039535195
704217042
7043428172
7045214090
7047214094
7048214096
7050428200
705117051
7052321156
7053214106
705417054
7055321165
7056214112
705717057
705817058
7059321177
7061214122
7062214124
7063428252
7064321192
7065214130
7066428264
7067214134
7068321204
706917069
707017070
7072214144
7073428292
707417074
707517075
707617076
707817078
7080321240
7081321243
708217082
708317083
708517085
708917089
7092428368
7095428380
709617096
7097321291
7098214196
7099214198
710017100
7102321306
7104321312
7105535525
7107214214
710817108
711117111
7113321339
711417114
711517115
7116428464
7117214234
7118321354
711917119
712017120
7121214242
7122321366
7123214246
712417124
712617126
712717127
7128214256
7129214258
7130214260
7131214262
713217132
713417134
713617136
713817138
713917139
714017140
7141321423
7142214284
714317143
714417144
714517145
7151214302
7152214304
7153321459
7154428616
7155535775
7156214312
7158428632
7159214318
7161214322
7162642972
716317163
7164428656
7165428660
7166321498
7167321501
7168214336
716917169
7171428684
717317173
7174214348
7175321525
717617176
717817178
717917179
718117181
7182321546
7183214366
7184214368
718617186
718717187
7188214376
718917189
719117191
7195321585
7198214396
7199214398
7200321600
7201214402
7202214404
7203214406
720417204
7205214410
7206214412
720717207
7210214420
721217212
721317213
721417214
7215321645
721817218
722017220
7221214442
722217222
722717227
7228214456
723017230
723117231
723317233
723417234
7237321711
7238214476
723917239
724217242
7245214490
724617246
725017250
725117251
725217252
7253321759
725417254
7255536275
7256321768
7257321771
725817258
7259214518
7261321783
726517265
7266429064
7267214534
726917269
7270214540
7271429084
727217272
7273429092
727417274
727717277
7278321834
728017280
728117281
728217282
728317283
728517285
7289214578
729017290
729117291
7293214586
7294321882
7295214590
729817298
729917299
730117301
7303214606
7304214608
7305321915
7306643836
7309214618
7310321930
731517315
731617316
732017320
732117321
7325214650
7327321981
7328214656
732917329
733017330
733217332
7333429332
733417334
7336322008
7337322011
7338536690
7339322017
7340751380
7341322023
7343429372
7344536720
7345429380
7346214692
734717347
7348214696
7349214698
7350322050
7351322053
7352536760
7353322059
735417354
7355536775
735617356
735717357
7358214716
735917359
7361429444
7362214724
7363214726
736417364
7365214730
736617366
736717367
736817368
7369214738
7370322110
7371214742
7373214746
7374214748
737517375
7376322128
7378214756
737917379
7380214760
7382214764
738417384
738617386
7387214774
739017390
7392429568
739317393
7394214788
7395214790
7396322188
7397322191
7398429592
7399214798
7400429600
740117401
7402322206
740317403
7404322212
7405322215
7407537035
740817408
7409429636
7410214820
741117411
741217412
741317413
741417414
7415214830
741617416
741817418
7419214838
7420214840
742317423
7424214848
7426537130
742717427
7428322284
7429322287
7430322290
743117431
743217432
743317433
7434214868
7435322305
7436322308
743717437
7438214876
744117441
7442322326
744417444
744517445
7446322338
744717447
744817448
744917449
7451214902
7460214920
7463214926
7464214928
746917469
7470214940
747117471
747317473
747417474
747517475
747617476
747717477
747817478
747917479
748317483
7490214980
7491214982
7492429968
749317493
749717497
7498322494
750117501
7506215012
750817508
7509537545
751017510
751217512
751317513
7516215032
761717617
762017620
762117621
762417624
762717627
762817628
763117631
763217632
763617636
763717637
7638215276
7641215282
7642322926
7643215286
764417644
764517645
764617646
7647215294
7648322944
7657215314
767617676
768117681
7695215390
769917699
770317703
7707215414
771817718
772117721
772817728
773417734
779517795
781317813
781617816
785117851
785617856
785917859
786517865
7898215796
7899215798
793017930
793517935
794117941
794617946
8005216010
8016216032
803518035
8089216178
813318133
813518135
8146216292
8166216332
8171216342
817218172
817418174
818618186
818718187
819118191
819518195
8225216450
823418234
823518235
8255216510
8257216514
8258216516
826218262
8267216534
827118271
827318273
8274216548
827518275
8279216558
8284216568
8298216596
8318216636
834618346
834818348
8359216718
836418364
836618366
8397216794
840218402
840618406
841018410
841518415
847418474
847818478
848418484
848518485
848918489
853118531
Total10027218429
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333733266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882fbb23b62f85a
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6662623233623632
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_18.json b/autobahn/client/tungstenite_case_12_4_18.json new file mode 100644 index 0000000..99ce9ac --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_18.json @@ -0,0 +1,1277 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 373, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 3728, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=373&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Ud3d72YEJNmzwZrt7z1Cog==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zV7R0TRNShwbavV3jcAGfa6sRXg=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5937": 1, + "5938": 3, + "5943": 1, + "5944": 1, + "5948": 1, + "5949": 1, + "5953": 1, + "5961": 1, + "5962": 1, + "6024": 1, + "6030": 1, + "6031": 2, + "6036": 2, + "6067": 2, + "6071": 1, + "6072": 1, + "6086": 1, + "6088": 1, + "6116": 2, + "6139": 2, + "6153": 2, + "6157": 2, + "6159": 1, + "6164": 3, + "6166": 1, + "6172": 1, + "6175": 2, + "6181": 1, + "6182": 3, + "6186": 1, + "6187": 1, + "6207": 2, + "6217": 2, + "6250": 1, + "6253": 1, + "6258": 2, + "6271": 1, + "6273": 1, + "6274": 1, + "6275": 1, + "6278": 1, + "6279": 3, + "6299": 1, + "6303": 1, + "6353": 2, + "6377": 1, + "6419": 1, + "6423": 1, + "6429": 1, + "6430": 2, + "6441": 2, + "6463": 1, + "6469": 1, + "6487": 1, + "6497": 1, + "6498": 1, + "6505": 1, + "6516": 1, + "6522": 1, + "6556": 1, + "6557": 3, + "6596": 1, + "6598": 1, + "6635": 1, + "6639": 1, + "6659": 1, + "6725": 1, + "6726": 1, + "6727": 1, + "6729": 1, + "6731": 1, + "6732": 2, + "6733": 1, + "6737": 1, + "6742": 1, + "6744": 1, + "6746": 2, + "6756": 1, + "6757": 1, + "6783": 1, + "6785": 1, + "6786": 2, + "6787": 2, + "6788": 3, + "6789": 1, + "6790": 1, + "6791": 2, + "6794": 1, + "6796": 1, + "6799": 1, + "6805": 1, + "6812": 2, + "6813": 1, + "6819": 1, + "6821": 1, + "6868": 1, + "6932": 1, + "6935": 1, + "6936": 1, + "6940": 1, + "6946": 1, + "6950": 1, + "6953": 2, + "6954": 1, + "6956": 2, + "6957": 1, + "6958": 1, + "6966": 1, + "6968": 1, + "6969": 3, + "6971": 1, + "6974": 4, + "6975": 2, + "6976": 1, + "6978": 2, + "6979": 1, + "6981": 1, + "6983": 1, + "6985": 2, + "6986": 1, + "6991": 2, + "6993": 3, + "6996": 1, + "6998": 1, + "7005": 1, + "7006": 2, + "7007": 1, + "7009": 4, + "7010": 2, + "7011": 1, + "7012": 1, + "7014": 4, + "7015": 3, + "7016": 1, + "7017": 1, + "7019": 3, + "7021": 2, + "7024": 4, + "7025": 5, + "7026": 2, + "7027": 1, + "7028": 3, + "7030": 1, + "7031": 1, + "7032": 1, + "7033": 1, + "7034": 1, + "7036": 1, + "7037": 1, + "7039": 2, + "7040": 1, + "7041": 4, + "7043": 5, + "7046": 1, + "7047": 4, + "7049": 2, + "7051": 2, + "7052": 2, + "7054": 4, + "7055": 1, + "7056": 3, + "7057": 2, + "7058": 1, + "7059": 3, + "7060": 2, + "7061": 1, + "7062": 1, + "7063": 3, + "7065": 2, + "7066": 2, + "7067": 4, + "7068": 3, + "7069": 2, + "7070": 4, + "7071": 2, + "7072": 3, + "7073": 1, + "7074": 1, + "7076": 2, + "7077": 4, + "7078": 1, + "7079": 1, + "7080": 1, + "7082": 1, + "7084": 3, + "7085": 3, + "7086": 1, + "7087": 1, + "7089": 1, + "7093": 1, + "7096": 4, + "7099": 4, + "7100": 1, + "7101": 3, + "7102": 2, + "7103": 2, + "7104": 1, + "7106": 3, + "7108": 3, + "7109": 5, + "7111": 2, + "7112": 1, + "7115": 1, + "7117": 3, + "7118": 1, + "7119": 1, + "7120": 4, + "7121": 2, + "7122": 3, + "7123": 1, + "7124": 1, + "7125": 2, + "7126": 3, + "7127": 2, + "7128": 1, + "7130": 1, + "7131": 1, + "7132": 2, + "7133": 2, + "7134": 2, + "7135": 2, + "7136": 1, + "7138": 1, + "7140": 1, + "7142": 1, + "7143": 1, + "7144": 1, + "7145": 3, + "7146": 2, + "7147": 1, + "7148": 1, + "7149": 1, + "7155": 2, + "7156": 2, + "7157": 3, + "7158": 4, + "7159": 5, + "7160": 2, + "7162": 4, + "7163": 2, + "7165": 2, + "7166": 6, + "7167": 1, + "7168": 4, + "7169": 4, + "7170": 3, + "7171": 3, + "7172": 2, + "7173": 1, + "7175": 4, + "7177": 1, + "7178": 2, + "7179": 3, + "7180": 1, + "7182": 1, + "7183": 1, + "7185": 1, + "7186": 3, + "7187": 2, + "7188": 2, + "7190": 1, + "7191": 1, + "7192": 2, + "7193": 1, + "7195": 1, + "7199": 3, + "7202": 2, + "7203": 2, + "7204": 3, + "7205": 2, + "7206": 2, + "7207": 2, + "7208": 1, + "7209": 2, + "7210": 2, + "7211": 1, + "7214": 2, + "7216": 1, + "7217": 1, + "7218": 1, + "7219": 3, + "7222": 1, + "7224": 1, + "7225": 2, + "7226": 1, + "7231": 1, + "7232": 2, + "7234": 1, + "7235": 1, + "7237": 1, + "7238": 1, + "7241": 3, + "7242": 2, + "7243": 1, + "7246": 1, + "7249": 2, + "7250": 1, + "7254": 1, + "7255": 1, + "7256": 1, + "7257": 3, + "7258": 1, + "7259": 5, + "7260": 3, + "7261": 3, + "7262": 1, + "7263": 2, + "7265": 3, + "7269": 1, + "7270": 4, + "7271": 2, + "7273": 1, + "7274": 2, + "7275": 4, + "7276": 1, + "7277": 4, + "7278": 1, + "7281": 1, + "7282": 3, + "7284": 1, + "7285": 1, + "7286": 1, + "7287": 1, + "7289": 1, + "7293": 2, + "7294": 1, + "7295": 1, + "7297": 2, + "7298": 3, + "7299": 2, + "7302": 1, + "7303": 1, + "7305": 1, + "7307": 2, + "7308": 2, + "7309": 3, + "7310": 6, + "7313": 2, + "7314": 3, + "7319": 1, + "7320": 1, + "7324": 1, + "7325": 1, + "7329": 2, + "7331": 3, + "7332": 2, + "7333": 1, + "7334": 1, + "7336": 1, + "7337": 4, + "7338": 1, + "7340": 3, + "7341": 3, + "7342": 5, + "7343": 3, + "7344": 7, + "7345": 3, + "7347": 4, + "7348": 5, + "7349": 4, + "7350": 2, + "7351": 1, + "7352": 2, + "7353": 2, + "7354": 3, + "7355": 3, + "7356": 5, + "7357": 3, + "7358": 1, + "7359": 5, + "7360": 1, + "7361": 1, + "7362": 2, + "7363": 1, + "7365": 4, + "7366": 2, + "7367": 2, + "7368": 1, + "7369": 2, + "7370": 1, + "7371": 1, + "7372": 1, + "7373": 2, + "7374": 3, + "7375": 2, + "7377": 2, + "7378": 2, + "7379": 1, + "7380": 3, + "7382": 2, + "7383": 1, + "7384": 2, + "7386": 2, + "7388": 1, + "7390": 1, + "7391": 2, + "7394": 1, + "7396": 4, + "7397": 1, + "7398": 2, + "7399": 2, + "7400": 3, + "7401": 3, + "7402": 4, + "7403": 2, + "7404": 4, + "7405": 1, + "7406": 3, + "7407": 1, + "7408": 3, + "7409": 3, + "7411": 5, + "7412": 1, + "7413": 4, + "7414": 2, + "7415": 1, + "7416": 1, + "7417": 1, + "7418": 1, + "7419": 2, + "7420": 1, + "7422": 1, + "7423": 2, + "7424": 2, + "7427": 1, + "7428": 2, + "7430": 5, + "7431": 1, + "7432": 3, + "7433": 3, + "7434": 3, + "7435": 1, + "7436": 1, + "7437": 1, + "7438": 2, + "7439": 3, + "7440": 3, + "7441": 1, + "7442": 2, + "7445": 1, + "7446": 3, + "7448": 1, + "7449": 1, + "7450": 3, + "7451": 1, + "7452": 1, + "7453": 1, + "7455": 2, + "7464": 2, + "7467": 2, + "7468": 2, + "7473": 1, + "7474": 2, + "7475": 1, + "7477": 1, + "7478": 1, + "7479": 1, + "7480": 1, + "7481": 1, + "7482": 1, + "7483": 1, + "7487": 1, + "7494": 2, + "7495": 2, + "7496": 4, + "7497": 1, + "7501": 1, + "7502": 3, + "7505": 1, + "7510": 2, + "7512": 1, + "7513": 5, + "7514": 1, + "7516": 1, + "7517": 1, + "7520": 2, + "7621": 1, + "7624": 1, + "7625": 1, + "7628": 1, + "7631": 1, + "7632": 1, + "7635": 1, + "7636": 1, + "7640": 1, + "7641": 1, + "7642": 2, + "7645": 2, + "7646": 3, + "7647": 2, + "7648": 1, + "7649": 1, + "7650": 1, + "7651": 2, + "7652": 3, + "7661": 2, + "7680": 1, + "7685": 1, + "7699": 2, + "7703": 1, + "7707": 1, + "7711": 2, + "7722": 1, + "7725": 1, + "7732": 1, + "7738": 1, + "7799": 1, + "7817": 1, + "7820": 1, + "7855": 1, + "7860": 1, + "7863": 1, + "7869": 1, + "7902": 2, + "7903": 2, + "7934": 1, + "7939": 1, + "7945": 1, + "7950": 1, + "8009": 2, + "8020": 2, + "8039": 1, + "8093": 2, + "8137": 1, + "8139": 1, + "8150": 2, + "8170": 2, + "8175": 2, + "8176": 1, + "8178": 1, + "8190": 1, + "8191": 1, + "8195": 1, + "8204": 1, + "8229": 2, + "8238": 1, + "8239": 1, + "8259": 2, + "8261": 2, + "8262": 2, + "8266": 1, + "8271": 2, + "8275": 1, + "8277": 1, + "8278": 2, + "8279": 1, + "8283": 2, + "8288": 2, + "8302": 2, + "8322": 2, + "8350": 1, + "8352": 1, + "8363": 2, + "8368": 1, + "8370": 1, + "8401": 2, + "8406": 1, + "8410": 1, + "8414": 1, + "8419": 1, + "8478": 1, + "8482": 1, + "8488": 1, + "8489": 1, + "8493": 1, + "8535": 1 + }, + "started": "2025-09-11T20:10:08.486Z", + "trafficStats": { + "incomingCompressionRatio": 0.05503417584529367, + "incomingOctetsAppLevel": 131085419, + "incomingOctetsWebSocketLevel": 7214178, + "incomingOctetsWireLevel": 7222178, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0011089274481444734, + "outgoingCompressionRatio": 0.05503413770222606, + "outgoingOctetsAppLevel": 131085419, + "outgoingOctetsWebSocketLevel": 7214173, + "outgoingOctetsWireLevel": 7218173, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0005544641083600297, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "5933": 1, + "5934": 3, + "5939": 1, + "5940": 1, + "5944": 1, + "5945": 1, + "5949": 1, + "5957": 1, + "5958": 1, + "6020": 1, + "6026": 1, + "6027": 2, + "6032": 2, + "6063": 2, + "6067": 1, + "6068": 1, + "6082": 1, + "6084": 1, + "6112": 2, + "6135": 2, + "6149": 2, + "6153": 2, + "6155": 1, + "6160": 3, + "6162": 1, + "6168": 1, + "6171": 2, + "6177": 1, + "6178": 3, + "6182": 1, + "6183": 1, + "6203": 2, + "6213": 2, + "6246": 1, + "6249": 1, + "6254": 2, + "6267": 1, + "6269": 1, + "6270": 1, + "6271": 1, + "6274": 1, + "6275": 3, + "6295": 1, + "6299": 1, + "6349": 2, + "6373": 1, + "6415": 1, + "6419": 1, + "6425": 1, + "6426": 2, + "6437": 2, + "6459": 1, + "6465": 1, + "6483": 1, + "6493": 1, + "6494": 1, + "6501": 1, + "6512": 1, + "6518": 1, + "6552": 1, + "6553": 3, + "6592": 1, + "6594": 1, + "6631": 1, + "6635": 1, + "6655": 1, + "6721": 1, + "6722": 1, + "6723": 1, + "6725": 1, + "6727": 1, + "6728": 2, + "6729": 1, + "6733": 1, + "6738": 1, + "6740": 1, + "6742": 2, + "6752": 1, + "6753": 1, + "6779": 1, + "6781": 1, + "6782": 2, + "6783": 2, + "6784": 3, + "6785": 1, + "6786": 1, + "6787": 2, + "6790": 1, + "6792": 1, + "6795": 1, + "6801": 1, + "6808": 2, + "6809": 1, + "6815": 1, + "6817": 1, + "6864": 1, + "6928": 1, + "6931": 1, + "6932": 1, + "6936": 1, + "6942": 1, + "6946": 1, + "6949": 2, + "6950": 1, + "6952": 2, + "6953": 1, + "6954": 1, + "6962": 1, + "6964": 1, + "6965": 3, + "6967": 1, + "6970": 4, + "6971": 2, + "6972": 1, + "6974": 2, + "6975": 1, + "6977": 1, + "6979": 1, + "6981": 2, + "6982": 1, + "6987": 2, + "6989": 3, + "6992": 1, + "6994": 1, + "7001": 1, + "7002": 2, + "7003": 1, + "7005": 4, + "7006": 2, + "7007": 1, + "7008": 1, + "7010": 4, + "7011": 3, + "7012": 1, + "7013": 1, + "7015": 3, + "7017": 2, + "7020": 4, + "7021": 5, + "7022": 2, + "7023": 1, + "7024": 3, + "7026": 1, + "7027": 1, + "7028": 1, + "7029": 1, + "7030": 1, + "7032": 1, + "7033": 1, + "7035": 2, + "7036": 1, + "7037": 4, + "7039": 5, + "7042": 1, + "7043": 4, + "7045": 2, + "7047": 2, + "7048": 2, + "7050": 4, + "7051": 1, + "7052": 3, + "7053": 2, + "7054": 1, + "7055": 3, + "7056": 2, + "7057": 1, + "7058": 1, + "7059": 3, + "7061": 2, + "7062": 2, + "7063": 4, + "7064": 3, + "7065": 2, + "7066": 4, + "7067": 2, + "7068": 3, + "7069": 1, + "7070": 1, + "7072": 2, + "7073": 4, + "7074": 1, + "7075": 1, + "7076": 1, + "7078": 1, + "7080": 3, + "7081": 3, + "7082": 1, + "7083": 1, + "7085": 1, + "7089": 1, + "7092": 4, + "7095": 4, + "7096": 1, + "7097": 3, + "7098": 2, + "7099": 2, + "7100": 1, + "7102": 3, + "7104": 3, + "7105": 5, + "7107": 2, + "7108": 1, + "7111": 1, + "7113": 3, + "7114": 1, + "7115": 1, + "7116": 4, + "7117": 2, + "7118": 3, + "7119": 1, + "7120": 1, + "7121": 2, + "7122": 3, + "7123": 2, + "7124": 1, + "7126": 1, + "7127": 1, + "7128": 2, + "7129": 2, + "7130": 2, + "7131": 2, + "7132": 1, + "7134": 1, + "7136": 1, + "7138": 1, + "7139": 1, + "7140": 1, + "7141": 3, + "7142": 2, + "7143": 1, + "7144": 1, + "7145": 1, + "7151": 2, + "7152": 2, + "7153": 3, + "7154": 4, + "7155": 5, + "7156": 2, + "7158": 4, + "7159": 2, + "7161": 2, + "7162": 6, + "7163": 1, + "7164": 4, + "7165": 4, + "7166": 3, + "7167": 3, + "7168": 2, + "7169": 1, + "7171": 4, + "7173": 1, + "7174": 2, + "7175": 3, + "7176": 1, + "7178": 1, + "7179": 1, + "7181": 1, + "7182": 3, + "7183": 2, + "7184": 2, + "7186": 1, + "7187": 1, + "7188": 2, + "7189": 1, + "7191": 1, + "7195": 3, + "7198": 2, + "7199": 2, + "7200": 3, + "7201": 2, + "7202": 2, + "7203": 2, + "7204": 1, + "7205": 2, + "7206": 2, + "7207": 1, + "7210": 2, + "7212": 1, + "7213": 1, + "7214": 1, + "7215": 3, + "7218": 1, + "7220": 1, + "7221": 2, + "7222": 1, + "7227": 1, + "7228": 2, + "7230": 1, + "7231": 1, + "7233": 1, + "7234": 1, + "7237": 3, + "7238": 2, + "7239": 1, + "7242": 1, + "7245": 2, + "7246": 1, + "7250": 1, + "7251": 1, + "7252": 1, + "7253": 3, + "7254": 1, + "7255": 5, + "7256": 3, + "7257": 3, + "7258": 1, + "7259": 2, + "7261": 3, + "7265": 1, + "7266": 4, + "7267": 2, + "7269": 1, + "7270": 2, + "7271": 4, + "7272": 1, + "7273": 4, + "7274": 1, + "7277": 1, + "7278": 3, + "7280": 1, + "7281": 1, + "7282": 1, + "7283": 1, + "7285": 1, + "7289": 2, + "7290": 1, + "7291": 1, + "7293": 2, + "7294": 3, + "7295": 2, + "7298": 1, + "7299": 1, + "7301": 1, + "7303": 2, + "7304": 2, + "7305": 3, + "7306": 6, + "7309": 2, + "7310": 3, + "7315": 1, + "7316": 1, + "7320": 1, + "7321": 1, + "7325": 2, + "7327": 3, + "7328": 2, + "7329": 1, + "7330": 1, + "7332": 1, + "7333": 4, + "7334": 1, + "7336": 3, + "7337": 3, + "7338": 5, + "7339": 3, + "7340": 7, + "7341": 3, + "7343": 4, + "7344": 5, + "7345": 4, + "7346": 2, + "7347": 1, + "7348": 2, + "7349": 2, + "7350": 3, + "7351": 3, + "7352": 5, + "7353": 3, + "7354": 1, + "7355": 5, + "7356": 1, + "7357": 1, + "7358": 2, + "7359": 1, + "7361": 4, + "7362": 2, + "7363": 2, + "7364": 1, + "7365": 2, + "7366": 1, + "7367": 1, + "7368": 1, + "7369": 2, + "7370": 3, + "7371": 2, + "7373": 2, + "7374": 2, + "7375": 1, + "7376": 3, + "7378": 2, + "7379": 1, + "7380": 2, + "7382": 2, + "7384": 1, + "7386": 1, + "7387": 2, + "7390": 1, + "7392": 4, + "7393": 1, + "7394": 2, + "7395": 2, + "7396": 3, + "7397": 3, + "7398": 4, + "7399": 2, + "7400": 4, + "7401": 1, + "7402": 3, + "7403": 1, + "7404": 3, + "7405": 3, + "7407": 5, + "7408": 1, + "7409": 4, + "7410": 2, + "7411": 1, + "7412": 1, + "7413": 1, + "7414": 1, + "7415": 2, + "7416": 1, + "7418": 1, + "7419": 2, + "7420": 2, + "7423": 1, + "7424": 2, + "7426": 5, + "7427": 1, + "7428": 3, + "7429": 3, + "7430": 3, + "7431": 1, + "7432": 1, + "7433": 1, + "7434": 2, + "7435": 3, + "7436": 3, + "7437": 1, + "7438": 2, + "7441": 1, + "7442": 3, + "7444": 1, + "7445": 1, + "7446": 3, + "7447": 1, + "7448": 1, + "7449": 1, + "7451": 2, + "7460": 2, + "7463": 2, + "7464": 2, + "7469": 1, + "7470": 2, + "7471": 1, + "7473": 1, + "7474": 1, + "7475": 1, + "7476": 1, + "7477": 1, + "7478": 1, + "7479": 1, + "7483": 1, + "7490": 2, + "7491": 2, + "7492": 4, + "7493": 1, + "7497": 1, + "7498": 3, + "7501": 1, + "7506": 2, + "7508": 1, + "7509": 5, + "7510": 1, + "7512": 1, + "7513": 1, + "7516": 2, + "7617": 1, + "7620": 1, + "7621": 1, + "7624": 1, + "7627": 1, + "7628": 1, + "7631": 1, + "7632": 1, + "7636": 1, + "7637": 1, + "7638": 2, + "7641": 2, + "7642": 3, + "7643": 2, + "7644": 1, + "7645": 1, + "7646": 1, + "7647": 2, + "7648": 3, + "7657": 2, + "7676": 1, + "7681": 1, + "7695": 2, + "7699": 1, + "7703": 1, + "7707": 2, + "7718": 1, + "7721": 1, + "7728": 1, + "7734": 1, + "7795": 1, + "7813": 1, + "7816": 1, + "7851": 1, + "7856": 1, + "7859": 1, + "7865": 1, + "7898": 2, + "7899": 2, + "7930": 1, + "7935": 1, + "7941": 1, + "7946": 1, + "8005": 2, + "8016": 2, + "8035": 1, + "8089": 2, + "8133": 1, + "8135": 1, + "8146": 2, + "8166": 2, + "8171": 2, + "8172": 1, + "8174": 1, + "8186": 1, + "8187": 1, + "8191": 1, + "8195": 1, + "8225": 2, + "8234": 1, + "8235": 1, + "8255": 2, + "8257": 2, + "8258": 2, + "8262": 1, + "8267": 2, + "8271": 1, + "8273": 1, + "8274": 2, + "8275": 1, + "8279": 2, + "8284": 2, + "8298": 2, + "8318": 2, + "8346": 1, + "8348": 1, + "8359": 2, + "8364": 1, + "8366": 1, + "8397": 2, + "8402": 1, + "8406": 1, + "8410": 1, + "8415": 1, + "8474": 1, + "8478": 1, + "8484": 1, + "8485": 1, + "8489": 1, + "8531": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333733266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fbb23b62f85a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fbb23b62" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_2.html b/autobahn/client/tungstenite_case_12_4_2.html new file mode 100644 index 0000000..8f3b018 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_2.html @@ -0,0 +1,398 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.2 : Pass - 385 ms @ 2025-09-11T20:09:40.161Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=357&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 4Mp2TrywPaG8QZNVhPLHig==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: CCv/imTY7wMP7nwDkhxfEyXIXE0=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
115596149
12448
1364832
1433462
1514210
1617272
171312227
1829522
1910190
20480
217147
2213286
236138
2410240
255125
267182
27381
287196
296174
306180
316186
324128
334132
34268
354140
364144
374148
38138
394156
40280
413123
42284
43143
44144
45290
46292
47147
49298
503150
51151
522104
53153
54154
552110
56156
58158
59159
61161
62162
63163
2571257
Total100215728
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
75593913
8432
964576
1033330
1114154
1217204
131311703
1429406
1510150
16464
177119
1813234
196114
2010200
215105
227154
23369
247168
256150
266156
276162
284112
294116
30260
314124
324128
334132
34134
354140
36272
373111
38276
39139
40140
41282
42284
43143
45290
463138
47147
48296
49149
50150
512102
52152
54154
55155
57157
58158
59159
2521252
Total100211719
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333537266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88823c0f60b13fe7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3363306636306231
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_2.json b/autobahn/client/tungstenite_case_12_4_2.json new file mode 100644 index 0000000..a6ba0c1 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_2.json @@ -0,0 +1,245 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 357, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 385, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=357&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 4Mp2TrywPaG8QZNVhPLHig==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: CCv/imTY7wMP7nwDkhxfEyXIXE0=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 559, + "12": 4, + "13": 64, + "14": 33, + "15": 14, + "16": 17, + "17": 131, + "18": 29, + "19": 10, + "20": 4, + "21": 7, + "22": 13, + "23": 6, + "24": 10, + "25": 5, + "26": 7, + "27": 3, + "28": 7, + "29": 6, + "30": 6, + "31": 6, + "32": 4, + "33": 4, + "34": 2, + "35": 4, + "36": 4, + "37": 4, + "38": 1, + "39": 4, + "40": 2, + "41": 3, + "42": 2, + "43": 1, + "44": 1, + "45": 2, + "46": 2, + "47": 1, + "49": 2, + "50": 3, + "51": 1, + "52": 2, + "53": 1, + "54": 1, + "55": 2, + "56": 1, + "58": 1, + "59": 1, + "61": 1, + "62": 1, + "63": 1, + "257": 1 + }, + "started": "2025-09-11T20:09:40.161Z", + "trafficStats": { + "incomingCompressionRatio": 0.147859375, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 9463, + "incomingOctetsWireLevel": 15463, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.6340483990277924, + "outgoingCompressionRatio": 0.147859375, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 9463, + "outgoingOctetsWireLevel": 11463, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.2113494663425975, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 559, + "8": 4, + "9": 64, + "10": 33, + "11": 14, + "12": 17, + "13": 131, + "14": 29, + "15": 10, + "16": 4, + "17": 7, + "18": 13, + "19": 6, + "20": 10, + "21": 5, + "22": 7, + "23": 3, + "24": 7, + "25": 6, + "26": 6, + "27": 6, + "28": 4, + "29": 4, + "30": 2, + "31": 4, + "32": 4, + "33": 4, + "34": 1, + "35": 4, + "36": 2, + "37": 3, + "38": 2, + "39": 1, + "40": 1, + "41": 2, + "42": 2, + "43": 1, + "45": 2, + "46": 3, + "47": 1, + "48": 2, + "49": 1, + "50": 1, + "51": 2, + "52": 1, + "54": 1, + "55": 1, + "57": 1, + "58": 1, + "59": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333537266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823c0f60b13fe7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3c0f60b1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_3.html b/autobahn/client/tungstenite_case_12_4_3.html new file mode 100644 index 0000000..363f5b4 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_3.html @@ -0,0 +1,464 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.3 : Pass - 368 ms @ 2025-09-11T20:09:40.548Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=358&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: VT56Ex490q9mW1rixxSIBA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: SQkCqKW8vgs36KZUFaLdh2sg8Ck=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1118198
1220240
1446644
1539585
1614224
17871479
181863348
19891691
20721440
21531113
2232704
2332736
2433792
2539975
2627702
2716432
2813364
299261
3012360
319279
325160
336198
348272
3510350
366216
375185
384152
393117
403120
415205
423126
434172
44144
456270
465230
47294
483144
50150
513153
523156
542108
55155
562112
572114
58158
592118
603180
623186
633189
642128
65165
672134
692138
71171
724288
732146
753225
77177
81181
85185
862172
89189
91191
922184
93193
972194
98198
1011101
1031103
1061106
1081108
1162232
1171117
1181118
1191119
1211121
1262252
1272254
1281128
1391139
1431143
1631163
1941194
2571257
Total100226123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
718126
820160
1046460
1139429
1214168
13871131
141862604
15891335
16721152
1753901
1832576
1932608
2033660
2139819
2227594
2316368
2413312
259225
2612312
279243
285140
296174
308240
3110310
326192
335165
344136
353105
363108
375185
383114
394156
40140
416246
425210
43286
443132
46146
473141
483144
502100
51151
522104
532106
54154
552110
563168
583174
593177
602120
61161
632126
652130
67167
684272
692138
713213
73173
77177
81181
822164
85185
87187
882176
89189
932186
94194
97197
99199
1021102
1041104
1122224
1131113
1141114
1151115
1171117
1222244
1232246
1241124
1351135
1391139
1591159
1901190
2521252
Total100222114
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333538266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882c24a87d6c1a2
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6332346138376436
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_3.json b/autobahn/client/tungstenite_case_12_4_3.json new file mode 100644 index 0000000..0106632 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_3.json @@ -0,0 +1,311 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 358, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 368, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=358&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: VT56Ex490q9mW1rixxSIBA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: SQkCqKW8vgs36KZUFaLdh2sg8Ck=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 18, + "12": 20, + "14": 46, + "15": 39, + "16": 14, + "17": 87, + "18": 186, + "19": 89, + "20": 72, + "21": 53, + "22": 32, + "23": 32, + "24": 33, + "25": 39, + "26": 27, + "27": 16, + "28": 13, + "29": 9, + "30": 12, + "31": 9, + "32": 5, + "33": 6, + "34": 8, + "35": 10, + "36": 6, + "37": 5, + "38": 4, + "39": 3, + "40": 3, + "41": 5, + "42": 3, + "43": 4, + "44": 1, + "45": 6, + "46": 5, + "47": 2, + "48": 3, + "50": 1, + "51": 3, + "52": 3, + "54": 2, + "55": 1, + "56": 2, + "57": 2, + "58": 1, + "59": 2, + "60": 3, + "62": 3, + "63": 3, + "64": 2, + "65": 1, + "67": 2, + "69": 2, + "71": 1, + "72": 4, + "73": 2, + "75": 3, + "77": 1, + "81": 1, + "85": 1, + "86": 2, + "89": 1, + "91": 1, + "92": 2, + "93": 1, + "97": 2, + "98": 1, + "101": 1, + "103": 1, + "106": 1, + "108": 1, + "116": 2, + "117": 1, + "118": 1, + "119": 1, + "121": 1, + "126": 2, + "127": 2, + "128": 1, + "139": 1, + "143": 1, + "163": 1, + "194": 1, + "257": 1 + }, + "started": "2025-09-11T20:09:40.548Z", + "trafficStats": { + "incomingCompressionRatio": 0.07753088541442894, + "incomingOctetsAppLevel": 256027, + "incomingOctetsWebSocketLevel": 19850, + "incomingOctetsWireLevel": 25858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.3026700251889169, + "outgoingCompressionRatio": 0.07753088541442894, + "outgoingOctetsAppLevel": 256027, + "outgoingOctetsWebSocketLevel": 19850, + "outgoingOctetsWireLevel": 21858, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.10115869017632242, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 18, + "8": 20, + "10": 46, + "11": 39, + "12": 14, + "13": 87, + "14": 186, + "15": 89, + "16": 72, + "17": 53, + "18": 32, + "19": 32, + "20": 33, + "21": 39, + "22": 27, + "23": 16, + "24": 13, + "25": 9, + "26": 12, + "27": 9, + "28": 5, + "29": 6, + "30": 8, + "31": 10, + "32": 6, + "33": 5, + "34": 4, + "35": 3, + "36": 3, + "37": 5, + "38": 3, + "39": 4, + "40": 1, + "41": 6, + "42": 5, + "43": 2, + "44": 3, + "46": 1, + "47": 3, + "48": 3, + "50": 2, + "51": 1, + "52": 2, + "53": 2, + "54": 1, + "55": 2, + "56": 3, + "58": 3, + "59": 3, + "60": 2, + "61": 1, + "63": 2, + "65": 2, + "67": 1, + "68": 4, + "69": 2, + "71": 3, + "73": 1, + "77": 1, + "81": 1, + "82": 2, + "85": 1, + "87": 1, + "88": 2, + "89": 1, + "93": 2, + "94": 1, + "97": 1, + "99": 1, + "102": 1, + "104": 1, + "112": 2, + "113": 1, + "114": 1, + "115": 1, + "117": 1, + "122": 2, + "123": 2, + "124": 1, + "135": 1, + "139": 1, + "159": 1, + "190": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333538266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c24a87d6c1a2" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c24a87d6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_4.html b/autobahn/client/tungstenite_case_12_4_4.html new file mode 100644 index 0000000..ff6eeb5 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_4.html @@ -0,0 +1,615 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.4 : Pass - 372 ms @ 2025-09-11T20:09:40.917Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=359&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: DG0+CktbT9omfJs3kn2hJA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: mRQYS/94BagLlRNsroEBRfeB1Bk=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
31131
32396
33133
345170
357245
3613468
3721777
389342
3922858
4022880
4121861
4219798
43291247
44361584
45391755
46311426
47261222
48291392
49341666
50331650
51593009
52281456
53241272
54351890
5516880
5613728
5713741
5816928
5911649
6011660
6111671
6213806
6311693
6413832
658520
666396
679603
684272
69169
709630
7113923
725360
739657
74151110
7510750
767532
773231
78171326
799711
807560
817567
826492
833249
847588
853255
864344
872174
884352
893267
902180
914364
92192
93193
94194
95195
96196
972194
98198
993297
1005500
1012202
1021102
1032206
1051105
1074428
1083324
1092218
1102220
1112222
1122224
1142228
1151115
1173351
1183354
1193357
1202240
1212242
1224488
1232246
1242248
1261126
1271127
1281128
1291129
1312262
1341134
1371137
1381138
1391139
1403420
1411141
1482296
1531153
1541154
1622324
1631163
1662332
1671167
1711171
1741174
1751175
1791179
1871187
1911191
1942388
1971197
1981198
2001200
2051205
2071207
2091209
2142428
2151215
2231223
2261226
2271227
2402480
2432486
2471247
2541254
2563768
2571257
2581258
2611261
2641264
2702540
2741274
2752550
2781278
2791279
2861286
3061306
3072614
3091309
3101310
3181318
3231323
3301330
3422684
3431343
3591359
3661366
3681368
3692738
3731373
3932786
3951395
4011401
4221422
4261426
Total100274008
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
27127
28384
29129
305150
317217
3213416
3321693
349306
3522770
3622792
3721777
3819722
39291131
40361440
41391599
42311302
43261118
44291276
45341530
46331518
47592773
48281344
49241176
50351750
5116816
5213676
5313689
5416864
5511605
5611616
5711627
5813754
5911649
6013780
618488
626372
639567
644256
65165
669594
6713871
685340
699621
70151050
7110710
727504
733219
74171258
759675
767532
777539
786468
793237
807560
813243
824328
832166
844336
853255
862172
874348
88188
89189
90190
91191
92192
932186
94194
953285
965480
972194
98198
992198
1011101
1034412
1043312
1052210
1062212
1072214
1082216
1102220
1111111
1133339
1143342
1153345
1162232
1172234
1184472
1192238
1202240
1221122
1231123
1241124
1251125
1272254
1301130
1331133
1341134
1351135
1363408
1371137
1442288
1491149
1501150
1582316
1591159
1622324
1631163
1671167
1701170
1711171
1751175
1831183
1871187
1902380
1931193
1941194
1961196
2011201
2031203
2051205
2102420
2111211
2191219
2221222
2231223
2362472
2392478
2431243
2501250
25241008
2541254
2571257
2601260
2662532
2701270
2712542
2741274
2751275
2821282
3021302
3032606
3051305
3061306
3141314
3191319
3261326
3382676
3391339
3551355
3621362
3641364
3652730
3691369
3892778
3911391
3971397
4181418
4221422
Total100269999
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333539266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888217c9bd1d1421
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3137633962643164
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_4.json b/autobahn/client/tungstenite_case_12_4_4.json new file mode 100644 index 0000000..59461cb --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_4.json @@ -0,0 +1,462 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 359, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 372, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=359&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: DG0+CktbT9omfJs3kn2hJA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: mRQYS/94BagLlRNsroEBRfeB1Bk=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "31": 1, + "32": 3, + "33": 1, + "34": 5, + "35": 7, + "36": 13, + "37": 21, + "38": 9, + "39": 22, + "40": 22, + "41": 21, + "42": 19, + "43": 29, + "44": 36, + "45": 39, + "46": 31, + "47": 26, + "48": 29, + "49": 34, + "50": 33, + "51": 59, + "52": 28, + "53": 24, + "54": 35, + "55": 16, + "56": 13, + "57": 13, + "58": 16, + "59": 11, + "60": 11, + "61": 11, + "62": 13, + "63": 11, + "64": 13, + "65": 8, + "66": 6, + "67": 9, + "68": 4, + "69": 1, + "70": 9, + "71": 13, + "72": 5, + "73": 9, + "74": 15, + "75": 10, + "76": 7, + "77": 3, + "78": 17, + "79": 9, + "80": 7, + "81": 7, + "82": 6, + "83": 3, + "84": 7, + "85": 3, + "86": 4, + "87": 2, + "88": 4, + "89": 3, + "90": 2, + "91": 4, + "92": 1, + "93": 1, + "94": 1, + "95": 1, + "96": 1, + "97": 2, + "98": 1, + "99": 3, + "100": 5, + "101": 2, + "102": 1, + "103": 2, + "105": 1, + "107": 4, + "108": 3, + "109": 2, + "110": 2, + "111": 2, + "112": 2, + "114": 2, + "115": 1, + "117": 3, + "118": 3, + "119": 3, + "120": 2, + "121": 2, + "122": 4, + "123": 2, + "124": 2, + "126": 1, + "127": 1, + "128": 1, + "129": 1, + "131": 2, + "134": 1, + "137": 1, + "138": 1, + "139": 1, + "140": 3, + "141": 1, + "148": 2, + "153": 1, + "154": 1, + "162": 2, + "163": 1, + "166": 2, + "167": 1, + "171": 1, + "174": 1, + "175": 1, + "179": 1, + "187": 1, + "191": 1, + "194": 2, + "197": 1, + "198": 1, + "200": 1, + "205": 1, + "207": 1, + "209": 1, + "214": 2, + "215": 1, + "223": 1, + "226": 1, + "227": 1, + "240": 2, + "243": 2, + "247": 1, + "254": 1, + "256": 3, + "257": 1, + "258": 1, + "261": 1, + "264": 1, + "270": 2, + "274": 1, + "275": 2, + "278": 1, + "279": 1, + "286": 1, + "306": 1, + "307": 2, + "309": 1, + "310": 1, + "318": 1, + "323": 1, + "330": 1, + "342": 2, + "343": 1, + "359": 1, + "366": 1, + "368": 1, + "369": 2, + "373": 1, + "393": 2, + "395": 1, + "401": 1, + "422": 1, + "426": 1 + }, + "started": "2025-09-11T20:09:40.917Z", + "trafficStats": { + "incomingCompressionRatio": 0.06599011041804184, + "incomingOctetsAppLevel": 1024108, + "incomingOctetsWebSocketLevel": 67581, + "incomingOctetsWireLevel": 73743, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.09117947352066409, + "outgoingCompressionRatio": 0.06599011041804184, + "outgoingOctetsAppLevel": 1024108, + "outgoingOctetsWebSocketLevel": 67581, + "outgoingOctetsWireLevel": 69743, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.031991240141459876, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "27": 1, + "28": 3, + "29": 1, + "30": 5, + "31": 7, + "32": 13, + "33": 21, + "34": 9, + "35": 22, + "36": 22, + "37": 21, + "38": 19, + "39": 29, + "40": 36, + "41": 39, + "42": 31, + "43": 26, + "44": 29, + "45": 34, + "46": 33, + "47": 59, + "48": 28, + "49": 24, + "50": 35, + "51": 16, + "52": 13, + "53": 13, + "54": 16, + "55": 11, + "56": 11, + "57": 11, + "58": 13, + "59": 11, + "60": 13, + "61": 8, + "62": 6, + "63": 9, + "64": 4, + "65": 1, + "66": 9, + "67": 13, + "68": 5, + "69": 9, + "70": 15, + "71": 10, + "72": 7, + "73": 3, + "74": 17, + "75": 9, + "76": 7, + "77": 7, + "78": 6, + "79": 3, + "80": 7, + "81": 3, + "82": 4, + "83": 2, + "84": 4, + "85": 3, + "86": 2, + "87": 4, + "88": 1, + "89": 1, + "90": 1, + "91": 1, + "92": 1, + "93": 2, + "94": 1, + "95": 3, + "96": 5, + "97": 2, + "98": 1, + "99": 2, + "101": 1, + "103": 4, + "104": 3, + "105": 2, + "106": 2, + "107": 2, + "108": 2, + "110": 2, + "111": 1, + "113": 3, + "114": 3, + "115": 3, + "116": 2, + "117": 2, + "118": 4, + "119": 2, + "120": 2, + "122": 1, + "123": 1, + "124": 1, + "125": 1, + "127": 2, + "130": 1, + "133": 1, + "134": 1, + "135": 1, + "136": 3, + "137": 1, + "144": 2, + "149": 1, + "150": 1, + "158": 2, + "159": 1, + "162": 2, + "163": 1, + "167": 1, + "170": 1, + "171": 1, + "175": 1, + "183": 1, + "187": 1, + "190": 2, + "193": 1, + "194": 1, + "196": 1, + "201": 1, + "203": 1, + "205": 1, + "210": 2, + "211": 1, + "219": 1, + "222": 1, + "223": 1, + "236": 2, + "239": 2, + "243": 1, + "250": 1, + "252": 4, + "254": 1, + "257": 1, + "260": 1, + "266": 2, + "270": 1, + "271": 2, + "274": 1, + "275": 1, + "282": 1, + "302": 1, + "303": 2, + "305": 1, + "306": 1, + "314": 1, + "319": 1, + "326": 1, + "338": 2, + "339": 1, + "355": 1, + "362": 1, + "364": 1, + "365": 2, + "369": 1, + "389": 2, + "391": 1, + "397": 1, + "418": 1, + "422": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333539266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888217c9bd1d1421" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "17c9bd1d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_5.html b/autobahn/client/tungstenite_case_12_4_5.html new file mode 100644 index 0000000..d796ad6 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_5.html @@ -0,0 +1,878 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.5 : Pass - 462 ms @ 2025-09-11T20:09:41.290Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=360&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 80GKrdhAQx32QtwvJ/gyWA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: wC07onsqzMXkQ2PuHsPW8Ug1y/8=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1024408
1032206
1044416
1055525
1066636
107151605
1087756
1097763
1108880
1118888
1126672
1143342
1151115
1161116
1171117
1183354
1202240
1213363
1221122
123111353
1247868
1257875
1263378
1272254
1286768
1292258
1303390
1317917
1353405
136141904
1377959
1383414
1393417
1401140
1411141
1424568
1435715
144121728
14591305
146131898
1476882
1485740
14991341
15081200
15181208
1525760
15371071
1545770
15571085
15691404
1574628
15881264
159101590
16071120
1614644
1625810
16371141
16491476
165152475
16681328
1673501
1684672
169101690
1701170
1713513
1723516
17371211
17481392
17581400
1763528
177111947
1792358
18071260
1822364
183122196
18461104
1853555
1864744
1873561
1882376
18971323
1905950
1915955
192132496
19361158
194173298
19561170
1965980
19761182
19881584
1992398
20051000
2013603
2021202
2034812
20461224
2052410
2063618
2074828
2081208
2092418
2102420
2112422
21251060
21361278
21481712
21551075
2164864
2172434
2183654
2194876
220102200
2214884
2224888
2233669
2243672
22671582
2272454
2282456
22971603
2303690
2312462
2324928
23361398
234102340
23571645
2362472
2374948
2394956
24051200
2411241
2422484
2434972
2443732
2452490
24671722
2474988
24851240
24951245
25041000
2513753
2522504
2542508
25541020
2561256
2572514
2582516
2603780
2623786
26351315
26441056
2652530
2671267
27041080
27161626
2721272
2732546
274123288
27551375
2761276
2771277
2822564
2873861
29051450
2912582
2921292
2931293
2951295
2963888
2972594
2982596
29941196
3003900
30341212
3041304
3111311
3181318
3201320
3303990
3332666
3341334
3382676
34131023
3471347
3481348
3491349
3501350
3521352
3532706
3541354
3551355
3611361
3621362
3631363
3641364
3652730
3731373
3741374
3802760
3842768
38531155
38631158
3871387
3881388
3891389
3931393
3941394
3991399
4002800
4011401
40231206
4032806
4061406
4071407
4092818
4101410
4132826
4162832
4201420
4342868
4351435
4361436
4371437
4471447
44831344
44931347
4501450
4522904
4931493
4991499
5031503
50421008
50521010
5071507
5081508
51131533
51231536
5131513
51442056
5171517
5191519
55121102
55331659
5771577
5841584
59142364
5921592
5941594
5961596
5981598
5991599
60131803
6041604
6131613
6381638
6391639
6441644
6601660
6691669
7001700
7061706
7081708
7171717
7181718
7191719
72321446
72421448
8471847
8551855
8571857
8611861
8671867
109911099
110011100
110211102
110711107
111111111
112511125
113611136
113811138
115411154
115711157
116933507
117011170
117211172
117511175
119911199
125411254
125611256
125822516
126611266
Total1002249774
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
984392
992198
1004400
1015505
1026612
103151545
1047728
1057735
1068848
1078856
1086648
1103330
1111111
1121112
1131113
1143342
1162232
1173351
1181118
119111309
1207840
1217847
1223366
1232246
1246744
1252250
1263378
1277889
1313393
132141848
1337931
1343402
1353405
1361136
1371137
1384552
1395695
140121680
14191269
142131846
1436858
1445720
14591305
14681168
14781176
1485740
14971043
1505750
15171057
15291368
1534612
15481232
155101550
15671092
1574628
1585790
15971113
16091440
161152415
16281296
1633489
1644656
165101650
1661166
1673501
1683504
16971183
17081360
17181368
1723516
173111903
1752350
17671232
1782356
179122148
18061080
1813543
1824728
1833549
1842368
18571295
1865930
1875935
188132444
18961134
190173230
19161146
1925960
19361158
19481552
1952390
1965980
1973591
1981198
1994796
20061200
2012402
2023606
2034812
2041204
2052410
2062412
2072414
20851040
20961254
21081680
21151055
2124848
2132426
2143642
2154860
216102160
2174868
2184872
2193657
2203660
22271554
2232446
2242448
22571575
2263678
2272454
2284912
22961374
230102300
23171617
2322464
2334932
2354940
23651180
2371237
2382476
2394956
2403720
2412482
24271694
2434972
24451220
24551225
2464984
2473741
2482496
2502500
25141004
2522504
2531253
2542508
2563768
2583774
25951295
26041040
2612522
2631263
26641064
26761602
2681268
2692538
270123240
27151355
2721272
2731273
2782556
2833849
28651430
2872574
2881288
2891289
2911291
2923876
2932586
2942588
29541180
2963888
29941196
3001300
3071307
3141314
3161316
3263978
3292658
3301330
3342668
33731011
3431343
3441344
3451345
3461346
3481348
3492698
3501350
3511351
3571357
3581358
3591359
3601360
3612722
3691369
3701370
3762752
3802760
38131143
38231146
3831383
3841384
3851385
3891389
3901390
3951395
3962792
3971397
39831194
3992798
4021402
4031403
4052810
4061406
4092818
4122824
4161416
4302860
4311431
4321432
4331433
4431443
44431332
44531335
4461446
4482896
4891489
4951495
4991499
50021000
50121002
5031503
5041504
50731521
50831524
5091509
51042040
5131513
5151515
54721094
54931647
5731573
5801580
58742348
5881588
5901590
5921592
5941594
5951595
59731791
6001600
6091609
6341634
6351635
6401640
6561656
6651665
6961696
7021702
7041704
7131713
7141714
7151715
71921438
72021440
8431843
8511851
8531853
8571857
8631863
109511095
109611096
109811098
110311103
110711107
112111121
113211132
113411134
115011150
115311153
116533495
116611166
116811168
117111171
119511195
125011250
125211252
125422508
126211262
Total1002245765
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333630266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882cad2981dc93a
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6361643239383164
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_5.json b/autobahn/client/tungstenite_case_12_4_5.json new file mode 100644 index 0000000..cf8ed5d --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_5.json @@ -0,0 +1,725 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 360, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 462, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=360&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 80GKrdhAQx32QtwvJ/gyWA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: wC07onsqzMXkQ2PuHsPW8Ug1y/8=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "102": 4, + "103": 2, + "104": 4, + "105": 5, + "106": 6, + "107": 15, + "108": 7, + "109": 7, + "110": 8, + "111": 8, + "112": 6, + "114": 3, + "115": 1, + "116": 1, + "117": 1, + "118": 3, + "120": 2, + "121": 3, + "122": 1, + "123": 11, + "124": 7, + "125": 7, + "126": 3, + "127": 2, + "128": 6, + "129": 2, + "130": 3, + "131": 7, + "135": 3, + "136": 14, + "137": 7, + "138": 3, + "139": 3, + "140": 1, + "141": 1, + "142": 4, + "143": 5, + "144": 12, + "145": 9, + "146": 13, + "147": 6, + "148": 5, + "149": 9, + "150": 8, + "151": 8, + "152": 5, + "153": 7, + "154": 5, + "155": 7, + "156": 9, + "157": 4, + "158": 8, + "159": 10, + "160": 7, + "161": 4, + "162": 5, + "163": 7, + "164": 9, + "165": 15, + "166": 8, + "167": 3, + "168": 4, + "169": 10, + "170": 1, + "171": 3, + "172": 3, + "173": 7, + "174": 8, + "175": 8, + "176": 3, + "177": 11, + "179": 2, + "180": 7, + "182": 2, + "183": 12, + "184": 6, + "185": 3, + "186": 4, + "187": 3, + "188": 2, + "189": 7, + "190": 5, + "191": 5, + "192": 13, + "193": 6, + "194": 17, + "195": 6, + "196": 5, + "197": 6, + "198": 8, + "199": 2, + "200": 5, + "201": 3, + "202": 1, + "203": 4, + "204": 6, + "205": 2, + "206": 3, + "207": 4, + "208": 1, + "209": 2, + "210": 2, + "211": 2, + "212": 5, + "213": 6, + "214": 8, + "215": 5, + "216": 4, + "217": 2, + "218": 3, + "219": 4, + "220": 10, + "221": 4, + "222": 4, + "223": 3, + "224": 3, + "226": 7, + "227": 2, + "228": 2, + "229": 7, + "230": 3, + "231": 2, + "232": 4, + "233": 6, + "234": 10, + "235": 7, + "236": 2, + "237": 4, + "239": 4, + "240": 5, + "241": 1, + "242": 2, + "243": 4, + "244": 3, + "245": 2, + "246": 7, + "247": 4, + "248": 5, + "249": 5, + "250": 4, + "251": 3, + "252": 2, + "254": 2, + "255": 4, + "256": 1, + "257": 2, + "258": 2, + "260": 3, + "262": 3, + "263": 5, + "264": 4, + "265": 2, + "267": 1, + "270": 4, + "271": 6, + "272": 1, + "273": 2, + "274": 12, + "275": 5, + "276": 1, + "277": 1, + "282": 2, + "287": 3, + "290": 5, + "291": 2, + "292": 1, + "293": 1, + "295": 1, + "296": 3, + "297": 2, + "298": 2, + "299": 4, + "300": 3, + "303": 4, + "304": 1, + "311": 1, + "318": 1, + "320": 1, + "330": 3, + "333": 2, + "334": 1, + "338": 2, + "341": 3, + "347": 1, + "348": 1, + "349": 1, + "350": 1, + "352": 1, + "353": 2, + "354": 1, + "355": 1, + "361": 1, + "362": 1, + "363": 1, + "364": 1, + "365": 2, + "373": 1, + "374": 1, + "380": 2, + "384": 2, + "385": 3, + "386": 3, + "387": 1, + "388": 1, + "389": 1, + "393": 1, + "394": 1, + "399": 1, + "400": 2, + "401": 1, + "402": 3, + "403": 2, + "406": 1, + "407": 1, + "409": 2, + "410": 1, + "413": 2, + "416": 2, + "420": 1, + "434": 2, + "435": 1, + "436": 1, + "437": 1, + "447": 1, + "448": 3, + "449": 3, + "450": 1, + "452": 2, + "493": 1, + "499": 1, + "503": 1, + "504": 2, + "505": 2, + "507": 1, + "508": 1, + "511": 3, + "512": 3, + "513": 1, + "514": 4, + "517": 1, + "519": 1, + "551": 2, + "553": 3, + "577": 1, + "584": 1, + "591": 4, + "592": 1, + "594": 1, + "596": 1, + "598": 1, + "599": 1, + "601": 3, + "604": 1, + "613": 1, + "638": 1, + "639": 1, + "644": 1, + "660": 1, + "669": 1, + "700": 1, + "706": 1, + "708": 1, + "717": 1, + "718": 1, + "719": 1, + "723": 2, + "724": 2, + "847": 1, + "855": 1, + "857": 1, + "861": 1, + "867": 1, + "1099": 1, + "1100": 1, + "1102": 1, + "1107": 1, + "1111": 1, + "1125": 1, + "1136": 1, + "1138": 1, + "1154": 1, + "1157": 1, + "1169": 3, + "1170": 1, + "1172": 1, + "1175": 1, + "1199": 1, + "1254": 1, + "1256": 1, + "1258": 2, + "1266": 1 + }, + "started": "2025-09-11T20:09:41.290Z", + "trafficStats": { + "incomingCompressionRatio": 0.05902185121100509, + "incomingOctetsAppLevel": 4096432, + "incomingOctetsWebSocketLevel": 241779, + "incomingOctetsWireLevel": 249509, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.031971345733086826, + "outgoingCompressionRatio": 0.05902185121100509, + "outgoingOctetsAppLevel": 4096432, + "outgoingOctetsWebSocketLevel": 241779, + "outgoingOctetsWireLevel": 245509, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015427311718552893, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "98": 4, + "99": 2, + "100": 4, + "101": 5, + "102": 6, + "103": 15, + "104": 7, + "105": 7, + "106": 8, + "107": 8, + "108": 6, + "110": 3, + "111": 1, + "112": 1, + "113": 1, + "114": 3, + "116": 2, + "117": 3, + "118": 1, + "119": 11, + "120": 7, + "121": 7, + "122": 3, + "123": 2, + "124": 6, + "125": 2, + "126": 3, + "127": 7, + "131": 3, + "132": 14, + "133": 7, + "134": 3, + "135": 3, + "136": 1, + "137": 1, + "138": 4, + "139": 5, + "140": 12, + "141": 9, + "142": 13, + "143": 6, + "144": 5, + "145": 9, + "146": 8, + "147": 8, + "148": 5, + "149": 7, + "150": 5, + "151": 7, + "152": 9, + "153": 4, + "154": 8, + "155": 10, + "156": 7, + "157": 4, + "158": 5, + "159": 7, + "160": 9, + "161": 15, + "162": 8, + "163": 3, + "164": 4, + "165": 10, + "166": 1, + "167": 3, + "168": 3, + "169": 7, + "170": 8, + "171": 8, + "172": 3, + "173": 11, + "175": 2, + "176": 7, + "178": 2, + "179": 12, + "180": 6, + "181": 3, + "182": 4, + "183": 3, + "184": 2, + "185": 7, + "186": 5, + "187": 5, + "188": 13, + "189": 6, + "190": 17, + "191": 6, + "192": 5, + "193": 6, + "194": 8, + "195": 2, + "196": 5, + "197": 3, + "198": 1, + "199": 4, + "200": 6, + "201": 2, + "202": 3, + "203": 4, + "204": 1, + "205": 2, + "206": 2, + "207": 2, + "208": 5, + "209": 6, + "210": 8, + "211": 5, + "212": 4, + "213": 2, + "214": 3, + "215": 4, + "216": 10, + "217": 4, + "218": 4, + "219": 3, + "220": 3, + "222": 7, + "223": 2, + "224": 2, + "225": 7, + "226": 3, + "227": 2, + "228": 4, + "229": 6, + "230": 10, + "231": 7, + "232": 2, + "233": 4, + "235": 4, + "236": 5, + "237": 1, + "238": 2, + "239": 4, + "240": 3, + "241": 2, + "242": 7, + "243": 4, + "244": 5, + "245": 5, + "246": 4, + "247": 3, + "248": 2, + "250": 2, + "251": 4, + "252": 2, + "253": 1, + "254": 2, + "256": 3, + "258": 3, + "259": 5, + "260": 4, + "261": 2, + "263": 1, + "266": 4, + "267": 6, + "268": 1, + "269": 2, + "270": 12, + "271": 5, + "272": 1, + "273": 1, + "278": 2, + "283": 3, + "286": 5, + "287": 2, + "288": 1, + "289": 1, + "291": 1, + "292": 3, + "293": 2, + "294": 2, + "295": 4, + "296": 3, + "299": 4, + "300": 1, + "307": 1, + "314": 1, + "316": 1, + "326": 3, + "329": 2, + "330": 1, + "334": 2, + "337": 3, + "343": 1, + "344": 1, + "345": 1, + "346": 1, + "348": 1, + "349": 2, + "350": 1, + "351": 1, + "357": 1, + "358": 1, + "359": 1, + "360": 1, + "361": 2, + "369": 1, + "370": 1, + "376": 2, + "380": 2, + "381": 3, + "382": 3, + "383": 1, + "384": 1, + "385": 1, + "389": 1, + "390": 1, + "395": 1, + "396": 2, + "397": 1, + "398": 3, + "399": 2, + "402": 1, + "403": 1, + "405": 2, + "406": 1, + "409": 2, + "412": 2, + "416": 1, + "430": 2, + "431": 1, + "432": 1, + "433": 1, + "443": 1, + "444": 3, + "445": 3, + "446": 1, + "448": 2, + "489": 1, + "495": 1, + "499": 1, + "500": 2, + "501": 2, + "503": 1, + "504": 1, + "507": 3, + "508": 3, + "509": 1, + "510": 4, + "513": 1, + "515": 1, + "547": 2, + "549": 3, + "573": 1, + "580": 1, + "587": 4, + "588": 1, + "590": 1, + "592": 1, + "594": 1, + "595": 1, + "597": 3, + "600": 1, + "609": 1, + "634": 1, + "635": 1, + "640": 1, + "656": 1, + "665": 1, + "696": 1, + "702": 1, + "704": 1, + "713": 1, + "714": 1, + "715": 1, + "719": 2, + "720": 2, + "843": 1, + "851": 1, + "853": 1, + "857": 1, + "863": 1, + "1095": 1, + "1096": 1, + "1098": 1, + "1103": 1, + "1107": 1, + "1121": 1, + "1132": 1, + "1134": 1, + "1150": 1, + "1153": 1, + "1165": 3, + "1166": 1, + "1168": 1, + "1171": 1, + "1195": 1, + "1250": 1, + "1252": 1, + "1254": 2, + "1262": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333630266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882cad2981dc93a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "cad2981d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_6.html b/autobahn/client/tungstenite_case_12_4_6.html new file mode 100644 index 0000000..4d47a87 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_6.html @@ -0,0 +1,1185 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.6 : Pass - 590 ms @ 2025-09-11T20:09:41.754Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=361&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 3DzlXVAs91qxru/JQC0REw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2S07c0Gk6D2pGvDj3mx9fmba5mI=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1771177
1782356
1792358
1802360
1812362
1821182
1833549
1842368
1855925
18661116
18761122
1883564
1891189
1901190
1911191
1921192
1935965
1941194
1951195
1962392
1973591
1981198
2001200
2021202
2031203
2083624
2091209
2101210
2122424
2134852
2152430
2171217
2201220
2211221
2221222
2241224
2253675
22661356
2271227
22851140
2292458
2303690
2313693
2343702
2354940
2363708
2383714
2392478
2402480
2413723
2422484
2431243
24451220
2452490
2462492
2473741
2482496
2493747
25051250
25192259
25271764
25341012
2542508
25541020
25741028
2581258
2611261
2632526
2661266
2702540
2712542
27241088
2733819
2741274
2753825
27641104
2781278
2791279
28051400
2811281
2823846
2832566
2841284
285102850
2862572
28761722
28851440
2892578
29051450
2913873
29241168
29351465
29441176
29561770
2961296
2972594
29841192
2991299
3001300
3011301
30341212
3041304
3051305
3062612
3072614
3082616
31141244
3123936
3131313
31451570
31541260
31641264
31761902
3183954
3201320
3212642
3223966
32341292
3243972
32561950
32682608
32851640
3312662
3341334
3352670
3362672
3371337
3381338
3391339
3402680
3411341
3422684
3431343
3442688
34531035
3461346
3472694
34831044
34931047
35041400
35251760
35331059
3541354
35562130
3562712
35751785
35831074
35962154
3602720
3612722
36241448
3632726
36451820
36541460
3662732
36793303
36851840
36982952
370124440
37151855
37272604
37393357
374124488
37531125
37662256
37741508
37841512
37941516
380103800
38141524
3822764
3832766
3841384
38531155
38683088
38741548
3882776
38951945
39051950
39231176
3941394
3952790
3961396
39841592
3992798
4001400
4041404
4071407
4082816
4091409
41031230
4112822
41241648
4141414
4152830
41641664
41783336
41831254
41941676
42031260
42141684
42241688
4231423
42431272
4252850
42631278
4271427
42862568
42962574
4302860
4322864
4331433
4341434
43541740
4371437
4401440
4411441
44231326
44431332
4451445
4461446
4472894
44852240
4492898
45031350
4511451
45252260
45341812
4542908
4551455
45631368
4572914
4582916
4591459
46031380
4611461
46341852
4642928
4661466
4691469
4732946
4742948
4751475
4781478
4802960
48231446
48331449
4842968
48531455
4871487
4891489
4902980
4912982
4932986
4941494
4951495
49652480
4972994
4981498
49931497
50021000
5021502
5031503
50452520
50531515
50621012
5081508
5091509
51031530
5121512
5151515
51721034
5211521
5381538
53921078
5421542
5431543
54521090
5471547
5481548
5501550
55421108
5571557
5581558
56142244
5621562
5631563
5641564
5681568
5691569
5721572
5751575
57721154
57921158
5801580
5811581
5821582
58321166
58421168
58521170
58621172
5891589
5921592
5961596
5971597
59821196
60321206
6051605
60721214
61021220
61121222
6131613
6141614
61631848
6171617
6201620
6281628
6331633
6351635
63631908
6371637
6381638
6441644
64531935
65142604
65221304
6551655
66021320
6611661
6641664
6661666
6681668
6721672
6741674
68021360
6811681
6821682
6851685
6911691
6951695
6981698
7021702
71232136
7151715
7161716
7171717
7191719
72421448
7351735
7391739
74121482
74321486
75021500
75632268
75721514
75821516
7591759
76021520
76421528
7651765
7661766
7681768
7701770
77121542
7761776
77832334
78021560
78121562
78321566
7841784
7851785
8051805
8131813
8431843
8491849
8601860
8851885
8861886
8911891
9021902
9281928
9291929
9331933
9461946
94721894
9561956
9621962
96621932
97121942
97321946
9741974
9891989
9931993
102711027
104911049
105611056
106511065
107711077
114711147
117211172
119611196
121111211
121511215
122311223
123511235
124211242
124511245
125911259
126322526
126511265
126611266
126711267
131111311
132411324
132711327
133311333
135511355
156011560
156511565
157611576
158711587
159511595
170311703
172011720
173411734
176311763
176811768
178211782
180011800
181511815
183111831
184311843
205712057
206512065
208512085
210012100
210712107
212212122
212412124
214912149
215812158
219212192
221912219
228812288
Total1002467463
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1731173
1742348
1752350
1762352
1772354
1781178
1793537
1802360
1815905
18261092
18361098
1843552
1851185
1861186
1871187
1881188
1895945
1901190
1911191
1922384
1933579
1941194
1961196
1981198
1991199
2043612
2051205
2061206
2082416
2094836
2112422
2131213
2161216
2171217
2181218
2201220
2213663
22261332
2231223
22451120
2252450
2263678
2273681
2303690
2314924
2323696
2343702
2352470
2362472
2373711
2382476
2391239
24051200
2412482
2422484
2433729
2442488
2453735
24651230
24792223
24871736
2494996
2502500
25141004
2521252
2533759
2541254
2571257
2592518
2621262
2662532
2672534
26841072
2693807
2701270
2713813
27241088
2741274
2751275
27651380
2771277
2783834
2792558
2801280
281102810
2822564
28361698
28451420
2852570
28651430
2873861
28841152
28951445
29041160
29161746
2921292
2932586
29441176
2951295
2961296
2971297
29941196
3001300
3011301
3022604
3032606
3042608
30741228
3083924
3091309
31051550
31141244
31241248
31361878
3143942
3161316
3172634
3183954
31941276
3203960
32161926
32282576
32451620
3272654
3301330
3312662
3322664
3331333
3341334
3351335
3362672
3371337
3382676
3391339
3402680
34131023
3421342
3432686
34431032
34531035
34641384
34851740
34931047
3501350
35162106
3522704
35351765
35431062
35562130
3562712
3572714
35841432
3592718
36051800
36141444
3622724
36393267
36451820
36582920
366124392
36751835
36872576
36993321
370124440
37131113
37262232
37341492
37441496
37541500
376103760
37741508
3782756
3792758
3801380
38131143
38283056
38341532
3842768
38551925
38651930
38831164
3901390
3912782
3921392
39441576
3952790
3961396
4001400
4031403
4042808
4051405
40631218
4072814
40841632
4101410
4112822
41241648
41383304
41431242
41541660
41631248
41741668
41841672
4191419
42031260
4212842
42231266
4231423
42462544
42562550
4262852
4282856
4291429
4301430
43141724
4331433
4361436
4371437
43831314
44031320
4411441
4421442
4432886
44452220
4452890
44631338
4471447
44852240
44941796
4502900
4511451
45231356
4532906
4542908
4551455
45631368
4571457
45941836
4602920
4621462
4651465
4692938
4702940
4711471
4741474
4762952
47831434
47931437
4802960
48131443
4831483
4851485
4862972
4872974
4892978
4901490
4911491
49252460
4932986
4941494
49531485
4962992
4981498
4991499
50052500
50131503
50221004
5041504
5051505
50631518
5081508
5111511
51321026
5171517
5341534
53521070
5381538
5391539
54121082
5431543
5441544
5461546
55021100
5531553
5541554
55742228
5581558
5591559
5601560
5641564
5651565
5681568
5711571
57321146
57521150
5761576
5771577
5781578
57921158
58021160
58121162
58221164
5851585
5881588
5921592
5931593
59421188
59921198
6011601
60321206
60621212
60721214
6091609
6101610
61231836
6131613
6161616
6241624
6291629
6311631
63231896
6331633
6341634
6401640
64131923
64742588
64821296
6511651
65621312
6571657
6601660
6621662
6641664
6681668
6701670
67621352
6771677
6781678
6811681
6871687
6911691
6941694
6981698
70832124
7111711
7121712
7131713
7151715
72021440
7311731
7351735
73721474
73921478
74621492
75232256
75321506
75421508
7551755
75621512
76021520
7611761
7621762
7641764
7661766
76721534
7721772
77432322
77621552
77721554
77921558
7801780
7811781
8011801
8091809
8391839
8451845
8561856
8811881
8821882
8871887
8981898
9241924
9251925
9291929
9421942
94321886
9521952
9581958
96221924
96721934
96921938
9701970
9851985
9891989
102311023
104511045
105211052
106111061
107311073
114311143
116811168
119211192
120711207
121111211
121911219
123111231
123811238
124111241
125511255
125922518
126111261
126211262
126311263
130711307
132011320
132311323
132911329
135111351
155611556
156111561
157211572
158311583
159111591
169911699
171611716
173011730
175911759
176411764
177811778
179611796
181111811
182711827
183911839
205312053
206112061
208112081
209612096
210312103
211812118
212012120
214512145
215412154
218812188
221512215
228412284
Total1002463454
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333631266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882fe0c8dfefde4
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6665306338646665
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_6.json b/autobahn/client/tungstenite_case_12_4_6.json new file mode 100644 index 0000000..0b189df --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_6.json @@ -0,0 +1,1032 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 361, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 590, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=361&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 3DzlXVAs91qxru/JQC0REw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2S07c0Gk6D2pGvDj3mx9fmba5mI=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "177": 1, + "178": 2, + "179": 2, + "180": 2, + "181": 2, + "182": 1, + "183": 3, + "184": 2, + "185": 5, + "186": 6, + "187": 6, + "188": 3, + "189": 1, + "190": 1, + "191": 1, + "192": 1, + "193": 5, + "194": 1, + "195": 1, + "196": 2, + "197": 3, + "198": 1, + "200": 1, + "202": 1, + "203": 1, + "208": 3, + "209": 1, + "210": 1, + "212": 2, + "213": 4, + "215": 2, + "217": 1, + "220": 1, + "221": 1, + "222": 1, + "224": 1, + "225": 3, + "226": 6, + "227": 1, + "228": 5, + "229": 2, + "230": 3, + "231": 3, + "234": 3, + "235": 4, + "236": 3, + "238": 3, + "239": 2, + "240": 2, + "241": 3, + "242": 2, + "243": 1, + "244": 5, + "245": 2, + "246": 2, + "247": 3, + "248": 2, + "249": 3, + "250": 5, + "251": 9, + "252": 7, + "253": 4, + "254": 2, + "255": 4, + "257": 4, + "258": 1, + "261": 1, + "263": 2, + "266": 1, + "270": 2, + "271": 2, + "272": 4, + "273": 3, + "274": 1, + "275": 3, + "276": 4, + "278": 1, + "279": 1, + "280": 5, + "281": 1, + "282": 3, + "283": 2, + "284": 1, + "285": 10, + "286": 2, + "287": 6, + "288": 5, + "289": 2, + "290": 5, + "291": 3, + "292": 4, + "293": 5, + "294": 4, + "295": 6, + "296": 1, + "297": 2, + "298": 4, + "299": 1, + "300": 1, + "301": 1, + "303": 4, + "304": 1, + "305": 1, + "306": 2, + "307": 2, + "308": 2, + "311": 4, + "312": 3, + "313": 1, + "314": 5, + "315": 4, + "316": 4, + "317": 6, + "318": 3, + "320": 1, + "321": 2, + "322": 3, + "323": 4, + "324": 3, + "325": 6, + "326": 8, + "328": 5, + "331": 2, + "334": 1, + "335": 2, + "336": 2, + "337": 1, + "338": 1, + "339": 1, + "340": 2, + "341": 1, + "342": 2, + "343": 1, + "344": 2, + "345": 3, + "346": 1, + "347": 2, + "348": 3, + "349": 3, + "350": 4, + "352": 5, + "353": 3, + "354": 1, + "355": 6, + "356": 2, + "357": 5, + "358": 3, + "359": 6, + "360": 2, + "361": 2, + "362": 4, + "363": 2, + "364": 5, + "365": 4, + "366": 2, + "367": 9, + "368": 5, + "369": 8, + "370": 12, + "371": 5, + "372": 7, + "373": 9, + "374": 12, + "375": 3, + "376": 6, + "377": 4, + "378": 4, + "379": 4, + "380": 10, + "381": 4, + "382": 2, + "383": 2, + "384": 1, + "385": 3, + "386": 8, + "387": 4, + "388": 2, + "389": 5, + "390": 5, + "392": 3, + "394": 1, + "395": 2, + "396": 1, + "398": 4, + "399": 2, + "400": 1, + "404": 1, + "407": 1, + "408": 2, + "409": 1, + "410": 3, + "411": 2, + "412": 4, + "414": 1, + "415": 2, + "416": 4, + "417": 8, + "418": 3, + "419": 4, + "420": 3, + "421": 4, + "422": 4, + "423": 1, + "424": 3, + "425": 2, + "426": 3, + "427": 1, + "428": 6, + "429": 6, + "430": 2, + "432": 2, + "433": 1, + "434": 1, + "435": 4, + "437": 1, + "440": 1, + "441": 1, + "442": 3, + "444": 3, + "445": 1, + "446": 1, + "447": 2, + "448": 5, + "449": 2, + "450": 3, + "451": 1, + "452": 5, + "453": 4, + "454": 2, + "455": 1, + "456": 3, + "457": 2, + "458": 2, + "459": 1, + "460": 3, + "461": 1, + "463": 4, + "464": 2, + "466": 1, + "469": 1, + "473": 2, + "474": 2, + "475": 1, + "478": 1, + "480": 2, + "482": 3, + "483": 3, + "484": 2, + "485": 3, + "487": 1, + "489": 1, + "490": 2, + "491": 2, + "493": 2, + "494": 1, + "495": 1, + "496": 5, + "497": 2, + "498": 1, + "499": 3, + "500": 2, + "502": 1, + "503": 1, + "504": 5, + "505": 3, + "506": 2, + "508": 1, + "509": 1, + "510": 3, + "512": 1, + "515": 1, + "517": 2, + "521": 1, + "538": 1, + "539": 2, + "542": 1, + "543": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "554": 2, + "557": 1, + "558": 1, + "561": 4, + "562": 1, + "563": 1, + "564": 1, + "568": 1, + "569": 1, + "572": 1, + "575": 1, + "577": 2, + "579": 2, + "580": 1, + "581": 1, + "582": 1, + "583": 2, + "584": 2, + "585": 2, + "586": 2, + "589": 1, + "592": 1, + "596": 1, + "597": 1, + "598": 2, + "603": 2, + "605": 1, + "607": 2, + "610": 2, + "611": 2, + "613": 1, + "614": 1, + "616": 3, + "617": 1, + "620": 1, + "628": 1, + "633": 1, + "635": 1, + "636": 3, + "637": 1, + "638": 1, + "644": 1, + "645": 3, + "651": 4, + "652": 2, + "655": 1, + "660": 2, + "661": 1, + "664": 1, + "666": 1, + "668": 1, + "672": 1, + "674": 1, + "680": 2, + "681": 1, + "682": 1, + "685": 1, + "691": 1, + "695": 1, + "698": 1, + "702": 1, + "712": 3, + "715": 1, + "716": 1, + "717": 1, + "719": 1, + "724": 2, + "735": 1, + "739": 1, + "741": 2, + "743": 2, + "750": 2, + "756": 3, + "757": 2, + "758": 2, + "759": 1, + "760": 2, + "764": 2, + "765": 1, + "766": 1, + "768": 1, + "770": 1, + "771": 2, + "776": 1, + "778": 3, + "780": 2, + "781": 2, + "783": 2, + "784": 1, + "785": 1, + "805": 1, + "813": 1, + "843": 1, + "849": 1, + "860": 1, + "885": 1, + "886": 1, + "891": 1, + "902": 1, + "928": 1, + "929": 1, + "933": 1, + "946": 1, + "947": 2, + "956": 1, + "962": 1, + "966": 2, + "971": 2, + "973": 2, + "974": 1, + "989": 1, + "993": 1, + "1027": 1, + "1049": 1, + "1056": 1, + "1065": 1, + "1077": 1, + "1147": 1, + "1172": 1, + "1196": 1, + "1211": 1, + "1215": 1, + "1223": 1, + "1235": 1, + "1242": 1, + "1245": 1, + "1259": 1, + "1263": 2, + "1265": 1, + "1266": 1, + "1267": 1, + "1311": 1, + "1324": 1, + "1327": 1, + "1333": 1, + "1355": 1, + "1560": 1, + "1565": 1, + "1576": 1, + "1587": 1, + "1595": 1, + "1703": 1, + "1720": 1, + "1734": 1, + "1763": 1, + "1768": 1, + "1782": 1, + "1800": 1, + "1815": 1, + "1831": 1, + "1843": 1, + "2057": 1, + "2065": 1, + "2085": 1, + "2100": 1, + "2107": 1, + "2122": 1, + "2124": 1, + "2149": 1, + "2158": 1, + "2192": 1, + "2219": 1, + "2288": 1 + }, + "started": "2025-09-11T20:09:41.754Z", + "trafficStats": { + "incomingCompressionRatio": 0.056048716702163125, + "incomingOctetsAppLevel": 8192837, + "incomingOctetsWebSocketLevel": 459198, + "incomingOctetsWireLevel": 467198, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.01742167866584785, + "outgoingCompressionRatio": 0.056048716702163125, + "outgoingOctetsAppLevel": 8192837, + "outgoingOctetsWebSocketLevel": 459198, + "outgoingOctetsWireLevel": 463198, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.008710839332923924, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "173": 1, + "174": 2, + "175": 2, + "176": 2, + "177": 2, + "178": 1, + "179": 3, + "180": 2, + "181": 5, + "182": 6, + "183": 6, + "184": 3, + "185": 1, + "186": 1, + "187": 1, + "188": 1, + "189": 5, + "190": 1, + "191": 1, + "192": 2, + "193": 3, + "194": 1, + "196": 1, + "198": 1, + "199": 1, + "204": 3, + "205": 1, + "206": 1, + "208": 2, + "209": 4, + "211": 2, + "213": 1, + "216": 1, + "217": 1, + "218": 1, + "220": 1, + "221": 3, + "222": 6, + "223": 1, + "224": 5, + "225": 2, + "226": 3, + "227": 3, + "230": 3, + "231": 4, + "232": 3, + "234": 3, + "235": 2, + "236": 2, + "237": 3, + "238": 2, + "239": 1, + "240": 5, + "241": 2, + "242": 2, + "243": 3, + "244": 2, + "245": 3, + "246": 5, + "247": 9, + "248": 7, + "249": 4, + "250": 2, + "251": 4, + "252": 1, + "253": 3, + "254": 1, + "257": 1, + "259": 2, + "262": 1, + "266": 2, + "267": 2, + "268": 4, + "269": 3, + "270": 1, + "271": 3, + "272": 4, + "274": 1, + "275": 1, + "276": 5, + "277": 1, + "278": 3, + "279": 2, + "280": 1, + "281": 10, + "282": 2, + "283": 6, + "284": 5, + "285": 2, + "286": 5, + "287": 3, + "288": 4, + "289": 5, + "290": 4, + "291": 6, + "292": 1, + "293": 2, + "294": 4, + "295": 1, + "296": 1, + "297": 1, + "299": 4, + "300": 1, + "301": 1, + "302": 2, + "303": 2, + "304": 2, + "307": 4, + "308": 3, + "309": 1, + "310": 5, + "311": 4, + "312": 4, + "313": 6, + "314": 3, + "316": 1, + "317": 2, + "318": 3, + "319": 4, + "320": 3, + "321": 6, + "322": 8, + "324": 5, + "327": 2, + "330": 1, + "331": 2, + "332": 2, + "333": 1, + "334": 1, + "335": 1, + "336": 2, + "337": 1, + "338": 2, + "339": 1, + "340": 2, + "341": 3, + "342": 1, + "343": 2, + "344": 3, + "345": 3, + "346": 4, + "348": 5, + "349": 3, + "350": 1, + "351": 6, + "352": 2, + "353": 5, + "354": 3, + "355": 6, + "356": 2, + "357": 2, + "358": 4, + "359": 2, + "360": 5, + "361": 4, + "362": 2, + "363": 9, + "364": 5, + "365": 8, + "366": 12, + "367": 5, + "368": 7, + "369": 9, + "370": 12, + "371": 3, + "372": 6, + "373": 4, + "374": 4, + "375": 4, + "376": 10, + "377": 4, + "378": 2, + "379": 2, + "380": 1, + "381": 3, + "382": 8, + "383": 4, + "384": 2, + "385": 5, + "386": 5, + "388": 3, + "390": 1, + "391": 2, + "392": 1, + "394": 4, + "395": 2, + "396": 1, + "400": 1, + "403": 1, + "404": 2, + "405": 1, + "406": 3, + "407": 2, + "408": 4, + "410": 1, + "411": 2, + "412": 4, + "413": 8, + "414": 3, + "415": 4, + "416": 3, + "417": 4, + "418": 4, + "419": 1, + "420": 3, + "421": 2, + "422": 3, + "423": 1, + "424": 6, + "425": 6, + "426": 2, + "428": 2, + "429": 1, + "430": 1, + "431": 4, + "433": 1, + "436": 1, + "437": 1, + "438": 3, + "440": 3, + "441": 1, + "442": 1, + "443": 2, + "444": 5, + "445": 2, + "446": 3, + "447": 1, + "448": 5, + "449": 4, + "450": 2, + "451": 1, + "452": 3, + "453": 2, + "454": 2, + "455": 1, + "456": 3, + "457": 1, + "459": 4, + "460": 2, + "462": 1, + "465": 1, + "469": 2, + "470": 2, + "471": 1, + "474": 1, + "476": 2, + "478": 3, + "479": 3, + "480": 2, + "481": 3, + "483": 1, + "485": 1, + "486": 2, + "487": 2, + "489": 2, + "490": 1, + "491": 1, + "492": 5, + "493": 2, + "494": 1, + "495": 3, + "496": 2, + "498": 1, + "499": 1, + "500": 5, + "501": 3, + "502": 2, + "504": 1, + "505": 1, + "506": 3, + "508": 1, + "511": 1, + "513": 2, + "517": 1, + "534": 1, + "535": 2, + "538": 1, + "539": 1, + "541": 2, + "543": 1, + "544": 1, + "546": 1, + "550": 2, + "553": 1, + "554": 1, + "557": 4, + "558": 1, + "559": 1, + "560": 1, + "564": 1, + "565": 1, + "568": 1, + "571": 1, + "573": 2, + "575": 2, + "576": 1, + "577": 1, + "578": 1, + "579": 2, + "580": 2, + "581": 2, + "582": 2, + "585": 1, + "588": 1, + "592": 1, + "593": 1, + "594": 2, + "599": 2, + "601": 1, + "603": 2, + "606": 2, + "607": 2, + "609": 1, + "610": 1, + "612": 3, + "613": 1, + "616": 1, + "624": 1, + "629": 1, + "631": 1, + "632": 3, + "633": 1, + "634": 1, + "640": 1, + "641": 3, + "647": 4, + "648": 2, + "651": 1, + "656": 2, + "657": 1, + "660": 1, + "662": 1, + "664": 1, + "668": 1, + "670": 1, + "676": 2, + "677": 1, + "678": 1, + "681": 1, + "687": 1, + "691": 1, + "694": 1, + "698": 1, + "708": 3, + "711": 1, + "712": 1, + "713": 1, + "715": 1, + "720": 2, + "731": 1, + "735": 1, + "737": 2, + "739": 2, + "746": 2, + "752": 3, + "753": 2, + "754": 2, + "755": 1, + "756": 2, + "760": 2, + "761": 1, + "762": 1, + "764": 1, + "766": 1, + "767": 2, + "772": 1, + "774": 3, + "776": 2, + "777": 2, + "779": 2, + "780": 1, + "781": 1, + "801": 1, + "809": 1, + "839": 1, + "845": 1, + "856": 1, + "881": 1, + "882": 1, + "887": 1, + "898": 1, + "924": 1, + "925": 1, + "929": 1, + "942": 1, + "943": 2, + "952": 1, + "958": 1, + "962": 2, + "967": 2, + "969": 2, + "970": 1, + "985": 1, + "989": 1, + "1023": 1, + "1045": 1, + "1052": 1, + "1061": 1, + "1073": 1, + "1143": 1, + "1168": 1, + "1192": 1, + "1207": 1, + "1211": 1, + "1219": 1, + "1231": 1, + "1238": 1, + "1241": 1, + "1255": 1, + "1259": 2, + "1261": 1, + "1262": 1, + "1263": 1, + "1307": 1, + "1320": 1, + "1323": 1, + "1329": 1, + "1351": 1, + "1556": 1, + "1561": 1, + "1572": 1, + "1583": 1, + "1591": 1, + "1699": 1, + "1716": 1, + "1730": 1, + "1759": 1, + "1764": 1, + "1778": 1, + "1796": 1, + "1811": 1, + "1827": 1, + "1839": 1, + "2053": 1, + "2061": 1, + "2081": 1, + "2096": 1, + "2103": 1, + "2118": 1, + "2120": 1, + "2145": 1, + "2154": 1, + "2188": 1, + "2215": 1, + "2284": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333631266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fe0c8dfefde4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fe0c8dfe" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_7.html b/autobahn/client/tungstenite_case_12_4_7.html new file mode 100644 index 0000000..0c76ec9 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_7.html @@ -0,0 +1,1390 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.7 : Pass - 850 ms @ 2025-09-11T20:09:42.346Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=362&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ogTrMMypcWx7SoPSLU2YGQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LDr6NLARt7DRAyGMZn4ZZjWA93U=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
3311331
3321332
33431002
3352670
3381338
3421342
3471347
3511351
3551355
3681368
3741374
3751375
3791379
3851385
3951395
3981398
3991399
4001400
4031403
4131413
41631248
4191419
4201420
4212842
42341692
42441696
4251425
42731281
4282856
4291429
43031290
43131293
4351435
4371437
43931317
4411441
4431443
4441444
44531335
44631338
44731341
44831344
44983592
45041800
4522904
45373171
45431362
45583640
45641824
45752285
4591459
4641464
4652930
4691469
5181518
5231523
5251525
5261526
52731581
5281528
5291529
53121062
5401540
5411541
5421542
5431543
5441544
5451545
55321106
5561556
55821116
5621562
56331689
5641564
56521130
56621132
5681568
5691569
5721572
57421148
5761576
5771577
5781578
5791579
5801580
5811581
58221164
58421168
5871587
5931593
5941594
5981598
60821216
60921218
6101610
61121222
6121612
61321226
6151615
61621232
6181618
6201620
62121242
6231623
6241624
6251625
6261626
62821256
6291629
63021260
63121262
63221264
6331633
63431902
6351635
63642544
63731911
6381638
63963834
64063840
64163846
64285136
64331929
64453220
645117095
6461646
64742588
64863888
64931947
65021300
65142604
65295868
6531653
6541654
65553275
65742628
65853290
65942636
66063960
66142644
66242648
66353315
6641664
66531995
66621332
6671667
66842672
66942676
6701670
67185368
67221344
67332019
67432022
67532025
67632028
67832034
67921358
68032040
6811681
68221364
68353415
68432052
68521370
68653430
68764122
68932067
69032070
69142764
69274844
69321386
69464164
69532085
69642784
69732091
69864188
69953495
70053500
7011701
70274914
70353515
70432112
7051705
7061706
70764242
70842832
70964254
71074970
7121712
71342852
71432142
71542860
7161716
71721434
71921438
72021440
72142884
72264332
72342892
7251725
72642904
7271727
72842912
72942916
73032190
7311731
7331733
73421468
7351735
73642944
73732211
73821476
73932217
74232226
74332229
74542980
7461746
74721494
7511751
75332259
7581758
7611761
76221524
76332289
7701770
7741774
77521550
7761776
7811781
7841784
7911791
7991799
8001800
8021802
8061806
8071807
8111811
8131813
8151815
8181818
8201820
8211821
8251825
8261826
8291829
8301830
8311831
8321832
8341834
83532505
8361836
8371837
8381838
8421842
8431843
8451845
8491849
8521852
8551855
8581858
8671867
86821736
8701870
8711871
8751875
8801880
8841884
8851885
8881888
8891889
8901890
8931893
8951895
8961896
8991899
9001900
9021902
9091909
9101910
91121822
91254560
91332739
9171917
9181918
9241924
9291929
93132793
9341934
9371937
9411941
9421942
9451945
94932847
9541954
9591959
9601960
96232886
96321926
96421928
9681968
9751975
97621952
9781978
98021960
98132943
98221964
9831983
98532955
9891989
9901990
99121982
9931993
9941994
99521990
9971997
99821996
100322006
100422008
100522010
100633018
100711007
100811008
101122022
101322026
101411014
101611016
101711017
101811018
101955095
102011020
102111021
102311023
102422048
102611026
102833084
102911029
103022060
103111031
103211032
103311033
103411034
103511035
103633108
103811038
104011040
104133123
104211042
104411044
104722094
105122102
105422108
105511055
105733171
105811058
105922118
106133183
106233186
106311063
106411064
106611066
106722134
106822136
106911069
107311073
107811078
108311083
108411084
108511085
108733261
108911089
109011090
109311093
109611096
110211102
110411104
110511105
111011110
111222224
111511115
111811118
111911119
112011120
112211122
112422248
112511125
112611126
112911129
113022260
113122262
113311133
113411134
113611136
114022280
114322286
114522290
115011150
115411154
115511155
115611156
115711157
115811158
116711167
117111171
118411184
118511185
118722374
119011190
119133573
119322386
119633588
119711197
119822396
119911199
120111201
120211202
120411204
120622412
120911209
121511215
122011220
123211232
123411234
123611236
123711237
124211242
124411244
124611246
124811248
127011270
127622552
128111281
128611286
128811288
129511295
130111301
130211302
130422608
130611306
130711307
130822616
130933927
131411314
131511315
132511325
133611336
134911349
135111351
135511355
135711357
136011360
136611366
139111391
139911399
140322806
140511405
144911449
148511485
151911519
152711527
153711537
154411544
155511555
155911559
156511565
157011570
157111571
157234716
157911579
158111581
158323166
158511585
158723174
158811588
158911589
159234776
159411594
159611596
160123202
160211602
160811608
164011640
164311643
164411644
164711647
164923298
165211652
165611656
166511665
167923358
168011680
169911699
170011700
170246808
170523410
184011840
185911859
187211872
188711887
191011910
193011930
197111971
197911979
202012020
207412074
207712077
208512085
209512095
212212122
214612146
228112281
232612326
234912349
236312363
237712377
237912379
240012400
241512415
244812448
247812478
248012480
248224964
248312483
249112491
249637488
249712497
250412504
250612506
251112511
251212512
251612516
251712517
251825036
251912519
252325046
252712527
253712537
254112541
254212542
254412544
254712547
255512555
255712557
255912559
256812568
257112571
257812578
261512615
Total1002905932
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
3271327
3281328
3303990
3312662
3341334
3381338
3431343
3471347
3511351
3641364
3701370
3711371
3751375
3811381
3911391
3941394
3951395
3961396
3991399
4091409
41231236
4151415
4161416
4172834
41941676
42041680
4211421
42331269
4242848
4251425
42631278
42731281
4311431
4331433
43531305
4371437
4391439
4401440
44131323
44231326
44331329
44431332
44583560
44641784
4482896
44973143
45031350
45183608
45241808
45352265
4551455
4601460
4612922
4651465
5141514
5191519
5211521
5221522
52331569
5241524
5251525
52721054
5361536
5371537
5381538
5391539
5401540
5411541
54921098
5521552
55421108
5581558
55931677
5601560
56121122
56221124
5641564
5651565
5681568
57021140
5721572
5731573
5741574
5751575
5761576
5771577
57821156
58021160
5831583
5891589
5901590
5941594
60421208
60521210
6061606
60721214
6081608
60921218
6111611
61221224
6141614
6161616
61721234
6191619
6201620
6211621
6221622
62421248
6251625
62621252
62721254
62821256
6291629
63031890
6311631
63242528
63331899
6341634
63563810
63663816
63763822
63885104
63931917
64053200
641117051
6421642
64342572
64463864
64531935
64621292
64742588
64895832
6491649
6501650
65153255
65342612
65453270
65542620
65663936
65742628
65842632
65953295
6601660
66131983
66221324
6631663
66442656
66542660
6661666
66785336
66821336
66932007
67032010
67132013
67232016
67432022
67521350
67632028
6771677
67821356
67953395
68032040
68121362
68253410
68364098
68532055
68632058
68742748
68874816
68921378
69064140
69132073
69242768
69332079
69464164
69553475
69653480
6971697
69874886
69953495
70032100
7011701
7021702
70364218
70442816
70564230
70674942
7081708
70942836
71032130
71142844
7121712
71321426
71521430
71621432
71742868
71864308
71942876
7211721
72242888
7231723
72442896
72542900
72632178
7271727
7291729
73021460
7311731
73242928
73332199
73421468
73532205
73832214
73932217
74142964
7421742
74321486
7471747
74932247
7541754
7571757
75821516
75932277
7661766
7701770
77121542
7721772
7771777
7801780
7871787
7951795
7961796
7981798
8021802
8031803
8071807
8091809
8111811
8141814
8161816
8171817
8211821
8221822
8251825
8261826
8271827
8281828
8301830
83132493
8321832
8331833
8341834
8381838
8391839
8411841
8451845
8481848
8511851
8541854
8631863
86421728
8661866
8671867
8711871
8761876
8801880
8811881
8841884
8851885
8861886
8891889
8911891
8921892
8951895
8961896
8981898
9051905
9061906
90721814
90854540
90932727
9131913
9141914
9201920
9251925
92732781
9301930
9331933
9371937
9381938
9411941
94532835
9501950
9551955
9561956
95832874
95921918
96021920
9641964
9711971
97221944
9741974
97621952
97732931
97821956
9791979
98132943
9851985
9861986
98721974
9891989
9901990
99121982
9931993
99421988
99921998
100022000
100122002
100233006
100311003
100411004
100722014
100922018
101011010
101211012
101311013
101411014
101555075
101611016
101711017
101911019
102022040
102211022
102433072
102511025
102622052
102711027
102811028
102911029
103011030
103111031
103233096
103411034
103611036
103733111
103811038
104011040
104322086
104722094
105022100
105111051
105333159
105411054
105522110
105733171
105833174
105911059
106011060
106211062
106322126
106422128
106511065
106911069
107411074
107911079
108011080
108111081
108333249
108511085
108611086
108911089
109211092
109811098
110011100
110111101
110611106
110822216
111111111
111411114
111511115
111611116
111811118
112022240
112111121
112211122
112511125
112622252
112722254
112911129
113011130
113211132
113622272
113922278
114122282
114611146
115011150
115111151
115211152
115311153
115411154
116311163
116711167
118011180
118111181
118322366
118611186
118733561
118922378
119233576
119311193
119422388
119511195
119711197
119811198
120011200
120222404
120511205
121111211
121611216
122811228
123011230
123211232
123311233
123811238
124011240
124211242
124411244
126611266
127222544
127711277
128211282
128411284
129111291
129711297
129811298
130022600
130211302
130311303
130422608
130533915
131011310
131111311
132111321
133211332
134511345
134711347
135111351
135311353
135611356
136211362
138711387
139511395
139922798
140111401
144511445
148111481
151511515
152311523
153311533
154011540
155111551
155511555
156111561
156611566
156711567
156834704
157511575
157711577
157923158
158111581
158323166
158411584
158511585
158834764
159011590
159211592
159723194
159811598
160411604
163611636
163911639
164011640
164311643
164523290
164811648
165211652
166111661
167523350
167611676
169511695
169611696
169846792
170123402
183611836
185511855
186811868
188311883
190611906
192611926
196711967
197511975
201612016
207012070
207312073
208112081
209112091
211812118
214212142
227712277
232212322
234512345
235912359
237312373
237512375
239612396
241112411
244412444
247412474
247612476
247824956
247912479
248712487
249237476
249312493
250012500
250212502
250712507
250812508
251212512
251312513
251425028
251512515
251925038
252312523
253312533
253712537
253812538
254012540
254312543
255112551
255312553
255512555
256412564
256712567
257412574
261112611
Total1002901923
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333632266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882a492b088a77a
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6134393262303838
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_7.json b/autobahn/client/tungstenite_case_12_4_7.json new file mode 100644 index 0000000..b30d9b0 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_7.json @@ -0,0 +1,1237 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 362, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 850, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=362&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ogTrMMypcWx7SoPSLU2YGQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LDr6NLARt7DRAyGMZn4ZZjWA93U=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "331": 1, + "332": 1, + "334": 3, + "335": 2, + "338": 1, + "342": 1, + "347": 1, + "351": 1, + "355": 1, + "368": 1, + "374": 1, + "375": 1, + "379": 1, + "385": 1, + "395": 1, + "398": 1, + "399": 1, + "400": 1, + "403": 1, + "413": 1, + "416": 3, + "419": 1, + "420": 1, + "421": 2, + "423": 4, + "424": 4, + "425": 1, + "427": 3, + "428": 2, + "429": 1, + "430": 3, + "431": 3, + "435": 1, + "437": 1, + "439": 3, + "441": 1, + "443": 1, + "444": 1, + "445": 3, + "446": 3, + "447": 3, + "448": 3, + "449": 8, + "450": 4, + "452": 2, + "453": 7, + "454": 3, + "455": 8, + "456": 4, + "457": 5, + "459": 1, + "464": 1, + "465": 2, + "469": 1, + "518": 1, + "523": 1, + "525": 1, + "526": 1, + "527": 3, + "528": 1, + "529": 1, + "531": 2, + "540": 1, + "541": 1, + "542": 1, + "543": 1, + "544": 1, + "545": 1, + "553": 2, + "556": 1, + "558": 2, + "562": 1, + "563": 3, + "564": 1, + "565": 2, + "566": 2, + "568": 1, + "569": 1, + "572": 1, + "574": 2, + "576": 1, + "577": 1, + "578": 1, + "579": 1, + "580": 1, + "581": 1, + "582": 2, + "584": 2, + "587": 1, + "593": 1, + "594": 1, + "598": 1, + "608": 2, + "609": 2, + "610": 1, + "611": 2, + "612": 1, + "613": 2, + "615": 1, + "616": 2, + "618": 1, + "620": 1, + "621": 2, + "623": 1, + "624": 1, + "625": 1, + "626": 1, + "628": 2, + "629": 1, + "630": 2, + "631": 2, + "632": 2, + "633": 1, + "634": 3, + "635": 1, + "636": 4, + "637": 3, + "638": 1, + "639": 6, + "640": 6, + "641": 6, + "642": 8, + "643": 3, + "644": 5, + "645": 11, + "646": 1, + "647": 4, + "648": 6, + "649": 3, + "650": 2, + "651": 4, + "652": 9, + "653": 1, + "654": 1, + "655": 5, + "657": 4, + "658": 5, + "659": 4, + "660": 6, + "661": 4, + "662": 4, + "663": 5, + "664": 1, + "665": 3, + "666": 2, + "667": 1, + "668": 4, + "669": 4, + "670": 1, + "671": 8, + "672": 2, + "673": 3, + "674": 3, + "675": 3, + "676": 3, + "678": 3, + "679": 2, + "680": 3, + "681": 1, + "682": 2, + "683": 5, + "684": 3, + "685": 2, + "686": 5, + "687": 6, + "689": 3, + "690": 3, + "691": 4, + "692": 7, + "693": 2, + "694": 6, + "695": 3, + "696": 4, + "697": 3, + "698": 6, + "699": 5, + "700": 5, + "701": 1, + "702": 7, + "703": 5, + "704": 3, + "705": 1, + "706": 1, + "707": 6, + "708": 4, + "709": 6, + "710": 7, + "712": 1, + "713": 4, + "714": 3, + "715": 4, + "716": 1, + "717": 2, + "719": 2, + "720": 2, + "721": 4, + "722": 6, + "723": 4, + "725": 1, + "726": 4, + "727": 1, + "728": 4, + "729": 4, + "730": 3, + "731": 1, + "733": 1, + "734": 2, + "735": 1, + "736": 4, + "737": 3, + "738": 2, + "739": 3, + "742": 3, + "743": 3, + "745": 4, + "746": 1, + "747": 2, + "751": 1, + "753": 3, + "758": 1, + "761": 1, + "762": 2, + "763": 3, + "770": 1, + "774": 1, + "775": 2, + "776": 1, + "781": 1, + "784": 1, + "791": 1, + "799": 1, + "800": 1, + "802": 1, + "806": 1, + "807": 1, + "811": 1, + "813": 1, + "815": 1, + "818": 1, + "820": 1, + "821": 1, + "825": 1, + "826": 1, + "829": 1, + "830": 1, + "831": 1, + "832": 1, + "834": 1, + "835": 3, + "836": 1, + "837": 1, + "838": 1, + "842": 1, + "843": 1, + "845": 1, + "849": 1, + "852": 1, + "855": 1, + "858": 1, + "867": 1, + "868": 2, + "870": 1, + "871": 1, + "875": 1, + "880": 1, + "884": 1, + "885": 1, + "888": 1, + "889": 1, + "890": 1, + "893": 1, + "895": 1, + "896": 1, + "899": 1, + "900": 1, + "902": 1, + "909": 1, + "910": 1, + "911": 2, + "912": 5, + "913": 3, + "917": 1, + "918": 1, + "924": 1, + "929": 1, + "931": 3, + "934": 1, + "937": 1, + "941": 1, + "942": 1, + "945": 1, + "949": 3, + "954": 1, + "959": 1, + "960": 1, + "962": 3, + "963": 2, + "964": 2, + "968": 1, + "975": 1, + "976": 2, + "978": 1, + "980": 2, + "981": 3, + "982": 2, + "983": 1, + "985": 3, + "989": 1, + "990": 1, + "991": 2, + "993": 1, + "994": 1, + "995": 2, + "997": 1, + "998": 2, + "1003": 2, + "1004": 2, + "1005": 2, + "1006": 3, + "1007": 1, + "1008": 1, + "1011": 2, + "1013": 2, + "1014": 1, + "1016": 1, + "1017": 1, + "1018": 1, + "1019": 5, + "1020": 1, + "1021": 1, + "1023": 1, + "1024": 2, + "1026": 1, + "1028": 3, + "1029": 1, + "1030": 2, + "1031": 1, + "1032": 1, + "1033": 1, + "1034": 1, + "1035": 1, + "1036": 3, + "1038": 1, + "1040": 1, + "1041": 3, + "1042": 1, + "1044": 1, + "1047": 2, + "1051": 2, + "1054": 2, + "1055": 1, + "1057": 3, + "1058": 1, + "1059": 2, + "1061": 3, + "1062": 3, + "1063": 1, + "1064": 1, + "1066": 1, + "1067": 2, + "1068": 2, + "1069": 1, + "1073": 1, + "1078": 1, + "1083": 1, + "1084": 1, + "1085": 1, + "1087": 3, + "1089": 1, + "1090": 1, + "1093": 1, + "1096": 1, + "1102": 1, + "1104": 1, + "1105": 1, + "1110": 1, + "1112": 2, + "1115": 1, + "1118": 1, + "1119": 1, + "1120": 1, + "1122": 1, + "1124": 2, + "1125": 1, + "1126": 1, + "1129": 1, + "1130": 2, + "1131": 2, + "1133": 1, + "1134": 1, + "1136": 1, + "1140": 2, + "1143": 2, + "1145": 2, + "1150": 1, + "1154": 1, + "1155": 1, + "1156": 1, + "1157": 1, + "1158": 1, + "1167": 1, + "1171": 1, + "1184": 1, + "1185": 1, + "1187": 2, + "1190": 1, + "1191": 3, + "1193": 2, + "1196": 3, + "1197": 1, + "1198": 2, + "1199": 1, + "1201": 1, + "1202": 1, + "1204": 1, + "1206": 2, + "1209": 1, + "1215": 1, + "1220": 1, + "1232": 1, + "1234": 1, + "1236": 1, + "1237": 1, + "1242": 1, + "1244": 1, + "1246": 1, + "1248": 1, + "1270": 1, + "1276": 2, + "1281": 1, + "1286": 1, + "1288": 1, + "1295": 1, + "1301": 1, + "1302": 1, + "1304": 2, + "1306": 1, + "1307": 1, + "1308": 2, + "1309": 3, + "1314": 1, + "1315": 1, + "1325": 1, + "1336": 1, + "1349": 1, + "1351": 1, + "1355": 1, + "1357": 1, + "1360": 1, + "1366": 1, + "1391": 1, + "1399": 1, + "1403": 2, + "1405": 1, + "1449": 1, + "1485": 1, + "1519": 1, + "1527": 1, + "1537": 1, + "1544": 1, + "1555": 1, + "1559": 1, + "1565": 1, + "1570": 1, + "1571": 1, + "1572": 3, + "1579": 1, + "1581": 1, + "1583": 2, + "1585": 1, + "1587": 2, + "1588": 1, + "1589": 1, + "1592": 3, + "1594": 1, + "1596": 1, + "1601": 2, + "1602": 1, + "1608": 1, + "1640": 1, + "1643": 1, + "1644": 1, + "1647": 1, + "1649": 2, + "1652": 1, + "1656": 1, + "1665": 1, + "1679": 2, + "1680": 1, + "1699": 1, + "1700": 1, + "1702": 4, + "1705": 2, + "1840": 1, + "1859": 1, + "1872": 1, + "1887": 1, + "1910": 1, + "1930": 1, + "1971": 1, + "1979": 1, + "2020": 1, + "2074": 1, + "2077": 1, + "2085": 1, + "2095": 1, + "2122": 1, + "2146": 1, + "2281": 1, + "2326": 1, + "2349": 1, + "2363": 1, + "2377": 1, + "2379": 1, + "2400": 1, + "2415": 1, + "2448": 1, + "2478": 1, + "2480": 1, + "2482": 2, + "2483": 1, + "2491": 1, + "2496": 3, + "2497": 1, + "2504": 1, + "2506": 1, + "2511": 1, + "2512": 1, + "2516": 1, + "2517": 1, + "2518": 2, + "2519": 1, + "2523": 2, + "2527": 1, + "2537": 1, + "2541": 1, + "2542": 1, + "2544": 1, + "2547": 1, + "2555": 1, + "2557": 1, + "2559": 1, + "2568": 1, + "2571": 1, + "2578": 1, + "2615": 1 + }, + "started": "2025-09-11T20:09:42.346Z", + "trafficStats": { + "incomingCompressionRatio": 0.05478364820391276, + "incomingOctetsAppLevel": 16385674, + "incomingOctetsWebSocketLevel": 897667, + "incomingOctetsWireLevel": 905667, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.008911990749353602, + "outgoingCompressionRatio": 0.05478364820391276, + "outgoingOctetsAppLevel": 16385674, + "outgoingOctetsWebSocketLevel": 897667, + "outgoingOctetsWireLevel": 901667, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.004455995374676801, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "327": 1, + "328": 1, + "330": 3, + "331": 2, + "334": 1, + "338": 1, + "343": 1, + "347": 1, + "351": 1, + "364": 1, + "370": 1, + "371": 1, + "375": 1, + "381": 1, + "391": 1, + "394": 1, + "395": 1, + "396": 1, + "399": 1, + "409": 1, + "412": 3, + "415": 1, + "416": 1, + "417": 2, + "419": 4, + "420": 4, + "421": 1, + "423": 3, + "424": 2, + "425": 1, + "426": 3, + "427": 3, + "431": 1, + "433": 1, + "435": 3, + "437": 1, + "439": 1, + "440": 1, + "441": 3, + "442": 3, + "443": 3, + "444": 3, + "445": 8, + "446": 4, + "448": 2, + "449": 7, + "450": 3, + "451": 8, + "452": 4, + "453": 5, + "455": 1, + "460": 1, + "461": 2, + "465": 1, + "514": 1, + "519": 1, + "521": 1, + "522": 1, + "523": 3, + "524": 1, + "525": 1, + "527": 2, + "536": 1, + "537": 1, + "538": 1, + "539": 1, + "540": 1, + "541": 1, + "549": 2, + "552": 1, + "554": 2, + "558": 1, + "559": 3, + "560": 1, + "561": 2, + "562": 2, + "564": 1, + "565": 1, + "568": 1, + "570": 2, + "572": 1, + "573": 1, + "574": 1, + "575": 1, + "576": 1, + "577": 1, + "578": 2, + "580": 2, + "583": 1, + "589": 1, + "590": 1, + "594": 1, + "604": 2, + "605": 2, + "606": 1, + "607": 2, + "608": 1, + "609": 2, + "611": 1, + "612": 2, + "614": 1, + "616": 1, + "617": 2, + "619": 1, + "620": 1, + "621": 1, + "622": 1, + "624": 2, + "625": 1, + "626": 2, + "627": 2, + "628": 2, + "629": 1, + "630": 3, + "631": 1, + "632": 4, + "633": 3, + "634": 1, + "635": 6, + "636": 6, + "637": 6, + "638": 8, + "639": 3, + "640": 5, + "641": 11, + "642": 1, + "643": 4, + "644": 6, + "645": 3, + "646": 2, + "647": 4, + "648": 9, + "649": 1, + "650": 1, + "651": 5, + "653": 4, + "654": 5, + "655": 4, + "656": 6, + "657": 4, + "658": 4, + "659": 5, + "660": 1, + "661": 3, + "662": 2, + "663": 1, + "664": 4, + "665": 4, + "666": 1, + "667": 8, + "668": 2, + "669": 3, + "670": 3, + "671": 3, + "672": 3, + "674": 3, + "675": 2, + "676": 3, + "677": 1, + "678": 2, + "679": 5, + "680": 3, + "681": 2, + "682": 5, + "683": 6, + "685": 3, + "686": 3, + "687": 4, + "688": 7, + "689": 2, + "690": 6, + "691": 3, + "692": 4, + "693": 3, + "694": 6, + "695": 5, + "696": 5, + "697": 1, + "698": 7, + "699": 5, + "700": 3, + "701": 1, + "702": 1, + "703": 6, + "704": 4, + "705": 6, + "706": 7, + "708": 1, + "709": 4, + "710": 3, + "711": 4, + "712": 1, + "713": 2, + "715": 2, + "716": 2, + "717": 4, + "718": 6, + "719": 4, + "721": 1, + "722": 4, + "723": 1, + "724": 4, + "725": 4, + "726": 3, + "727": 1, + "729": 1, + "730": 2, + "731": 1, + "732": 4, + "733": 3, + "734": 2, + "735": 3, + "738": 3, + "739": 3, + "741": 4, + "742": 1, + "743": 2, + "747": 1, + "749": 3, + "754": 1, + "757": 1, + "758": 2, + "759": 3, + "766": 1, + "770": 1, + "771": 2, + "772": 1, + "777": 1, + "780": 1, + "787": 1, + "795": 1, + "796": 1, + "798": 1, + "802": 1, + "803": 1, + "807": 1, + "809": 1, + "811": 1, + "814": 1, + "816": 1, + "817": 1, + "821": 1, + "822": 1, + "825": 1, + "826": 1, + "827": 1, + "828": 1, + "830": 1, + "831": 3, + "832": 1, + "833": 1, + "834": 1, + "838": 1, + "839": 1, + "841": 1, + "845": 1, + "848": 1, + "851": 1, + "854": 1, + "863": 1, + "864": 2, + "866": 1, + "867": 1, + "871": 1, + "876": 1, + "880": 1, + "881": 1, + "884": 1, + "885": 1, + "886": 1, + "889": 1, + "891": 1, + "892": 1, + "895": 1, + "896": 1, + "898": 1, + "905": 1, + "906": 1, + "907": 2, + "908": 5, + "909": 3, + "913": 1, + "914": 1, + "920": 1, + "925": 1, + "927": 3, + "930": 1, + "933": 1, + "937": 1, + "938": 1, + "941": 1, + "945": 3, + "950": 1, + "955": 1, + "956": 1, + "958": 3, + "959": 2, + "960": 2, + "964": 1, + "971": 1, + "972": 2, + "974": 1, + "976": 2, + "977": 3, + "978": 2, + "979": 1, + "981": 3, + "985": 1, + "986": 1, + "987": 2, + "989": 1, + "990": 1, + "991": 2, + "993": 1, + "994": 2, + "999": 2, + "1000": 2, + "1001": 2, + "1002": 3, + "1003": 1, + "1004": 1, + "1007": 2, + "1009": 2, + "1010": 1, + "1012": 1, + "1013": 1, + "1014": 1, + "1015": 5, + "1016": 1, + "1017": 1, + "1019": 1, + "1020": 2, + "1022": 1, + "1024": 3, + "1025": 1, + "1026": 2, + "1027": 1, + "1028": 1, + "1029": 1, + "1030": 1, + "1031": 1, + "1032": 3, + "1034": 1, + "1036": 1, + "1037": 3, + "1038": 1, + "1040": 1, + "1043": 2, + "1047": 2, + "1050": 2, + "1051": 1, + "1053": 3, + "1054": 1, + "1055": 2, + "1057": 3, + "1058": 3, + "1059": 1, + "1060": 1, + "1062": 1, + "1063": 2, + "1064": 2, + "1065": 1, + "1069": 1, + "1074": 1, + "1079": 1, + "1080": 1, + "1081": 1, + "1083": 3, + "1085": 1, + "1086": 1, + "1089": 1, + "1092": 1, + "1098": 1, + "1100": 1, + "1101": 1, + "1106": 1, + "1108": 2, + "1111": 1, + "1114": 1, + "1115": 1, + "1116": 1, + "1118": 1, + "1120": 2, + "1121": 1, + "1122": 1, + "1125": 1, + "1126": 2, + "1127": 2, + "1129": 1, + "1130": 1, + "1132": 1, + "1136": 2, + "1139": 2, + "1141": 2, + "1146": 1, + "1150": 1, + "1151": 1, + "1152": 1, + "1153": 1, + "1154": 1, + "1163": 1, + "1167": 1, + "1180": 1, + "1181": 1, + "1183": 2, + "1186": 1, + "1187": 3, + "1189": 2, + "1192": 3, + "1193": 1, + "1194": 2, + "1195": 1, + "1197": 1, + "1198": 1, + "1200": 1, + "1202": 2, + "1205": 1, + "1211": 1, + "1216": 1, + "1228": 1, + "1230": 1, + "1232": 1, + "1233": 1, + "1238": 1, + "1240": 1, + "1242": 1, + "1244": 1, + "1266": 1, + "1272": 2, + "1277": 1, + "1282": 1, + "1284": 1, + "1291": 1, + "1297": 1, + "1298": 1, + "1300": 2, + "1302": 1, + "1303": 1, + "1304": 2, + "1305": 3, + "1310": 1, + "1311": 1, + "1321": 1, + "1332": 1, + "1345": 1, + "1347": 1, + "1351": 1, + "1353": 1, + "1356": 1, + "1362": 1, + "1387": 1, + "1395": 1, + "1399": 2, + "1401": 1, + "1445": 1, + "1481": 1, + "1515": 1, + "1523": 1, + "1533": 1, + "1540": 1, + "1551": 1, + "1555": 1, + "1561": 1, + "1566": 1, + "1567": 1, + "1568": 3, + "1575": 1, + "1577": 1, + "1579": 2, + "1581": 1, + "1583": 2, + "1584": 1, + "1585": 1, + "1588": 3, + "1590": 1, + "1592": 1, + "1597": 2, + "1598": 1, + "1604": 1, + "1636": 1, + "1639": 1, + "1640": 1, + "1643": 1, + "1645": 2, + "1648": 1, + "1652": 1, + "1661": 1, + "1675": 2, + "1676": 1, + "1695": 1, + "1696": 1, + "1698": 4, + "1701": 2, + "1836": 1, + "1855": 1, + "1868": 1, + "1883": 1, + "1906": 1, + "1926": 1, + "1967": 1, + "1975": 1, + "2016": 1, + "2070": 1, + "2073": 1, + "2081": 1, + "2091": 1, + "2118": 1, + "2142": 1, + "2277": 1, + "2322": 1, + "2345": 1, + "2359": 1, + "2373": 1, + "2375": 1, + "2396": 1, + "2411": 1, + "2444": 1, + "2474": 1, + "2476": 1, + "2478": 2, + "2479": 1, + "2487": 1, + "2492": 3, + "2493": 1, + "2500": 1, + "2502": 1, + "2507": 1, + "2508": 1, + "2512": 1, + "2513": 1, + "2514": 2, + "2515": 1, + "2519": 2, + "2523": 1, + "2533": 1, + "2537": 1, + "2538": 1, + "2540": 1, + "2543": 1, + "2551": 1, + "2553": 1, + "2555": 1, + "2564": 1, + "2567": 1, + "2574": 1, + "2611": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333632266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a492b088a77a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a492b088" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_8.html b/autobahn/client/tungstenite_case_12_4_8.html new file mode 100644 index 0000000..c822493 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_8.html @@ -0,0 +1,1668 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.8 : Pass - 1225 ms @ 2025-09-11T20:09:43.197Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=363&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: CJvxMsh1VHjLp5XYm4J6jQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: uSZIk/80y71pnB69AUCS8OPvC9o=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
8491849
85343412
8541854
85554275
85621712
8571857
85821716
8591859
8601860
86121722
8631863
8671867
8761876
8801880
9081908
9111911
9221922
9321932
9511951
9671967
9751975
9811981
9921992
100411004
102111021
102511025
103711037
104211042
104411044
104811048
105111051
105611056
106311063
106422128
106611066
106811068
106922138
107022140
107255360
107311073
107411074
107611076
107711077
108022160
108122162
108222164
108333249
108422168
108522170
108711087
108822176
108922178
109011090
109133273
109222184
109333279
109433282
109511095
109622192
109711097
109811098
110011100
110211102
110311103
110433312
110511105
110611106
110833324
111011110
111111111
111411114
111611116
111722234
112022240
112111121
112344492
112433372
112522250
112611126
112722254
112833384
112911129
113011130
113111131
113322266
113411134
113622272
113811138
114011140
114222284
114711147
116811168
117311173
117411174
117611176
117811178
117911179
118511185
118811188
119011190
119222384
119522390
119611196
120011200
120211202
120511205
120611206
121311213
121411214
121711217
122011220
122511225
123211232
123311233
123611236
123911239
124511245
124633738
124722494
124822496
125011250
125133753
125322506
125411254
125511255
126022520
126111261
126222524
126311263
126411264
126511265
126711267
126833804
127211272
127311273
127411274
128011280
128411284
128511285
128733861
128933867
129056450
129145164
129311293
129411294
129511295
129645184
129722594
129911299
130122602
130222604
130322606
130411304
130633918
130733921
130845232
130922618
131256560
131356565
131422628
131556575
131622632
131767902
131822636
131922638
132056600
132167926
132322646
132511325
132622652
133111331
133211332
133311333
133411334
133522670
133711337
133822676
133911339
134011340
134222684
134445376
134511345
134611346
134811348
134922698
135022700
135111351
135211352
135811358
135911359
136122722
136322726
136411364
136711367
136845472
136911369
137011370
137222744
137311373
137511375
137611376
137711377
138022760
138111381
138234146
138311383
138434152
138522770
138634158
138722774
138822776
139011390
139111391
139311393
139434182
139545580
139622792
139745588
139834194
139922798
140022800
140134203
1402811216
140357015
140422808
140611406
140768442
141022820
141622832
141911419
142211422
142311423
142611426
142811428
143011430
143611436
143922878
144011440
144211442
144311443
144411444
144711447
144811448
145022900
145111451
145311453
145522910
145611456
146311463
146511465
146822936
147022940
147211472
147311473
147411474
147711477
147811478
148111481
148222964
148311483
148511485
148622972
148811488
149111491
149222984
149411494
149611496
149811498
150223004
151011510
151211512
151611516
152511525
153311533
153611536
153823076
154011540
154111541
154211542
154623092
155023100
155511555
155911559
156211562
156311563
156511565
156711567
156923138
157011570
158011580
158111581
158611586
158723174
158811588
158923178
159223184
159311593
159411594
159511595
159811598
160011600
160111601
160423208
160823216
160923218
161411614
161511615
161611616
161711617
161811618
161934857
162011620
162111621
162211622
162323246
162523250
162711627
163323266
163511635
163811638
164211642
164411644
164711647
165023300
165123302
165458270
165623312
165723314
165811658
165911659
166011660
166323326
166423328
166523330
166634998
166823336
166911669
167011670
167111671
167223344
167411674
167611676
167811678
167935037
168023360
168135043
168311683
168423368
168511685
168811688
168923378
169123382
169323386
169523390
169611696
169811698
169911699
170023400
170211702
170311703
170511705
170611706
170746828
170923418
171223424
171335139
171423428
171658580
171711717
171911719
172011720
172223444
172511725
172711727
173223464
173911739
175311753
175911759
176811768
179811798
182111821
184011840
184411844
186711867
187011870
187311873
188211882
189523790
190611906
190911909
191211912
191311913
191423828
191523830
191823836
192011920
192123842
192311923
192411924
192511925
192711927
192823856
192923858
193035790
193123862
193911939
195311953
195911959
197211972
198511985
198811988
198911989
199411994
199511995
199611996
202012020
202212022
204612046
209512095
210512105
211612116
211912119
212124242
212412124
212812128
212912129
213112131
213224264
213312133
213624272
214112141
214624292
214924298
215324306
215624312
215712157
215824316
216012160
216112161
216412164
216512165
216612166
217036510
217324346
217536525
217612176
217712177
217812178
218012180
218212182
218324366
218524370
218912189
219012190
219212192
219412194
219524390
220512205
220612206
220712207
220824416
220912209
221012210
221112211
221512215
221624432
221724434
221812218
222324446
222512225
222612226
222712227
223012230
223212232
223424468
223512235
223912239
224324486
224812248
225512255
225712257
226712267
226812268
227012270
227124542
227424548
227924558
228012280
228224564
228424568
228612286
228824576
229012290
229112291
229312293
229412294
229512295
229624592
229712297
229912299
230236906
230324606
230424608
230612306
230712307
230812308
230912309
231012310
231236936
231424628
231712317
233012330
233224664
233412334
234112341
234212342
234612346
234712347
235012350
235212352
235312353
235412354
235812358
235912359
236312363
237312373
238012380
239612396
241012410
241512415
243512435
243812438
244712447
245112451
245712457
246012460
247112471
247312473
247924958
248012480
248212482
253012530
253212532
254825096
254912549
255512555
256912569
257912579
258312583
258725174
258812588
259012590
259412594
259612596
260512605
261712617
262512625
262712627
262812628
264012640
264412644
265112651
266212662
268012680
268112681
270012700
270412704
272012720
273612736
273725474
274012740
274625492
275612756
275712757
276212762
276312763
276612766
276712767
277725554
278512785
278712787
278812788
278912789
279012790
279238376
279438382
279525590
279612796
279912799
280012800
281812818
286112861
287612876
293912939
294012940
294212942
294312943
294612946
294712947
295012950
295212952
295312953
295412954
295525910
295712957
295838874
295925918
296312963
296525930
296712967
296812968
296912969
297925958
298312983
298812988
299412994
299612996
300326006
300813008
301513015
301713017
301913019
302026040
302113021
302313023
302513025
302613026
302813028
303413034
303713037
304126082
304213042
304513045
304713047
305013050
306113061
306213062
306313063
306613066
306713067
306913069
307213072
307313073
307713077
308713087
311613116
312013120
312213122
313013130
314913149
315013150
315313153
315513155
317213172
317313173
317413174
318013180
319113191
319313193
319413194
319613196
320013200
320513205
321613216
322313223
322526450
325813258
326013260
326113261
326326526
327213272
327313273
327813278
327913279
328526570
328713287
331013310
331413314
332213322
332313323
332413324
334013340
334413344
334613346
336613366
Total10021793705
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
8451845
84943396
8501850
85154255
85221704
8531853
85421708
8551855
8561856
85721714
8591859
8631863
8721872
8761876
9041904
9071907
9181918
9281928
9471947
9631963
9711971
9771977
9881988
100011000
101711017
102111021
103311033
103811038
104011040
104411044
104711047
105211052
105911059
106022120
106211062
106411064
106522130
106622132
106855340
106911069
107011070
107211072
107311073
107622152
107722154
107822156
107933237
108022160
108122162
108311083
108422168
108522170
108611086
108733261
108822176
108933267
109033270
109111091
109222184
109311093
109411094
109611096
109811098
109911099
110033300
110111101
110211102
110433312
110611106
110711107
111011110
111211112
111322226
111622232
111711117
111944476
112033360
112122242
112211122
112322246
112433372
112511125
112611126
112711127
112922258
113011130
113222264
113411134
113611136
113822276
114311143
116411164
116911169
117011170
117211172
117411174
117511175
118111181
118411184
118611186
118822376
119122382
119211192
119611196
119811198
120111201
120211202
120911209
121011210
121311213
121611216
122111221
122811228
122911229
123211232
123511235
124111241
124233726
124322486
124422488
124611246
124733741
124922498
125011250
125111251
125622512
125711257
125822516
125911259
126011260
126111261
126311263
126433792
126811268
126911269
127011270
127611276
128011280
128111281
128333849
128533855
128656430
128745148
128911289
129011290
129111291
129245168
129322586
129511295
129722594
129822596
129922598
130011300
130233906
130333909
130445216
130522610
130856540
130956545
131022620
131156555
131222624
131367878
131422628
131522630
131656580
131767902
131922638
132111321
132222644
132711327
132811328
132911329
133011330
133122662
133311333
133422668
133511335
133611336
133822676
134045360
134111341
134211342
134411344
134522690
134622692
134711347
134811348
135411354
135511355
135722714
135922718
136011360
136311363
136445456
136511365
136611366
136822736
136911369
137111371
137211372
137311373
137622752
137711377
137834134
137911379
138034140
138122762
138234146
138322766
138422768
138611386
138711387
138911389
139034170
139145564
139222784
139345572
139434182
139522790
139622792
139734191
1398811184
139956995
140022800
140211402
140368418
140622812
141222824
141511415
141811418
141911419
142211422
142411424
142611426
143211432
143522870
143611436
143811438
143911439
144011440
144311443
144411444
144622892
144711447
144911449
145122902
145211452
145911459
146111461
146422928
146622932
146811468
146911469
147011470
147311473
147411474
147711477
147822956
147911479
148111481
148222964
148411484
148711487
148822976
149011490
149211492
149411494
149822996
150611506
150811508
151211512
152111521
152911529
153211532
153423068
153611536
153711537
153811538
154223084
154623092
155111551
155511555
155811558
155911559
156111561
156311563
156523130
156611566
157611576
157711577
158211582
158323166
158411584
158523170
158823176
158911589
159011590
159111591
159411594
159611596
159711597
160023200
160423208
160523210
161011610
161111611
161211612
161311613
161411614
161534845
161611616
161711617
161811618
161923238
162123242
162311623
162923258
163111631
163411634
163811638
164011640
164311643
164623292
164723294
165058250
165223304
165323306
165411654
165511655
165611656
165923318
166023320
166123322
166234986
166423328
166511665
166611666
166711667
166823336
167011670
167211672
167411674
167535025
167623352
167735031
167911679
168023360
168111681
168411684
168523370
168723374
168923378
169123382
169211692
169411694
169511695
169623392
169811698
169911699
170111701
170211702
170346812
170523410
170823416
170935127
171023420
171258560
171311713
171511715
171611716
171823436
172111721
172311723
172823456
173511735
174911749
175511755
176411764
179411794
181711817
183611836
184011840
186311863
186611866
186911869
187811878
189123782
190211902
190511905
190811908
190911909
191023820
191123822
191423828
191611916
191723834
191911919
192011920
192111921
192311923
192423848
192523850
192635778
192723854
193511935
194911949
195511955
196811968
198111981
198411984
198511985
199011990
199111991
199211992
201612016
201812018
204212042
209112091
210112101
211212112
211512115
211724234
212012120
212412124
212512125
212712127
212824256
212912129
213224264
213712137
214224284
214524290
214924298
215224304
215312153
215424308
215612156
215712157
216012160
216112161
216212162
216636498
216924338
217136513
217212172
217312173
217412174
217612176
217812178
217924358
218124362
218512185
218612186
218812188
219012190
219124382
220112201
220212202
220312203
220424408
220512205
220612206
220712207
221112211
221224424
221324426
221412214
221924438
222112221
222212222
222312223
222612226
222812228
223024460
223112231
223512235
223924478
224412244
225112251
225312253
226312263
226412264
226612266
226724534
227024540
227524550
227612276
227824556
228024560
228212282
228424568
228612286
228712287
228912289
229012290
229112291
229224584
229312293
229512295
229836894
229924598
230024600
230212302
230312303
230412304
230512305
230612306
230836924
231024620
231312313
232612326
232824656
233012330
233712337
233812338
234212342
234312343
234612346
234812348
234912349
235012350
235412354
235512355
235912359
236912369
237612376
239212392
240612406
241112411
243112431
243412434
244312443
244712447
245312453
245612456
246712467
246912469
247524950
247612476
247812478
252612526
252812528
254425088
254512545
255112551
256512565
257512575
257912579
258325166
258412584
258612586
259012590
259212592
260112601
261312613
262112621
262312623
262412624
263612636
264012640
264712647
265812658
267612676
267712677
269612696
270012700
271612716
273212732
273325466
273612736
274225484
275212752
275312753
275812758
275912759
276212762
276312763
277325546
278112781
278312783
278412784
278512785
278612786
278838364
279038370
279125582
279212792
279512795
279612796
281412814
285712857
287212872
293512935
293612936
293812938
293912939
294212942
294312943
294612946
294812948
294912949
295012950
295125902
295312953
295438862
295525910
295912959
296125922
296312963
296412964
296512965
297525950
297912979
298412984
299012990
299212992
299925998
300413004
301113011
301313013
301513015
301626032
301713017
301913019
302113021
302213022
302413024
303013030
303313033
303726074
303813038
304113041
304313043
304613046
305713057
305813058
305913059
306213062
306313063
306513065
306813068
306913069
307313073
308313083
311213112
311613116
311813118
312613126
314513145
314613146
314913149
315113151
316813168
316913169
317013170
317613176
318713187
318913189
319013190
319213192
319613196
320113201
321213212
321913219
322126442
325413254
325613256
325713257
325926518
326813268
326913269
327413274
327513275
328126562
328313283
330613306
331013310
331813318
331913319
332013320
333613336
334013340
334213342
336213362
Total10021789696
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333633266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820ca5f3320f4d
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3063613566333332
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_8.json b/autobahn/client/tungstenite_case_12_4_8.json new file mode 100644 index 0000000..ced575a --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_8.json @@ -0,0 +1,1515 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 363, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1225, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=363&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: CJvxMsh1VHjLp5XYm4J6jQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: uSZIk/80y71pnB69AUCS8OPvC9o=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "849": 1, + "853": 4, + "854": 1, + "855": 5, + "856": 2, + "857": 1, + "858": 2, + "859": 1, + "860": 1, + "861": 2, + "863": 1, + "867": 1, + "876": 1, + "880": 1, + "908": 1, + "911": 1, + "922": 1, + "932": 1, + "951": 1, + "967": 1, + "975": 1, + "981": 1, + "992": 1, + "1004": 1, + "1021": 1, + "1025": 1, + "1037": 1, + "1042": 1, + "1044": 1, + "1048": 1, + "1051": 1, + "1056": 1, + "1063": 1, + "1064": 2, + "1066": 1, + "1068": 1, + "1069": 2, + "1070": 2, + "1072": 5, + "1073": 1, + "1074": 1, + "1076": 1, + "1077": 1, + "1080": 2, + "1081": 2, + "1082": 2, + "1083": 3, + "1084": 2, + "1085": 2, + "1087": 1, + "1088": 2, + "1089": 2, + "1090": 1, + "1091": 3, + "1092": 2, + "1093": 3, + "1094": 3, + "1095": 1, + "1096": 2, + "1097": 1, + "1098": 1, + "1100": 1, + "1102": 1, + "1103": 1, + "1104": 3, + "1105": 1, + "1106": 1, + "1108": 3, + "1110": 1, + "1111": 1, + "1114": 1, + "1116": 1, + "1117": 2, + "1120": 2, + "1121": 1, + "1123": 4, + "1124": 3, + "1125": 2, + "1126": 1, + "1127": 2, + "1128": 3, + "1129": 1, + "1130": 1, + "1131": 1, + "1133": 2, + "1134": 1, + "1136": 2, + "1138": 1, + "1140": 1, + "1142": 2, + "1147": 1, + "1168": 1, + "1173": 1, + "1174": 1, + "1176": 1, + "1178": 1, + "1179": 1, + "1185": 1, + "1188": 1, + "1190": 1, + "1192": 2, + "1195": 2, + "1196": 1, + "1200": 1, + "1202": 1, + "1205": 1, + "1206": 1, + "1213": 1, + "1214": 1, + "1217": 1, + "1220": 1, + "1225": 1, + "1232": 1, + "1233": 1, + "1236": 1, + "1239": 1, + "1245": 1, + "1246": 3, + "1247": 2, + "1248": 2, + "1250": 1, + "1251": 3, + "1253": 2, + "1254": 1, + "1255": 1, + "1260": 2, + "1261": 1, + "1262": 2, + "1263": 1, + "1264": 1, + "1265": 1, + "1267": 1, + "1268": 3, + "1272": 1, + "1273": 1, + "1274": 1, + "1280": 1, + "1284": 1, + "1285": 1, + "1287": 3, + "1289": 3, + "1290": 5, + "1291": 4, + "1293": 1, + "1294": 1, + "1295": 1, + "1296": 4, + "1297": 2, + "1299": 1, + "1301": 2, + "1302": 2, + "1303": 2, + "1304": 1, + "1306": 3, + "1307": 3, + "1308": 4, + "1309": 2, + "1312": 5, + "1313": 5, + "1314": 2, + "1315": 5, + "1316": 2, + "1317": 6, + "1318": 2, + "1319": 2, + "1320": 5, + "1321": 6, + "1323": 2, + "1325": 1, + "1326": 2, + "1331": 1, + "1332": 1, + "1333": 1, + "1334": 1, + "1335": 2, + "1337": 1, + "1338": 2, + "1339": 1, + "1340": 1, + "1342": 2, + "1344": 4, + "1345": 1, + "1346": 1, + "1348": 1, + "1349": 2, + "1350": 2, + "1351": 1, + "1352": 1, + "1358": 1, + "1359": 1, + "1361": 2, + "1363": 2, + "1364": 1, + "1367": 1, + "1368": 4, + "1369": 1, + "1370": 1, + "1372": 2, + "1373": 1, + "1375": 1, + "1376": 1, + "1377": 1, + "1380": 2, + "1381": 1, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 2, + "1386": 3, + "1387": 2, + "1388": 2, + "1390": 1, + "1391": 1, + "1393": 1, + "1394": 3, + "1395": 4, + "1396": 2, + "1397": 4, + "1398": 3, + "1399": 2, + "1400": 2, + "1401": 3, + "1402": 8, + "1403": 5, + "1404": 2, + "1406": 1, + "1407": 6, + "1410": 2, + "1416": 2, + "1419": 1, + "1422": 1, + "1423": 1, + "1426": 1, + "1428": 1, + "1430": 1, + "1436": 1, + "1439": 2, + "1440": 1, + "1442": 1, + "1443": 1, + "1444": 1, + "1447": 1, + "1448": 1, + "1450": 2, + "1451": 1, + "1453": 1, + "1455": 2, + "1456": 1, + "1463": 1, + "1465": 1, + "1468": 2, + "1470": 2, + "1472": 1, + "1473": 1, + "1474": 1, + "1477": 1, + "1478": 1, + "1481": 1, + "1482": 2, + "1483": 1, + "1485": 1, + "1486": 2, + "1488": 1, + "1491": 1, + "1492": 2, + "1494": 1, + "1496": 1, + "1498": 1, + "1502": 2, + "1510": 1, + "1512": 1, + "1516": 1, + "1525": 1, + "1533": 1, + "1536": 1, + "1538": 2, + "1540": 1, + "1541": 1, + "1542": 1, + "1546": 2, + "1550": 2, + "1555": 1, + "1559": 1, + "1562": 1, + "1563": 1, + "1565": 1, + "1567": 1, + "1569": 2, + "1570": 1, + "1580": 1, + "1581": 1, + "1586": 1, + "1587": 2, + "1588": 1, + "1589": 2, + "1592": 2, + "1593": 1, + "1594": 1, + "1595": 1, + "1598": 1, + "1600": 1, + "1601": 1, + "1604": 2, + "1608": 2, + "1609": 2, + "1614": 1, + "1615": 1, + "1616": 1, + "1617": 1, + "1618": 1, + "1619": 3, + "1620": 1, + "1621": 1, + "1622": 1, + "1623": 2, + "1625": 2, + "1627": 1, + "1633": 2, + "1635": 1, + "1638": 1, + "1642": 1, + "1644": 1, + "1647": 1, + "1650": 2, + "1651": 2, + "1654": 5, + "1656": 2, + "1657": 2, + "1658": 1, + "1659": 1, + "1660": 1, + "1663": 2, + "1664": 2, + "1665": 2, + "1666": 3, + "1668": 2, + "1669": 1, + "1670": 1, + "1671": 1, + "1672": 2, + "1674": 1, + "1676": 1, + "1678": 1, + "1679": 3, + "1680": 2, + "1681": 3, + "1683": 1, + "1684": 2, + "1685": 1, + "1688": 1, + "1689": 2, + "1691": 2, + "1693": 2, + "1695": 2, + "1696": 1, + "1698": 1, + "1699": 1, + "1700": 2, + "1702": 1, + "1703": 1, + "1705": 1, + "1706": 1, + "1707": 4, + "1709": 2, + "1712": 2, + "1713": 3, + "1714": 2, + "1716": 5, + "1717": 1, + "1719": 1, + "1720": 1, + "1722": 2, + "1725": 1, + "1727": 1, + "1732": 2, + "1739": 1, + "1753": 1, + "1759": 1, + "1768": 1, + "1798": 1, + "1821": 1, + "1840": 1, + "1844": 1, + "1867": 1, + "1870": 1, + "1873": 1, + "1882": 1, + "1895": 2, + "1906": 1, + "1909": 1, + "1912": 1, + "1913": 1, + "1914": 2, + "1915": 2, + "1918": 2, + "1920": 1, + "1921": 2, + "1923": 1, + "1924": 1, + "1925": 1, + "1927": 1, + "1928": 2, + "1929": 2, + "1930": 3, + "1931": 2, + "1939": 1, + "1953": 1, + "1959": 1, + "1972": 1, + "1985": 1, + "1988": 1, + "1989": 1, + "1994": 1, + "1995": 1, + "1996": 1, + "2020": 1, + "2022": 1, + "2046": 1, + "2095": 1, + "2105": 1, + "2116": 1, + "2119": 1, + "2121": 2, + "2124": 1, + "2128": 1, + "2129": 1, + "2131": 1, + "2132": 2, + "2133": 1, + "2136": 2, + "2141": 1, + "2146": 2, + "2149": 2, + "2153": 2, + "2156": 2, + "2157": 1, + "2158": 2, + "2160": 1, + "2161": 1, + "2164": 1, + "2165": 1, + "2166": 1, + "2170": 3, + "2173": 2, + "2175": 3, + "2176": 1, + "2177": 1, + "2178": 1, + "2180": 1, + "2182": 1, + "2183": 2, + "2185": 2, + "2189": 1, + "2190": 1, + "2192": 1, + "2194": 1, + "2195": 2, + "2205": 1, + "2206": 1, + "2207": 1, + "2208": 2, + "2209": 1, + "2210": 1, + "2211": 1, + "2215": 1, + "2216": 2, + "2217": 2, + "2218": 1, + "2223": 2, + "2225": 1, + "2226": 1, + "2227": 1, + "2230": 1, + "2232": 1, + "2234": 2, + "2235": 1, + "2239": 1, + "2243": 2, + "2248": 1, + "2255": 1, + "2257": 1, + "2267": 1, + "2268": 1, + "2270": 1, + "2271": 2, + "2274": 2, + "2279": 2, + "2280": 1, + "2282": 2, + "2284": 2, + "2286": 1, + "2288": 2, + "2290": 1, + "2291": 1, + "2293": 1, + "2294": 1, + "2295": 1, + "2296": 2, + "2297": 1, + "2299": 1, + "2302": 3, + "2303": 2, + "2304": 2, + "2306": 1, + "2307": 1, + "2308": 1, + "2309": 1, + "2310": 1, + "2312": 3, + "2314": 2, + "2317": 1, + "2330": 1, + "2332": 2, + "2334": 1, + "2341": 1, + "2342": 1, + "2346": 1, + "2347": 1, + "2350": 1, + "2352": 1, + "2353": 1, + "2354": 1, + "2358": 1, + "2359": 1, + "2363": 1, + "2373": 1, + "2380": 1, + "2396": 1, + "2410": 1, + "2415": 1, + "2435": 1, + "2438": 1, + "2447": 1, + "2451": 1, + "2457": 1, + "2460": 1, + "2471": 1, + "2473": 1, + "2479": 2, + "2480": 1, + "2482": 1, + "2530": 1, + "2532": 1, + "2548": 2, + "2549": 1, + "2555": 1, + "2569": 1, + "2579": 1, + "2583": 1, + "2587": 2, + "2588": 1, + "2590": 1, + "2594": 1, + "2596": 1, + "2605": 1, + "2617": 1, + "2625": 1, + "2627": 1, + "2628": 1, + "2640": 1, + "2644": 1, + "2651": 1, + "2662": 1, + "2680": 1, + "2681": 1, + "2700": 1, + "2704": 1, + "2720": 1, + "2736": 1, + "2737": 2, + "2740": 1, + "2746": 2, + "2756": 1, + "2757": 1, + "2762": 1, + "2763": 1, + "2766": 1, + "2767": 1, + "2777": 2, + "2785": 1, + "2787": 1, + "2788": 1, + "2789": 1, + "2790": 1, + "2792": 3, + "2794": 3, + "2795": 2, + "2796": 1, + "2799": 1, + "2800": 1, + "2818": 1, + "2861": 1, + "2876": 1, + "2939": 1, + "2940": 1, + "2942": 1, + "2943": 1, + "2946": 1, + "2947": 1, + "2950": 1, + "2952": 1, + "2953": 1, + "2954": 1, + "2955": 2, + "2957": 1, + "2958": 3, + "2959": 2, + "2963": 1, + "2965": 2, + "2967": 1, + "2968": 1, + "2969": 1, + "2979": 2, + "2983": 1, + "2988": 1, + "2994": 1, + "2996": 1, + "3003": 2, + "3008": 1, + "3015": 1, + "3017": 1, + "3019": 1, + "3020": 2, + "3021": 1, + "3023": 1, + "3025": 1, + "3026": 1, + "3028": 1, + "3034": 1, + "3037": 1, + "3041": 2, + "3042": 1, + "3045": 1, + "3047": 1, + "3050": 1, + "3061": 1, + "3062": 1, + "3063": 1, + "3066": 1, + "3067": 1, + "3069": 1, + "3072": 1, + "3073": 1, + "3077": 1, + "3087": 1, + "3116": 1, + "3120": 1, + "3122": 1, + "3130": 1, + "3149": 1, + "3150": 1, + "3153": 1, + "3155": 1, + "3172": 1, + "3173": 1, + "3174": 1, + "3180": 1, + "3191": 1, + "3193": 1, + "3194": 1, + "3196": 1, + "3200": 1, + "3205": 1, + "3216": 1, + "3223": 1, + "3225": 2, + "3258": 1, + "3260": 1, + "3261": 1, + "3263": 2, + "3272": 1, + "3273": 1, + "3278": 1, + "3279": 1, + "3285": 2, + "3287": 1, + "3310": 1, + "3314": 1, + "3322": 1, + "3323": 1, + "3324": 1, + "3340": 1, + "3344": 1, + "3346": 1, + "3366": 1 + }, + "started": "2025-09-11T20:09:43.197Z", + "trafficStats": { + "incomingCompressionRatio": 0.054481738132956876, + "incomingOctetsAppLevel": 32771348, + "incomingOctetsWebSocketLevel": 1785440, + "incomingOctetsWireLevel": 1793440, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0044806882337126985, + "outgoingCompressionRatio": 0.054481738132956876, + "outgoingOctetsAppLevel": 32771348, + "outgoingOctetsWebSocketLevel": 1785440, + "outgoingOctetsWireLevel": 1789440, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0022403441168563493, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "845": 1, + "849": 4, + "850": 1, + "851": 5, + "852": 2, + "853": 1, + "854": 2, + "855": 1, + "856": 1, + "857": 2, + "859": 1, + "863": 1, + "872": 1, + "876": 1, + "904": 1, + "907": 1, + "918": 1, + "928": 1, + "947": 1, + "963": 1, + "971": 1, + "977": 1, + "988": 1, + "1000": 1, + "1017": 1, + "1021": 1, + "1033": 1, + "1038": 1, + "1040": 1, + "1044": 1, + "1047": 1, + "1052": 1, + "1059": 1, + "1060": 2, + "1062": 1, + "1064": 1, + "1065": 2, + "1066": 2, + "1068": 5, + "1069": 1, + "1070": 1, + "1072": 1, + "1073": 1, + "1076": 2, + "1077": 2, + "1078": 2, + "1079": 3, + "1080": 2, + "1081": 2, + "1083": 1, + "1084": 2, + "1085": 2, + "1086": 1, + "1087": 3, + "1088": 2, + "1089": 3, + "1090": 3, + "1091": 1, + "1092": 2, + "1093": 1, + "1094": 1, + "1096": 1, + "1098": 1, + "1099": 1, + "1100": 3, + "1101": 1, + "1102": 1, + "1104": 3, + "1106": 1, + "1107": 1, + "1110": 1, + "1112": 1, + "1113": 2, + "1116": 2, + "1117": 1, + "1119": 4, + "1120": 3, + "1121": 2, + "1122": 1, + "1123": 2, + "1124": 3, + "1125": 1, + "1126": 1, + "1127": 1, + "1129": 2, + "1130": 1, + "1132": 2, + "1134": 1, + "1136": 1, + "1138": 2, + "1143": 1, + "1164": 1, + "1169": 1, + "1170": 1, + "1172": 1, + "1174": 1, + "1175": 1, + "1181": 1, + "1184": 1, + "1186": 1, + "1188": 2, + "1191": 2, + "1192": 1, + "1196": 1, + "1198": 1, + "1201": 1, + "1202": 1, + "1209": 1, + "1210": 1, + "1213": 1, + "1216": 1, + "1221": 1, + "1228": 1, + "1229": 1, + "1232": 1, + "1235": 1, + "1241": 1, + "1242": 3, + "1243": 2, + "1244": 2, + "1246": 1, + "1247": 3, + "1249": 2, + "1250": 1, + "1251": 1, + "1256": 2, + "1257": 1, + "1258": 2, + "1259": 1, + "1260": 1, + "1261": 1, + "1263": 1, + "1264": 3, + "1268": 1, + "1269": 1, + "1270": 1, + "1276": 1, + "1280": 1, + "1281": 1, + "1283": 3, + "1285": 3, + "1286": 5, + "1287": 4, + "1289": 1, + "1290": 1, + "1291": 1, + "1292": 4, + "1293": 2, + "1295": 1, + "1297": 2, + "1298": 2, + "1299": 2, + "1300": 1, + "1302": 3, + "1303": 3, + "1304": 4, + "1305": 2, + "1308": 5, + "1309": 5, + "1310": 2, + "1311": 5, + "1312": 2, + "1313": 6, + "1314": 2, + "1315": 2, + "1316": 5, + "1317": 6, + "1319": 2, + "1321": 1, + "1322": 2, + "1327": 1, + "1328": 1, + "1329": 1, + "1330": 1, + "1331": 2, + "1333": 1, + "1334": 2, + "1335": 1, + "1336": 1, + "1338": 2, + "1340": 4, + "1341": 1, + "1342": 1, + "1344": 1, + "1345": 2, + "1346": 2, + "1347": 1, + "1348": 1, + "1354": 1, + "1355": 1, + "1357": 2, + "1359": 2, + "1360": 1, + "1363": 1, + "1364": 4, + "1365": 1, + "1366": 1, + "1368": 2, + "1369": 1, + "1371": 1, + "1372": 1, + "1373": 1, + "1376": 2, + "1377": 1, + "1378": 3, + "1379": 1, + "1380": 3, + "1381": 2, + "1382": 3, + "1383": 2, + "1384": 2, + "1386": 1, + "1387": 1, + "1389": 1, + "1390": 3, + "1391": 4, + "1392": 2, + "1393": 4, + "1394": 3, + "1395": 2, + "1396": 2, + "1397": 3, + "1398": 8, + "1399": 5, + "1400": 2, + "1402": 1, + "1403": 6, + "1406": 2, + "1412": 2, + "1415": 1, + "1418": 1, + "1419": 1, + "1422": 1, + "1424": 1, + "1426": 1, + "1432": 1, + "1435": 2, + "1436": 1, + "1438": 1, + "1439": 1, + "1440": 1, + "1443": 1, + "1444": 1, + "1446": 2, + "1447": 1, + "1449": 1, + "1451": 2, + "1452": 1, + "1459": 1, + "1461": 1, + "1464": 2, + "1466": 2, + "1468": 1, + "1469": 1, + "1470": 1, + "1473": 1, + "1474": 1, + "1477": 1, + "1478": 2, + "1479": 1, + "1481": 1, + "1482": 2, + "1484": 1, + "1487": 1, + "1488": 2, + "1490": 1, + "1492": 1, + "1494": 1, + "1498": 2, + "1506": 1, + "1508": 1, + "1512": 1, + "1521": 1, + "1529": 1, + "1532": 1, + "1534": 2, + "1536": 1, + "1537": 1, + "1538": 1, + "1542": 2, + "1546": 2, + "1551": 1, + "1555": 1, + "1558": 1, + "1559": 1, + "1561": 1, + "1563": 1, + "1565": 2, + "1566": 1, + "1576": 1, + "1577": 1, + "1582": 1, + "1583": 2, + "1584": 1, + "1585": 2, + "1588": 2, + "1589": 1, + "1590": 1, + "1591": 1, + "1594": 1, + "1596": 1, + "1597": 1, + "1600": 2, + "1604": 2, + "1605": 2, + "1610": 1, + "1611": 1, + "1612": 1, + "1613": 1, + "1614": 1, + "1615": 3, + "1616": 1, + "1617": 1, + "1618": 1, + "1619": 2, + "1621": 2, + "1623": 1, + "1629": 2, + "1631": 1, + "1634": 1, + "1638": 1, + "1640": 1, + "1643": 1, + "1646": 2, + "1647": 2, + "1650": 5, + "1652": 2, + "1653": 2, + "1654": 1, + "1655": 1, + "1656": 1, + "1659": 2, + "1660": 2, + "1661": 2, + "1662": 3, + "1664": 2, + "1665": 1, + "1666": 1, + "1667": 1, + "1668": 2, + "1670": 1, + "1672": 1, + "1674": 1, + "1675": 3, + "1676": 2, + "1677": 3, + "1679": 1, + "1680": 2, + "1681": 1, + "1684": 1, + "1685": 2, + "1687": 2, + "1689": 2, + "1691": 2, + "1692": 1, + "1694": 1, + "1695": 1, + "1696": 2, + "1698": 1, + "1699": 1, + "1701": 1, + "1702": 1, + "1703": 4, + "1705": 2, + "1708": 2, + "1709": 3, + "1710": 2, + "1712": 5, + "1713": 1, + "1715": 1, + "1716": 1, + "1718": 2, + "1721": 1, + "1723": 1, + "1728": 2, + "1735": 1, + "1749": 1, + "1755": 1, + "1764": 1, + "1794": 1, + "1817": 1, + "1836": 1, + "1840": 1, + "1863": 1, + "1866": 1, + "1869": 1, + "1878": 1, + "1891": 2, + "1902": 1, + "1905": 1, + "1908": 1, + "1909": 1, + "1910": 2, + "1911": 2, + "1914": 2, + "1916": 1, + "1917": 2, + "1919": 1, + "1920": 1, + "1921": 1, + "1923": 1, + "1924": 2, + "1925": 2, + "1926": 3, + "1927": 2, + "1935": 1, + "1949": 1, + "1955": 1, + "1968": 1, + "1981": 1, + "1984": 1, + "1985": 1, + "1990": 1, + "1991": 1, + "1992": 1, + "2016": 1, + "2018": 1, + "2042": 1, + "2091": 1, + "2101": 1, + "2112": 1, + "2115": 1, + "2117": 2, + "2120": 1, + "2124": 1, + "2125": 1, + "2127": 1, + "2128": 2, + "2129": 1, + "2132": 2, + "2137": 1, + "2142": 2, + "2145": 2, + "2149": 2, + "2152": 2, + "2153": 1, + "2154": 2, + "2156": 1, + "2157": 1, + "2160": 1, + "2161": 1, + "2162": 1, + "2166": 3, + "2169": 2, + "2171": 3, + "2172": 1, + "2173": 1, + "2174": 1, + "2176": 1, + "2178": 1, + "2179": 2, + "2181": 2, + "2185": 1, + "2186": 1, + "2188": 1, + "2190": 1, + "2191": 2, + "2201": 1, + "2202": 1, + "2203": 1, + "2204": 2, + "2205": 1, + "2206": 1, + "2207": 1, + "2211": 1, + "2212": 2, + "2213": 2, + "2214": 1, + "2219": 2, + "2221": 1, + "2222": 1, + "2223": 1, + "2226": 1, + "2228": 1, + "2230": 2, + "2231": 1, + "2235": 1, + "2239": 2, + "2244": 1, + "2251": 1, + "2253": 1, + "2263": 1, + "2264": 1, + "2266": 1, + "2267": 2, + "2270": 2, + "2275": 2, + "2276": 1, + "2278": 2, + "2280": 2, + "2282": 1, + "2284": 2, + "2286": 1, + "2287": 1, + "2289": 1, + "2290": 1, + "2291": 1, + "2292": 2, + "2293": 1, + "2295": 1, + "2298": 3, + "2299": 2, + "2300": 2, + "2302": 1, + "2303": 1, + "2304": 1, + "2305": 1, + "2306": 1, + "2308": 3, + "2310": 2, + "2313": 1, + "2326": 1, + "2328": 2, + "2330": 1, + "2337": 1, + "2338": 1, + "2342": 1, + "2343": 1, + "2346": 1, + "2348": 1, + "2349": 1, + "2350": 1, + "2354": 1, + "2355": 1, + "2359": 1, + "2369": 1, + "2376": 1, + "2392": 1, + "2406": 1, + "2411": 1, + "2431": 1, + "2434": 1, + "2443": 1, + "2447": 1, + "2453": 1, + "2456": 1, + "2467": 1, + "2469": 1, + "2475": 2, + "2476": 1, + "2478": 1, + "2526": 1, + "2528": 1, + "2544": 2, + "2545": 1, + "2551": 1, + "2565": 1, + "2575": 1, + "2579": 1, + "2583": 2, + "2584": 1, + "2586": 1, + "2590": 1, + "2592": 1, + "2601": 1, + "2613": 1, + "2621": 1, + "2623": 1, + "2624": 1, + "2636": 1, + "2640": 1, + "2647": 1, + "2658": 1, + "2676": 1, + "2677": 1, + "2696": 1, + "2700": 1, + "2716": 1, + "2732": 1, + "2733": 2, + "2736": 1, + "2742": 2, + "2752": 1, + "2753": 1, + "2758": 1, + "2759": 1, + "2762": 1, + "2763": 1, + "2773": 2, + "2781": 1, + "2783": 1, + "2784": 1, + "2785": 1, + "2786": 1, + "2788": 3, + "2790": 3, + "2791": 2, + "2792": 1, + "2795": 1, + "2796": 1, + "2814": 1, + "2857": 1, + "2872": 1, + "2935": 1, + "2936": 1, + "2938": 1, + "2939": 1, + "2942": 1, + "2943": 1, + "2946": 1, + "2948": 1, + "2949": 1, + "2950": 1, + "2951": 2, + "2953": 1, + "2954": 3, + "2955": 2, + "2959": 1, + "2961": 2, + "2963": 1, + "2964": 1, + "2965": 1, + "2975": 2, + "2979": 1, + "2984": 1, + "2990": 1, + "2992": 1, + "2999": 2, + "3004": 1, + "3011": 1, + "3013": 1, + "3015": 1, + "3016": 2, + "3017": 1, + "3019": 1, + "3021": 1, + "3022": 1, + "3024": 1, + "3030": 1, + "3033": 1, + "3037": 2, + "3038": 1, + "3041": 1, + "3043": 1, + "3046": 1, + "3057": 1, + "3058": 1, + "3059": 1, + "3062": 1, + "3063": 1, + "3065": 1, + "3068": 1, + "3069": 1, + "3073": 1, + "3083": 1, + "3112": 1, + "3116": 1, + "3118": 1, + "3126": 1, + "3145": 1, + "3146": 1, + "3149": 1, + "3151": 1, + "3168": 1, + "3169": 1, + "3170": 1, + "3176": 1, + "3187": 1, + "3189": 1, + "3190": 1, + "3192": 1, + "3196": 1, + "3201": 1, + "3212": 1, + "3219": 1, + "3221": 2, + "3254": 1, + "3256": 1, + "3257": 1, + "3259": 2, + "3268": 1, + "3269": 1, + "3274": 1, + "3275": 1, + "3281": 2, + "3283": 1, + "3306": 1, + "3310": 1, + "3318": 1, + "3319": 1, + "3320": 1, + "3336": 1, + "3340": 1, + "3342": 1, + "3362": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333633266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820ca5f3320f4d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0ca5f332" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_4_9.html b/autobahn/client/tungstenite_case_12_4_9.html new file mode 100644 index 0000000..72acd3e --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_9.html @@ -0,0 +1,1470 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.4.9 : Pass - 2114 ms @ 2025-09-11T20:09:44.424Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=364&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: sSztHZsnw3uYRROtrjxCmA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: j6GrBTqz5W9NlBG8LOiZliRwxEY=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
257612576
258025160
259112591
259212592
259512595
259612596
2598410392
259925198
260112601
260212602
260337809
260425208
260537815
260612606
2608410432
260925218
261037830
261112611
261237836
2613410452
261512615
261612616
2617513085
261812618
261937857
262037860
262125242
262312623
262412624
2625410500
262612626
262712627
2629615774
263025260
263112631
2632513160
2634513170
2636410544
263825276
263912639
264125282
264225284
264337929
264512645
264837944
264925298
265012650
265125302
265712657
265812658
266912669
2677410708
267812678
268325366
268512685
268625372
268712687
269025380
269212692
2696410784
270012700
270512705
270612706
270925418
271012710
271212712
271312713
271412714
271512715
272025440
272312723
272412724
272712727
272812728
272912729
273025460
273138193
273812738
273912739
274125482
2743410972
274512745
274625492
274712747
274812748
274925498
275012750
275325506
275425508
275825516
276012760
276112761
276212762
276338289
276438292
276512765
276738301
2768616608
2769411076
277025540
277125542
277225544
2773411092
277438322
277512775
277625552
2777822216
277812778
278112781
278338349
278412784
278538355
278612786
278725574
278812788
278925578
279025580
279625592
279812798
279912799
280038400
280138403
2802719614
280312803
2807411228
280912809
281038430
281112811
281212812
281312813
281512815
281725634
281838454
282012820
282125642
282325646
282412824
2826411304
282738481
282812828
282912829
283025660
283112831
2832411328
283312833
283512835
283612836
283812838
284025680
284138523
285012850
285112851
2855411420
286325726
286412864
286625732
286912869
287425748
287512875
287712877
287812878
289112891
289525790
289812898
290525810
291012910
291138733
291438742
291625832
292712927
292912929
293038790
296012960
296112961
296412964
297025940
297125942
297338919
297412974
297612976
298512985
298612986
298725974
298825976
298912989
299412994
299725994
300013000
300413004
301013010
301926038
303013030
303413034
303513035
304013040
304313043
307213072
307513075
308113081
309013090
311626232
314213142
314413144
315726314
316226324
316313163
318426368
318813188
318913189
319213192
319426388
319626392
319939597
320213202
320626412
3208412832
320913209
321013210
321113211
321213212
321626432
321913219
322113221
322413224
322513225
322613226
322926458
323413234
323613236
323713237
323813238
324026480
324226484
324626492
325413254
326226524
326813268
327013270
327326546
327826556
330926618
331313313
331413314
331613316
331813318
332226644
332313323
332413324
334913349
335726714
337913379
3381310143
339626792
340113401
3402310206
340513405
340613406
341226824
341613416
3419517095
342013420
342113421
342313423
342426848
343913439
344013440
344113441
344413444
344526890
347613476
347913479
348413484
348813488
349313493
349513495
349626992
349813498
350913509
351013510
351213512
351313513
351413514
351613516
352113521
356013560
356213562
356613566
356713567
358427168
362013620
363313633
363413634
363713637
363827276
364127282
365413654
365827316
365913659
366213662
366513665
366613666
366913669
369827396
370027400
370527410
3706414824
370727414
371313713
371527430
371813718
3725311175
372613726
372727454
372813728
372913729
373013730
373227464
373527470
373613736
373727474
374013740
374227484
374413744
374513745
374813748
375027500
375113751
377513775
377913779
378727574
378813788
378913789
379027580
379427588
379527590
379627592
3797311391
380027600
380213802
380513805
381513815
381713817
382713827
384813848
385313853
387713877
388113881
390513905
390713907
391927838
392813928
393113931
394313943
397413974
397913979
398427968
398513985
398713987
398927978
399213992
399313993
399413994
399513995
399713997
399813998
400328006
401614016
401914019
402814028
403214032
4033520165
403414034
403514035
403628072
403814038
404914049
405214052
406714067
407614076
410714107
411114111
412114121
412714127
414914149
415214152
415314153
415414154
416214162
416528330
418128362
423914239
424114241
425314253
425614256
427128542
428128562
428428568
428814288
429414294
4295312885
429614296
429814298
4299312897
430028600
430114301
430414304
430614306
430714307
430914309
431014310
431214312
431314313
431414314
431514315
432314323
432414324
432628652
432728654
432814328
433414334
433728674
434414344
4345313035
434628692
434714347
435014350
435128702
4352313056
435514355
435628712
435728714
435814358
436214362
436314363
436428728
436514365
436728734
437328746
437428748
4376313128
4377626262
4378313134
437914379
438014380
438128762
438228764
4384521920
438528770
4386313158
438728774
438814388
438914389
439028780
4391626346
4392521960
439314393
439414394
439514395
439628792
439728794
439814398
439914399
440028800
440114401
4402313206
440314403
440428808
440528810
440614406
440728814
440828816
440928818
441014410
441114411
441428828
4415417660
4416626496
44171044170
4419313257
442014420
442314423
442428848
442528850
442614426
4430313290
4431313293
443228864
4434522170
4435522175
443614436
443714437
443814438
444114441
444214442
444328886
4444313332
4445417780
444628892
4447522235
445128902
4453313359
445714457
446028920
446228924
446328926
446728934
446828936
447128942
447214472
447514475
4476417904
448014480
448514485
448714487
448828976
449014490
449314493
449614496
449814498
450014500
450429008
450929018
451229024
4515313545
451629032
451714517
451814518
451914519
452114521
452929058
4531313593
453214532
453729074
453829076
453929078
454129082
454229084
454729094
454829096
456114561
456814568
457514575
457729154
457914579
4588313764
459114591
4625418500
462814628
462914629
463214632
463714637
464714647
464814648
464914649
465614656
465814658
465914659
466329326
466729334
467414674
467814678
467914679
468014680
468314683
468429368
468714687
469314693
469429388
469614696
469729394
469829396
469914699
470014700
470414704
470529410
4706314118
470914709
471014710
472014720
472414724
472629452
472714727
4728837824
4729523645
473414734
473514735
Total10023597889
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
257212572
257625152
258712587
258812588
259112591
259212592
2594410376
259525190
259712597
259812598
259937797
260025200
260137803
260212602
2604410416
260525210
260637818
260712607
260837824
2609410436
261112611
261212612
2613513065
261412614
261537845
261637848
261725234
261912619
262012620
2621410484
262212622
262312623
2625615750
262625252
262712627
2628513140
2630513150
2632410528
263425268
263512635
263725274
263825276
263937917
264112641
264437932
264525290
264612646
264725294
265312653
265412654
266512665
2673410692
267412674
267925358
268112681
268225364
268312683
268625372
268812688
2692410768
269612696
270112701
270212702
270525410
270612706
270812708
270912709
271012710
271112711
271625432
271912719
272012720
272312723
272412724
272512725
272625452
272738181
273412734
273512735
273725474
2739410956
274112741
274225484
274312743
274412744
274525490
274612746
274925498
275025500
275425508
275612756
275712757
275812758
275938277
276038280
276112761
276338289
2764616584
2765411060
276625532
276725534
276825536
2769411076
277038310
277112771
277225544
2773822184
277412774
277712777
277938337
278012780
278138343
278212782
278325566
278412784
278525570
278625572
279225584
279412794
279512795
279638388
279738391
2798719586
279912799
2803411212
280512805
280638418
280712807
280812808
280912809
281112811
281325626
281438442
281612816
281725634
281925638
282012820
2822411288
282338469
282412824
282512825
282625652
282712827
2828411312
282912829
283112831
283212832
283412834
283625672
283738511
284612846
284712847
2851411404
285925718
286012860
286225724
286512865
287025740
287112871
287312873
287412874
288712887
289125782
289412894
290125802
290612906
290738721
291038730
291225824
292312923
292512925
292638778
295612956
295712957
296012960
296625932
296725934
296938907
297012970
297212972
298112981
298212982
298325966
298425968
298512985
299012990
299325986
299612996
300013000
300613006
301526030
302613026
303013030
303113031
303613036
303913039
306813068
307113071
307713077
308613086
311226224
313813138
314013140
315326306
315826316
315913159
318026360
318413184
318513185
318813188
319026380
319226384
319539585
319813198
320226404
3204412816
320513205
320613206
320713207
320813208
321226424
321513215
321713217
322013220
322113221
322213222
322526450
323013230
323213232
323313233
323413234
323626472
323826476
324226484
325013250
325826516
326413264
326613266
326926538
327426548
330526610
330913309
331013310
331213312
331413314
331826636
331913319
332013320
334513345
335326706
337513375
3377310131
339226784
339713397
3398310194
340113401
340213402
340826816
341213412
3415517075
341613416
341713417
341913419
342026840
343513435
343613436
343713437
344013440
344126882
347213472
347513475
348013480
348413484
348913489
349113491
349226984
349413494
350513505
350613506
350813508
350913509
351013510
351213512
351713517
355613556
355813558
356213562
356313563
358027160
361613616
362913629
363013630
363313633
363427268
363727274
365013650
365427308
365513655
365813658
366113661
366213662
366513665
369427388
369627392
370127402
3702414808
370327406
370913709
371127422
371413714
3721311163
372213722
372327446
372413724
372513725
372613726
372827456
373127462
373213732
373327466
373613736
373827476
374013740
374113741
374413744
374627492
374713747
377113771
377513775
378327566
378413784
378513785
378627572
379027580
379127582
379227584
3793311379
379627592
379813798
380113801
381113811
381313813
382313823
384413844
384913849
387313873
387713877
390113901
390313903
391527830
392413924
392713927
393913939
397013970
397513975
398027960
398113981
398313983
398527970
398813988
398913989
399013990
399113991
399313993
399413994
399927998
401214012
401514015
402414024
402814028
4029520145
403014030
403114031
403228064
403414034
404514045
404814048
406314063
407214072
410314103
410714107
411714117
412314123
414514145
414814148
414914149
415014150
415814158
416128322
417728354
423514235
423714237
424914249
425214252
426728534
427728554
428028560
428414284
429014290
4291312873
429214292
429414294
4295312885
429628592
429714297
430014300
430214302
430314303
430514305
430614306
430814308
430914309
431014310
431114311
431914319
432014320
432228644
432328646
432414324
433014330
433328666
434014340
4341313023
434228684
434314343
434614346
434728694
4348313044
435114351
435228704
435328706
435414354
435814358
435914359
436028720
436114361
436328726
436928738
437028740
4372313116
4373626238
4374313122
437514375
437614376
437728754
437828756
4380521900
438128762
4382313146
438328766
438414384
438514385
438628772
4387626322
4388521940
438914389
439014390
439114391
439228784
439328786
439414394
439514395
439628792
439714397
4398313194
439914399
440028800
440128802
440214402
440328806
440428808
440528810
440614406
440714407
441028820
4411417644
4412626472
44131044130
4415313245
441614416
441914419
442028840
442128842
442214422
4426313278
4427313281
442828856
4430522150
4431522155
443214432
443314433
443414434
443714437
443814438
443928878
4440313320
4441417764
444228884
4443522215
444728894
4449313347
445314453
445628912
445828916
445928918
446328926
446428928
446728934
446814468
447114471
4472417888
447614476
448114481
448314483
448428968
448614486
448914489
449214492
449414494
449614496
450029000
450529010
450829016
4511313533
451229024
451314513
451414514
451514515
451714517
452529050
4527313581
452814528
453329066
453429068
453529070
453729074
453829076
454329086
454429088
455714557
456414564
457114571
457329146
457514575
4584313752
458714587
4621418484
462414624
462514625
462814628
463314633
464314643
464414644
464514645
465214652
465414654
465514655
465929318
466329326
467014670
467414674
467514675
467614676
467914679
468029360
468314683
468914689
469029380
469214692
469329386
469429388
469514695
469614696
470014700
470129402
4702314106
470514705
470614706
471614716
472014720
472229444
472314723
4724837792
4725523625
473014730
473114731
Total10023593880
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333634266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882de75ee83dd9d
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6465373565653833
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_4_9.json b/autobahn/client/tungstenite_case_12_4_9.json new file mode 100644 index 0000000..fa65a61 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_4_9.json @@ -0,0 +1,1317 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 364, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2114, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=364&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: sSztHZsnw3uYRROtrjxCmA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: j6GrBTqz5W9NlBG8LOiZliRwxEY=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.4.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2576": 1, + "2580": 2, + "2591": 1, + "2592": 1, + "2595": 1, + "2596": 1, + "2598": 4, + "2599": 2, + "2601": 1, + "2602": 1, + "2603": 3, + "2604": 2, + "2605": 3, + "2606": 1, + "2608": 4, + "2609": 2, + "2610": 3, + "2611": 1, + "2612": 3, + "2613": 4, + "2615": 1, + "2616": 1, + "2617": 5, + "2618": 1, + "2619": 3, + "2620": 3, + "2621": 2, + "2623": 1, + "2624": 1, + "2625": 4, + "2626": 1, + "2627": 1, + "2629": 6, + "2630": 2, + "2631": 1, + "2632": 5, + "2634": 5, + "2636": 4, + "2638": 2, + "2639": 1, + "2641": 2, + "2642": 2, + "2643": 3, + "2645": 1, + "2648": 3, + "2649": 2, + "2650": 1, + "2651": 2, + "2657": 1, + "2658": 1, + "2669": 1, + "2677": 4, + "2678": 1, + "2683": 2, + "2685": 1, + "2686": 2, + "2687": 1, + "2690": 2, + "2692": 1, + "2696": 4, + "2700": 1, + "2705": 1, + "2706": 1, + "2709": 2, + "2710": 1, + "2712": 1, + "2713": 1, + "2714": 1, + "2715": 1, + "2720": 2, + "2723": 1, + "2724": 1, + "2727": 1, + "2728": 1, + "2729": 1, + "2730": 2, + "2731": 3, + "2738": 1, + "2739": 1, + "2741": 2, + "2743": 4, + "2745": 1, + "2746": 2, + "2747": 1, + "2748": 1, + "2749": 2, + "2750": 1, + "2753": 2, + "2754": 2, + "2758": 2, + "2760": 1, + "2761": 1, + "2762": 1, + "2763": 3, + "2764": 3, + "2765": 1, + "2767": 3, + "2768": 6, + "2769": 4, + "2770": 2, + "2771": 2, + "2772": 2, + "2773": 4, + "2774": 3, + "2775": 1, + "2776": 2, + "2777": 8, + "2778": 1, + "2781": 1, + "2783": 3, + "2784": 1, + "2785": 3, + "2786": 1, + "2787": 2, + "2788": 1, + "2789": 2, + "2790": 2, + "2796": 2, + "2798": 1, + "2799": 1, + "2800": 3, + "2801": 3, + "2802": 7, + "2803": 1, + "2807": 4, + "2809": 1, + "2810": 3, + "2811": 1, + "2812": 1, + "2813": 1, + "2815": 1, + "2817": 2, + "2818": 3, + "2820": 1, + "2821": 2, + "2823": 2, + "2824": 1, + "2826": 4, + "2827": 3, + "2828": 1, + "2829": 1, + "2830": 2, + "2831": 1, + "2832": 4, + "2833": 1, + "2835": 1, + "2836": 1, + "2838": 1, + "2840": 2, + "2841": 3, + "2850": 1, + "2851": 1, + "2855": 4, + "2863": 2, + "2864": 1, + "2866": 2, + "2869": 1, + "2874": 2, + "2875": 1, + "2877": 1, + "2878": 1, + "2891": 1, + "2895": 2, + "2898": 1, + "2905": 2, + "2910": 1, + "2911": 3, + "2914": 3, + "2916": 2, + "2927": 1, + "2929": 1, + "2930": 3, + "2960": 1, + "2961": 1, + "2964": 1, + "2970": 2, + "2971": 2, + "2973": 3, + "2974": 1, + "2976": 1, + "2985": 1, + "2986": 1, + "2987": 2, + "2988": 2, + "2989": 1, + "2994": 1, + "2997": 2, + "3000": 1, + "3004": 1, + "3010": 1, + "3019": 2, + "3030": 1, + "3034": 1, + "3035": 1, + "3040": 1, + "3043": 1, + "3072": 1, + "3075": 1, + "3081": 1, + "3090": 1, + "3116": 2, + "3142": 1, + "3144": 1, + "3157": 2, + "3162": 2, + "3163": 1, + "3184": 2, + "3188": 1, + "3189": 1, + "3192": 1, + "3194": 2, + "3196": 2, + "3199": 3, + "3202": 1, + "3206": 2, + "3208": 4, + "3209": 1, + "3210": 1, + "3211": 1, + "3212": 1, + "3216": 2, + "3219": 1, + "3221": 1, + "3224": 1, + "3225": 1, + "3226": 1, + "3229": 2, + "3234": 1, + "3236": 1, + "3237": 1, + "3238": 1, + "3240": 2, + "3242": 2, + "3246": 2, + "3254": 1, + "3262": 2, + "3268": 1, + "3270": 1, + "3273": 2, + "3278": 2, + "3309": 2, + "3313": 1, + "3314": 1, + "3316": 1, + "3318": 1, + "3322": 2, + "3323": 1, + "3324": 1, + "3349": 1, + "3357": 2, + "3379": 1, + "3381": 3, + "3396": 2, + "3401": 1, + "3402": 3, + "3405": 1, + "3406": 1, + "3412": 2, + "3416": 1, + "3419": 5, + "3420": 1, + "3421": 1, + "3423": 1, + "3424": 2, + "3439": 1, + "3440": 1, + "3441": 1, + "3444": 1, + "3445": 2, + "3476": 1, + "3479": 1, + "3484": 1, + "3488": 1, + "3493": 1, + "3495": 1, + "3496": 2, + "3498": 1, + "3509": 1, + "3510": 1, + "3512": 1, + "3513": 1, + "3514": 1, + "3516": 1, + "3521": 1, + "3560": 1, + "3562": 1, + "3566": 1, + "3567": 1, + "3584": 2, + "3620": 1, + "3633": 1, + "3634": 1, + "3637": 1, + "3638": 2, + "3641": 2, + "3654": 1, + "3658": 2, + "3659": 1, + "3662": 1, + "3665": 1, + "3666": 1, + "3669": 1, + "3698": 2, + "3700": 2, + "3705": 2, + "3706": 4, + "3707": 2, + "3713": 1, + "3715": 2, + "3718": 1, + "3725": 3, + "3726": 1, + "3727": 2, + "3728": 1, + "3729": 1, + "3730": 1, + "3732": 2, + "3735": 2, + "3736": 1, + "3737": 2, + "3740": 1, + "3742": 2, + "3744": 1, + "3745": 1, + "3748": 1, + "3750": 2, + "3751": 1, + "3775": 1, + "3779": 1, + "3787": 2, + "3788": 1, + "3789": 1, + "3790": 2, + "3794": 2, + "3795": 2, + "3796": 2, + "3797": 3, + "3800": 2, + "3802": 1, + "3805": 1, + "3815": 1, + "3817": 1, + "3827": 1, + "3848": 1, + "3853": 1, + "3877": 1, + "3881": 1, + "3905": 1, + "3907": 1, + "3919": 2, + "3928": 1, + "3931": 1, + "3943": 1, + "3974": 1, + "3979": 1, + "3984": 2, + "3985": 1, + "3987": 1, + "3989": 2, + "3992": 1, + "3993": 1, + "3994": 1, + "3995": 1, + "3997": 1, + "3998": 1, + "4003": 2, + "4016": 1, + "4019": 1, + "4028": 1, + "4032": 1, + "4033": 5, + "4034": 1, + "4035": 1, + "4036": 2, + "4038": 1, + "4049": 1, + "4052": 1, + "4067": 1, + "4076": 1, + "4107": 1, + "4111": 1, + "4121": 1, + "4127": 1, + "4149": 1, + "4152": 1, + "4153": 1, + "4154": 1, + "4162": 1, + "4165": 2, + "4181": 2, + "4239": 1, + "4241": 1, + "4253": 1, + "4256": 1, + "4271": 2, + "4281": 2, + "4284": 2, + "4288": 1, + "4294": 1, + "4295": 3, + "4296": 1, + "4298": 1, + "4299": 3, + "4300": 2, + "4301": 1, + "4304": 1, + "4306": 1, + "4307": 1, + "4309": 1, + "4310": 1, + "4312": 1, + "4313": 1, + "4314": 1, + "4315": 1, + "4323": 1, + "4324": 1, + "4326": 2, + "4327": 2, + "4328": 1, + "4334": 1, + "4337": 2, + "4344": 1, + "4345": 3, + "4346": 2, + "4347": 1, + "4350": 1, + "4351": 2, + "4352": 3, + "4355": 1, + "4356": 2, + "4357": 2, + "4358": 1, + "4362": 1, + "4363": 1, + "4364": 2, + "4365": 1, + "4367": 2, + "4373": 2, + "4374": 2, + "4376": 3, + "4377": 6, + "4378": 3, + "4379": 1, + "4380": 1, + "4381": 2, + "4382": 2, + "4384": 5, + "4385": 2, + "4386": 3, + "4387": 2, + "4388": 1, + "4389": 1, + "4390": 2, + "4391": 6, + "4392": 5, + "4393": 1, + "4394": 1, + "4395": 1, + "4396": 2, + "4397": 2, + "4398": 1, + "4399": 1, + "4400": 2, + "4401": 1, + "4402": 3, + "4403": 1, + "4404": 2, + "4405": 2, + "4406": 1, + "4407": 2, + "4408": 2, + "4409": 2, + "4410": 1, + "4411": 1, + "4414": 2, + "4415": 4, + "4416": 6, + "4417": 10, + "4419": 3, + "4420": 1, + "4423": 1, + "4424": 2, + "4425": 2, + "4426": 1, + "4430": 3, + "4431": 3, + "4432": 2, + "4434": 5, + "4435": 5, + "4436": 1, + "4437": 1, + "4438": 1, + "4441": 1, + "4442": 1, + "4443": 2, + "4444": 3, + "4445": 4, + "4446": 2, + "4447": 5, + "4451": 2, + "4453": 3, + "4457": 1, + "4460": 2, + "4462": 2, + "4463": 2, + "4467": 2, + "4468": 2, + "4471": 2, + "4472": 1, + "4475": 1, + "4476": 4, + "4480": 1, + "4485": 1, + "4487": 1, + "4488": 2, + "4490": 1, + "4493": 1, + "4496": 1, + "4498": 1, + "4500": 1, + "4504": 2, + "4509": 2, + "4512": 2, + "4515": 3, + "4516": 2, + "4517": 1, + "4518": 1, + "4519": 1, + "4521": 1, + "4529": 2, + "4531": 3, + "4532": 1, + "4537": 2, + "4538": 2, + "4539": 2, + "4541": 2, + "4542": 2, + "4547": 2, + "4548": 2, + "4561": 1, + "4568": 1, + "4575": 1, + "4577": 2, + "4579": 1, + "4588": 3, + "4591": 1, + "4625": 4, + "4628": 1, + "4629": 1, + "4632": 1, + "4637": 1, + "4647": 1, + "4648": 1, + "4649": 1, + "4656": 1, + "4658": 1, + "4659": 1, + "4663": 2, + "4667": 2, + "4674": 1, + "4678": 1, + "4679": 1, + "4680": 1, + "4683": 1, + "4684": 2, + "4687": 1, + "4693": 1, + "4694": 2, + "4696": 1, + "4697": 2, + "4698": 2, + "4699": 1, + "4700": 1, + "4704": 1, + "4705": 2, + "4706": 3, + "4709": 1, + "4710": 1, + "4720": 1, + "4724": 1, + "4726": 2, + "4727": 1, + "4728": 8, + "4729": 5, + "4734": 1, + "4735": 1 + }, + "started": "2025-09-11T20:09:44.424Z", + "trafficStats": { + "incomingCompressionRatio": 0.054767697094305956, + "incomingOctetsAppLevel": 65542723, + "incomingOctetsWebSocketLevel": 3589624, + "incomingOctetsWireLevel": 3597624, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0022286456743101785, + "outgoingCompressionRatio": 0.054767697094305956, + "outgoingOctetsAppLevel": 65542723, + "outgoingOctetsWebSocketLevel": 3589624, + "outgoingOctetsWireLevel": 3593624, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0011143228371550892, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "2572": 1, + "2576": 2, + "2587": 1, + "2588": 1, + "2591": 1, + "2592": 1, + "2594": 4, + "2595": 2, + "2597": 1, + "2598": 1, + "2599": 3, + "2600": 2, + "2601": 3, + "2602": 1, + "2604": 4, + "2605": 2, + "2606": 3, + "2607": 1, + "2608": 3, + "2609": 4, + "2611": 1, + "2612": 1, + "2613": 5, + "2614": 1, + "2615": 3, + "2616": 3, + "2617": 2, + "2619": 1, + "2620": 1, + "2621": 4, + "2622": 1, + "2623": 1, + "2625": 6, + "2626": 2, + "2627": 1, + "2628": 5, + "2630": 5, + "2632": 4, + "2634": 2, + "2635": 1, + "2637": 2, + "2638": 2, + "2639": 3, + "2641": 1, + "2644": 3, + "2645": 2, + "2646": 1, + "2647": 2, + "2653": 1, + "2654": 1, + "2665": 1, + "2673": 4, + "2674": 1, + "2679": 2, + "2681": 1, + "2682": 2, + "2683": 1, + "2686": 2, + "2688": 1, + "2692": 4, + "2696": 1, + "2701": 1, + "2702": 1, + "2705": 2, + "2706": 1, + "2708": 1, + "2709": 1, + "2710": 1, + "2711": 1, + "2716": 2, + "2719": 1, + "2720": 1, + "2723": 1, + "2724": 1, + "2725": 1, + "2726": 2, + "2727": 3, + "2734": 1, + "2735": 1, + "2737": 2, + "2739": 4, + "2741": 1, + "2742": 2, + "2743": 1, + "2744": 1, + "2745": 2, + "2746": 1, + "2749": 2, + "2750": 2, + "2754": 2, + "2756": 1, + "2757": 1, + "2758": 1, + "2759": 3, + "2760": 3, + "2761": 1, + "2763": 3, + "2764": 6, + "2765": 4, + "2766": 2, + "2767": 2, + "2768": 2, + "2769": 4, + "2770": 3, + "2771": 1, + "2772": 2, + "2773": 8, + "2774": 1, + "2777": 1, + "2779": 3, + "2780": 1, + "2781": 3, + "2782": 1, + "2783": 2, + "2784": 1, + "2785": 2, + "2786": 2, + "2792": 2, + "2794": 1, + "2795": 1, + "2796": 3, + "2797": 3, + "2798": 7, + "2799": 1, + "2803": 4, + "2805": 1, + "2806": 3, + "2807": 1, + "2808": 1, + "2809": 1, + "2811": 1, + "2813": 2, + "2814": 3, + "2816": 1, + "2817": 2, + "2819": 2, + "2820": 1, + "2822": 4, + "2823": 3, + "2824": 1, + "2825": 1, + "2826": 2, + "2827": 1, + "2828": 4, + "2829": 1, + "2831": 1, + "2832": 1, + "2834": 1, + "2836": 2, + "2837": 3, + "2846": 1, + "2847": 1, + "2851": 4, + "2859": 2, + "2860": 1, + "2862": 2, + "2865": 1, + "2870": 2, + "2871": 1, + "2873": 1, + "2874": 1, + "2887": 1, + "2891": 2, + "2894": 1, + "2901": 2, + "2906": 1, + "2907": 3, + "2910": 3, + "2912": 2, + "2923": 1, + "2925": 1, + "2926": 3, + "2956": 1, + "2957": 1, + "2960": 1, + "2966": 2, + "2967": 2, + "2969": 3, + "2970": 1, + "2972": 1, + "2981": 1, + "2982": 1, + "2983": 2, + "2984": 2, + "2985": 1, + "2990": 1, + "2993": 2, + "2996": 1, + "3000": 1, + "3006": 1, + "3015": 2, + "3026": 1, + "3030": 1, + "3031": 1, + "3036": 1, + "3039": 1, + "3068": 1, + "3071": 1, + "3077": 1, + "3086": 1, + "3112": 2, + "3138": 1, + "3140": 1, + "3153": 2, + "3158": 2, + "3159": 1, + "3180": 2, + "3184": 1, + "3185": 1, + "3188": 1, + "3190": 2, + "3192": 2, + "3195": 3, + "3198": 1, + "3202": 2, + "3204": 4, + "3205": 1, + "3206": 1, + "3207": 1, + "3208": 1, + "3212": 2, + "3215": 1, + "3217": 1, + "3220": 1, + "3221": 1, + "3222": 1, + "3225": 2, + "3230": 1, + "3232": 1, + "3233": 1, + "3234": 1, + "3236": 2, + "3238": 2, + "3242": 2, + "3250": 1, + "3258": 2, + "3264": 1, + "3266": 1, + "3269": 2, + "3274": 2, + "3305": 2, + "3309": 1, + "3310": 1, + "3312": 1, + "3314": 1, + "3318": 2, + "3319": 1, + "3320": 1, + "3345": 1, + "3353": 2, + "3375": 1, + "3377": 3, + "3392": 2, + "3397": 1, + "3398": 3, + "3401": 1, + "3402": 1, + "3408": 2, + "3412": 1, + "3415": 5, + "3416": 1, + "3417": 1, + "3419": 1, + "3420": 2, + "3435": 1, + "3436": 1, + "3437": 1, + "3440": 1, + "3441": 2, + "3472": 1, + "3475": 1, + "3480": 1, + "3484": 1, + "3489": 1, + "3491": 1, + "3492": 2, + "3494": 1, + "3505": 1, + "3506": 1, + "3508": 1, + "3509": 1, + "3510": 1, + "3512": 1, + "3517": 1, + "3556": 1, + "3558": 1, + "3562": 1, + "3563": 1, + "3580": 2, + "3616": 1, + "3629": 1, + "3630": 1, + "3633": 1, + "3634": 2, + "3637": 2, + "3650": 1, + "3654": 2, + "3655": 1, + "3658": 1, + "3661": 1, + "3662": 1, + "3665": 1, + "3694": 2, + "3696": 2, + "3701": 2, + "3702": 4, + "3703": 2, + "3709": 1, + "3711": 2, + "3714": 1, + "3721": 3, + "3722": 1, + "3723": 2, + "3724": 1, + "3725": 1, + "3726": 1, + "3728": 2, + "3731": 2, + "3732": 1, + "3733": 2, + "3736": 1, + "3738": 2, + "3740": 1, + "3741": 1, + "3744": 1, + "3746": 2, + "3747": 1, + "3771": 1, + "3775": 1, + "3783": 2, + "3784": 1, + "3785": 1, + "3786": 2, + "3790": 2, + "3791": 2, + "3792": 2, + "3793": 3, + "3796": 2, + "3798": 1, + "3801": 1, + "3811": 1, + "3813": 1, + "3823": 1, + "3844": 1, + "3849": 1, + "3873": 1, + "3877": 1, + "3901": 1, + "3903": 1, + "3915": 2, + "3924": 1, + "3927": 1, + "3939": 1, + "3970": 1, + "3975": 1, + "3980": 2, + "3981": 1, + "3983": 1, + "3985": 2, + "3988": 1, + "3989": 1, + "3990": 1, + "3991": 1, + "3993": 1, + "3994": 1, + "3999": 2, + "4012": 1, + "4015": 1, + "4024": 1, + "4028": 1, + "4029": 5, + "4030": 1, + "4031": 1, + "4032": 2, + "4034": 1, + "4045": 1, + "4048": 1, + "4063": 1, + "4072": 1, + "4103": 1, + "4107": 1, + "4117": 1, + "4123": 1, + "4145": 1, + "4148": 1, + "4149": 1, + "4150": 1, + "4158": 1, + "4161": 2, + "4177": 2, + "4235": 1, + "4237": 1, + "4249": 1, + "4252": 1, + "4267": 2, + "4277": 2, + "4280": 2, + "4284": 1, + "4290": 1, + "4291": 3, + "4292": 1, + "4294": 1, + "4295": 3, + "4296": 2, + "4297": 1, + "4300": 1, + "4302": 1, + "4303": 1, + "4305": 1, + "4306": 1, + "4308": 1, + "4309": 1, + "4310": 1, + "4311": 1, + "4319": 1, + "4320": 1, + "4322": 2, + "4323": 2, + "4324": 1, + "4330": 1, + "4333": 2, + "4340": 1, + "4341": 3, + "4342": 2, + "4343": 1, + "4346": 1, + "4347": 2, + "4348": 3, + "4351": 1, + "4352": 2, + "4353": 2, + "4354": 1, + "4358": 1, + "4359": 1, + "4360": 2, + "4361": 1, + "4363": 2, + "4369": 2, + "4370": 2, + "4372": 3, + "4373": 6, + "4374": 3, + "4375": 1, + "4376": 1, + "4377": 2, + "4378": 2, + "4380": 5, + "4381": 2, + "4382": 3, + "4383": 2, + "4384": 1, + "4385": 1, + "4386": 2, + "4387": 6, + "4388": 5, + "4389": 1, + "4390": 1, + "4391": 1, + "4392": 2, + "4393": 2, + "4394": 1, + "4395": 1, + "4396": 2, + "4397": 1, + "4398": 3, + "4399": 1, + "4400": 2, + "4401": 2, + "4402": 1, + "4403": 2, + "4404": 2, + "4405": 2, + "4406": 1, + "4407": 1, + "4410": 2, + "4411": 4, + "4412": 6, + "4413": 10, + "4415": 3, + "4416": 1, + "4419": 1, + "4420": 2, + "4421": 2, + "4422": 1, + "4426": 3, + "4427": 3, + "4428": 2, + "4430": 5, + "4431": 5, + "4432": 1, + "4433": 1, + "4434": 1, + "4437": 1, + "4438": 1, + "4439": 2, + "4440": 3, + "4441": 4, + "4442": 2, + "4443": 5, + "4447": 2, + "4449": 3, + "4453": 1, + "4456": 2, + "4458": 2, + "4459": 2, + "4463": 2, + "4464": 2, + "4467": 2, + "4468": 1, + "4471": 1, + "4472": 4, + "4476": 1, + "4481": 1, + "4483": 1, + "4484": 2, + "4486": 1, + "4489": 1, + "4492": 1, + "4494": 1, + "4496": 1, + "4500": 2, + "4505": 2, + "4508": 2, + "4511": 3, + "4512": 2, + "4513": 1, + "4514": 1, + "4515": 1, + "4517": 1, + "4525": 2, + "4527": 3, + "4528": 1, + "4533": 2, + "4534": 2, + "4535": 2, + "4537": 2, + "4538": 2, + "4543": 2, + "4544": 2, + "4557": 1, + "4564": 1, + "4571": 1, + "4573": 2, + "4575": 1, + "4584": 3, + "4587": 1, + "4621": 4, + "4624": 1, + "4625": 1, + "4628": 1, + "4633": 1, + "4643": 1, + "4644": 1, + "4645": 1, + "4652": 1, + "4654": 1, + "4655": 1, + "4659": 2, + "4663": 2, + "4670": 1, + "4674": 1, + "4675": 1, + "4676": 1, + "4679": 1, + "4680": 2, + "4683": 1, + "4689": 1, + "4690": 2, + "4692": 1, + "4693": 2, + "4694": 2, + "4695": 1, + "4696": 1, + "4700": 1, + "4701": 2, + "4702": 3, + "4705": 1, + "4706": 1, + "4716": 1, + "4720": 1, + "4722": 2, + "4723": 1, + "4724": 8, + "4725": 5, + "4730": 1, + "4731": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333634266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882de75ee83dd9d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "de75ee83" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_1.html b/autobahn/client/tungstenite_case_12_5_1.html new file mode 100644 index 0000000..21a3630 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_1.html @@ -0,0 +1,330 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.1 : Pass - 80 ms @ 2025-09-11T20:10:12.233Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=374&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: v428gchU9lWMuRQU9nLxIg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vX6q2MhYvFXMeggTomZ4nHvXbss=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1011110
1146506
12896
1318234
1420280
15690
16464
179153
18590
19595
205100
22366
23123
24461104
2580220050
2611286
2571257
Total100223612
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
61166
746322
8864
918162
1020200
11666
12448
139117
14570
15575
16580
18354
19119
2046920
2180216842
2211242
2521252
Total100219603
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333734266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882c97fb5c3ca97
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6339376662356333
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_1.json b/autobahn/client/tungstenite_case_12_5_1.json new file mode 100644 index 0000000..fe1c2f5 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 374, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 80, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=374&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: v428gchU9lWMuRQU9nLxIg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vX6q2MhYvFXMeggTomZ4nHvXbss=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 11, + "11": 46, + "12": 8, + "13": 18, + "14": 20, + "15": 6, + "16": 4, + "17": 9, + "18": 5, + "19": 5, + "20": 5, + "22": 3, + "23": 1, + "24": 46, + "25": 802, + "26": 11, + "257": 1 + }, + "started": "2025-09-11T20:10:12.233Z", + "trafficStats": { + "incomingCompressionRatio": 1.0841875, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 17347, + "incomingOctetsWireLevel": 23347, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.3458811321842393, + "outgoingCompressionRatio": 1.0841875, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 17347, + "outgoingOctetsWireLevel": 19347, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11529371072807978, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 11, + "7": 46, + "8": 8, + "9": 18, + "10": 20, + "11": 6, + "12": 4, + "13": 9, + "14": 5, + "15": 5, + "16": 5, + "18": 3, + "19": 1, + "20": 46, + "21": 802, + "22": 11, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333734266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c97fb5c3ca97" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c97fb5c3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_10.html b/autobahn/client/tungstenite_case_12_5_10.html new file mode 100644 index 0000000..4e7362c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_10.html @@ -0,0 +1,2068 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.10 : Pass - 9129 ms @ 2025-09-11T20:10:23.088Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=383&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: HqHqxZEpQyGYEW7m9Ay11A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NNXoxvBOxAgh5hfPFsdWEvQS2MU=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
51151
1431143
2381238
2571257
150011500
156911569
161311613
161911619
170611706
175811758
372313723
382613826
392213922
392813928
398013980
401314013
403014030
412314123
413014130
425814258
439314393
451114511
452714527
464614646
470214702
486514865
501915019
516915169
558015580
564915649
571015710
575215752
583215832
590715907
785817858
795017950
798617986
804018040
812118121
820318203
923519235
933719337
944919449
953119531
961019610
967219672
968019680
970719707
980219802
980419804
986119861
989619896
992819928
995019950
997719977
10067110067
10208110208
10258110258
10960110960
11040111040
11153111153
11255111255
11345111345
11454111454
13587113587
13659113659
13757113757
13778113778
13798113798
13832113832
14770114770
14874114874
14891114891
14993114993
15119115119
15124115124
15174115174
15175115175
15222115222
15253115253
15267115267
15286115286
15320115320
15329115329
15370230740
15444115444
15447115447
15470115470
15482115482
15497115497
15565115565
15583115583
15624115624
17579117579
17651117651
17704117704
17774117774
17833117833
18732118732
18799118799
18887118887
18922118922
19004119004
19095119095
19284119284
19299119299
19319119319
19337119337
19356119356
19368119368
19520119520
19532119532
19555119555
19564119564
19590239180
20226120226
20361120361
20496120496
20632120632
20741120741
20873120873
21203121203
21216121216
21219121219
21231121231
21235121235
21248121248
21258121258
21329121329
21332121332
21386121386
21464121464
21487121487
21515121515
21573121573
21620121620
21642121642
21648121648
21685121685
21857121857
21883121883
21889121889
21909243818
21965121965
22080122080
22089122089
22119122119
22136122136
22150122150
22171122171
22388244776
22403122403
22415122415
22420122420
22445122445
23445123445
23487123487
23586123586
23684123684
23824123824
23966123966
24102124102
25402125402
25539125539
25672125672
25806125806
25940125940
26072126072
28502128502
28647128647
28797128797
28932128932
29081129081
29223129223
29655129655
29682129682
29775129775
29900129900
29972129972
30000130000
30801130801
30936130936
31071131071
31202131202
31340131340
31476131476
31526131526
31551131551
31576131576
31598131598
31619131619
31632131632
32056132056
32133132133
32214132214
32302132302
32378132378
32450132450
33494133494
33633133633
33716133716
33834133834
33965133965
34106134106
36043136043
36049136049
36143136143
36183136183
36191136191
36273136273
36281136281
36289136289
36292136292
36307136307
36321136321
36378136378
36418136418
36472136472
36503136503
36532136532
36629136629
36752136752
37487137487
37534137534
37580137580
37642137642
37772137772
37840137840
39480139480
39577139577
39662279324
39695139695
39812139812
39997139997
40096140096
40198140198
40212140212
40225140225
40231140231
40232140232
40234140234
40258140258
40277140277
40368140368
40469140469
41365141365
41428141428
41570141570
41702141702
41837141837
41967141967
42480142480
42499284998
42563142563
42577142577
42578142578
42594142594
42598142598
42641142641
42686142686
42704142704
43440143440
43689143689
43767143767
43791143791
43854143854
43881143881
43917143917
43931143931
43970143970
43971143971
43996143996
44015144015
44045144045
44358144358
44420144420
44427144427
44469144469
44481144481
44493144493
44496144496
44570144570
44592144592
44612144612
44650144650
44687144687
44719144719
44731144731
44788144788
44856144856
44980144980
45101145101
45888145888
45907145907
45911291822
45914145914
45919145919
45926145926
45930145930
459313137793
45954145954
45992145992
46007146007
46051146051
46056146056
46103146103
46123146123
46193146193
46225146225
46259146259
46325146325
46348146348
46431146431
47598147598
47725147725
47800147800
47854147854
47883147883
47973147973
47983147983
48075148075
48099148099
48175148175
48197148197
48233148233
49018149018
49117149117
49214149214
49298149298
49399149399
49465149465
49542149542
49612149612
49620149620
49690149690
49742149742
49766149766
49807299614
49846299692
49881149881
49932149932
49989149989
50047150047
50175150175
50299150299
50420150420
50479150479
50549150549
50576150576
50684150684
50722150722
50741150741
50785150785
50790150790
50885150885
50893150893
50968150968
50986150986
51057151057
52729152729
52833152833
52838152838
52865152865
52900152900
52911152911
52949152949
52964152964
529852105970
52994152994
53012153012
53031153031
53033153033
53052153052
53081153081
53094153094
53127153127
53158153158
53163153163
53201153201
53271153271
53321153321
53414153414
54724154724
54776154776
54783154783
54787154787
54885154885
54966154966
54991154991
55068155068
55161155161
55263155263
55365155365
55469155469
55488155488
55610155610
55729155729
55853155853
55857155857
55873155873
55891155891
55949155949
55977155977
56005156005
56020156020
56102156102
56531156531
56579156579
56676156676
56702156702
56749156749
56838156838
57540157540
57629157629
57719157719
57816157816
57920157920
57942157942
58013158013
58747158747
58748158748
58754158754
58797158797
587992117598
58800158800
58853158853
58871158871
58956158956
58997158997
59076159076
59121159121
59191159191
592582118516
592613177783
59268159268
59269159269
593123177936
59314159314
59315159315
59324159324
59386159386
59418159418
59439159439
594452118890
594463178338
59447159447
59452159452
59453159453
59455159455
59457159457
59534159534
59552159552
59553159553
59556159556
595572119114
59564159564
59632159632
59635159635
59636159636
59638159638
59640159640
59641159641
59645159645
59646159646
59655159655
596602119320
596612119322
596632119326
59664159664
59665159665
59671159671
596772119354
59679159679
59680159680
596822119364
59683159683
59684159684
59691159691
59694159694
596962119392
59697159697
59702159702
597132119426
59716159716
59717159717
597212119442
59722159722
59738159738
597452119490
59746159746
597482119496
59754159754
59767159767
59768159768
59770159770
59771159771
59788159788
597972119594
59830159830
59837159837
598732119746
59876159876
598812119762
598832119766
598842119768
59888159888
598982119796
599022119804
599034239612
59907159907
59908159908
59910159910
59914159914
59916159916
59917159917
599202119840
59922159922
599332119866
59937159937
59940159940
59945159945
59954159954
59956159956
59957159957
59958159958
59960159960
59961159961
59994159994
59995159995
59997159997
600012120002
60002160002
60003160003
60004160004
60012160012
60013160013
60018160018
60024160024
60026160026
60029160029
60041160041
60043160043
60045160045
60047160047
60051160051
600523180156
600532120106
60058160058
60064160064
60108160108
60124160124
60135160135
60144160144
60146160146
60147160147
601532120306
60154160154
60156160156
601582120316
601592120318
60163160163
601752120350
60176160176
601792120358
60181160181
60184160184
60185160185
60186160186
60188160188
601912120382
601922120384
60193160193
60195160195
60196160196
60197160197
60200160200
60202160202
602042120408
60207160207
60209160209
602102120420
60211160211
60216160216
60221160221
60222160222
60223160223
60224160224
60225160225
602262120452
602272120454
602282120456
602312120462
602323180696
60233160233
60234160234
60289160289
60294160294
60308160308
60309160309
60311160311
60316160316
60320160320
60322160322
60325160325
604012120802
60406160406
60460160460
60464160464
60466160466
60467160467
60469160469
60474160474
60573160573
60574160574
60578160578
60579160579
60581160581
60587160587
607432121486
607473182241
60748160748
607762121552
60777160777
60778160778
60782160782
60784160784
60889160889
60940160940
60944160944
60945160945
60948160948
60949160949
60950160950
60951160951
609522121904
609532121906
609542121908
60956160956
60963160963
60964160964
60968160968
60973160973
60975160975
60976160976
609802121960
60981160981
61002161002
610112122022
61014161014
61015161015
61016161016
61019161019
61020161020
610302122060
61109161109
61152161152
611582122316
61159161159
61160161160
61161161161
61187161187
61226161226
61228161228
61231161231
61235161235
61239161239
61275161275
61281161281
61282161282
61297161297
613042122608
61305161305
61307161307
61311161311
61330161330
61354161354
61378161378
61387161387
61390161390
61392161392
61393161393
61397161397
61404161404
61424161424
61425161425
61481161481
614864245944
61489161489
614922122984
61530161530
61533161533
61536161536
615412123082
615432123086
61548161548
61550161550
61551161551
61555161555
61558161558
61567161567
61596161596
61612161612
61617161617
616202123240
616223184866
616233184869
61624161624
61625161625
61641161641
616452123290
61648161648
61650161650
61651161651
61653161653
61660161660
61661161661
61662161662
61663161663
61664161664
61669161669
61672161672
616742123348
61678161678
61684161684
61685161685
61687161687
61690161690
61693161693
61696161696
61700161700
61745161745
61760161760
61763161763
61767161767
61768161768
61770161770
61779161779
61810161810
61811161811
61813161813
61814161814
61815161815
61821161821
61879161879
619752123950
61980161980
61985161985
61987161987
619892123978
619932123986
62011162011
62036162036
62040162040
620422124084
620473186141
62052162052
62053162053
62058162058
62060162060
620752124150
62079162079
62103162103
62157162157
62164162164
62187162187
62208162208
62211162211
62216162216
62217162217
622182124436
62219162219
622892124578
62296162296
62298162298
62305162305
62308162308
62340162340
62347162347
62349162349
62352162352
62355162355
62360162360
62385162385
62392162392
62396162396
62397162397
62399162399
62404162404
62426162426
62431162431
62447162447
62448162448
62452162452
62454162454
62455162455
62456162456
62461162461
62464162464
624682124936
62480162480
62484162484
62485162485
624872124974
62489162489
62490162490
624913187473
62492162492
62494162494
62527162527
625302125060
62531162531
625323187596
62533162533
62534162534
625352125070
62538162538
625694250276
62570162570
62571162571
626062125212
626082125216
62610162610
62612162612
62616162616
62620162620
62621162621
62622162622
62627162627
62630162630
62631162631
62645162645
62686162686
62692162692
62693162693
62695162695
626982125396
627003188100
627012125402
62703162703
62706162706
62707162707
62708162708
62733162733
627372125474
62741162741
62758162758
62777162777
62836162836
62894162894
62945162945
62946162946
62947162947
629522125904
62983162983
62987162987
629912125982
62993162993
62994162994
63058163058
63067163067
630682126136
63069163069
63078163078
64144164144
64286164286
64387164387
64401164401
64505164505
64517164517
64577164577
64595164595
64600164600
64602164602
646052129210
64623164623
64646164646
64721164721
64751164751
64835164835
64923164923
65282165282
65378165378
654643196392
65492165492
6553676650200576
Total177399532850
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
29651129651
29678129678
29771129771
29896129896
29968129968
29996129996
31522131522
31547131547
31572131572
31594131594
31615131615
31628131628
32052132052
32129132129
32210132210
32298132298
32374132374
32446132446
36039136039
36045136045
36139136139
36179136179
36187136187
36269136269
36277136277
36285136285
36303136303
36317136317
36374136374
36468136468
39476139476
39573139573
39658279316
39691139691
39808139808
39993139993
40092140092
40194140194
40273140273
40364140364
40465140465
42476142476
42495284990
42559142559
42573142573
42574142574
42590142590
42594142594
42637142637
42682142682
42700142700
43685143685
43763143763
43787143787
43850143850
43877143877
43913143913
43927143927
43966143966
43967143967
43992143992
44011144011
44041144041
44354144354
44416144416
44423144423
44465144465
44489144489
44492144492
44566144566
44588144588
44646144646
44683144683
44715144715
44784144784
45884145884
45903145903
45907291814
45910145910
45915145915
45922145922
45926145926
459273137781
45950145950
45988145988
46003146003
46099146099
46189146189
46255146255
46344146344
47594147594
47721147721
47796147796
47850147850
47879147879
47969147969
47979147979
48071148071
48095148095
48171148171
48193148193
48229148229
49014149014
49113149113
49210149210
49294149294
49395149395
49461149461
49538149538
49608149608
49616149616
49686149686
49738149738
49762149762
49803299606
49842299684
49877149877
49985149985
50718150718
50737150737
50781150781
50881150881
50964150964
51053151053
52725152725
52829152829
52834152834
52861152861
52896152896
52907152907
52945152945
52960152960
529812105962
52990152990
53008153008
53027153027
53029153029
53048153048
53077153077
53090153090
53123153123
53154153154
53159153159
53197153197
53267153267
53317153317
53410153410
54720154720
54772154772
54779154779
54783154783
54881154881
54987154987
55853155853
55869155869
55887155887
55945155945
56001156001
56016156016
56527156527
56575156575
56672156672
56698156698
56745156745
56834156834
57536157536
57625157625
57715157715
57812157812
57938157938
58009158009
58743158743
58744158744
58750158750
58793158793
587952117590
58796158796
58849158849
58867158867
58952158952
58993158993
59072159072
59117159117
59187159187
59254159254
59308159308
59382159382
59414159414
61374161374
61421161421
61482161482
61551161551
61618161618
61741161741
61875161875
61989161989
62043162043
62099162099
62160162160
62204162204
64140164140
64282164282
64383164383
64397164397
64501164501
64513164513
64573164573
64591164591
64596164596
64598164598
646012129202
64619164619
64642164642
64717164717
64747164747
64831164831
64919164919
65278165278
65374165374
65488165488
65583165583
65675165675
65770165770
67032167032
67101167101
67145167145
67151167151
67238167238
67290167290
69255169255
69358169358
69454169454
69460169460
69512169512
69545169545
69562169562
69655169655
69662169662
69790169790
69925169925
70043170043
70059170059
70178170178
70234170234
70397170397
70551170551
70701170701
71112171112
71181171181
71242171242
71284171284
71364171364
71439171439
73390173390
73482173482
73518173518
73572173572
73653173653
73735173735
74767174767
74869174869
74981174981
75063175063
75142175142
75204175204
75212175212
75239175239
75334175334
75336175336
75393175393
75428175428
75460175460
75482175482
75509175509
75599175599
75740175740
75790175790
76492176492
76572176572
76685176685
76787176787
76877176877
76986176986
79119179119
79191179191
79289179289
79310179310
79330179330
79364179364
80302180302
80406180406
80423180423
80525180525
80651180651
80656180656
80706180706
80707180707
80754180754
80785180785
80799180799
80818180818
80852180852
80861180861
809022161804
80976180976
80979180979
81002181002
81014181014
81029181029
81097181097
81115181115
81156181156
83111183111
83183183183
83236183236
83306183306
83365183365
84264184264
84331184331
84419184419
84454184454
84536184536
84627184627
84816184816
84831184831
84851184851
84869184869
84888184888
84900184900
85052185052
85064185064
85087185087
85096185096
851222170244
85758185758
85893185893
86028186028
86164186164
86273186273
86405186405
86735186735
86748186748
86751186751
86763186763
86767186767
86780186780
86790186790
86861186861
86864186864
86918186918
86996186996
87019187019
87047187047
87105187105
87152187152
87174187174
87180187180
87217187217
87389187389
87415187415
87421187421
874412174882
87497187497
87612187612
87621187621
87631187631
87651187651
87668187668
87682187682
879202175840
87935187935
87947187947
87952187952
87977187977
88977188977
89118189118
89216189216
89356189356
89498189498
89634189634
90934190934
91071191071
91204191204
91338191338
91472191472
91604191604
94034194034
94179194179
94329194329
94464194464
94613194613
94755194755
96333196333
96468196468
96603196603
96734196734
96872196872
97008197008
99026199026
99165199165
99248199248
99366199366
99497199497
99638199638
1018241101824
1019501101950
1020351102035
1020641102064
1021611102161
1022841102284
1030191103019
1030661103066
1031121103112
1031741103174
1033041103304
1033721103372
1057441105744
1057571105757
1057631105763
1057641105764
1057661105766
1057901105790
1068251106825
1069601106960
1071021107102
1072341107234
1073691107369
1074991107499
1100131110013
1101441110144
1102631110263
1103881110388
1105121110512
1106331110633
1115831111583
1115881111588
1116551111655
1117571111757
1118571111857
1119631111963
1154641115464
1155791115579
1157071115707
1158311115831
1159521115952
1160111116011
1160811116081
1161081116108
1162161116216
1163221116322
1164251116425
1165181116518
1204981120498
1206001120600
1206931120693
1207951120795
1208971120897
1210011121001
1210201121020
1211421121142
1212611121261
1213851121385
1215091121509
1216341121634
1247901124790
1247933374379
1248001124800
1248011124801
1248431124843
1248442249688
1248461124846
1248471124847
1248561124856
1249711124971
1249772249954
1249783374934
1249791124979
1249841124984
1249851124985
1249871124987
1249891124989
1250661125066
1250841125084
1250851125085
1250881125088
1250892250178
1250961125096
1251641125164
1251671125167
1251681125168
1251701125170
1251721125172
1251731125173
1251771125177
1251781125178
1251871125187
1251922250384
1251932250386
1251952250390
1251961125196
1251971125197
1252031125203
1252092250418
1252111125211
1252121125212
1252142250428
1252151125215
1252161125216
1252231125223
1252261125226
1252282250456
1252291125229
1252341125234
1252452250490
1252481125248
1252491125249
1252532250506
1252541125254
1252701125270
1252772250554
1252781125278
1252802250560
1252861125286
1252991125299
1253001125300
1253021125302
1253031125303
1253201125320
1253292250658
1253621125362
1253691125369
1254052250810
1254081125408
1254132250826
1254152250830
1254162250832
1254201125420
1254302250860
1254342250868
1254354501740
1254391125439
1254401125440
1254421125442
1254461125446
1254481125448
1254491125449
1254522250904
1254541125454
1254652250930
1254691125469
1254721125472
1254771125477
1254861125486
1254881125488
1254891125489
1254901125490
1254921125492
1254931125493
1255261125526
1255271125527
1255291125529
1255332251066
1255341125534
1255351125535
1255361125536
1255441125544
1255451125545
1255501125550
1255561125556
1255581125558
1255611125561
1255731125573
1255751125575
1255771125577
1255791125579
1255831125583
1255843376752
1255852251170
1255901125590
1255961125596
1256401125640
1256561125656
1256671125667
1256761125676
1256781125678
1256791125679
1256852251370
1256861125686
1256881125688
1256902251380
1256912251382
1256951125695
1257072251414
1257081125708
1257112251422
1257131125713
1257161125716
1257171125717
1257181125718
1257201125720
1257232251446
1257242251448
1257251125725
1257271125727
1257281125728
1257291125729
1257321125732
1257341125734
1257362251472
1257391125739
1257411125741
1257422251484
1257431125743
1257481125748
1257531125753
1257541125754
1257551125755
1257561125756
1257571125757
1257582251516
1257592251518
1257602251520
1257632251526
1257643377292
1257651125765
1257661125766
1258211125821
1258261125826
1258401125840
1258411125841
1258431125843
1258481125848
1258521125852
1258541125854
1258571125857
1259332251866
1259381125938
1259921125992
1259961125996
1259981125998
1259991125999
1260011126001
1260061126006
1261051126105
1261061126106
1261101126110
1261111126111
1261131126113
1261191126119
1262752252550
1262793378837
1262801126280
1263082252616
1263091126309
1263101126310
1263141126314
1263161126316
1264211126421
1264721126472
1264761126476
1264771126477
1264801126480
1264811126481
1264821126482
1264831126483
1264842252968
1264852252970
1264862252972
1264881126488
1264951126495
1264961126496
1265001126500
1265051126505
1265071126507
1265081126508
1265122253024
1265131126513
1265341126534
1265432253086
1265461126546
1265471126547
1265481126548
1265511126551
1265521126552
1265622253124
1266411126641
1266841126684
1266902253380
1266911126691
1266921126692
1266931126693
1267191126719
1267581126758
1267601126760
1267631126763
1267671126767
1267711126771
1268071126807
1268131126813
1268141126814
1268291126829
1268362253672
1268371126837
1268391126839
1268431126843
1268621126862
1268861126886
1269191126919
1269221126922
1269241126924
1269251126925
1269291126929
1269361126936
1269561126956
1270131127013
1270183381054
1270211127021
1270242254048
1270621127062
1270651127065
1270681127068
1270732254146
1270752254150
1270801127080
1270821127082
1270831127083
1270901127090
1270991127099
1271281127128
1271441127144
1271491127149
1271522254304
1271542254308
1271553381465
1271561127156
1271571127157
1271731127173
1271772254354
1271801127180
1271821127182
1271831127183
1271851127185
1271921127192
1271931127193
1271941127194
1271951127195
1271961127196
1272011127201
1272041127204
1272062254412
1272101127210
1272161127216
1272171127217
1272191127219
1272221127222
1272251127225
1272281127228
1272321127232
1272921127292
1272951127295
1272991127299
1273001127300
1273021127302
1273111127311
1273421127342
1273431127343
1273451127345
1273461127346
1273471127347
1273531127353
1275072255014
1275121127512
1275171127517
1275191127519
1275212255042
1275251127525
1275431127543
1275681127568
1275721127572
1275742255148
1275792255158
1275841127584
1275851127585
1275901127590
1275921127592
1276072255214
1276111127611
1276891127689
1277191127719
1277431127743
1277481127748
1277491127749
1277502255500
1277511127751
1278212255642
1278281127828
1278301127830
1278371127837
1278401127840
1278721127872
1278791127879
1278811127881
1278841127884
1278871127887
1278921127892
1279171127917
1279241127924
1279281127928
1279291127929
1279311127931
1279361127936
1279581127958
1279631127963
1279791127979
1279801127980
1279841127984
1279861127986
1279871127987
1279881127988
1279931127993
1279961127996
1280002256000
1280121128012
1280161128016
1280171128017
1280192256038
1280211128021
1280221128022
1280233384069
1280241128024
1280261128026
1280591128059
1280622256124
1280631128063
1280643384192
1280651128065
1280661128066
1280672256134
1280701128070
1281014512404
1281021128102
1281031128103
1281382256276
1281402256280
1281421128142
1281441128144
1281481128148
1281521128152
1281531128153
1281541128154
1281591128159
1281621128162
1281631128163
1281771128177
1282181128218
1282241128224
1282251128225
1282271128227
1282302256460
1282323384696
1282332256466
1282351128235
1282371128237
1282381128238
1282391128239
1282401128240
1282651128265
1282692256538
1282731128273
1282901128290
1283681128368
1284261128426
1284771128477
1284781128478
1284791128479
1284842256968
1285151128515
1285191128519
1285232257046
1285251128525
1285261128526
1285901128590
1285991128599
1286002257200
1286011128601
1286101128610
Total100299528841
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333833266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882e404fa8ee7ec
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6534303466613865
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_10.json b/autobahn/client/tungstenite_case_12_5_10.json new file mode 100644 index 0000000..916a394 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_10.json @@ -0,0 +1,1915 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 383, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 9129, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=383&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: HqHqxZEpQyGYEW7m9Ay11A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NNXoxvBOxAgh5hfPFsdWEvQS2MU=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "51": 1, + "143": 1, + "238": 1, + "257": 1, + "1500": 1, + "1569": 1, + "1613": 1, + "1619": 1, + "1706": 1, + "1758": 1, + "3723": 1, + "3826": 1, + "3922": 1, + "3928": 1, + "3980": 1, + "4013": 1, + "4030": 1, + "4123": 1, + "4130": 1, + "4258": 1, + "4393": 1, + "4511": 1, + "4527": 1, + "4646": 1, + "4702": 1, + "4865": 1, + "5019": 1, + "5169": 1, + "5580": 1, + "5649": 1, + "5710": 1, + "5752": 1, + "5832": 1, + "5907": 1, + "7858": 1, + "7950": 1, + "7986": 1, + "8040": 1, + "8121": 1, + "8203": 1, + "9235": 1, + "9337": 1, + "9449": 1, + "9531": 1, + "9610": 1, + "9672": 1, + "9680": 1, + "9707": 1, + "9802": 1, + "9804": 1, + "9861": 1, + "9896": 1, + "9928": 1, + "9950": 1, + "9977": 1, + "10067": 1, + "10208": 1, + "10258": 1, + "10960": 1, + "11040": 1, + "11153": 1, + "11255": 1, + "11345": 1, + "11454": 1, + "13587": 1, + "13659": 1, + "13757": 1, + "13778": 1, + "13798": 1, + "13832": 1, + "14770": 1, + "14874": 1, + "14891": 1, + "14993": 1, + "15119": 1, + "15124": 1, + "15174": 1, + "15175": 1, + "15222": 1, + "15253": 1, + "15267": 1, + "15286": 1, + "15320": 1, + "15329": 1, + "15370": 2, + "15444": 1, + "15447": 1, + "15470": 1, + "15482": 1, + "15497": 1, + "15565": 1, + "15583": 1, + "15624": 1, + "17579": 1, + "17651": 1, + "17704": 1, + "17774": 1, + "17833": 1, + "18732": 1, + "18799": 1, + "18887": 1, + "18922": 1, + "19004": 1, + "19095": 1, + "19284": 1, + "19299": 1, + "19319": 1, + "19337": 1, + "19356": 1, + "19368": 1, + "19520": 1, + "19532": 1, + "19555": 1, + "19564": 1, + "19590": 2, + "20226": 1, + "20361": 1, + "20496": 1, + "20632": 1, + "20741": 1, + "20873": 1, + "21203": 1, + "21216": 1, + "21219": 1, + "21231": 1, + "21235": 1, + "21248": 1, + "21258": 1, + "21329": 1, + "21332": 1, + "21386": 1, + "21464": 1, + "21487": 1, + "21515": 1, + "21573": 1, + "21620": 1, + "21642": 1, + "21648": 1, + "21685": 1, + "21857": 1, + "21883": 1, + "21889": 1, + "21909": 2, + "21965": 1, + "22080": 1, + "22089": 1, + "22119": 1, + "22136": 1, + "22150": 1, + "22171": 1, + "22388": 2, + "22403": 1, + "22415": 1, + "22420": 1, + "22445": 1, + "23445": 1, + "23487": 1, + "23586": 1, + "23684": 1, + "23824": 1, + "23966": 1, + "24102": 1, + "25402": 1, + "25539": 1, + "25672": 1, + "25806": 1, + "25940": 1, + "26072": 1, + "28502": 1, + "28647": 1, + "28797": 1, + "28932": 1, + "29081": 1, + "29223": 1, + "29655": 1, + "29682": 1, + "29775": 1, + "29900": 1, + "29972": 1, + "30000": 1, + "30801": 1, + "30936": 1, + "31071": 1, + "31202": 1, + "31340": 1, + "31476": 1, + "31526": 1, + "31551": 1, + "31576": 1, + "31598": 1, + "31619": 1, + "31632": 1, + "32056": 1, + "32133": 1, + "32214": 1, + "32302": 1, + "32378": 1, + "32450": 1, + "33494": 1, + "33633": 1, + "33716": 1, + "33834": 1, + "33965": 1, + "34106": 1, + "36043": 1, + "36049": 1, + "36143": 1, + "36183": 1, + "36191": 1, + "36273": 1, + "36281": 1, + "36289": 1, + "36292": 1, + "36307": 1, + "36321": 1, + "36378": 1, + "36418": 1, + "36472": 1, + "36503": 1, + "36532": 1, + "36629": 1, + "36752": 1, + "37487": 1, + "37534": 1, + "37580": 1, + "37642": 1, + "37772": 1, + "37840": 1, + "39480": 1, + "39577": 1, + "39662": 2, + "39695": 1, + "39812": 1, + "39997": 1, + "40096": 1, + "40198": 1, + "40212": 1, + "40225": 1, + "40231": 1, + "40232": 1, + "40234": 1, + "40258": 1, + "40277": 1, + "40368": 1, + "40469": 1, + "41365": 1, + "41428": 1, + "41570": 1, + "41702": 1, + "41837": 1, + "41967": 1, + "42480": 1, + "42499": 2, + "42563": 1, + "42577": 1, + "42578": 1, + "42594": 1, + "42598": 1, + "42641": 1, + "42686": 1, + "42704": 1, + "43440": 1, + "43689": 1, + "43767": 1, + "43791": 1, + "43854": 1, + "43881": 1, + "43917": 1, + "43931": 1, + "43970": 1, + "43971": 1, + "43996": 1, + "44015": 1, + "44045": 1, + "44358": 1, + "44420": 1, + "44427": 1, + "44469": 1, + "44481": 1, + "44493": 1, + "44496": 1, + "44570": 1, + "44592": 1, + "44612": 1, + "44650": 1, + "44687": 1, + "44719": 1, + "44731": 1, + "44788": 1, + "44856": 1, + "44980": 1, + "45101": 1, + "45888": 1, + "45907": 1, + "45911": 2, + "45914": 1, + "45919": 1, + "45926": 1, + "45930": 1, + "45931": 3, + "45954": 1, + "45992": 1, + "46007": 1, + "46051": 1, + "46056": 1, + "46103": 1, + "46123": 1, + "46193": 1, + "46225": 1, + "46259": 1, + "46325": 1, + "46348": 1, + "46431": 1, + "47598": 1, + "47725": 1, + "47800": 1, + "47854": 1, + "47883": 1, + "47973": 1, + "47983": 1, + "48075": 1, + "48099": 1, + "48175": 1, + "48197": 1, + "48233": 1, + "49018": 1, + "49117": 1, + "49214": 1, + "49298": 1, + "49399": 1, + "49465": 1, + "49542": 1, + "49612": 1, + "49620": 1, + "49690": 1, + "49742": 1, + "49766": 1, + "49807": 2, + "49846": 2, + "49881": 1, + "49932": 1, + "49989": 1, + "50047": 1, + "50175": 1, + "50299": 1, + "50420": 1, + "50479": 1, + "50549": 1, + "50576": 1, + "50684": 1, + "50722": 1, + "50741": 1, + "50785": 1, + "50790": 1, + "50885": 1, + "50893": 1, + "50968": 1, + "50986": 1, + "51057": 1, + "52729": 1, + "52833": 1, + "52838": 1, + "52865": 1, + "52900": 1, + "52911": 1, + "52949": 1, + "52964": 1, + "52985": 2, + "52994": 1, + "53012": 1, + "53031": 1, + "53033": 1, + "53052": 1, + "53081": 1, + "53094": 1, + "53127": 1, + "53158": 1, + "53163": 1, + "53201": 1, + "53271": 1, + "53321": 1, + "53414": 1, + "54724": 1, + "54776": 1, + "54783": 1, + "54787": 1, + "54885": 1, + "54966": 1, + "54991": 1, + "55068": 1, + "55161": 1, + "55263": 1, + "55365": 1, + "55469": 1, + "55488": 1, + "55610": 1, + "55729": 1, + "55853": 1, + "55857": 1, + "55873": 1, + "55891": 1, + "55949": 1, + "55977": 1, + "56005": 1, + "56020": 1, + "56102": 1, + "56531": 1, + "56579": 1, + "56676": 1, + "56702": 1, + "56749": 1, + "56838": 1, + "57540": 1, + "57629": 1, + "57719": 1, + "57816": 1, + "57920": 1, + "57942": 1, + "58013": 1, + "58747": 1, + "58748": 1, + "58754": 1, + "58797": 1, + "58799": 2, + "58800": 1, + "58853": 1, + "58871": 1, + "58956": 1, + "58997": 1, + "59076": 1, + "59121": 1, + "59191": 1, + "59258": 2, + "59261": 3, + "59268": 1, + "59269": 1, + "59312": 3, + "59314": 1, + "59315": 1, + "59324": 1, + "59386": 1, + "59418": 1, + "59439": 1, + "59445": 2, + "59446": 3, + "59447": 1, + "59452": 1, + "59453": 1, + "59455": 1, + "59457": 1, + "59534": 1, + "59552": 1, + "59553": 1, + "59556": 1, + "59557": 2, + "59564": 1, + "59632": 1, + "59635": 1, + "59636": 1, + "59638": 1, + "59640": 1, + "59641": 1, + "59645": 1, + "59646": 1, + "59655": 1, + "59660": 2, + "59661": 2, + "59663": 2, + "59664": 1, + "59665": 1, + "59671": 1, + "59677": 2, + "59679": 1, + "59680": 1, + "59682": 2, + "59683": 1, + "59684": 1, + "59691": 1, + "59694": 1, + "59696": 2, + "59697": 1, + "59702": 1, + "59713": 2, + "59716": 1, + "59717": 1, + "59721": 2, + "59722": 1, + "59738": 1, + "59745": 2, + "59746": 1, + "59748": 2, + "59754": 1, + "59767": 1, + "59768": 1, + "59770": 1, + "59771": 1, + "59788": 1, + "59797": 2, + "59830": 1, + "59837": 1, + "59873": 2, + "59876": 1, + "59881": 2, + "59883": 2, + "59884": 2, + "59888": 1, + "59898": 2, + "59902": 2, + "59903": 4, + "59907": 1, + "59908": 1, + "59910": 1, + "59914": 1, + "59916": 1, + "59917": 1, + "59920": 2, + "59922": 1, + "59933": 2, + "59937": 1, + "59940": 1, + "59945": 1, + "59954": 1, + "59956": 1, + "59957": 1, + "59958": 1, + "59960": 1, + "59961": 1, + "59994": 1, + "59995": 1, + "59997": 1, + "60001": 2, + "60002": 1, + "60003": 1, + "60004": 1, + "60012": 1, + "60013": 1, + "60018": 1, + "60024": 1, + "60026": 1, + "60029": 1, + "60041": 1, + "60043": 1, + "60045": 1, + "60047": 1, + "60051": 1, + "60052": 3, + "60053": 2, + "60058": 1, + "60064": 1, + "60108": 1, + "60124": 1, + "60135": 1, + "60144": 1, + "60146": 1, + "60147": 1, + "60153": 2, + "60154": 1, + "60156": 1, + "60158": 2, + "60159": 2, + "60163": 1, + "60175": 2, + "60176": 1, + "60179": 2, + "60181": 1, + "60184": 1, + "60185": 1, + "60186": 1, + "60188": 1, + "60191": 2, + "60192": 2, + "60193": 1, + "60195": 1, + "60196": 1, + "60197": 1, + "60200": 1, + "60202": 1, + "60204": 2, + "60207": 1, + "60209": 1, + "60210": 2, + "60211": 1, + "60216": 1, + "60221": 1, + "60222": 1, + "60223": 1, + "60224": 1, + "60225": 1, + "60226": 2, + "60227": 2, + "60228": 2, + "60231": 2, + "60232": 3, + "60233": 1, + "60234": 1, + "60289": 1, + "60294": 1, + "60308": 1, + "60309": 1, + "60311": 1, + "60316": 1, + "60320": 1, + "60322": 1, + "60325": 1, + "60401": 2, + "60406": 1, + "60460": 1, + "60464": 1, + "60466": 1, + "60467": 1, + "60469": 1, + "60474": 1, + "60573": 1, + "60574": 1, + "60578": 1, + "60579": 1, + "60581": 1, + "60587": 1, + "60743": 2, + "60747": 3, + "60748": 1, + "60776": 2, + "60777": 1, + "60778": 1, + "60782": 1, + "60784": 1, + "60889": 1, + "60940": 1, + "60944": 1, + "60945": 1, + "60948": 1, + "60949": 1, + "60950": 1, + "60951": 1, + "60952": 2, + "60953": 2, + "60954": 2, + "60956": 1, + "60963": 1, + "60964": 1, + "60968": 1, + "60973": 1, + "60975": 1, + "60976": 1, + "60980": 2, + "60981": 1, + "61002": 1, + "61011": 2, + "61014": 1, + "61015": 1, + "61016": 1, + "61019": 1, + "61020": 1, + "61030": 2, + "61109": 1, + "61152": 1, + "61158": 2, + "61159": 1, + "61160": 1, + "61161": 1, + "61187": 1, + "61226": 1, + "61228": 1, + "61231": 1, + "61235": 1, + "61239": 1, + "61275": 1, + "61281": 1, + "61282": 1, + "61297": 1, + "61304": 2, + "61305": 1, + "61307": 1, + "61311": 1, + "61330": 1, + "61354": 1, + "61378": 1, + "61387": 1, + "61390": 1, + "61392": 1, + "61393": 1, + "61397": 1, + "61404": 1, + "61424": 1, + "61425": 1, + "61481": 1, + "61486": 4, + "61489": 1, + "61492": 2, + "61530": 1, + "61533": 1, + "61536": 1, + "61541": 2, + "61543": 2, + "61548": 1, + "61550": 1, + "61551": 1, + "61555": 1, + "61558": 1, + "61567": 1, + "61596": 1, + "61612": 1, + "61617": 1, + "61620": 2, + "61622": 3, + "61623": 3, + "61624": 1, + "61625": 1, + "61641": 1, + "61645": 2, + "61648": 1, + "61650": 1, + "61651": 1, + "61653": 1, + "61660": 1, + "61661": 1, + "61662": 1, + "61663": 1, + "61664": 1, + "61669": 1, + "61672": 1, + "61674": 2, + "61678": 1, + "61684": 1, + "61685": 1, + "61687": 1, + "61690": 1, + "61693": 1, + "61696": 1, + "61700": 1, + "61745": 1, + "61760": 1, + "61763": 1, + "61767": 1, + "61768": 1, + "61770": 1, + "61779": 1, + "61810": 1, + "61811": 1, + "61813": 1, + "61814": 1, + "61815": 1, + "61821": 1, + "61879": 1, + "61975": 2, + "61980": 1, + "61985": 1, + "61987": 1, + "61989": 2, + "61993": 2, + "62011": 1, + "62036": 1, + "62040": 1, + "62042": 2, + "62047": 3, + "62052": 1, + "62053": 1, + "62058": 1, + "62060": 1, + "62075": 2, + "62079": 1, + "62103": 1, + "62157": 1, + "62164": 1, + "62187": 1, + "62208": 1, + "62211": 1, + "62216": 1, + "62217": 1, + "62218": 2, + "62219": 1, + "62289": 2, + "62296": 1, + "62298": 1, + "62305": 1, + "62308": 1, + "62340": 1, + "62347": 1, + "62349": 1, + "62352": 1, + "62355": 1, + "62360": 1, + "62385": 1, + "62392": 1, + "62396": 1, + "62397": 1, + "62399": 1, + "62404": 1, + "62426": 1, + "62431": 1, + "62447": 1, + "62448": 1, + "62452": 1, + "62454": 1, + "62455": 1, + "62456": 1, + "62461": 1, + "62464": 1, + "62468": 2, + "62480": 1, + "62484": 1, + "62485": 1, + "62487": 2, + "62489": 1, + "62490": 1, + "62491": 3, + "62492": 1, + "62494": 1, + "62527": 1, + "62530": 2, + "62531": 1, + "62532": 3, + "62533": 1, + "62534": 1, + "62535": 2, + "62538": 1, + "62569": 4, + "62570": 1, + "62571": 1, + "62606": 2, + "62608": 2, + "62610": 1, + "62612": 1, + "62616": 1, + "62620": 1, + "62621": 1, + "62622": 1, + "62627": 1, + "62630": 1, + "62631": 1, + "62645": 1, + "62686": 1, + "62692": 1, + "62693": 1, + "62695": 1, + "62698": 2, + "62700": 3, + "62701": 2, + "62703": 1, + "62706": 1, + "62707": 1, + "62708": 1, + "62733": 1, + "62737": 2, + "62741": 1, + "62758": 1, + "62777": 1, + "62836": 1, + "62894": 1, + "62945": 1, + "62946": 1, + "62947": 1, + "62952": 2, + "62983": 1, + "62987": 1, + "62991": 2, + "62993": 1, + "62994": 1, + "63058": 1, + "63067": 1, + "63068": 2, + "63069": 1, + "63078": 1, + "64144": 1, + "64286": 1, + "64387": 1, + "64401": 1, + "64505": 1, + "64517": 1, + "64577": 1, + "64595": 1, + "64600": 1, + "64602": 1, + "64605": 2, + "64623": 1, + "64646": 1, + "64721": 1, + "64751": 1, + "64835": 1, + "64923": 1, + "65282": 1, + "65378": 1, + "65464": 3, + "65492": 1, + "65536": 766 + }, + "started": "2025-09-11T20:10:23.088Z", + "trafficStats": { + "incomingCompressionRatio": 0.7592770767211914, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 99519965, + "incomingOctetsWireLevel": 99532585, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0001268087262691461, + "outgoingCompressionRatio": 0.7592770767211914, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 99519965, + "outgoingOctetsWireLevel": 99528585, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 8.661578608875114e-05, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "29651": 1, + "29678": 1, + "29771": 1, + "29896": 1, + "29968": 1, + "29996": 1, + "31522": 1, + "31547": 1, + "31572": 1, + "31594": 1, + "31615": 1, + "31628": 1, + "32052": 1, + "32129": 1, + "32210": 1, + "32298": 1, + "32374": 1, + "32446": 1, + "36039": 1, + "36045": 1, + "36139": 1, + "36179": 1, + "36187": 1, + "36269": 1, + "36277": 1, + "36285": 1, + "36303": 1, + "36317": 1, + "36374": 1, + "36468": 1, + "39476": 1, + "39573": 1, + "39658": 2, + "39691": 1, + "39808": 1, + "39993": 1, + "40092": 1, + "40194": 1, + "40273": 1, + "40364": 1, + "40465": 1, + "42476": 1, + "42495": 2, + "42559": 1, + "42573": 1, + "42574": 1, + "42590": 1, + "42594": 1, + "42637": 1, + "42682": 1, + "42700": 1, + "43685": 1, + "43763": 1, + "43787": 1, + "43850": 1, + "43877": 1, + "43913": 1, + "43927": 1, + "43966": 1, + "43967": 1, + "43992": 1, + "44011": 1, + "44041": 1, + "44354": 1, + "44416": 1, + "44423": 1, + "44465": 1, + "44489": 1, + "44492": 1, + "44566": 1, + "44588": 1, + "44646": 1, + "44683": 1, + "44715": 1, + "44784": 1, + "45884": 1, + "45903": 1, + "45907": 2, + "45910": 1, + "45915": 1, + "45922": 1, + "45926": 1, + "45927": 3, + "45950": 1, + "45988": 1, + "46003": 1, + "46099": 1, + "46189": 1, + "46255": 1, + "46344": 1, + "47594": 1, + "47721": 1, + "47796": 1, + "47850": 1, + "47879": 1, + "47969": 1, + "47979": 1, + "48071": 1, + "48095": 1, + "48171": 1, + "48193": 1, + "48229": 1, + "49014": 1, + "49113": 1, + "49210": 1, + "49294": 1, + "49395": 1, + "49461": 1, + "49538": 1, + "49608": 1, + "49616": 1, + "49686": 1, + "49738": 1, + "49762": 1, + "49803": 2, + "49842": 2, + "49877": 1, + "49985": 1, + "50718": 1, + "50737": 1, + "50781": 1, + "50881": 1, + "50964": 1, + "51053": 1, + "52725": 1, + "52829": 1, + "52834": 1, + "52861": 1, + "52896": 1, + "52907": 1, + "52945": 1, + "52960": 1, + "52981": 2, + "52990": 1, + "53008": 1, + "53027": 1, + "53029": 1, + "53048": 1, + "53077": 1, + "53090": 1, + "53123": 1, + "53154": 1, + "53159": 1, + "53197": 1, + "53267": 1, + "53317": 1, + "53410": 1, + "54720": 1, + "54772": 1, + "54779": 1, + "54783": 1, + "54881": 1, + "54987": 1, + "55853": 1, + "55869": 1, + "55887": 1, + "55945": 1, + "56001": 1, + "56016": 1, + "56527": 1, + "56575": 1, + "56672": 1, + "56698": 1, + "56745": 1, + "56834": 1, + "57536": 1, + "57625": 1, + "57715": 1, + "57812": 1, + "57938": 1, + "58009": 1, + "58743": 1, + "58744": 1, + "58750": 1, + "58793": 1, + "58795": 2, + "58796": 1, + "58849": 1, + "58867": 1, + "58952": 1, + "58993": 1, + "59072": 1, + "59117": 1, + "59187": 1, + "59254": 1, + "59308": 1, + "59382": 1, + "59414": 1, + "61374": 1, + "61421": 1, + "61482": 1, + "61551": 1, + "61618": 1, + "61741": 1, + "61875": 1, + "61989": 1, + "62043": 1, + "62099": 1, + "62160": 1, + "62204": 1, + "64140": 1, + "64282": 1, + "64383": 1, + "64397": 1, + "64501": 1, + "64513": 1, + "64573": 1, + "64591": 1, + "64596": 1, + "64598": 1, + "64601": 2, + "64619": 1, + "64642": 1, + "64717": 1, + "64747": 1, + "64831": 1, + "64919": 1, + "65278": 1, + "65374": 1, + "65488": 1, + "65583": 1, + "65675": 1, + "65770": 1, + "67032": 1, + "67101": 1, + "67145": 1, + "67151": 1, + "67238": 1, + "67290": 1, + "69255": 1, + "69358": 1, + "69454": 1, + "69460": 1, + "69512": 1, + "69545": 1, + "69562": 1, + "69655": 1, + "69662": 1, + "69790": 1, + "69925": 1, + "70043": 1, + "70059": 1, + "70178": 1, + "70234": 1, + "70397": 1, + "70551": 1, + "70701": 1, + "71112": 1, + "71181": 1, + "71242": 1, + "71284": 1, + "71364": 1, + "71439": 1, + "73390": 1, + "73482": 1, + "73518": 1, + "73572": 1, + "73653": 1, + "73735": 1, + "74767": 1, + "74869": 1, + "74981": 1, + "75063": 1, + "75142": 1, + "75204": 1, + "75212": 1, + "75239": 1, + "75334": 1, + "75336": 1, + "75393": 1, + "75428": 1, + "75460": 1, + "75482": 1, + "75509": 1, + "75599": 1, + "75740": 1, + "75790": 1, + "76492": 1, + "76572": 1, + "76685": 1, + "76787": 1, + "76877": 1, + "76986": 1, + "79119": 1, + "79191": 1, + "79289": 1, + "79310": 1, + "79330": 1, + "79364": 1, + "80302": 1, + "80406": 1, + "80423": 1, + "80525": 1, + "80651": 1, + "80656": 1, + "80706": 1, + "80707": 1, + "80754": 1, + "80785": 1, + "80799": 1, + "80818": 1, + "80852": 1, + "80861": 1, + "80902": 2, + "80976": 1, + "80979": 1, + "81002": 1, + "81014": 1, + "81029": 1, + "81097": 1, + "81115": 1, + "81156": 1, + "83111": 1, + "83183": 1, + "83236": 1, + "83306": 1, + "83365": 1, + "84264": 1, + "84331": 1, + "84419": 1, + "84454": 1, + "84536": 1, + "84627": 1, + "84816": 1, + "84831": 1, + "84851": 1, + "84869": 1, + "84888": 1, + "84900": 1, + "85052": 1, + "85064": 1, + "85087": 1, + "85096": 1, + "85122": 2, + "85758": 1, + "85893": 1, + "86028": 1, + "86164": 1, + "86273": 1, + "86405": 1, + "86735": 1, + "86748": 1, + "86751": 1, + "86763": 1, + "86767": 1, + "86780": 1, + "86790": 1, + "86861": 1, + "86864": 1, + "86918": 1, + "86996": 1, + "87019": 1, + "87047": 1, + "87105": 1, + "87152": 1, + "87174": 1, + "87180": 1, + "87217": 1, + "87389": 1, + "87415": 1, + "87421": 1, + "87441": 2, + "87497": 1, + "87612": 1, + "87621": 1, + "87631": 1, + "87651": 1, + "87668": 1, + "87682": 1, + "87920": 2, + "87935": 1, + "87947": 1, + "87952": 1, + "87977": 1, + "88977": 1, + "89118": 1, + "89216": 1, + "89356": 1, + "89498": 1, + "89634": 1, + "90934": 1, + "91071": 1, + "91204": 1, + "91338": 1, + "91472": 1, + "91604": 1, + "94034": 1, + "94179": 1, + "94329": 1, + "94464": 1, + "94613": 1, + "94755": 1, + "96333": 1, + "96468": 1, + "96603": 1, + "96734": 1, + "96872": 1, + "97008": 1, + "99026": 1, + "99165": 1, + "99248": 1, + "99366": 1, + "99497": 1, + "99638": 1, + "101824": 1, + "101950": 1, + "102035": 1, + "102064": 1, + "102161": 1, + "102284": 1, + "103019": 1, + "103066": 1, + "103112": 1, + "103174": 1, + "103304": 1, + "103372": 1, + "105744": 1, + "105757": 1, + "105763": 1, + "105764": 1, + "105766": 1, + "105790": 1, + "106825": 1, + "106960": 1, + "107102": 1, + "107234": 1, + "107369": 1, + "107499": 1, + "110013": 1, + "110144": 1, + "110263": 1, + "110388": 1, + "110512": 1, + "110633": 1, + "111583": 1, + "111588": 1, + "111655": 1, + "111757": 1, + "111857": 1, + "111963": 1, + "115464": 1, + "115579": 1, + "115707": 1, + "115831": 1, + "115952": 1, + "116011": 1, + "116081": 1, + "116108": 1, + "116216": 1, + "116322": 1, + "116425": 1, + "116518": 1, + "120498": 1, + "120600": 1, + "120693": 1, + "120795": 1, + "120897": 1, + "121001": 1, + "121020": 1, + "121142": 1, + "121261": 1, + "121385": 1, + "121509": 1, + "121634": 1, + "124790": 1, + "124793": 3, + "124800": 1, + "124801": 1, + "124843": 1, + "124844": 2, + "124846": 1, + "124847": 1, + "124856": 1, + "124971": 1, + "124977": 2, + "124978": 3, + "124979": 1, + "124984": 1, + "124985": 1, + "124987": 1, + "124989": 1, + "125066": 1, + "125084": 1, + "125085": 1, + "125088": 1, + "125089": 2, + "125096": 1, + "125164": 1, + "125167": 1, + "125168": 1, + "125170": 1, + "125172": 1, + "125173": 1, + "125177": 1, + "125178": 1, + "125187": 1, + "125192": 2, + "125193": 2, + "125195": 2, + "125196": 1, + "125197": 1, + "125203": 1, + "125209": 2, + "125211": 1, + "125212": 1, + "125214": 2, + "125215": 1, + "125216": 1, + "125223": 1, + "125226": 1, + "125228": 2, + "125229": 1, + "125234": 1, + "125245": 2, + "125248": 1, + "125249": 1, + "125253": 2, + "125254": 1, + "125270": 1, + "125277": 2, + "125278": 1, + "125280": 2, + "125286": 1, + "125299": 1, + "125300": 1, + "125302": 1, + "125303": 1, + "125320": 1, + "125329": 2, + "125362": 1, + "125369": 1, + "125405": 2, + "125408": 1, + "125413": 2, + "125415": 2, + "125416": 2, + "125420": 1, + "125430": 2, + "125434": 2, + "125435": 4, + "125439": 1, + "125440": 1, + "125442": 1, + "125446": 1, + "125448": 1, + "125449": 1, + "125452": 2, + "125454": 1, + "125465": 2, + "125469": 1, + "125472": 1, + "125477": 1, + "125486": 1, + "125488": 1, + "125489": 1, + "125490": 1, + "125492": 1, + "125493": 1, + "125526": 1, + "125527": 1, + "125529": 1, + "125533": 2, + "125534": 1, + "125535": 1, + "125536": 1, + "125544": 1, + "125545": 1, + "125550": 1, + "125556": 1, + "125558": 1, + "125561": 1, + "125573": 1, + "125575": 1, + "125577": 1, + "125579": 1, + "125583": 1, + "125584": 3, + "125585": 2, + "125590": 1, + "125596": 1, + "125640": 1, + "125656": 1, + "125667": 1, + "125676": 1, + "125678": 1, + "125679": 1, + "125685": 2, + "125686": 1, + "125688": 1, + "125690": 2, + "125691": 2, + "125695": 1, + "125707": 2, + "125708": 1, + "125711": 2, + "125713": 1, + "125716": 1, + "125717": 1, + "125718": 1, + "125720": 1, + "125723": 2, + "125724": 2, + "125725": 1, + "125727": 1, + "125728": 1, + "125729": 1, + "125732": 1, + "125734": 1, + "125736": 2, + "125739": 1, + "125741": 1, + "125742": 2, + "125743": 1, + "125748": 1, + "125753": 1, + "125754": 1, + "125755": 1, + "125756": 1, + "125757": 1, + "125758": 2, + "125759": 2, + "125760": 2, + "125763": 2, + "125764": 3, + "125765": 1, + "125766": 1, + "125821": 1, + "125826": 1, + "125840": 1, + "125841": 1, + "125843": 1, + "125848": 1, + "125852": 1, + "125854": 1, + "125857": 1, + "125933": 2, + "125938": 1, + "125992": 1, + "125996": 1, + "125998": 1, + "125999": 1, + "126001": 1, + "126006": 1, + "126105": 1, + "126106": 1, + "126110": 1, + "126111": 1, + "126113": 1, + "126119": 1, + "126275": 2, + "126279": 3, + "126280": 1, + "126308": 2, + "126309": 1, + "126310": 1, + "126314": 1, + "126316": 1, + "126421": 1, + "126472": 1, + "126476": 1, + "126477": 1, + "126480": 1, + "126481": 1, + "126482": 1, + "126483": 1, + "126484": 2, + "126485": 2, + "126486": 2, + "126488": 1, + "126495": 1, + "126496": 1, + "126500": 1, + "126505": 1, + "126507": 1, + "126508": 1, + "126512": 2, + "126513": 1, + "126534": 1, + "126543": 2, + "126546": 1, + "126547": 1, + "126548": 1, + "126551": 1, + "126552": 1, + "126562": 2, + "126641": 1, + "126684": 1, + "126690": 2, + "126691": 1, + "126692": 1, + "126693": 1, + "126719": 1, + "126758": 1, + "126760": 1, + "126763": 1, + "126767": 1, + "126771": 1, + "126807": 1, + "126813": 1, + "126814": 1, + "126829": 1, + "126836": 2, + "126837": 1, + "126839": 1, + "126843": 1, + "126862": 1, + "126886": 1, + "126919": 1, + "126922": 1, + "126924": 1, + "126925": 1, + "126929": 1, + "126936": 1, + "126956": 1, + "127013": 1, + "127018": 3, + "127021": 1, + "127024": 2, + "127062": 1, + "127065": 1, + "127068": 1, + "127073": 2, + "127075": 2, + "127080": 1, + "127082": 1, + "127083": 1, + "127090": 1, + "127099": 1, + "127128": 1, + "127144": 1, + "127149": 1, + "127152": 2, + "127154": 2, + "127155": 3, + "127156": 1, + "127157": 1, + "127173": 1, + "127177": 2, + "127180": 1, + "127182": 1, + "127183": 1, + "127185": 1, + "127192": 1, + "127193": 1, + "127194": 1, + "127195": 1, + "127196": 1, + "127201": 1, + "127204": 1, + "127206": 2, + "127210": 1, + "127216": 1, + "127217": 1, + "127219": 1, + "127222": 1, + "127225": 1, + "127228": 1, + "127232": 1, + "127292": 1, + "127295": 1, + "127299": 1, + "127300": 1, + "127302": 1, + "127311": 1, + "127342": 1, + "127343": 1, + "127345": 1, + "127346": 1, + "127347": 1, + "127353": 1, + "127507": 2, + "127512": 1, + "127517": 1, + "127519": 1, + "127521": 2, + "127525": 1, + "127543": 1, + "127568": 1, + "127572": 1, + "127574": 2, + "127579": 2, + "127584": 1, + "127585": 1, + "127590": 1, + "127592": 1, + "127607": 2, + "127611": 1, + "127689": 1, + "127719": 1, + "127743": 1, + "127748": 1, + "127749": 1, + "127750": 2, + "127751": 1, + "127821": 2, + "127828": 1, + "127830": 1, + "127837": 1, + "127840": 1, + "127872": 1, + "127879": 1, + "127881": 1, + "127884": 1, + "127887": 1, + "127892": 1, + "127917": 1, + "127924": 1, + "127928": 1, + "127929": 1, + "127931": 1, + "127936": 1, + "127958": 1, + "127963": 1, + "127979": 1, + "127980": 1, + "127984": 1, + "127986": 1, + "127987": 1, + "127988": 1, + "127993": 1, + "127996": 1, + "128000": 2, + "128012": 1, + "128016": 1, + "128017": 1, + "128019": 2, + "128021": 1, + "128022": 1, + "128023": 3, + "128024": 1, + "128026": 1, + "128059": 1, + "128062": 2, + "128063": 1, + "128064": 3, + "128065": 1, + "128066": 1, + "128067": 2, + "128070": 1, + "128101": 4, + "128102": 1, + "128103": 1, + "128138": 2, + "128140": 2, + "128142": 1, + "128144": 1, + "128148": 1, + "128152": 1, + "128153": 1, + "128154": 1, + "128159": 1, + "128162": 1, + "128163": 1, + "128177": 1, + "128218": 1, + "128224": 1, + "128225": 1, + "128227": 1, + "128230": 2, + "128232": 3, + "128233": 2, + "128235": 1, + "128237": 1, + "128238": 1, + "128239": 1, + "128240": 1, + "128265": 1, + "128269": 2, + "128273": 1, + "128290": 1, + "128368": 1, + "128426": 1, + "128477": 1, + "128478": 1, + "128479": 1, + "128484": 2, + "128515": 1, + "128519": 1, + "128523": 2, + "128525": 1, + "128526": 1, + "128590": 1, + "128599": 1, + "128600": 2, + "128601": 1, + "128610": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333833266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e404fa8ee7ec" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e404fa8e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_11.html b/autobahn/client/tungstenite_case_12_5_11.html new file mode 100644 index 0000000..361f024 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_11.html @@ -0,0 +1,1241 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.11 : Pass - 822 ms @ 2025-09-11T20:10:32.219Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=384&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: d45VO/3jaiDiYsC427dlaw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: h0GwLbWMqnI+JFgKEJZidL6CTR8=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
2851285
3251325
3472694
3521352
3581358
3661366
3711371
3841384
3851385
3861386
3932786
4021402
4101410
4121412
4141414
4201420
4271427
4351435
4521452
4861486
4891489
5041504
5421542
5471547
5481548
5491549
55021100
5511551
5541554
55821116
5591559
5641564
5691569
5701570
5721572
5741574
5761576
5901590
6091609
6161616
6381638
64521290
6531653
6661666
6671667
6691669
6771677
6811681
6851685
7031703
7141714
7251725
7531753
7571757
7821782
7931793
7981798
8241824
8261826
8361836
8431843
8461846
8511851
8521852
8571857
8641864
8751875
8791879
8871887
8881888
8921892
8971897
9021902
9041904
9081908
9121912
9161916
9181918
9201920
9251925
9381938
9451945
9551955
9651965
100311003
103811038
104611046
105611056
108911089
111611116
113111131
115411154
117711177
118011180
120911209
124011240
124411244
125111251
125711257
132811328
133011330
134211342
144511445
147311473
150811508
157711577
158611586
159011590
159611596
160511605
160711607
161211612
161311613
161446456
161511615
161711617
161911619
162123242
162211622
171311713
171811718
174211742
176911769
177911779
182111821
183311833
186911869
188811888
192411924
207412074
208312083
214312143
217912179
218312183
222112221
223312233
224512245
225424508
228924578
230812308
231112311
231412314
231512315
232012320
233012330
233812338
234312343
236112361
236312363
251412514
254112541
256812568
258212582
261812618
265812658
266412664
278812788
279112791
279512795
283012830
283912839
287912879
291612916
292712927
296712967
303113031
307913079
313713137
329713297
338413384
343713437
355713557
357013570
361113611
367013670
367413674
367913679
370813708
381413814
393413934
393713937
394913949
397913979
400214002
404114041
404914049
408314083
410914109
412314123
416614166
430114301
433914339
435114351
444214442
452414524
458314583
475014750
478214782
490314903
492614926
493914939
495814958
507615076
512015120
512415124
513315133
516015160
517215172
517315173
519415194
519615196
519915199
522215222
5238210476
524115241
524215242
527115271
532415324
532915329
533915339
534215342
537015370
539315393
5403210806
541015410
541715417
543115431
545815458
546015460
548315483
548415484
548515485
548615486
548915489
549115491
549715497
550215502
551715517
552115521
553315533
553715537
553915539
556415564
556615566
556815568
557015570
558015580
559415594
559515595
5602211204
560515605
561215612
561915619
562515625
562615626
563415634
563715637
564215642
564415644
564515645
564715647
565015650
565515655
567915679
568015680
569115691
569515695
570515705
570715707
571315713
572415724
572515725
572715727
573215732
573415734
574615746
574715747
575015750
575815758
576415764
576515765
577515775
578215782
578815788
579215792
579315793
579415794
580015800
581215812
581315813
581815818
582715827
5842211684
584315843
584515845
584915849
585815858
586115861
587515875
587815878
588315883
588415884
589015890
589715897
589815898
590415904
5914211828
591515915
591915919
592615926
592715927
592815928
593415934
593515935
594515945
595515955
596215962
597015970
597615976
598215982
598615986
599315993
599715997
601716017
602716027
604216042
607316073
608516085
608916089
6097212194
616016160
616916169
627916279
645416454
677216772
7005214010
720117201
723717237
725017250
732417324
732717327
734417344
738317383
746317463
747617476
747817478
748517485
749017490
749217492
751617516
755517555
756017560
756517565
756717567
757217572
757917579
758117581
758917589
759617596
759917599
760617606
761517615
761717617
7618215236
7622215244
762517625
762617626
762717627
763717637
7639215278
764117641
764917649
765217652
765417654
766117661
766317663
766417664
766717667
767217672
7673215346
767517675
767617676
768017680
768117681
768717687
769117691
7692215384
769717697
770217702
770317703
770417704
770717707
770817708
771017710
772217722
772417724
7725215450
772717727
772817728
773017730
773917739
774117741
7742215484
774417744
7747215494
774817748
775017750
775417754
7755215510
775617756
775817758
776517765
776717767
777317773
777917779
7780215560
7782215564
778317783
7793215586
779417794
7797215594
779917799
780017800
780217802
780317803
7804215608
7805431220
780617806
7807215614
7808215616
7809323427
7810215620
781217812
781317813
7814323442
7815323445
7818323454
781917819
7821215642
782217822
7824431296
7825323475
7826431304
7827215654
782817828
7829323487
783117831
7833323499
7834215668
783517835
7836323508
783917839
7840431360
7841215682
7842647052
7843215686
7844431376
7845215690
7846323538
7847323541
7848647088
7849323547
7850323550
7851323553
7852215704
7853431412
7855215710
7856431424
7857323571
7858215716
785917859
7861431444
7862215724
7863215726
786417864
7865431460
7867215734
786817868
786917869
7870215740
7871215742
787217872
787317873
7876215752
7878215756
7879323637
7880215760
7881539405
7882431528
788417884
7886215772
788717887
7888215776
7889215778
7890215780
789117891
7892539460
7893215786
7894215788
7896215792
789917899
7900323700
790317903
7905215810
7913431652
7915215830
7916431664
791717917
791817918
7919215838
7920323760
792117921
7922323766
7923215846
792417924
792517925
7926215852
792717927
7928215856
7931323793
7934215868
7936215872
7940539700
794117941
7942215884
794517945
7946323838
7948323844
7949323847
7950323850
795217952
795317953
795417954
795517955
7956215912
795817958
795917959
7960215920
7961431844
7962215924
796417964
7965323895
796617966
796717967
796817968
7969215938
7971215942
797217972
797317973
797417974
797517975
797717977
797817978
7981215962
7982215964
7983431932
798417984
7985215970
798617986
798717987
798817988
798917989
799117991
799217992
799317993
799917999
8000216000
8001216002
800318003
8004324012
8006216012
800918009
8010216020
8011216022
8013324039
8015216030
8016540080
8017324051
8018216036
801918019
802018020
802218022
8024540120
802518025
802618026
8029324087
803118031
8032216064
8033324099
8034324102
803518035
8036216072
8038432152
8039432156
8040216080
8041324123
8042216084
8043432172
8044216088
804518045
8046216092
8047324141
8048648288
8049540245
805018050
8051432204
805218052
8053216106
8054216108
8055540275
8056216112
805718057
8058324174
8059216118
806018060
806218062
806318063
806518065
806618066
8067216134
806818068
806918069
807018070
8071432284
8072324216
807318073
8075324225
8076216152
807718077
808018080
808118081
8083216166
8085324255
808618086
808718087
809018090
8091432364
809218092
8097216194
8098324294
809918099
810018100
8101216202
810218102
8103216206
8108324324
8109216218
8110324330
811218112
811318113
8114324342
811518115
811618116
811718117
8119324357
812018120
812118121
812218122
8124216248
8125216250
8126216252
812718127
8128216256
813018130
8132324396
813318133
8135216270
813818138
813918139
8140216280
814118141
8142216284
8143216286
814418144
8145216290
814718147
8148216296
8149216298
815218152
815618156
8157216314
816318163
816618166
816818168
816918169
817018170
817318173
817418174
818518185
818618186
818818188
819018190
8204216408
8206757442
Total10026296261
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
4728
5210
6636
7642
813104
919
10440
11333
12224
13113
14228
16464
17468
18354
196114
206120
216126
22244
235115
24496
25250
26252
27381
28256
294116
30260
31262
324128
336198
34268
354140
363108
38138
394156
405200
418328
424168
43286
444176
45145
464184
47294
483144
49298
503150
514204
523156
533159
542108
552110
565280
573171
584232
594236
60160
614244
626372
633189
644256
65165
672134
685340
697483
703210
715355
727504
734292
745370
755375
765380
773231
783234
793237
803240
81181
826492
832166
843252
852170
863258
877609
883264
894356
905450
915455
925460
932186
946564
969864
975485
984392
994396
1002200
1017707
1023306
1035515
1044416
1055525
1066636
1078856
1083324
1097763
1102220
1114444
1125560
1137791
1144456
1153345
1165580
1173351
1185590
1194476
1205600
1213363
1223366
1237861
1245620
1254500
1264504
1275635
1305650
13191179
1325660
1333399
1343402
1356810
1363408
1376822
1382276
1392278
1406840
1415705
1425710
1434572
1443432
1456870
1463438
1474588
1481148
1494596
1506900
15171057
15281216
1534612
1541154
1552310
1565780
1576942
158111738
1594636
1606960
16171127
1624648
1635815
16471148
1654660
1664664
1674668
16871176
16981352
1704680
1713513
17261032
17361038
1745870
1753525
1762352
17761062
1784712
1795895
1802360
18181448
1822364
1833549
1844736
1853555
1865930
1875935
1884752
1893567
1904760
1911191
19261152
1934772
1944776
1955975
1962392
19781576
19871386
1992398
20051000
2012402
20271414
2033609
2043612
20581640
20651030
2073621
20881664
20971463
2102420
2114844
2124848
2132426
2141214
2153645
21651080
2172434
2181218
2191219
2214884
2223666
2232446
2243672
2253675
2264904
2272454
2281228
22981832
2301230
2314924
23251160
2334932
2342468
2353705
2364944
2374948
2384952
23981912
2401240
2412482
2423726
2431243
2444976
2454980
2463738
24751235
2483744
2503750
2511251
25251260
2531253
2542508
25671792
2572514
2582516
25951295
260240656256900
Total250676387540
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
024065
21000
81
Total25066
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333834266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882dc16e2e1dffe
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6463313665326531
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_11.json b/autobahn/client/tungstenite_case_12_5_11.json new file mode 100644 index 0000000..5e59258 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_11.json @@ -0,0 +1,1088 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 384, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 822, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=384&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: d45VO/3jaiDiYsC427dlaw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: h0GwLbWMqnI+JFgKEJZidL6CTR8=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "285": 1, + "325": 1, + "347": 2, + "352": 1, + "358": 1, + "366": 1, + "371": 1, + "384": 1, + "385": 1, + "386": 1, + "393": 2, + "402": 1, + "410": 1, + "412": 1, + "414": 1, + "420": 1, + "427": 1, + "435": 1, + "452": 1, + "486": 1, + "489": 1, + "504": 1, + "542": 1, + "547": 1, + "548": 1, + "549": 1, + "550": 2, + "551": 1, + "554": 1, + "558": 2, + "559": 1, + "564": 1, + "569": 1, + "570": 1, + "572": 1, + "574": 1, + "576": 1, + "590": 1, + "609": 1, + "616": 1, + "638": 1, + "645": 2, + "653": 1, + "666": 1, + "667": 1, + "669": 1, + "677": 1, + "681": 1, + "685": 1, + "703": 1, + "714": 1, + "725": 1, + "753": 1, + "757": 1, + "782": 1, + "793": 1, + "798": 1, + "824": 1, + "826": 1, + "836": 1, + "843": 1, + "846": 1, + "851": 1, + "852": 1, + "857": 1, + "864": 1, + "875": 1, + "879": 1, + "887": 1, + "888": 1, + "892": 1, + "897": 1, + "902": 1, + "904": 1, + "908": 1, + "912": 1, + "916": 1, + "918": 1, + "920": 1, + "925": 1, + "938": 1, + "945": 1, + "955": 1, + "965": 1, + "1003": 1, + "1038": 1, + "1046": 1, + "1056": 1, + "1089": 1, + "1116": 1, + "1131": 1, + "1154": 1, + "1177": 1, + "1180": 1, + "1209": 1, + "1240": 1, + "1244": 1, + "1251": 1, + "1257": 1, + "1328": 1, + "1330": 1, + "1342": 1, + "1445": 1, + "1473": 1, + "1508": 1, + "1577": 1, + "1586": 1, + "1590": 1, + "1596": 1, + "1605": 1, + "1607": 1, + "1612": 1, + "1613": 1, + "1614": 4, + "1615": 1, + "1617": 1, + "1619": 1, + "1621": 2, + "1622": 1, + "1713": 1, + "1718": 1, + "1742": 1, + "1769": 1, + "1779": 1, + "1821": 1, + "1833": 1, + "1869": 1, + "1888": 1, + "1924": 1, + "2074": 1, + "2083": 1, + "2143": 1, + "2179": 1, + "2183": 1, + "2221": 1, + "2233": 1, + "2245": 1, + "2254": 2, + "2289": 2, + "2308": 1, + "2311": 1, + "2314": 1, + "2315": 1, + "2320": 1, + "2330": 1, + "2338": 1, + "2343": 1, + "2361": 1, + "2363": 1, + "2514": 1, + "2541": 1, + "2568": 1, + "2582": 1, + "2618": 1, + "2658": 1, + "2664": 1, + "2788": 1, + "2791": 1, + "2795": 1, + "2830": 1, + "2839": 1, + "2879": 1, + "2916": 1, + "2927": 1, + "2967": 1, + "3031": 1, + "3079": 1, + "3137": 1, + "3297": 1, + "3384": 1, + "3437": 1, + "3557": 1, + "3570": 1, + "3611": 1, + "3670": 1, + "3674": 1, + "3679": 1, + "3708": 1, + "3814": 1, + "3934": 1, + "3937": 1, + "3949": 1, + "3979": 1, + "4002": 1, + "4041": 1, + "4049": 1, + "4083": 1, + "4109": 1, + "4123": 1, + "4166": 1, + "4301": 1, + "4339": 1, + "4351": 1, + "4442": 1, + "4524": 1, + "4583": 1, + "4750": 1, + "4782": 1, + "4903": 1, + "4926": 1, + "4939": 1, + "4958": 1, + "5076": 1, + "5120": 1, + "5124": 1, + "5133": 1, + "5160": 1, + "5172": 1, + "5173": 1, + "5194": 1, + "5196": 1, + "5199": 1, + "5222": 1, + "5238": 2, + "5241": 1, + "5242": 1, + "5271": 1, + "5324": 1, + "5329": 1, + "5339": 1, + "5342": 1, + "5370": 1, + "5393": 1, + "5403": 2, + "5410": 1, + "5417": 1, + "5431": 1, + "5458": 1, + "5460": 1, + "5483": 1, + "5484": 1, + "5485": 1, + "5486": 1, + "5489": 1, + "5491": 1, + "5497": 1, + "5502": 1, + "5517": 1, + "5521": 1, + "5533": 1, + "5537": 1, + "5539": 1, + "5564": 1, + "5566": 1, + "5568": 1, + "5570": 1, + "5580": 1, + "5594": 1, + "5595": 1, + "5602": 2, + "5605": 1, + "5612": 1, + "5619": 1, + "5625": 1, + "5626": 1, + "5634": 1, + "5637": 1, + "5642": 1, + "5644": 1, + "5645": 1, + "5647": 1, + "5650": 1, + "5655": 1, + "5679": 1, + "5680": 1, + "5691": 1, + "5695": 1, + "5705": 1, + "5707": 1, + "5713": 1, + "5724": 1, + "5725": 1, + "5727": 1, + "5732": 1, + "5734": 1, + "5746": 1, + "5747": 1, + "5750": 1, + "5758": 1, + "5764": 1, + "5765": 1, + "5775": 1, + "5782": 1, + "5788": 1, + "5792": 1, + "5793": 1, + "5794": 1, + "5800": 1, + "5812": 1, + "5813": 1, + "5818": 1, + "5827": 1, + "5842": 2, + "5843": 1, + "5845": 1, + "5849": 1, + "5858": 1, + "5861": 1, + "5875": 1, + "5878": 1, + "5883": 1, + "5884": 1, + "5890": 1, + "5897": 1, + "5898": 1, + "5904": 1, + "5914": 2, + "5915": 1, + "5919": 1, + "5926": 1, + "5927": 1, + "5928": 1, + "5934": 1, + "5935": 1, + "5945": 1, + "5955": 1, + "5962": 1, + "5970": 1, + "5976": 1, + "5982": 1, + "5986": 1, + "5993": 1, + "5997": 1, + "6017": 1, + "6027": 1, + "6042": 1, + "6073": 1, + "6085": 1, + "6089": 1, + "6097": 2, + "6160": 1, + "6169": 1, + "6279": 1, + "6454": 1, + "6772": 1, + "7005": 2, + "7201": 1, + "7237": 1, + "7250": 1, + "7324": 1, + "7327": 1, + "7344": 1, + "7383": 1, + "7463": 1, + "7476": 1, + "7478": 1, + "7485": 1, + "7490": 1, + "7492": 1, + "7516": 1, + "7555": 1, + "7560": 1, + "7565": 1, + "7567": 1, + "7572": 1, + "7579": 1, + "7581": 1, + "7589": 1, + "7596": 1, + "7599": 1, + "7606": 1, + "7615": 1, + "7617": 1, + "7618": 2, + "7622": 2, + "7625": 1, + "7626": 1, + "7627": 1, + "7637": 1, + "7639": 2, + "7641": 1, + "7649": 1, + "7652": 1, + "7654": 1, + "7661": 1, + "7663": 1, + "7664": 1, + "7667": 1, + "7672": 1, + "7673": 2, + "7675": 1, + "7676": 1, + "7680": 1, + "7681": 1, + "7687": 1, + "7691": 1, + "7692": 2, + "7697": 1, + "7702": 1, + "7703": 1, + "7704": 1, + "7707": 1, + "7708": 1, + "7710": 1, + "7722": 1, + "7724": 1, + "7725": 2, + "7727": 1, + "7728": 1, + "7730": 1, + "7739": 1, + "7741": 1, + "7742": 2, + "7744": 1, + "7747": 2, + "7748": 1, + "7750": 1, + "7754": 1, + "7755": 2, + "7756": 1, + "7758": 1, + "7765": 1, + "7767": 1, + "7773": 1, + "7779": 1, + "7780": 2, + "7782": 2, + "7783": 1, + "7793": 2, + "7794": 1, + "7797": 2, + "7799": 1, + "7800": 1, + "7802": 1, + "7803": 1, + "7804": 2, + "7805": 4, + "7806": 1, + "7807": 2, + "7808": 2, + "7809": 3, + "7810": 2, + "7812": 1, + "7813": 1, + "7814": 3, + "7815": 3, + "7818": 3, + "7819": 1, + "7821": 2, + "7822": 1, + "7824": 4, + "7825": 3, + "7826": 4, + "7827": 2, + "7828": 1, + "7829": 3, + "7831": 1, + "7833": 3, + "7834": 2, + "7835": 1, + "7836": 3, + "7839": 1, + "7840": 4, + "7841": 2, + "7842": 6, + "7843": 2, + "7844": 4, + "7845": 2, + "7846": 3, + "7847": 3, + "7848": 6, + "7849": 3, + "7850": 3, + "7851": 3, + "7852": 2, + "7853": 4, + "7855": 2, + "7856": 4, + "7857": 3, + "7858": 2, + "7859": 1, + "7861": 4, + "7862": 2, + "7863": 2, + "7864": 1, + "7865": 4, + "7867": 2, + "7868": 1, + "7869": 1, + "7870": 2, + "7871": 2, + "7872": 1, + "7873": 1, + "7876": 2, + "7878": 2, + "7879": 3, + "7880": 2, + "7881": 5, + "7882": 4, + "7884": 1, + "7886": 2, + "7887": 1, + "7888": 2, + "7889": 2, + "7890": 2, + "7891": 1, + "7892": 5, + "7893": 2, + "7894": 2, + "7896": 2, + "7899": 1, + "7900": 3, + "7903": 1, + "7905": 2, + "7913": 4, + "7915": 2, + "7916": 4, + "7917": 1, + "7918": 1, + "7919": 2, + "7920": 3, + "7921": 1, + "7922": 3, + "7923": 2, + "7924": 1, + "7925": 1, + "7926": 2, + "7927": 1, + "7928": 2, + "7931": 3, + "7934": 2, + "7936": 2, + "7940": 5, + "7941": 1, + "7942": 2, + "7945": 1, + "7946": 3, + "7948": 3, + "7949": 3, + "7950": 3, + "7952": 1, + "7953": 1, + "7954": 1, + "7955": 1, + "7956": 2, + "7958": 1, + "7959": 1, + "7960": 2, + "7961": 4, + "7962": 2, + "7964": 1, + "7965": 3, + "7966": 1, + "7967": 1, + "7968": 1, + "7969": 2, + "7971": 2, + "7972": 1, + "7973": 1, + "7974": 1, + "7975": 1, + "7977": 1, + "7978": 1, + "7981": 2, + "7982": 2, + "7983": 4, + "7984": 1, + "7985": 2, + "7986": 1, + "7987": 1, + "7988": 1, + "7989": 1, + "7991": 1, + "7992": 1, + "7993": 1, + "7999": 1, + "8000": 2, + "8001": 2, + "8003": 1, + "8004": 3, + "8006": 2, + "8009": 1, + "8010": 2, + "8011": 2, + "8013": 3, + "8015": 2, + "8016": 5, + "8017": 3, + "8018": 2, + "8019": 1, + "8020": 1, + "8022": 1, + "8024": 5, + "8025": 1, + "8026": 1, + "8029": 3, + "8031": 1, + "8032": 2, + "8033": 3, + "8034": 3, + "8035": 1, + "8036": 2, + "8038": 4, + "8039": 4, + "8040": 2, + "8041": 3, + "8042": 2, + "8043": 4, + "8044": 2, + "8045": 1, + "8046": 2, + "8047": 3, + "8048": 6, + "8049": 5, + "8050": 1, + "8051": 4, + "8052": 1, + "8053": 2, + "8054": 2, + "8055": 5, + "8056": 2, + "8057": 1, + "8058": 3, + "8059": 2, + "8060": 1, + "8062": 1, + "8063": 1, + "8065": 1, + "8066": 1, + "8067": 2, + "8068": 1, + "8069": 1, + "8070": 1, + "8071": 4, + "8072": 3, + "8073": 1, + "8075": 3, + "8076": 2, + "8077": 1, + "8080": 1, + "8081": 1, + "8083": 2, + "8085": 3, + "8086": 1, + "8087": 1, + "8090": 1, + "8091": 4, + "8092": 1, + "8097": 2, + "8098": 3, + "8099": 1, + "8100": 1, + "8101": 2, + "8102": 1, + "8103": 2, + "8108": 3, + "8109": 2, + "8110": 3, + "8112": 1, + "8113": 1, + "8114": 3, + "8115": 1, + "8116": 1, + "8117": 1, + "8119": 3, + "8120": 1, + "8121": 1, + "8122": 1, + "8124": 2, + "8125": 2, + "8126": 2, + "8127": 1, + "8128": 2, + "8130": 1, + "8132": 3, + "8133": 1, + "8135": 2, + "8138": 1, + "8139": 1, + "8140": 2, + "8141": 1, + "8142": 2, + "8143": 2, + "8144": 1, + "8145": 2, + "8147": 1, + "8148": 2, + "8149": 2, + "8152": 1, + "8156": 1, + "8157": 2, + "8163": 1, + "8166": 1, + "8168": 1, + "8169": 1, + "8170": 1, + "8173": 1, + "8174": 1, + "8185": 1, + "8186": 1, + "8188": 1, + "8190": 1, + "8204": 2, + "8206": 7 + }, + "started": "2025-09-11T20:10:32.219Z", + "trafficStats": { + "incomingCompressionRatio": 0.76757763671875, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 6287996, + "incomingOctetsWireLevel": 6295996, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0012722654403724176, + "outgoingCompressionRatio": 0.767576416015625, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 6287986, + "outgoingOctetsWireLevel": 6387284, + "outgoingWebSocketFrames": 25065, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015791701826308138, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 24065, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 7, + "5": 2, + "6": 6, + "7": 6, + "8": 13, + "9": 1, + "10": 4, + "11": 3, + "12": 2, + "13": 1, + "14": 2, + "16": 4, + "17": 4, + "18": 3, + "19": 6, + "20": 6, + "21": 6, + "22": 2, + "23": 5, + "24": 4, + "25": 2, + "26": 2, + "27": 3, + "28": 2, + "29": 4, + "30": 2, + "31": 2, + "32": 4, + "33": 6, + "34": 2, + "35": 4, + "36": 3, + "38": 1, + "39": 4, + "40": 5, + "41": 8, + "42": 4, + "43": 2, + "44": 4, + "45": 1, + "46": 4, + "47": 2, + "48": 3, + "49": 2, + "50": 3, + "51": 4, + "52": 3, + "53": 3, + "54": 2, + "55": 2, + "56": 5, + "57": 3, + "58": 4, + "59": 4, + "60": 1, + "61": 4, + "62": 6, + "63": 3, + "64": 4, + "65": 1, + "67": 2, + "68": 5, + "69": 7, + "70": 3, + "71": 5, + "72": 7, + "73": 4, + "74": 5, + "75": 5, + "76": 5, + "77": 3, + "78": 3, + "79": 3, + "80": 3, + "81": 1, + "82": 6, + "83": 2, + "84": 3, + "85": 2, + "86": 3, + "87": 7, + "88": 3, + "89": 4, + "90": 5, + "91": 5, + "92": 5, + "93": 2, + "94": 6, + "96": 9, + "97": 5, + "98": 4, + "99": 4, + "100": 2, + "101": 7, + "102": 3, + "103": 5, + "104": 4, + "105": 5, + "106": 6, + "107": 8, + "108": 3, + "109": 7, + "110": 2, + "111": 4, + "112": 5, + "113": 7, + "114": 4, + "115": 3, + "116": 5, + "117": 3, + "118": 5, + "119": 4, + "120": 5, + "121": 3, + "122": 3, + "123": 7, + "124": 5, + "125": 4, + "126": 4, + "127": 5, + "130": 5, + "131": 9, + "132": 5, + "133": 3, + "134": 3, + "135": 6, + "136": 3, + "137": 6, + "138": 2, + "139": 2, + "140": 6, + "141": 5, + "142": 5, + "143": 4, + "144": 3, + "145": 6, + "146": 3, + "147": 4, + "148": 1, + "149": 4, + "150": 6, + "151": 7, + "152": 8, + "153": 4, + "154": 1, + "155": 2, + "156": 5, + "157": 6, + "158": 11, + "159": 4, + "160": 6, + "161": 7, + "162": 4, + "163": 5, + "164": 7, + "165": 4, + "166": 4, + "167": 4, + "168": 7, + "169": 8, + "170": 4, + "171": 3, + "172": 6, + "173": 6, + "174": 5, + "175": 3, + "176": 2, + "177": 6, + "178": 4, + "179": 5, + "180": 2, + "181": 8, + "182": 2, + "183": 3, + "184": 4, + "185": 3, + "186": 5, + "187": 5, + "188": 4, + "189": 3, + "190": 4, + "191": 1, + "192": 6, + "193": 4, + "194": 4, + "195": 5, + "196": 2, + "197": 8, + "198": 7, + "199": 2, + "200": 5, + "201": 2, + "202": 7, + "203": 3, + "204": 3, + "205": 8, + "206": 5, + "207": 3, + "208": 8, + "209": 7, + "210": 2, + "211": 4, + "212": 4, + "213": 2, + "214": 1, + "215": 3, + "216": 5, + "217": 2, + "218": 1, + "219": 1, + "221": 4, + "222": 3, + "223": 2, + "224": 3, + "225": 3, + "226": 4, + "227": 2, + "228": 1, + "229": 8, + "230": 1, + "231": 4, + "232": 5, + "233": 4, + "234": 2, + "235": 3, + "236": 4, + "237": 4, + "238": 4, + "239": 8, + "240": 1, + "241": 2, + "242": 3, + "243": 1, + "244": 4, + "245": 4, + "246": 3, + "247": 5, + "248": 3, + "250": 3, + "251": 1, + "252": 5, + "253": 1, + "254": 2, + "256": 7, + "257": 2, + "258": 2, + "259": 5, + "260": 24065 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333834266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882dc16e2e1dffe" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "dc16e2e1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_12.html b/autobahn/client/tungstenite_case_12_5_12.html new file mode 100644 index 0000000..da73f0c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_12.html @@ -0,0 +1,1336 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.12 : Pass - 1817 ms @ 2025-09-11T20:10:33.043Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=385&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: cDqZsYh1cCHaLuw1g8Vy0w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Rq4n6jjXK/RHA4Ta7qf3FZHd4wE=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
6961696
7171717
7191719
7491749
7671767
7711771
7881788
8861886
9931993
109111091
109311093
110611106
111211112
111311113
112911129
116111161
120911209
122811228
126211262
127111271
130911309
132611326
133511335
135722714
136411364
137111371
137211372
138611386
138711387
139211392
139611396
140011400
140111401
141411414
142211422
144111441
144311443
145911459
147611476
148511485
149211492
149311493
150711507
150811508
151511515
153511535
153811538
154811548
154911549
156111561
156311563
156511565
157311573
157511575
158211582
158911589
159911599
160211602
161111611
161511615
162311623
163111631
163711637
165711657
169911699
172411724
173011730
175511755
178511785
180711807
184311843
191311913
195611956
195811958
204112041
205212052
210612106
217012170
218512185
220912209
221212212
229612296
234012340
236312363
238412384
239412394
252612526
257112571
260112601
262912629
265712657
267812678
269912699
273412734
286612866
288712887
289612896
289812898
293312933
297512975
300013000
308013080
308513085
309613096
311013110
318513185
318813188
319013190
320013200
320713207
321013210
321313213
321613216
323313233
323713237
326613266
328713287
328813288
333213332
335713357
338513385
344813448
348413484
348813488
352313523
356613566
363913639
367013670
371413714
383813838
393313933
397413974
401814018
404414044
409414094
413814138
420114201
420214202
420914209
422514225
428214282
428314283
432614326
434914349
435414354
435614356
436414364
441714417
445614456
445814458
446314463
448214482
449414494
451414514
453614536
459414594
464814648
473814738
476614766
477614776
482714827
490314903
500715007
505015050
508115081
508815088
526615266
538715387
539215392
544415444
555115551
562315623
573515735
573915739
577115771
583515835
605116051
611716117
617016170
635316353
640816408
643316433
643516435
652516525
656216562
699316993
7169214338
732617326
738317383
741517415
780017800
782117821
784317843
790717907
832918329
837318373
844618446
861118611
863518635
869518695
884318843
891818918
902719027
912519125
919719197
920219202
922819228
925119251
926119261
929519295
932519325
944719447
946519465
951919519
957619576
961419614
971219712
974319743
999419994
10013110013
10021110021
10212110212
10227110227
10228110228
10264110264
10408110408
10438110438
10445110445
10474110474
10480110480
10487110487
10507110507
10513110513
10548110548
10554110554
10561110561
10582110582
10596110596
10600110600
10679110679
10684110684
10697110697
10711110711
10717110717
10768110768
10771110771
10786110786
10791110791
10793110793
10803110803
10807110807
10821110821
10823110823
10843110843
10850110850
10858110858
10862110862
10873110873
10897110897
10902110902
10920221840
10921110921
10924110924
10933221866
10941221882
10943110943
10978110978
10985110985
10987110987
11002111002
11019111019
11028111028
11030111030
11035111035
11053222106
11055111055
11069111069
11070111070
11072111072
11074111074
11088111088
11111111111
11124111124
11177111177
11209111209
11210111210
11223111223
11226111226
11265111265
11307111307
11316111316
11321111321
11326111326
11334111334
11341111341
11358111358
11360111360
11371111371
11376111376
11378111378
11390111390
11402111402
11417111417
11422111422
11425111425
11426111426
11430111430
11433111433
11461111461
11465111465
11469111469
11492111492
11499111499
11510111510
11511111511
11535111535
11546111546
11553111553
11556111556
11565111565
11588111588
11590111590
11594111594
11595111595
11596223192
11597111597
11623111623
11647111647
11660111660
11664111664
11666111666
11684111684
11687111687
11689111689
11691111691
11698111698
11712111712
11760111760
11791111791
11806111806
11814111814
11819111819
11859111859
11867111867
11898111898
11952111952
12013112013
12402112402
12993112993
13250113250
13727113727
13996113996
14334114334
14627114627
14791114791
14855114855
14888114888
14936114936
14940114940
14976114976
14981229962
15052115052
15068115068
15069115069
15074115074
15094115094
15100115100
15103115103
15117115117
15165115165
15174115174
15195230390
15231115231
15232115232
15322115322
15346230692
15362115362
15364115364
15367115367
15370115370
15371230742
15372230744
15373115373
15374115374
15375115375
15377115377
15378115378
15379230758
15382115382
15384115384
15387115387
15395115395
15451115451
15464115464
15467115467
15468115468
15469230938
15476230952
15482115482
15489115489
15493115493
15494115494
15495115495
15498115498
15500115500
15506231012
15510115510
15511231022
15512115512
15513115513
15523115523
15524115524
15530115530
15531115531
15533115533
15534115534
15539115539
15543115543
15544115544
15547346641
15550231100
15551115551
15553115553
15554115554
15559115559
15562115562
15563115563
15564115564
15565115565
15566115566
15567115567
15571231142
15572231144
15575115575
15576115576
15578346734
15579115579
15580346740
15584115584
15585231170
15586115586
15587577935
15588115588
15589346767
15590346770
15593115593
15597231194
15598462392
15599346797
15600231200
15602115602
15603346809
15604115604
15605346815
15607115607
15608231216
15609115609
156107109270
15612346836
15613115613
15614231228
15615115615
15616115616
15618115618
15621231242
15622231244
15624115624
15629115629
15630231260
15631115631
15633115633
15639115639
15640115640
15642115642
15644231288
15648115648
15650346950
15651231302
15652231304
15653115653
15656115656
15659115659
15660231320
15664115664
15665346995
15666115666
15668115668
15670347010
15671115671
15672115672
15673231346
15675115675
15677115677
15678115678
15679115679
15680231360
15682115682
15684347052
15685115685
15686231372
15687231374
15688115688
15696115696
15699115699
15703115703
15705115705
15706231412
15709115709
15713115713
15714347142
15717115717
15720115720
15721115721
15722462888
15724347172
15725231450
15728231456
15730115730
15731347193
15733115733
15734347202
15735115735
15736347208
15737115737
15738115738
15745231490
15747115747
15748347244
15751115751
15752463008
15754115754
15756231512
15757115757
15758115758
15759115759
15761115761
15762115762
15763115763
15764115764
15765115765
15766115766
15768115768
15769115769
15770115770
15771115771
15772115772
15773115773
15774231548
15775115775
15776115776
15778115778
15779347337
15780115780
15782115782
15783115783
15786115786
15787115787
15788231576
15789115789
15790231580
15793115793
15794347382
15796231592
15798115798
15799115799
15800115800
15803115803
15804463216
15805579025
15806347418
15807463228
15808115808
15809231618
15810347430
15811115811
15812115812
15814347442
15815694890
15816231632
15817579085
15819231638
15820115820
15821347463
15822231644
15823115823
15824231648
15827115827
15828231656
15829231658
15835231670
15836115836
15837115837
15838115838
15839115839
15840231680
15842115842
15843231686
15845347535
15846115846
15847115847
15848347544
15850231700
15851231702
15853231706
15854115854
15855115855
15856231712
15858347574
15859115859
15860231720
15861231722
15862231724
15863231726
15864231728
15865463460
15866231732
15867115867
15868231736
15869231738
15870347610
15871231742
15873231746
15874115874
15875231750
15876115876
15882115882
15883115883
15884115884
15886115886
15887231774
15894115894
15899115899
15901231802
15902231804
15904115904
15907115907
15911115911
15912115912
15913115913
15914115914
15915231830
15917115917
15919231838
15920231840
15922115922
15924115924
15928115928
15935115935
15936115936
15938115938
15939115939
15940115940
15942115942
15944231888
15948115948
15949115949
15950115950
15954115954
15956115956
15957115957
15958115958
15959115959
15963115963
15969115969
15973231946
15974115974
15982115982
15983231966
15987231974
15989115989
15991231982
15993115993
15994115994
15995115995
15996231992
15998115998
15999115999
16001116001
16002116002
16004116004
16006116006
16008116008
16009116009
16010116010
16012348036
16014348042
16015116015
16016116016
16019116019
16020116020
16032232064
16034116034
16036232072
16038232076
16039116039
16041232082
16043116043
16045116045
16046232092
16047116047
16048116048
16049116049
16051116051
16052232104
16054232108
16057348171
16058116058
16060232120
16061232122
16063116063
16066232132
16067232134
16068116068
16069116069
16070116070
16071116071
16072348216
16073116073
16074116074
16076232152
16077116077
16079116079
16080116080
16082232164
16083232166
16085116085
16086116086
16089348267
16093116093
16095116095
16098232196
16109116109
16110232220
16111116111
16112116112
16113116113
16114232228
16115348345
16116232232
16117116117
16118116118
16119116119
16120116120
16121116121
16122116122
16123116123
16125116125
16126116126
16130116130
16131116131
16137116137
16139116139
16140232280
16141116141
16142116142
16143116143
16147116147
16149116149
16150116150
16156232312
16163116163
16166116166
16168116168
16170116170
16171116171
16172116172
16179116179
16182116182
16184232368
16188116188
16191116191
16192116192
16193116193
16194116194
16198116198
16200116200
16216116216
16233116233
16240116240
16242116242
16270116270
16295116295
16324116324
16326116326
16330116330
16332116332
Total100212511895
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
236
313
4416
5840
6848
7642
8540
9981
10220
11333
12112
13452
14228
15115
16464
17117
18472
19119
20360
21484
22488
236138
24372
26252
27254
284112
298232
304120
31393
32396
334132
345170
353105
363108
376222
383114
395195
40280
414164
423126
433129
443132
453135
464184
47147
484192
494196
504200
514204
522104
532106
54154
553165
563168
574228
585290
593177
605300
613183
626372
634252
647448
654260
664264
68168
692138
703210
715355
72172
732146
744296
75175
763228
772154
782156
79179
803240
813243
823246
832166
843252
857595
862172
872174
88188
89189
90190
913273
924368
94194
954380
96196
973291
985490
994396
1008800
1014404
1024408
1035515
1042208
1053315
1065530
1072214
1084432
1095545
1105550
1113333
1126672
1133339
1146684
1156690
1165580
1171117
1182236
1191119
1202240
1213363
1223366
1235615
1244496
1251125
1264504
1273381
1304520
1313393
1325660
1334532
1345670
1353405
1367952
1373411
13881104
1393417
1403420
1412282
1425710
1432286
1442288
1451145
1463438
1472294
1482296
1493447
1501150
1511151
1522304
1531153
1545770
1553465
1564624
1574628
1585790
15991431
16071120
1612322
1625810
1634652
1644656
1656990
1662332
1674668
1684672
1693507
17061020
1712342
1722344
1732346
1745870
1753525
1764704
1773531
1783534
1793537
1805900
1814724
1823546
18361098
18481472
18591665
1865930
18771309
1882376
1894756
19091710
1914764
1924768
1932386
19461164
19591755
1965980
19791773
1984792
1994796
20081600
20191809
2023606
2034812
2043612
2051205
2062412
20751035
20851040
2094836
2102420
21151055
2122424
2134852
21451070
21551075
21651080
2174868
2182436
2192438
2204880
2213663
22261332
22392007
2244896
22571575
22651130
2272454
2283684
2292458
2303690
23151155
23381864
23492106
23551175
23681888
2371237
238102380
23981912
24061440
24161446
24251210
243102430
24461464
24592205
246112706
2472494
24861488
24951245
250102500
25161506
2522504
25351265
25461524
25541020
25651280
2572514
2582516
2592518
2604830012558000
Total4930212700244
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
048300
21000
81
Total49301
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333835266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820989a5e20a61
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3039383961356532
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_12.json b/autobahn/client/tungstenite_case_12_5_12.json new file mode 100644 index 0000000..7d28f65 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_12.json @@ -0,0 +1,1183 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 385, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1817, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=385&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: cDqZsYh1cCHaLuw1g8Vy0w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Rq4n6jjXK/RHA4Ta7qf3FZHd4wE=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "696": 1, + "717": 1, + "719": 1, + "749": 1, + "767": 1, + "771": 1, + "788": 1, + "886": 1, + "993": 1, + "1091": 1, + "1093": 1, + "1106": 1, + "1112": 1, + "1113": 1, + "1129": 1, + "1161": 1, + "1209": 1, + "1228": 1, + "1262": 1, + "1271": 1, + "1309": 1, + "1326": 1, + "1335": 1, + "1357": 2, + "1364": 1, + "1371": 1, + "1372": 1, + "1386": 1, + "1387": 1, + "1392": 1, + "1396": 1, + "1400": 1, + "1401": 1, + "1414": 1, + "1422": 1, + "1441": 1, + "1443": 1, + "1459": 1, + "1476": 1, + "1485": 1, + "1492": 1, + "1493": 1, + "1507": 1, + "1508": 1, + "1515": 1, + "1535": 1, + "1538": 1, + "1548": 1, + "1549": 1, + "1561": 1, + "1563": 1, + "1565": 1, + "1573": 1, + "1575": 1, + "1582": 1, + "1589": 1, + "1599": 1, + "1602": 1, + "1611": 1, + "1615": 1, + "1623": 1, + "1631": 1, + "1637": 1, + "1657": 1, + "1699": 1, + "1724": 1, + "1730": 1, + "1755": 1, + "1785": 1, + "1807": 1, + "1843": 1, + "1913": 1, + "1956": 1, + "1958": 1, + "2041": 1, + "2052": 1, + "2106": 1, + "2170": 1, + "2185": 1, + "2209": 1, + "2212": 1, + "2296": 1, + "2340": 1, + "2363": 1, + "2384": 1, + "2394": 1, + "2526": 1, + "2571": 1, + "2601": 1, + "2629": 1, + "2657": 1, + "2678": 1, + "2699": 1, + "2734": 1, + "2866": 1, + "2887": 1, + "2896": 1, + "2898": 1, + "2933": 1, + "2975": 1, + "3000": 1, + "3080": 1, + "3085": 1, + "3096": 1, + "3110": 1, + "3185": 1, + "3188": 1, + "3190": 1, + "3200": 1, + "3207": 1, + "3210": 1, + "3213": 1, + "3216": 1, + "3233": 1, + "3237": 1, + "3266": 1, + "3287": 1, + "3288": 1, + "3332": 1, + "3357": 1, + "3385": 1, + "3448": 1, + "3484": 1, + "3488": 1, + "3523": 1, + "3566": 1, + "3639": 1, + "3670": 1, + "3714": 1, + "3838": 1, + "3933": 1, + "3974": 1, + "4018": 1, + "4044": 1, + "4094": 1, + "4138": 1, + "4201": 1, + "4202": 1, + "4209": 1, + "4225": 1, + "4282": 1, + "4283": 1, + "4326": 1, + "4349": 1, + "4354": 1, + "4356": 1, + "4364": 1, + "4417": 1, + "4456": 1, + "4458": 1, + "4463": 1, + "4482": 1, + "4494": 1, + "4514": 1, + "4536": 1, + "4594": 1, + "4648": 1, + "4738": 1, + "4766": 1, + "4776": 1, + "4827": 1, + "4903": 1, + "5007": 1, + "5050": 1, + "5081": 1, + "5088": 1, + "5266": 1, + "5387": 1, + "5392": 1, + "5444": 1, + "5551": 1, + "5623": 1, + "5735": 1, + "5739": 1, + "5771": 1, + "5835": 1, + "6051": 1, + "6117": 1, + "6170": 1, + "6353": 1, + "6408": 1, + "6433": 1, + "6435": 1, + "6525": 1, + "6562": 1, + "6993": 1, + "7169": 2, + "7326": 1, + "7383": 1, + "7415": 1, + "7800": 1, + "7821": 1, + "7843": 1, + "7907": 1, + "8329": 1, + "8373": 1, + "8446": 1, + "8611": 1, + "8635": 1, + "8695": 1, + "8843": 1, + "8918": 1, + "9027": 1, + "9125": 1, + "9197": 1, + "9202": 1, + "9228": 1, + "9251": 1, + "9261": 1, + "9295": 1, + "9325": 1, + "9447": 1, + "9465": 1, + "9519": 1, + "9576": 1, + "9614": 1, + "9712": 1, + "9743": 1, + "9994": 1, + "10013": 1, + "10021": 1, + "10212": 1, + "10227": 1, + "10228": 1, + "10264": 1, + "10408": 1, + "10438": 1, + "10445": 1, + "10474": 1, + "10480": 1, + "10487": 1, + "10507": 1, + "10513": 1, + "10548": 1, + "10554": 1, + "10561": 1, + "10582": 1, + "10596": 1, + "10600": 1, + "10679": 1, + "10684": 1, + "10697": 1, + "10711": 1, + "10717": 1, + "10768": 1, + "10771": 1, + "10786": 1, + "10791": 1, + "10793": 1, + "10803": 1, + "10807": 1, + "10821": 1, + "10823": 1, + "10843": 1, + "10850": 1, + "10858": 1, + "10862": 1, + "10873": 1, + "10897": 1, + "10902": 1, + "10920": 2, + "10921": 1, + "10924": 1, + "10933": 2, + "10941": 2, + "10943": 1, + "10978": 1, + "10985": 1, + "10987": 1, + "11002": 1, + "11019": 1, + "11028": 1, + "11030": 1, + "11035": 1, + "11053": 2, + "11055": 1, + "11069": 1, + "11070": 1, + "11072": 1, + "11074": 1, + "11088": 1, + "11111": 1, + "11124": 1, + "11177": 1, + "11209": 1, + "11210": 1, + "11223": 1, + "11226": 1, + "11265": 1, + "11307": 1, + "11316": 1, + "11321": 1, + "11326": 1, + "11334": 1, + "11341": 1, + "11358": 1, + "11360": 1, + "11371": 1, + "11376": 1, + "11378": 1, + "11390": 1, + "11402": 1, + "11417": 1, + "11422": 1, + "11425": 1, + "11426": 1, + "11430": 1, + "11433": 1, + "11461": 1, + "11465": 1, + "11469": 1, + "11492": 1, + "11499": 1, + "11510": 1, + "11511": 1, + "11535": 1, + "11546": 1, + "11553": 1, + "11556": 1, + "11565": 1, + "11588": 1, + "11590": 1, + "11594": 1, + "11595": 1, + "11596": 2, + "11597": 1, + "11623": 1, + "11647": 1, + "11660": 1, + "11664": 1, + "11666": 1, + "11684": 1, + "11687": 1, + "11689": 1, + "11691": 1, + "11698": 1, + "11712": 1, + "11760": 1, + "11791": 1, + "11806": 1, + "11814": 1, + "11819": 1, + "11859": 1, + "11867": 1, + "11898": 1, + "11952": 1, + "12013": 1, + "12402": 1, + "12993": 1, + "13250": 1, + "13727": 1, + "13996": 1, + "14334": 1, + "14627": 1, + "14791": 1, + "14855": 1, + "14888": 1, + "14936": 1, + "14940": 1, + "14976": 1, + "14981": 2, + "15052": 1, + "15068": 1, + "15069": 1, + "15074": 1, + "15094": 1, + "15100": 1, + "15103": 1, + "15117": 1, + "15165": 1, + "15174": 1, + "15195": 2, + "15231": 1, + "15232": 1, + "15322": 1, + "15346": 2, + "15362": 1, + "15364": 1, + "15367": 1, + "15370": 1, + "15371": 2, + "15372": 2, + "15373": 1, + "15374": 1, + "15375": 1, + "15377": 1, + "15378": 1, + "15379": 2, + "15382": 1, + "15384": 1, + "15387": 1, + "15395": 1, + "15451": 1, + "15464": 1, + "15467": 1, + "15468": 1, + "15469": 2, + "15476": 2, + "15482": 1, + "15489": 1, + "15493": 1, + "15494": 1, + "15495": 1, + "15498": 1, + "15500": 1, + "15506": 2, + "15510": 1, + "15511": 2, + "15512": 1, + "15513": 1, + "15523": 1, + "15524": 1, + "15530": 1, + "15531": 1, + "15533": 1, + "15534": 1, + "15539": 1, + "15543": 1, + "15544": 1, + "15547": 3, + "15550": 2, + "15551": 1, + "15553": 1, + "15554": 1, + "15559": 1, + "15562": 1, + "15563": 1, + "15564": 1, + "15565": 1, + "15566": 1, + "15567": 1, + "15571": 2, + "15572": 2, + "15575": 1, + "15576": 1, + "15578": 3, + "15579": 1, + "15580": 3, + "15584": 1, + "15585": 2, + "15586": 1, + "15587": 5, + "15588": 1, + "15589": 3, + "15590": 3, + "15593": 1, + "15597": 2, + "15598": 4, + "15599": 3, + "15600": 2, + "15602": 1, + "15603": 3, + "15604": 1, + "15605": 3, + "15607": 1, + "15608": 2, + "15609": 1, + "15610": 7, + "15612": 3, + "15613": 1, + "15614": 2, + "15615": 1, + "15616": 1, + "15618": 1, + "15621": 2, + "15622": 2, + "15624": 1, + "15629": 1, + "15630": 2, + "15631": 1, + "15633": 1, + "15639": 1, + "15640": 1, + "15642": 1, + "15644": 2, + "15648": 1, + "15650": 3, + "15651": 2, + "15652": 2, + "15653": 1, + "15656": 1, + "15659": 1, + "15660": 2, + "15664": 1, + "15665": 3, + "15666": 1, + "15668": 1, + "15670": 3, + "15671": 1, + "15672": 1, + "15673": 2, + "15675": 1, + "15677": 1, + "15678": 1, + "15679": 1, + "15680": 2, + "15682": 1, + "15684": 3, + "15685": 1, + "15686": 2, + "15687": 2, + "15688": 1, + "15696": 1, + "15699": 1, + "15703": 1, + "15705": 1, + "15706": 2, + "15709": 1, + "15713": 1, + "15714": 3, + "15717": 1, + "15720": 1, + "15721": 1, + "15722": 4, + "15724": 3, + "15725": 2, + "15728": 2, + "15730": 1, + "15731": 3, + "15733": 1, + "15734": 3, + "15735": 1, + "15736": 3, + "15737": 1, + "15738": 1, + "15745": 2, + "15747": 1, + "15748": 3, + "15751": 1, + "15752": 4, + "15754": 1, + "15756": 2, + "15757": 1, + "15758": 1, + "15759": 1, + "15761": 1, + "15762": 1, + "15763": 1, + "15764": 1, + "15765": 1, + "15766": 1, + "15768": 1, + "15769": 1, + "15770": 1, + "15771": 1, + "15772": 1, + "15773": 1, + "15774": 2, + "15775": 1, + "15776": 1, + "15778": 1, + "15779": 3, + "15780": 1, + "15782": 1, + "15783": 1, + "15786": 1, + "15787": 1, + "15788": 2, + "15789": 1, + "15790": 2, + "15793": 1, + "15794": 3, + "15796": 2, + "15798": 1, + "15799": 1, + "15800": 1, + "15803": 1, + "15804": 4, + "15805": 5, + "15806": 3, + "15807": 4, + "15808": 1, + "15809": 2, + "15810": 3, + "15811": 1, + "15812": 1, + "15814": 3, + "15815": 6, + "15816": 2, + "15817": 5, + "15819": 2, + "15820": 1, + "15821": 3, + "15822": 2, + "15823": 1, + "15824": 2, + "15827": 1, + "15828": 2, + "15829": 2, + "15835": 2, + "15836": 1, + "15837": 1, + "15838": 1, + "15839": 1, + "15840": 2, + "15842": 1, + "15843": 2, + "15845": 3, + "15846": 1, + "15847": 1, + "15848": 3, + "15850": 2, + "15851": 2, + "15853": 2, + "15854": 1, + "15855": 1, + "15856": 2, + "15858": 3, + "15859": 1, + "15860": 2, + "15861": 2, + "15862": 2, + "15863": 2, + "15864": 2, + "15865": 4, + "15866": 2, + "15867": 1, + "15868": 2, + "15869": 2, + "15870": 3, + "15871": 2, + "15873": 2, + "15874": 1, + "15875": 2, + "15876": 1, + "15882": 1, + "15883": 1, + "15884": 1, + "15886": 1, + "15887": 2, + "15894": 1, + "15899": 1, + "15901": 2, + "15902": 2, + "15904": 1, + "15907": 1, + "15911": 1, + "15912": 1, + "15913": 1, + "15914": 1, + "15915": 2, + "15917": 1, + "15919": 2, + "15920": 2, + "15922": 1, + "15924": 1, + "15928": 1, + "15935": 1, + "15936": 1, + "15938": 1, + "15939": 1, + "15940": 1, + "15942": 1, + "15944": 2, + "15948": 1, + "15949": 1, + "15950": 1, + "15954": 1, + "15956": 1, + "15957": 1, + "15958": 1, + "15959": 1, + "15963": 1, + "15969": 1, + "15973": 2, + "15974": 1, + "15982": 1, + "15983": 2, + "15987": 2, + "15989": 1, + "15991": 2, + "15993": 1, + "15994": 1, + "15995": 1, + "15996": 2, + "15998": 1, + "15999": 1, + "16001": 1, + "16002": 1, + "16004": 1, + "16006": 1, + "16008": 1, + "16009": 1, + "16010": 1, + "16012": 3, + "16014": 3, + "16015": 1, + "16016": 1, + "16019": 1, + "16020": 1, + "16032": 2, + "16034": 1, + "16036": 2, + "16038": 2, + "16039": 1, + "16041": 2, + "16043": 1, + "16045": 1, + "16046": 2, + "16047": 1, + "16048": 1, + "16049": 1, + "16051": 1, + "16052": 2, + "16054": 2, + "16057": 3, + "16058": 1, + "16060": 2, + "16061": 2, + "16063": 1, + "16066": 2, + "16067": 2, + "16068": 1, + "16069": 1, + "16070": 1, + "16071": 1, + "16072": 3, + "16073": 1, + "16074": 1, + "16076": 2, + "16077": 1, + "16079": 1, + "16080": 1, + "16082": 2, + "16083": 2, + "16085": 1, + "16086": 1, + "16089": 3, + "16093": 1, + "16095": 1, + "16098": 2, + "16109": 1, + "16110": 2, + "16111": 1, + "16112": 1, + "16113": 1, + "16114": 2, + "16115": 3, + "16116": 2, + "16117": 1, + "16118": 1, + "16119": 1, + "16120": 1, + "16121": 1, + "16122": 1, + "16123": 1, + "16125": 1, + "16126": 1, + "16130": 1, + "16131": 1, + "16137": 1, + "16139": 1, + "16140": 2, + "16141": 1, + "16142": 1, + "16143": 1, + "16147": 1, + "16149": 1, + "16150": 1, + "16156": 2, + "16163": 1, + "16166": 1, + "16168": 1, + "16170": 1, + "16171": 1, + "16172": 1, + "16179": 1, + "16182": 1, + "16184": 2, + "16188": 1, + "16191": 1, + "16192": 1, + "16193": 1, + "16194": 1, + "16198": 1, + "16200": 1, + "16216": 1, + "16233": 1, + "16240": 1, + "16242": 1, + "16270": 1, + "16295": 1, + "16324": 1, + "16326": 1, + "16330": 1, + "16332": 1 + }, + "started": "2025-09-11T20:10:33.043Z", + "trafficStats": { + "incomingCompressionRatio": 0.7631610107421875, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 12503630, + "incomingOctetsWireLevel": 12511630, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0006398141979569133, + "outgoingCompressionRatio": 0.7631610107421875, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 12503630, + "outgoingOctetsWireLevel": 12699988, + "outgoingWebSocketFrames": 49300, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015704079535302947, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 48300, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 3, + "3": 1, + "4": 4, + "5": 8, + "6": 8, + "7": 6, + "8": 5, + "9": 9, + "10": 2, + "11": 3, + "12": 1, + "13": 4, + "14": 2, + "15": 1, + "16": 4, + "17": 1, + "18": 4, + "19": 1, + "20": 3, + "21": 4, + "22": 4, + "23": 6, + "24": 3, + "26": 2, + "27": 2, + "28": 4, + "29": 8, + "30": 4, + "31": 3, + "32": 3, + "33": 4, + "34": 5, + "35": 3, + "36": 3, + "37": 6, + "38": 3, + "39": 5, + "40": 2, + "41": 4, + "42": 3, + "43": 3, + "44": 3, + "45": 3, + "46": 4, + "47": 1, + "48": 4, + "49": 4, + "50": 4, + "51": 4, + "52": 2, + "53": 2, + "54": 1, + "55": 3, + "56": 3, + "57": 4, + "58": 5, + "59": 3, + "60": 5, + "61": 3, + "62": 6, + "63": 4, + "64": 7, + "65": 4, + "66": 4, + "68": 1, + "69": 2, + "70": 3, + "71": 5, + "72": 1, + "73": 2, + "74": 4, + "75": 1, + "76": 3, + "77": 2, + "78": 2, + "79": 1, + "80": 3, + "81": 3, + "82": 3, + "83": 2, + "84": 3, + "85": 7, + "86": 2, + "87": 2, + "88": 1, + "89": 1, + "90": 1, + "91": 3, + "92": 4, + "94": 1, + "95": 4, + "96": 1, + "97": 3, + "98": 5, + "99": 4, + "100": 8, + "101": 4, + "102": 4, + "103": 5, + "104": 2, + "105": 3, + "106": 5, + "107": 2, + "108": 4, + "109": 5, + "110": 5, + "111": 3, + "112": 6, + "113": 3, + "114": 6, + "115": 6, + "116": 5, + "117": 1, + "118": 2, + "119": 1, + "120": 2, + "121": 3, + "122": 3, + "123": 5, + "124": 4, + "125": 1, + "126": 4, + "127": 3, + "130": 4, + "131": 3, + "132": 5, + "133": 4, + "134": 5, + "135": 3, + "136": 7, + "137": 3, + "138": 8, + "139": 3, + "140": 3, + "141": 2, + "142": 5, + "143": 2, + "144": 2, + "145": 1, + "146": 3, + "147": 2, + "148": 2, + "149": 3, + "150": 1, + "151": 1, + "152": 2, + "153": 1, + "154": 5, + "155": 3, + "156": 4, + "157": 4, + "158": 5, + "159": 9, + "160": 7, + "161": 2, + "162": 5, + "163": 4, + "164": 4, + "165": 6, + "166": 2, + "167": 4, + "168": 4, + "169": 3, + "170": 6, + "171": 2, + "172": 2, + "173": 2, + "174": 5, + "175": 3, + "176": 4, + "177": 3, + "178": 3, + "179": 3, + "180": 5, + "181": 4, + "182": 3, + "183": 6, + "184": 8, + "185": 9, + "186": 5, + "187": 7, + "188": 2, + "189": 4, + "190": 9, + "191": 4, + "192": 4, + "193": 2, + "194": 6, + "195": 9, + "196": 5, + "197": 9, + "198": 4, + "199": 4, + "200": 8, + "201": 9, + "202": 3, + "203": 4, + "204": 3, + "205": 1, + "206": 2, + "207": 5, + "208": 5, + "209": 4, + "210": 2, + "211": 5, + "212": 2, + "213": 4, + "214": 5, + "215": 5, + "216": 5, + "217": 4, + "218": 2, + "219": 2, + "220": 4, + "221": 3, + "222": 6, + "223": 9, + "224": 4, + "225": 7, + "226": 5, + "227": 2, + "228": 3, + "229": 2, + "230": 3, + "231": 5, + "233": 8, + "234": 9, + "235": 5, + "236": 8, + "237": 1, + "238": 10, + "239": 8, + "240": 6, + "241": 6, + "242": 5, + "243": 10, + "244": 6, + "245": 9, + "246": 11, + "247": 2, + "248": 6, + "249": 5, + "250": 10, + "251": 6, + "252": 2, + "253": 5, + "254": 6, + "255": 4, + "256": 5, + "257": 2, + "258": 2, + "259": 2, + "260": 48300 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333835266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820989a5e20a61" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0989a5e2" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_13.html b/autobahn/client/tungstenite_case_12_5_13.html new file mode 100644 index 0000000..aca322a --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_13.html @@ -0,0 +1,1391 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.13 : Pass - 3390 ms @ 2025-09-11T20:10:34.863Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=386&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Ntqff0Is3akPgtz81/V/Eg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BBcS8sjq+fnh75RAchhvJkdDx5Y=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
211212112
212612126
216112161
216312163
217412174
232612326
261712617
265512655
268512685
270512705
271412714
272512725
274312743
274512745
278012780
282712827
283812838
284912849
286112861
286312863
286512865
286912869
288412884
290112901
290712907
291212912
292912929
294912949
295812958
296012960
301013010
302813028
313913139
314813148
320513205
322013220
334213342
349313493
350713507
351513515
351913519
352213522
355313553
364513645
364713647
367813678
371513715
374113741
376113761
393413934
395813958
399513995
400414004
400514005
406614066
407314073
420414204
423014230
424014240
438314383
440214402
441214412
444614446
462814628
466714667
468214682
478214782
489114891
491214912
491514915
504215042
515115151
516015160
529015290
536915369
543615436
563215632
565915659
573615736
574415744
576215762
577115771
577715777
578515785
582615826
582815828
584615846
585315853
587715877
590715907
592815928
592915929
595515955
595615956
596215962
596715967
597915979
599315993
606016060
617916179
627816278
631116311
632316323
636616366
657816578
6617213234
663516635
675716757
702817028
722417224
726517265
733217332
735617356
737617376
744917449
779417794
780317803
782317823
782417824
783417834
808418084
820218202
827818278
831618316
833918339
834318343
840518405
843318433
852118521
857118571
858518585
861318613
865818658
867718677
872918729
873118731
8734217468
874218742
874518745
876818768
877618776
877818778
877918779
878518785
882618826
901419014
905819058
919619196
927319273
937719377
941519415
944219442
949919499
951819518
10077110077
10243110243
10635110635
10752110752
10918110918
10986110986
11163111163
11358111358
11552111552
11635111635
11735111735
11858111858
11950111950
11998111998
12054112054
12102112102
12202112202
12224112224
12249112249
12646112646
12724112724
12794112794
13081113081
13354113354
13666113666
13739113739
13818113818
13939113939
14228114228
14404114404
14405114405
14458114458
14795114795
15210115210
15291115291
15325115325
15339115339
15345115345
15469115469
15605115605
16020116020
16114116114
16355116355
16425116425
16460116460
16544116544
16740116740
16865116865
17123117123
17172117172
17197117197
17218117218
17636117636
17734117734
17878117878
18386118386
18507118507
18787118787
18912118912
18947118947
19082119082
19470119470
19481119481
19570119570
19596119596
19672119672
19705119705
19719119719
19788119788
20000120000
20025120025
20102120102
20154120154
20182120182
20222120222
20333120333
20366120366
20484120484
20487120487
20547120547
20614120614
20627120627
20670120670
20694120694
20701120701
20718120718
20730120730
20779120779
20787120787
20792120792
20834241668
20839120839
20840120840
20849120849
20852120852
20857120857
20890120890
20895120895
20912120912
20916120916
21007121007
21013121013
21017121017
21055121055
21108121108
21133121133
21140121140
21172121172
21255121255
21288121288
21312121312
21313121313
21340121340
21341121341
21442121442
21455121455
21483121483
21510121510
21529121529
21536121536
21537121537
21613121613
21634121634
21642121642
21652121652
21655121655
21673121673
21674121674
21746121746
21748121748
21754121754
21756121756
21764121764
21791121791
21792121792
21823121823
21836121836
21855121855
21869121869
21877121877
21930121930
21946121946
21952121952
21961121961
21968121968
22041122041
22055122055
22104122104
22160122160
22164122164
22167122167
22179122179
22190244380
22206122206
22343122343
22347122347
22358122358
22391122391
22470122470
22544122544
22567122567
22591122591
22601122601
22612122612
22624122624
22631122631
22633122633
22639122639
22644122644
22646122646
22648122648
22657122657
22661122661
22664122664
22673122673
22707122707
22709122709
22741122741
22752245504
22773122773
22796122796
22801122801
22815122815
22847122847
22883122883
22920122920
22926122926
22970122970
23000123000
23007369021
23014123014
23033123033
23043123043
23065123065
23067123067
23076123076
23111123111
23169123169
23175123175
23180123180
23190123190
23196123196
23340123340
23361123361
23384123384
24208124208
24312124312
24467124467
25360125360
25467125467
25603125603
26490126490
26983126983
27049127049
27343127343
28218128218
28341128341
28491128491
28593128593
29461129461
29557129557
29558129558
30508261016
30512130512
30516130516
30591130591
30615130615
30618130618
30667130667
30668130668
30706130706
30710130710
30713130713
30721261442
30729130729
30730130730
30734130734
30739130739
30753130753
30754130754
30755130755
30758130758
30832130832
30833130833
30890130890
30895130895
30896130896
30897130897
30903130903
30932130932
30963130963
309644123856
31008131008
31010262020
31011131011
31016131016
31017131017
31064131064
31068131068
31082131082
31090131090
31092262184
31093131093
31095262190
31096131096
31100131100
31101131101
31102131102
31103131103
31106131106
31113131113
31116131116
31119131119
31123131123
31125131125
31126131126
31128131128
31135131135
31137131137
31138262276
31140131140
31141262282
31146131146
31151131151
31153131153
31154131154
31163393489
31164262328
31166131166
31167131167
31169131169
31170262340
31171262342
31178262356
31179131179
311804124720
31181262362
311824124728
31183131183
31184131184
311854124740
31186131186
31200131200
31209131209
31212131212
31218131218
31224131224
31225131225
31232131232
31234131234
31235131235
31242131242
31252131252
31253262506
31258131258
31262131262
31264131264
31271131271
31273131273
31274131274
31276262552
31277131277
31278131278
31279131279
31283131283
31289131289
31290131290
31305131305
31306131306
31308131308
31310131310
31312262624
31313131313
31314131314
31315131315
31317131317
31323262646
31324262648
31325262650
31326131326
31329131329
31330131330
31331262662
31332131332
31333262666
31334131334
31336131336
31337394011
31338262676
313414125364
31342131342
31343131343
31344262688
31353131353
31355131355
31356131356
31358262716
31359131359
31360262720
31362131362
31364262728
31365131365
31368131368
31370131370
31371131371
31372262744
31375262750
31376131376
31377131377
31380131380
31383131383
31385262770
313864125544
31389262778
31392131392
31393131393
31400131400
31401131401
31402131402
31403131403
314054125620
31407131407
31408262816
31410131410
31411262822
31418131418
31419131419
31420262840
31422131422
31423262846
31427131427
31428131428
31429131429
31432262864
31437131437
31441262882
31442262884
31444131444
31445131445
31446131446
31448262896
31453394359
31456131456
31459131459
31460262920
31461131461
31464262928
31468131468
31471131471
31474131474
31475131475
31478262956
31479131479
31482131482
31483131483
31484262968
31485131485
31496262992
31499262998
31500263000
31501263002
31502131502
31504131504
31506131506
31507131507
31508263016
31514131514
31515131515
31522131522
31525131525
31526131526
31528131528
31529263058
31530131530
31532131532
31533263066
31536394608
31537263074
31539131539
31540131540
31542131542
31550131550
31552131552
31553131553
31557131557
31558131558
31565263130
31568131568
31569263138
31570131570
31572263144
31573394719
31575131575
31576131576
31579131579
31582131582
31583263166
31585263170
31590263180
31592263184
31593263186
31595131595
31596263192
31600131600
31602131602
31603131603
31607131607
31611131611
31613131613
31615131615
31616131616
31620131620
31621131621
31623263246
316244126496
31627263254
31628131628
31630131630
31632131632
31634131634
31635394905
31636131636
31637131637
31639131639
31640131640
31641131641
31643131643
31647131647
31655131655
31659394977
31662131662
31669131669
31672263344
31674131674
31675131675
31676131676
31678131678
31684131684
31686131686
31688131688
31691131691
31697131697
31698131698
31701131701
31702263404
31703131703
31704131704
31705131705
31706131706
31708131708
31710131710
31712131712
31713395139
31714131714
31715263430
31717131717
31719131719
31720131720
31721131721
31726131726
31730131730
31731131731
31739131739
31741131741
31743131743
31744395232
31745131745
31747131747
31749263498
31751131751
31752131752
31753263506
31754131754
31757131757
31758131758
31763263526
31766131766
31767131767
31768131768
31769131769
31772131772
31773131773
31774263548
31777131777
31787263574
31795131795
31797131797
31798395394
31801131801
31803263606
31804395412
31807131807
31811131811
31822131822
31827131827
31833131833
31834263668
31837131837
31838131838
31840131840
31841131841
31850131850
31852263704
31853131853
31862131862
31863263726
31864131864
31870131870
31872131872
31873131873
31876131876
31878131878
31879131879
31880131880
31881131881
31883263766
31897131897
31900131900
31903131903
31928131928
31929131929
31933131933
31938131938
31942263884
31943263886
31944263888
31951131951
31955131955
31958131958
31970131970
31971131971
31977131977
31979131979
31982131982
31997263994
32001132001
32004264008
32007132007
32017132017
32018132018
32019132019
32030132030
32038132038
32040132040
32043132043
32067396201
32070132070
32075132075
32076264152
32077132077
32078132078
32079132079
32084264168
32088132088
32090132090
32092132092
32097132097
32099132099
32102396306
32105132105
32106132106
32111132111
32116132116
32118132118
32119132119
32120132120
32124132124
32126132126
32129132129
32131132131
32132396396
32135264270
32137132137
32141132141
32143132143
32144132144
32150132150
32158264316
32159132159
32162396486
32163396489
32164264328
32165132165
32170264340
32178132178
32179132179
32181264362
32182264364
32186132186
32187132187
32188132188
32190264380
32193396579
32195132195
32199132199
32203132203
32204264408
32207132207
32208132208
32211132211
32215132215
32217264434
32222132222
32226132226
32229132229
32230264460
32232132232
32235132235
32236132236
32239396717
32245132245
32248132248
32249132249
32252132252
32254132254
32262132262
32265132265
32273132273
32304132304
32315132315
32317132317
32334264668
32335132335
32336132336
32345132345
32370264740
32371132371
Total100224939837
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
236
3412
4520
5315
6318
7321
8540
919
10330
11333
12224
13678
14570
15460
16464
17117
18118
199171
20240
216126
22122
23123
246144
254100
266156
274108
284112
29387
30130
31131
324128
33399
346204
357245
363108
374148
386228
395195
40280
41282
426252
433129
44144
455225
46292
47294
485240
502100
515255
522104
534212
545270
552110
56156
576342
584232
593177
60160
617427
623186
632126
644256
652130
66166
673201
684272
695345
707490
713213
726432
733219
744296
754300
763228
772154
785390
795395
802160
81181
825410
832166
843252
855425
865430
875435
887616
894356
903270
916546
925460
935465
942188
953285
967672
973291
985490
998792
1006600
1011101
1025510
1039927
1041104
1053315
1065530
1074428
1086648
1095545
1107770
1113333
1125560
1137791
1144456
1152230
1163348
1175585
1184472
1193357
1206720
1214484
1224488
1234492
1244496
1252250
1267882
1275635
1305650
1316786
13281056
1334532
1343402
1357945
1366816
1372274
1384552
1395695
14081120
1414564
1421142
14371001
14491296
1452290
1463438
1476882
1482296
1495745
15081200
1513453
1522304
1533459
1542308
1555775
1562312
1573471
1585790
1594636
1605800
16171127
1621162
1632326
1641164
1653495
16691494
1675835
1681168
1694676
1705850
1713513
1724688
1734692
1745870
17561050
1763528
1775885
1782356
1792358
1803540
1812362
18261092
18381464
18471288
1851185
18671302
1874748
1882376
1894756
19071330
1914764
1923576
1931193
1944776
1954780
1965980
1971197
1982396
1995995
20071400
2013603
2024808
20351015
2044816
20571435
20661236
2072414
2083624
2094836
21081680
2113633
21251060
21361278
2141214
2162432
21761302
2184872
2193657
22061320
22151105
22251110
22361338
2243672
2254900
2263678
2271227
2284912
2294916
2301230
23151155
2324928
2343702
2354940
2372474
23861428
2393717
24051200
2414964
2423726
2431243
2443732
24561470
24651230
2472494
2484992
2494996
2502500
2511251
25271764
25341012
2541254
25561530
25641024
2572514
2582516
25951295
2609688925191140
Total9789125322410
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
096889
21000
81
Total97890
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333836266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882717aaad47292
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3731376161616434
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_13.json b/autobahn/client/tungstenite_case_12_5_13.json new file mode 100644 index 0000000..5eb17a8 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_13.json @@ -0,0 +1,1238 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 386, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 3390, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=386&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Ntqff0Is3akPgtz81/V/Eg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BBcS8sjq+fnh75RAchhvJkdDx5Y=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2112": 1, + "2126": 1, + "2161": 1, + "2163": 1, + "2174": 1, + "2326": 1, + "2617": 1, + "2655": 1, + "2685": 1, + "2705": 1, + "2714": 1, + "2725": 1, + "2743": 1, + "2745": 1, + "2780": 1, + "2827": 1, + "2838": 1, + "2849": 1, + "2861": 1, + "2863": 1, + "2865": 1, + "2869": 1, + "2884": 1, + "2901": 1, + "2907": 1, + "2912": 1, + "2929": 1, + "2949": 1, + "2958": 1, + "2960": 1, + "3010": 1, + "3028": 1, + "3139": 1, + "3148": 1, + "3205": 1, + "3220": 1, + "3342": 1, + "3493": 1, + "3507": 1, + "3515": 1, + "3519": 1, + "3522": 1, + "3553": 1, + "3645": 1, + "3647": 1, + "3678": 1, + "3715": 1, + "3741": 1, + "3761": 1, + "3934": 1, + "3958": 1, + "3995": 1, + "4004": 1, + "4005": 1, + "4066": 1, + "4073": 1, + "4204": 1, + "4230": 1, + "4240": 1, + "4383": 1, + "4402": 1, + "4412": 1, + "4446": 1, + "4628": 1, + "4667": 1, + "4682": 1, + "4782": 1, + "4891": 1, + "4912": 1, + "4915": 1, + "5042": 1, + "5151": 1, + "5160": 1, + "5290": 1, + "5369": 1, + "5436": 1, + "5632": 1, + "5659": 1, + "5736": 1, + "5744": 1, + "5762": 1, + "5771": 1, + "5777": 1, + "5785": 1, + "5826": 1, + "5828": 1, + "5846": 1, + "5853": 1, + "5877": 1, + "5907": 1, + "5928": 1, + "5929": 1, + "5955": 1, + "5956": 1, + "5962": 1, + "5967": 1, + "5979": 1, + "5993": 1, + "6060": 1, + "6179": 1, + "6278": 1, + "6311": 1, + "6323": 1, + "6366": 1, + "6578": 1, + "6617": 2, + "6635": 1, + "6757": 1, + "7028": 1, + "7224": 1, + "7265": 1, + "7332": 1, + "7356": 1, + "7376": 1, + "7449": 1, + "7794": 1, + "7803": 1, + "7823": 1, + "7824": 1, + "7834": 1, + "8084": 1, + "8202": 1, + "8278": 1, + "8316": 1, + "8339": 1, + "8343": 1, + "8405": 1, + "8433": 1, + "8521": 1, + "8571": 1, + "8585": 1, + "8613": 1, + "8658": 1, + "8677": 1, + "8729": 1, + "8731": 1, + "8734": 2, + "8742": 1, + "8745": 1, + "8768": 1, + "8776": 1, + "8778": 1, + "8779": 1, + "8785": 1, + "8826": 1, + "9014": 1, + "9058": 1, + "9196": 1, + "9273": 1, + "9377": 1, + "9415": 1, + "9442": 1, + "9499": 1, + "9518": 1, + "10077": 1, + "10243": 1, + "10635": 1, + "10752": 1, + "10918": 1, + "10986": 1, + "11163": 1, + "11358": 1, + "11552": 1, + "11635": 1, + "11735": 1, + "11858": 1, + "11950": 1, + "11998": 1, + "12054": 1, + "12102": 1, + "12202": 1, + "12224": 1, + "12249": 1, + "12646": 1, + "12724": 1, + "12794": 1, + "13081": 1, + "13354": 1, + "13666": 1, + "13739": 1, + "13818": 1, + "13939": 1, + "14228": 1, + "14404": 1, + "14405": 1, + "14458": 1, + "14795": 1, + "15210": 1, + "15291": 1, + "15325": 1, + "15339": 1, + "15345": 1, + "15469": 1, + "15605": 1, + "16020": 1, + "16114": 1, + "16355": 1, + "16425": 1, + "16460": 1, + "16544": 1, + "16740": 1, + "16865": 1, + "17123": 1, + "17172": 1, + "17197": 1, + "17218": 1, + "17636": 1, + "17734": 1, + "17878": 1, + "18386": 1, + "18507": 1, + "18787": 1, + "18912": 1, + "18947": 1, + "19082": 1, + "19470": 1, + "19481": 1, + "19570": 1, + "19596": 1, + "19672": 1, + "19705": 1, + "19719": 1, + "19788": 1, + "20000": 1, + "20025": 1, + "20102": 1, + "20154": 1, + "20182": 1, + "20222": 1, + "20333": 1, + "20366": 1, + "20484": 1, + "20487": 1, + "20547": 1, + "20614": 1, + "20627": 1, + "20670": 1, + "20694": 1, + "20701": 1, + "20718": 1, + "20730": 1, + "20779": 1, + "20787": 1, + "20792": 1, + "20834": 2, + "20839": 1, + "20840": 1, + "20849": 1, + "20852": 1, + "20857": 1, + "20890": 1, + "20895": 1, + "20912": 1, + "20916": 1, + "21007": 1, + "21013": 1, + "21017": 1, + "21055": 1, + "21108": 1, + "21133": 1, + "21140": 1, + "21172": 1, + "21255": 1, + "21288": 1, + "21312": 1, + "21313": 1, + "21340": 1, + "21341": 1, + "21442": 1, + "21455": 1, + "21483": 1, + "21510": 1, + "21529": 1, + "21536": 1, + "21537": 1, + "21613": 1, + "21634": 1, + "21642": 1, + "21652": 1, + "21655": 1, + "21673": 1, + "21674": 1, + "21746": 1, + "21748": 1, + "21754": 1, + "21756": 1, + "21764": 1, + "21791": 1, + "21792": 1, + "21823": 1, + "21836": 1, + "21855": 1, + "21869": 1, + "21877": 1, + "21930": 1, + "21946": 1, + "21952": 1, + "21961": 1, + "21968": 1, + "22041": 1, + "22055": 1, + "22104": 1, + "22160": 1, + "22164": 1, + "22167": 1, + "22179": 1, + "22190": 2, + "22206": 1, + "22343": 1, + "22347": 1, + "22358": 1, + "22391": 1, + "22470": 1, + "22544": 1, + "22567": 1, + "22591": 1, + "22601": 1, + "22612": 1, + "22624": 1, + "22631": 1, + "22633": 1, + "22639": 1, + "22644": 1, + "22646": 1, + "22648": 1, + "22657": 1, + "22661": 1, + "22664": 1, + "22673": 1, + "22707": 1, + "22709": 1, + "22741": 1, + "22752": 2, + "22773": 1, + "22796": 1, + "22801": 1, + "22815": 1, + "22847": 1, + "22883": 1, + "22920": 1, + "22926": 1, + "22970": 1, + "23000": 1, + "23007": 3, + "23014": 1, + "23033": 1, + "23043": 1, + "23065": 1, + "23067": 1, + "23076": 1, + "23111": 1, + "23169": 1, + "23175": 1, + "23180": 1, + "23190": 1, + "23196": 1, + "23340": 1, + "23361": 1, + "23384": 1, + "24208": 1, + "24312": 1, + "24467": 1, + "25360": 1, + "25467": 1, + "25603": 1, + "26490": 1, + "26983": 1, + "27049": 1, + "27343": 1, + "28218": 1, + "28341": 1, + "28491": 1, + "28593": 1, + "29461": 1, + "29557": 1, + "29558": 1, + "30508": 2, + "30512": 1, + "30516": 1, + "30591": 1, + "30615": 1, + "30618": 1, + "30667": 1, + "30668": 1, + "30706": 1, + "30710": 1, + "30713": 1, + "30721": 2, + "30729": 1, + "30730": 1, + "30734": 1, + "30739": 1, + "30753": 1, + "30754": 1, + "30755": 1, + "30758": 1, + "30832": 1, + "30833": 1, + "30890": 1, + "30895": 1, + "30896": 1, + "30897": 1, + "30903": 1, + "30932": 1, + "30963": 1, + "30964": 4, + "31008": 1, + "31010": 2, + "31011": 1, + "31016": 1, + "31017": 1, + "31064": 1, + "31068": 1, + "31082": 1, + "31090": 1, + "31092": 2, + "31093": 1, + "31095": 2, + "31096": 1, + "31100": 1, + "31101": 1, + "31102": 1, + "31103": 1, + "31106": 1, + "31113": 1, + "31116": 1, + "31119": 1, + "31123": 1, + "31125": 1, + "31126": 1, + "31128": 1, + "31135": 1, + "31137": 1, + "31138": 2, + "31140": 1, + "31141": 2, + "31146": 1, + "31151": 1, + "31153": 1, + "31154": 1, + "31163": 3, + "31164": 2, + "31166": 1, + "31167": 1, + "31169": 1, + "31170": 2, + "31171": 2, + "31178": 2, + "31179": 1, + "31180": 4, + "31181": 2, + "31182": 4, + "31183": 1, + "31184": 1, + "31185": 4, + "31186": 1, + "31200": 1, + "31209": 1, + "31212": 1, + "31218": 1, + "31224": 1, + "31225": 1, + "31232": 1, + "31234": 1, + "31235": 1, + "31242": 1, + "31252": 1, + "31253": 2, + "31258": 1, + "31262": 1, + "31264": 1, + "31271": 1, + "31273": 1, + "31274": 1, + "31276": 2, + "31277": 1, + "31278": 1, + "31279": 1, + "31283": 1, + "31289": 1, + "31290": 1, + "31305": 1, + "31306": 1, + "31308": 1, + "31310": 1, + "31312": 2, + "31313": 1, + "31314": 1, + "31315": 1, + "31317": 1, + "31323": 2, + "31324": 2, + "31325": 2, + "31326": 1, + "31329": 1, + "31330": 1, + "31331": 2, + "31332": 1, + "31333": 2, + "31334": 1, + "31336": 1, + "31337": 3, + "31338": 2, + "31341": 4, + "31342": 1, + "31343": 1, + "31344": 2, + "31353": 1, + "31355": 1, + "31356": 1, + "31358": 2, + "31359": 1, + "31360": 2, + "31362": 1, + "31364": 2, + "31365": 1, + "31368": 1, + "31370": 1, + "31371": 1, + "31372": 2, + "31375": 2, + "31376": 1, + "31377": 1, + "31380": 1, + "31383": 1, + "31385": 2, + "31386": 4, + "31389": 2, + "31392": 1, + "31393": 1, + "31400": 1, + "31401": 1, + "31402": 1, + "31403": 1, + "31405": 4, + "31407": 1, + "31408": 2, + "31410": 1, + "31411": 2, + "31418": 1, + "31419": 1, + "31420": 2, + "31422": 1, + "31423": 2, + "31427": 1, + "31428": 1, + "31429": 1, + "31432": 2, + "31437": 1, + "31441": 2, + "31442": 2, + "31444": 1, + "31445": 1, + "31446": 1, + "31448": 2, + "31453": 3, + "31456": 1, + "31459": 1, + "31460": 2, + "31461": 1, + "31464": 2, + "31468": 1, + "31471": 1, + "31474": 1, + "31475": 1, + "31478": 2, + "31479": 1, + "31482": 1, + "31483": 1, + "31484": 2, + "31485": 1, + "31496": 2, + "31499": 2, + "31500": 2, + "31501": 2, + "31502": 1, + "31504": 1, + "31506": 1, + "31507": 1, + "31508": 2, + "31514": 1, + "31515": 1, + "31522": 1, + "31525": 1, + "31526": 1, + "31528": 1, + "31529": 2, + "31530": 1, + "31532": 1, + "31533": 2, + "31536": 3, + "31537": 2, + "31539": 1, + "31540": 1, + "31542": 1, + "31550": 1, + "31552": 1, + "31553": 1, + "31557": 1, + "31558": 1, + "31565": 2, + "31568": 1, + "31569": 2, + "31570": 1, + "31572": 2, + "31573": 3, + "31575": 1, + "31576": 1, + "31579": 1, + "31582": 1, + "31583": 2, + "31585": 2, + "31590": 2, + "31592": 2, + "31593": 2, + "31595": 1, + "31596": 2, + "31600": 1, + "31602": 1, + "31603": 1, + "31607": 1, + "31611": 1, + "31613": 1, + "31615": 1, + "31616": 1, + "31620": 1, + "31621": 1, + "31623": 2, + "31624": 4, + "31627": 2, + "31628": 1, + "31630": 1, + "31632": 1, + "31634": 1, + "31635": 3, + "31636": 1, + "31637": 1, + "31639": 1, + "31640": 1, + "31641": 1, + "31643": 1, + "31647": 1, + "31655": 1, + "31659": 3, + "31662": 1, + "31669": 1, + "31672": 2, + "31674": 1, + "31675": 1, + "31676": 1, + "31678": 1, + "31684": 1, + "31686": 1, + "31688": 1, + "31691": 1, + "31697": 1, + "31698": 1, + "31701": 1, + "31702": 2, + "31703": 1, + "31704": 1, + "31705": 1, + "31706": 1, + "31708": 1, + "31710": 1, + "31712": 1, + "31713": 3, + "31714": 1, + "31715": 2, + "31717": 1, + "31719": 1, + "31720": 1, + "31721": 1, + "31726": 1, + "31730": 1, + "31731": 1, + "31739": 1, + "31741": 1, + "31743": 1, + "31744": 3, + "31745": 1, + "31747": 1, + "31749": 2, + "31751": 1, + "31752": 1, + "31753": 2, + "31754": 1, + "31757": 1, + "31758": 1, + "31763": 2, + "31766": 1, + "31767": 1, + "31768": 1, + "31769": 1, + "31772": 1, + "31773": 1, + "31774": 2, + "31777": 1, + "31787": 2, + "31795": 1, + "31797": 1, + "31798": 3, + "31801": 1, + "31803": 2, + "31804": 3, + "31807": 1, + "31811": 1, + "31822": 1, + "31827": 1, + "31833": 1, + "31834": 2, + "31837": 1, + "31838": 1, + "31840": 1, + "31841": 1, + "31850": 1, + "31852": 2, + "31853": 1, + "31862": 1, + "31863": 2, + "31864": 1, + "31870": 1, + "31872": 1, + "31873": 1, + "31876": 1, + "31878": 1, + "31879": 1, + "31880": 1, + "31881": 1, + "31883": 2, + "31897": 1, + "31900": 1, + "31903": 1, + "31928": 1, + "31929": 1, + "31933": 1, + "31938": 1, + "31942": 2, + "31943": 2, + "31944": 2, + "31951": 1, + "31955": 1, + "31958": 1, + "31970": 1, + "31971": 1, + "31977": 1, + "31979": 1, + "31982": 1, + "31997": 2, + "32001": 1, + "32004": 2, + "32007": 1, + "32017": 1, + "32018": 1, + "32019": 1, + "32030": 1, + "32038": 1, + "32040": 1, + "32043": 1, + "32067": 3, + "32070": 1, + "32075": 1, + "32076": 2, + "32077": 1, + "32078": 1, + "32079": 1, + "32084": 2, + "32088": 1, + "32090": 1, + "32092": 1, + "32097": 1, + "32099": 1, + "32102": 3, + "32105": 1, + "32106": 1, + "32111": 1, + "32116": 1, + "32118": 1, + "32119": 1, + "32120": 1, + "32124": 1, + "32126": 1, + "32129": 1, + "32131": 1, + "32132": 3, + "32135": 2, + "32137": 1, + "32141": 1, + "32143": 1, + "32144": 1, + "32150": 1, + "32158": 2, + "32159": 1, + "32162": 3, + "32163": 3, + "32164": 2, + "32165": 1, + "32170": 2, + "32178": 1, + "32179": 1, + "32181": 2, + "32182": 2, + "32186": 1, + "32187": 1, + "32188": 1, + "32190": 2, + "32193": 3, + "32195": 1, + "32199": 1, + "32203": 1, + "32204": 2, + "32207": 1, + "32208": 1, + "32211": 1, + "32215": 1, + "32217": 2, + "32222": 1, + "32226": 1, + "32229": 1, + "32230": 2, + "32232": 1, + "32235": 1, + "32236": 1, + "32239": 3, + "32245": 1, + "32248": 1, + "32249": 1, + "32252": 1, + "32254": 1, + "32262": 1, + "32265": 1, + "32273": 1, + "32304": 1, + "32315": 1, + "32317": 1, + "32334": 2, + "32335": 1, + "32336": 1, + "32345": 1, + "32370": 2, + "32371": 1 + }, + "started": "2025-09-11T20:10:34.863Z", + "trafficStats": { + "incomingCompressionRatio": 0.7608511962890625, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 24931572, + "incomingOctetsWireLevel": 24939572, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00032087828236422475, + "outgoingCompressionRatio": 0.7608511962890625, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 24931572, + "outgoingOctetsWireLevel": 25322154, + "outgoingWebSocketFrames": 97889, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015666160160297954, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 96889, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 3, + "3": 4, + "4": 5, + "5": 3, + "6": 3, + "7": 3, + "8": 5, + "9": 1, + "10": 3, + "11": 3, + "12": 2, + "13": 6, + "14": 5, + "15": 4, + "16": 4, + "17": 1, + "18": 1, + "19": 9, + "20": 2, + "21": 6, + "22": 1, + "23": 1, + "24": 6, + "25": 4, + "26": 6, + "27": 4, + "28": 4, + "29": 3, + "30": 1, + "31": 1, + "32": 4, + "33": 3, + "34": 6, + "35": 7, + "36": 3, + "37": 4, + "38": 6, + "39": 5, + "40": 2, + "41": 2, + "42": 6, + "43": 3, + "44": 1, + "45": 5, + "46": 2, + "47": 2, + "48": 5, + "50": 2, + "51": 5, + "52": 2, + "53": 4, + "54": 5, + "55": 2, + "56": 1, + "57": 6, + "58": 4, + "59": 3, + "60": 1, + "61": 7, + "62": 3, + "63": 2, + "64": 4, + "65": 2, + "66": 1, + "67": 3, + "68": 4, + "69": 5, + "70": 7, + "71": 3, + "72": 6, + "73": 3, + "74": 4, + "75": 4, + "76": 3, + "77": 2, + "78": 5, + "79": 5, + "80": 2, + "81": 1, + "82": 5, + "83": 2, + "84": 3, + "85": 5, + "86": 5, + "87": 5, + "88": 7, + "89": 4, + "90": 3, + "91": 6, + "92": 5, + "93": 5, + "94": 2, + "95": 3, + "96": 7, + "97": 3, + "98": 5, + "99": 8, + "100": 6, + "101": 1, + "102": 5, + "103": 9, + "104": 1, + "105": 3, + "106": 5, + "107": 4, + "108": 6, + "109": 5, + "110": 7, + "111": 3, + "112": 5, + "113": 7, + "114": 4, + "115": 2, + "116": 3, + "117": 5, + "118": 4, + "119": 3, + "120": 6, + "121": 4, + "122": 4, + "123": 4, + "124": 4, + "125": 2, + "126": 7, + "127": 5, + "130": 5, + "131": 6, + "132": 8, + "133": 4, + "134": 3, + "135": 7, + "136": 6, + "137": 2, + "138": 4, + "139": 5, + "140": 8, + "141": 4, + "142": 1, + "143": 7, + "144": 9, + "145": 2, + "146": 3, + "147": 6, + "148": 2, + "149": 5, + "150": 8, + "151": 3, + "152": 2, + "153": 3, + "154": 2, + "155": 5, + "156": 2, + "157": 3, + "158": 5, + "159": 4, + "160": 5, + "161": 7, + "162": 1, + "163": 2, + "164": 1, + "165": 3, + "166": 9, + "167": 5, + "168": 1, + "169": 4, + "170": 5, + "171": 3, + "172": 4, + "173": 4, + "174": 5, + "175": 6, + "176": 3, + "177": 5, + "178": 2, + "179": 2, + "180": 3, + "181": 2, + "182": 6, + "183": 8, + "184": 7, + "185": 1, + "186": 7, + "187": 4, + "188": 2, + "189": 4, + "190": 7, + "191": 4, + "192": 3, + "193": 1, + "194": 4, + "195": 4, + "196": 5, + "197": 1, + "198": 2, + "199": 5, + "200": 7, + "201": 3, + "202": 4, + "203": 5, + "204": 4, + "205": 7, + "206": 6, + "207": 2, + "208": 3, + "209": 4, + "210": 8, + "211": 3, + "212": 5, + "213": 6, + "214": 1, + "216": 2, + "217": 6, + "218": 4, + "219": 3, + "220": 6, + "221": 5, + "222": 5, + "223": 6, + "224": 3, + "225": 4, + "226": 3, + "227": 1, + "228": 4, + "229": 4, + "230": 1, + "231": 5, + "232": 4, + "234": 3, + "235": 4, + "237": 2, + "238": 6, + "239": 3, + "240": 5, + "241": 4, + "242": 3, + "243": 1, + "244": 3, + "245": 6, + "246": 5, + "247": 2, + "248": 4, + "249": 4, + "250": 2, + "251": 1, + "252": 7, + "253": 4, + "254": 1, + "255": 6, + "256": 4, + "257": 2, + "258": 2, + "259": 5, + "260": 96889 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333836266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882717aaad47292" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "717aaad4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_14.html b/autobahn/client/tungstenite_case_12_5_14.html new file mode 100644 index 0000000..d0e1c19 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_14.html @@ -0,0 +1,1408 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.14 : Pass - 6537 ms @ 2025-09-11T20:10:38.256Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=387&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: MhjnjmrzgSj7u3r3q3SNFA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: FY6arVMrr6HYAEZjhv4sVANf5Uo=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
507415074
7208214416
722417224
730017300
730917309
731217312
747517475
747817478
752117521
757217572
759917599
762517625
787717877
790617906
791417914
817218172
820318203
822518225
855818558
858418584
858518585
890118901
893818938
904019040
914419144
918119181
946919469
948819488
949919499
954819548
955019550
957219572
986319863
986519865
990419904
990619906
993419934
996519965
10375110375
10387110387
10439110439
10546110546
10563110563
10611110611
10841110841
10842110842
10849110849
11081111081
11171111171
11198111198
11202111202
11223111223
11228111228
11272111272
11282111282
11323111323
11324111324
11335111335
11440111440
11587111587
11715111715
11822111822
12020112020
12138112138
12232112232
12306112306
12436112436
12563112563
12862112862
12940112940
13038113038
13301113301
13427113427
13540113540
13914113914
14043114043
14108114108
14266114266
14281114281
14290114290
14318114318
14329114329
14335114335
14386114386
14395114395
14401114401
14489114489
14496114496
14499114499
14604114604
14620229240
14628114628
14693114693
14733114733
14744114744
14748114748
14759114759
14765114765
14773114773
14802114802
15152115152
15277115277
15417115417
15851115851
15983115983
16033116033
16127116127
16149116149
16196116196
16709116709
16782116782
16898116898
17741117741
17878117878
17948117948
18015118015
18035118035
18140118140
18188118188
18298118298
18343118343
18418118418
18807118807
18929118929
19067119067
19402119402
19515119515
19638119638
20333120333
20453120453
20577120577
20579120579
20672120672
20793120793
20831120831
20847120847
20860120860
21558121558
21658121658
21716121716
21866121866
21868121868
21877121877
22456122456
22469122469
22473122473
22839122839
22951122951
23071123071
23170123170
23308123308
23441123441
23783123783
23887123887
23994123994
24095124095
24206124206
24335124335
25223125223
25352125352
25471125471
25707125707
25805125805
25817125817
25866125866
25913125913
25972125972
26513126513
26540126540
26610126610
27105127105
27210127210
27321127321
27731127731
27763127763
27796127796
28403128403
28538128538
28673128673
29036129036
29092129092
29120129120
29198129198
29266129266
29267129267
29291129291
29389129389
29491129491
30629130629
30652130652
30685130685
31288131288
31308131308
31382131382
31426131426
31492131492
31556131556
31867131867
32004132004
32150132150
32734132734
32809132809
33423133423
33531133531
33618133618
33643133643
33783133783
33916133916
34330134330
34396134396
34441134441
34735134735
34838134838
34935134935
35251135251
35326135326
35338135338
36086136086
36208136208
36295136295
36319136319
36384136384
36407136407
36429136429
36483136483
36507136507
36543136543
36576136576
36636136636
37754137754
37826137826
37872137872
37919137919
37966137966
38005138005
38059138059
38129138129
38196138196
38283138283
38350138350
38424138424
39122139122
39153139153
39189139189
39254139254
39278139278
39418139418
39613139613
39741139741
39821139821
40524140524
40604140604
40612140612
40656140656
40765140765
40830140830
41469141469
41521141521
41538141538
41674141674
41688141688
41754141754
41825141825
41844141844
41859141859
41881141881
41891283782
41913141913
41970141970
41979283958
41984141984
42006142006
42012142012
42017142017
42044142044
42109142109
42151142151
42223142223
42240142240
42249142249
42258284516
42289142289
42304142304
42348284696
42349142349
42361142361
42363142363
42367142367
42376142376
42379142379
42418142418
42655142655
42661142661
42707142707
42745142745
42746142746
42781142781
42791142791
42813142813
42825142825
42862142862
42865142865
42870142870
42877142877
42943142943
42989142989
43146143146
43215143215
43223143223
43225143225
43237143237
43241143241
43270143270
43274143274
43283143283
43306143306
43311143311
43350143350
43440143440
43467143467
43504143504
43511143511
43534143534
43551143551
43553143553
43564143564
43580143580
43613143613
43618143618
43619143619
43644143644
43658143658
43665143665
43666143666
43697143697
43709143709
43717143717
43756143756
43773143773
43779143779
43786143786
43790143790
43792143792
43844143844
43848143848
43896143896
43917143917
43928143928
43949143949
44156144156
44293144293
44428144428
44532144532
44539144539
44641144641
44672144672
44698144698
44798144798
44980144980
45091145091
45199145199
45576145576
45584145584
45610145610
45740145740
45743145743
45747145747
45784145784
45830291660
45837145837
45846145846
45864145864
45871145871
45890145890
45930145930
46572146572
46663146663
46664146664
47246147246
47376147376
47502147502
48794148794
48898148898
48999148999
50061150061
50174150174
50288150288
50877150877
50979150979
51080151080
52716152716
52769152769
52889152889
53320153320
53422153422
53526153526
55401155401
55494155494
55499155499
55603155603
55621155621
55747155747
57804157804
57903157903
57920157920
58001158001
58246158246
58356158356
58477158477
59722159722
59770159770
59875159875
61019161019
61144161144
61183161183
61778161778
61780161780
61781161781
61861161861
61862161862
61985161985
61986161986
61987161987
62234162234
62277162277
62279162279
622842124568
62286162286
62288162288
62291162291
62292162292
62314162314
62319162319
62324162324
62344162344
62345162345
62346162346
62347162347
62348162348
62371162371
62403162403
62419162419
62427162427
62430162430
62436162436
62438162438
62440162440
62442162442
62459162459
62463162463
62469162469
62471162471
62483162483
62484162484
62487162487
62491162491
62494162494
62495162495
624992124998
62501162501
625032125006
62504162504
62506162506
62508162508
62509162509
62511162511
62520162520
62521162521
62522162522
625253187575
625272125054
62529162529
62532162532
625353187605
625362125072
62537162537
62538162538
62542162542
62552162552
62564162564
62567162567
62568162568
62569162569
62570162570
62571162571
62575162575
62577162577
62600162600
62601162601
62602162602
626102125220
62615162615
62616162616
62617162617
62639162639
626403187920
62644162644
626482125296
62650162650
62652162652
626533187959
62655162655
62657162657
62659162659
62660162660
62661162661
626653187995
62670162670
62677162677
626852125370
62689162689
626902125380
62691162691
626922125384
626942125388
62695162695
626962125392
626972125394
62698162698
62700162700
627012125402
62702162702
62704162704
627083188124
627312125462
62733162733
62738162738
62740162740
627412125482
62742162742
627432125486
627443188232
62745162745
627483188244
62751162751
627523188256
627534251012
62755162755
62756162756
62757162757
62758162758
62760162760
627612125522
62762162762
627642125528
62765162765
62767162767
62771162771
62778162778
627833188349
62784162784
62785162785
627863188358
62788162788
62789162789
62790162790
627922125584
62793162793
627942125588
62797162797
62798162798
628002125600
628012125602
62802162802
62804162804
62806162806
628072125614
62808162808
62810162810
628135314065
628143188442
62815162815
62818162818
628213188463
62832162832
62843162843
62844162844
628452125690
62849162849
62854162854
62859162859
62863162863
62864162864
62867162867
62882162882
62897162897
62899162899
62914162914
62915162915
62916162916
629183188754
629192125838
62921162921
62922162922
62924162924
62927162927
62928162928
62932162932
62940162940
62941162941
62944162944
62945162945
62947162947
62952162952
62954162954
62955162955
62957162957
629582125916
629592125918
62960162960
62962162962
629643188892
629652125930
629662125932
629673188901
62972162972
629773188931
62979162979
62980162980
62981162981
62982162982
62987162987
62988162988
62989162989
629964251984
62997162997
63001163001
63003163003
630072126014
63013163013
630152126030
63026163026
63033163033
63039163039
63049163049
63055163055
63063163063
631132126226
63114163114
63119163119
631202126240
63121163121
631222126244
63123163123
63125163125
63130163130
63134163134
63138163138
63149163149
63151163151
63154163154
63161163161
63165163165
63167163167
63170163170
63171163171
63173163173
63174163174
63177163177
63178163178
63182163182
631832126366
631912126382
63192163192
63194163194
63195163195
63197163197
63198163198
63199163199
632022126404
63205163205
63210163210
63212163212
63215163215
63230163230
63232163232
63236163236
632672126534
63280163280
63282163282
63285163285
63371163371
63373163373
63374163374
63379163379
63382163382
63383163383
634102126820
63412163412
63431163431
63433163433
63435163435
63461163461
63462163462
63465163465
63466163466
634672126934
63468163468
63471163471
63472163472
63474163474
63495163495
63498163498
63504163504
63513163513
63515163515
63526163526
63527163527
63528163528
635432127086
63547163547
63548163548
635492127098
635512127102
63552163552
63560163560
63563163563
63564163564
635772127154
63584163584
63619163619
63620163620
63621163621
636333190899
636352127270
63639163639
636562127312
63657163657
636662127332
63669163669
63672163672
63673163673
636782127356
63682163682
63683163683
63684163684
636852127370
636882127376
63689163689
63693163693
63699163699
637014254804
63702163702
63703163703
63704163704
637072127414
63709163709
637123191136
63713163713
63724163724
63742163742
63770163770
63784163784
63786163786
638053191415
638272127654
63831163831
63836163836
638402127680
638423191526
638454255380
63846163846
63856163856
63861163861
638673191601
63868163868
638693191607
63872163872
63874163874
63881163881
63882163882
638852127770
63887163887
63888163888
63889163889
63891163891
63892163892
638942127788
63896163896
63897163897
63898163898
63901163901
63903163903
63905163905
63906163906
63918163918
63920163920
63921163921
63926163926
63941163941
63984163984
63986163986
63988163988
640043192012
64095164095
64098164098
640992128198
64100164100
64101164101
64109164109
64111164111
64113164113
641562128312
64163164163
64194164194
64231164231
64232164232
64233164233
642442128488
642452128490
64246164246
64247164247
642492128498
64254164254
64277164277
64280164280
64282164282
64292164292
64295164295
64296164296
64310164310
64314164314
64315164315
64316164316
64317164317
64333164333
64334164334
64339164339
64342164342
64348164348
643492128698
643503193050
64351164351
64368164368
64379164379
64383164383
64384164384
64395164395
64396164396
643973193191
64398164398
64400164400
64405164405
64423164423
64427164427
64428164428
64429164429
64431164431
64434164434
64437164437
64442164442
644502128900
64451164451
64453164453
64455164455
64468164468
64469164469
64470164470
64472164472
644763193428
64477164477
64479164479
Total100449774635
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
236
313
4624
5420
6424
7321
8324
919
10550
12672
13339
14684
15690
16580
17351
18590
19357
205100
21484
229198
23123
24124
258200
264104
279243
28128
298232
30390
31393
32264
337231
348272
353105
365180
384152
39278
40140
415205
42284
43286
444176
454180
46146
47147
483144
494196
503150
515255
523156
535265
545270
5512660
56156
578456
583174
593177
605300
612122
625310
634252
64164
656390
668528
675335
685340
69169
706420
714284
726432
732146
744296
752150
764304
776462
783234
79179
804320
814324
822164
833249
843252
85185
863258
878696
886528
895445
903270
915455
926552
934372
943282
959855
96196
972194
98198
992198
1005500
1014404
1024408
1034412
1043312
1055525
1065530
1073321
1094436
1103330
1113333
1121112
1132226
1141114
1151115
1164464
1178936
1186708
1197833
1201120
1213363
1223366
1231123
1242248
1253375
1262252
1271127
1302260
1313393
1325660
13381064
1346804
1356810
1364544
137111507
1386828
1395695
1406840
14191269
1425710
14371001
1444576
1452290
1465730
1473441
1484592
1495745
1505750
1511151
1524608
1531153
1541154
1552310
1561156
1572314
1584632
1596954
1602320
1613483
1621162
1635815
1642328
1651165
1672334
1683504
1695845
1702340
17161026
17261032
1733519
17481392
1753525
1763528
1773531
1782356
1805900
1814724
1824728
1842368
18571295
1863558
1874748
1882376
1891189
19091710
19181528
1923576
193101930
1945970
19561170
1963588
197101970
1984792
1993597
2002400
2013603
2024808
2034812
2042408
2063618
2073621
2083624
20961254
2103630
21151055
21261272
2132426
2141214
21551075
21661296
21781736
2183654
2193657
22051100
2214884
22251110
2233669
2244896
2254900
2264904
2273681
22851140
22951145
23071610
2314924
23281856
23351165
23451170
23551175
23661416
2373711
23851190
2391239
240122880
24151205
2424968
24361458
2454980
2462492
24751235
2481248
2493747
25061500
25141004
25241008
25341012
2542508
2552510
25671792
2573771
25841032
2592518
26019389750413220
Total19489950545270
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
0193897
21000
81
Total194898
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333837266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88826ec4ef1a6d2c
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3665633465663161
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_14.json b/autobahn/client/tungstenite_case_12_5_14.json new file mode 100644 index 0000000..37f5da4 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_14.json @@ -0,0 +1,1255 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 387, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 6537, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=387&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: MhjnjmrzgSj7u3r3q3SNFA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: FY6arVMrr6HYAEZjhv4sVANf5Uo=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5074": 1, + "7208": 2, + "7224": 1, + "7300": 1, + "7309": 1, + "7312": 1, + "7475": 1, + "7478": 1, + "7521": 1, + "7572": 1, + "7599": 1, + "7625": 1, + "7877": 1, + "7906": 1, + "7914": 1, + "8172": 1, + "8203": 1, + "8225": 1, + "8558": 1, + "8584": 1, + "8585": 1, + "8901": 1, + "8938": 1, + "9040": 1, + "9144": 1, + "9181": 1, + "9469": 1, + "9488": 1, + "9499": 1, + "9548": 1, + "9550": 1, + "9572": 1, + "9863": 1, + "9865": 1, + "9904": 1, + "9906": 1, + "9934": 1, + "9965": 1, + "10375": 1, + "10387": 1, + "10439": 1, + "10546": 1, + "10563": 1, + "10611": 1, + "10841": 1, + "10842": 1, + "10849": 1, + "11081": 1, + "11171": 1, + "11198": 1, + "11202": 1, + "11223": 1, + "11228": 1, + "11272": 1, + "11282": 1, + "11323": 1, + "11324": 1, + "11335": 1, + "11440": 1, + "11587": 1, + "11715": 1, + "11822": 1, + "12020": 1, + "12138": 1, + "12232": 1, + "12306": 1, + "12436": 1, + "12563": 1, + "12862": 1, + "12940": 1, + "13038": 1, + "13301": 1, + "13427": 1, + "13540": 1, + "13914": 1, + "14043": 1, + "14108": 1, + "14266": 1, + "14281": 1, + "14290": 1, + "14318": 1, + "14329": 1, + "14335": 1, + "14386": 1, + "14395": 1, + "14401": 1, + "14489": 1, + "14496": 1, + "14499": 1, + "14604": 1, + "14620": 2, + "14628": 1, + "14693": 1, + "14733": 1, + "14744": 1, + "14748": 1, + "14759": 1, + "14765": 1, + "14773": 1, + "14802": 1, + "15152": 1, + "15277": 1, + "15417": 1, + "15851": 1, + "15983": 1, + "16033": 1, + "16127": 1, + "16149": 1, + "16196": 1, + "16709": 1, + "16782": 1, + "16898": 1, + "17741": 1, + "17878": 1, + "17948": 1, + "18015": 1, + "18035": 1, + "18140": 1, + "18188": 1, + "18298": 1, + "18343": 1, + "18418": 1, + "18807": 1, + "18929": 1, + "19067": 1, + "19402": 1, + "19515": 1, + "19638": 1, + "20333": 1, + "20453": 1, + "20577": 1, + "20579": 1, + "20672": 1, + "20793": 1, + "20831": 1, + "20847": 1, + "20860": 1, + "21558": 1, + "21658": 1, + "21716": 1, + "21866": 1, + "21868": 1, + "21877": 1, + "22456": 1, + "22469": 1, + "22473": 1, + "22839": 1, + "22951": 1, + "23071": 1, + "23170": 1, + "23308": 1, + "23441": 1, + "23783": 1, + "23887": 1, + "23994": 1, + "24095": 1, + "24206": 1, + "24335": 1, + "25223": 1, + "25352": 1, + "25471": 1, + "25707": 1, + "25805": 1, + "25817": 1, + "25866": 1, + "25913": 1, + "25972": 1, + "26513": 1, + "26540": 1, + "26610": 1, + "27105": 1, + "27210": 1, + "27321": 1, + "27731": 1, + "27763": 1, + "27796": 1, + "28403": 1, + "28538": 1, + "28673": 1, + "29036": 1, + "29092": 1, + "29120": 1, + "29198": 1, + "29266": 1, + "29267": 1, + "29291": 1, + "29389": 1, + "29491": 1, + "30629": 1, + "30652": 1, + "30685": 1, + "31288": 1, + "31308": 1, + "31382": 1, + "31426": 1, + "31492": 1, + "31556": 1, + "31867": 1, + "32004": 1, + "32150": 1, + "32734": 1, + "32809": 1, + "33423": 1, + "33531": 1, + "33618": 1, + "33643": 1, + "33783": 1, + "33916": 1, + "34330": 1, + "34396": 1, + "34441": 1, + "34735": 1, + "34838": 1, + "34935": 1, + "35251": 1, + "35326": 1, + "35338": 1, + "36086": 1, + "36208": 1, + "36295": 1, + "36319": 1, + "36384": 1, + "36407": 1, + "36429": 1, + "36483": 1, + "36507": 1, + "36543": 1, + "36576": 1, + "36636": 1, + "37754": 1, + "37826": 1, + "37872": 1, + "37919": 1, + "37966": 1, + "38005": 1, + "38059": 1, + "38129": 1, + "38196": 1, + "38283": 1, + "38350": 1, + "38424": 1, + "39122": 1, + "39153": 1, + "39189": 1, + "39254": 1, + "39278": 1, + "39418": 1, + "39613": 1, + "39741": 1, + "39821": 1, + "40524": 1, + "40604": 1, + "40612": 1, + "40656": 1, + "40765": 1, + "40830": 1, + "41469": 1, + "41521": 1, + "41538": 1, + "41674": 1, + "41688": 1, + "41754": 1, + "41825": 1, + "41844": 1, + "41859": 1, + "41881": 1, + "41891": 2, + "41913": 1, + "41970": 1, + "41979": 2, + "41984": 1, + "42006": 1, + "42012": 1, + "42017": 1, + "42044": 1, + "42109": 1, + "42151": 1, + "42223": 1, + "42240": 1, + "42249": 1, + "42258": 2, + "42289": 1, + "42304": 1, + "42348": 2, + "42349": 1, + "42361": 1, + "42363": 1, + "42367": 1, + "42376": 1, + "42379": 1, + "42418": 1, + "42655": 1, + "42661": 1, + "42707": 1, + "42745": 1, + "42746": 1, + "42781": 1, + "42791": 1, + "42813": 1, + "42825": 1, + "42862": 1, + "42865": 1, + "42870": 1, + "42877": 1, + "42943": 1, + "42989": 1, + "43146": 1, + "43215": 1, + "43223": 1, + "43225": 1, + "43237": 1, + "43241": 1, + "43270": 1, + "43274": 1, + "43283": 1, + "43306": 1, + "43311": 1, + "43350": 1, + "43440": 1, + "43467": 1, + "43504": 1, + "43511": 1, + "43534": 1, + "43551": 1, + "43553": 1, + "43564": 1, + "43580": 1, + "43613": 1, + "43618": 1, + "43619": 1, + "43644": 1, + "43658": 1, + "43665": 1, + "43666": 1, + "43697": 1, + "43709": 1, + "43717": 1, + "43756": 1, + "43773": 1, + "43779": 1, + "43786": 1, + "43790": 1, + "43792": 1, + "43844": 1, + "43848": 1, + "43896": 1, + "43917": 1, + "43928": 1, + "43949": 1, + "44156": 1, + "44293": 1, + "44428": 1, + "44532": 1, + "44539": 1, + "44641": 1, + "44672": 1, + "44698": 1, + "44798": 1, + "44980": 1, + "45091": 1, + "45199": 1, + "45576": 1, + "45584": 1, + "45610": 1, + "45740": 1, + "45743": 1, + "45747": 1, + "45784": 1, + "45830": 2, + "45837": 1, + "45846": 1, + "45864": 1, + "45871": 1, + "45890": 1, + "45930": 1, + "46572": 1, + "46663": 1, + "46664": 1, + "47246": 1, + "47376": 1, + "47502": 1, + "48794": 1, + "48898": 1, + "48999": 1, + "50061": 1, + "50174": 1, + "50288": 1, + "50877": 1, + "50979": 1, + "51080": 1, + "52716": 1, + "52769": 1, + "52889": 1, + "53320": 1, + "53422": 1, + "53526": 1, + "55401": 1, + "55494": 1, + "55499": 1, + "55603": 1, + "55621": 1, + "55747": 1, + "57804": 1, + "57903": 1, + "57920": 1, + "58001": 1, + "58246": 1, + "58356": 1, + "58477": 1, + "59722": 1, + "59770": 1, + "59875": 1, + "61019": 1, + "61144": 1, + "61183": 1, + "61778": 1, + "61780": 1, + "61781": 1, + "61861": 1, + "61862": 1, + "61985": 1, + "61986": 1, + "61987": 1, + "62234": 1, + "62277": 1, + "62279": 1, + "62284": 2, + "62286": 1, + "62288": 1, + "62291": 1, + "62292": 1, + "62314": 1, + "62319": 1, + "62324": 1, + "62344": 1, + "62345": 1, + "62346": 1, + "62347": 1, + "62348": 1, + "62371": 1, + "62403": 1, + "62419": 1, + "62427": 1, + "62430": 1, + "62436": 1, + "62438": 1, + "62440": 1, + "62442": 1, + "62459": 1, + "62463": 1, + "62469": 1, + "62471": 1, + "62483": 1, + "62484": 1, + "62487": 1, + "62491": 1, + "62494": 1, + "62495": 1, + "62499": 2, + "62501": 1, + "62503": 2, + "62504": 1, + "62506": 1, + "62508": 1, + "62509": 1, + "62511": 1, + "62520": 1, + "62521": 1, + "62522": 1, + "62525": 3, + "62527": 2, + "62529": 1, + "62532": 1, + "62535": 3, + "62536": 2, + "62537": 1, + "62538": 1, + "62542": 1, + "62552": 1, + "62564": 1, + "62567": 1, + "62568": 1, + "62569": 1, + "62570": 1, + "62571": 1, + "62575": 1, + "62577": 1, + "62600": 1, + "62601": 1, + "62602": 1, + "62610": 2, + "62615": 1, + "62616": 1, + "62617": 1, + "62639": 1, + "62640": 3, + "62644": 1, + "62648": 2, + "62650": 1, + "62652": 1, + "62653": 3, + "62655": 1, + "62657": 1, + "62659": 1, + "62660": 1, + "62661": 1, + "62665": 3, + "62670": 1, + "62677": 1, + "62685": 2, + "62689": 1, + "62690": 2, + "62691": 1, + "62692": 2, + "62694": 2, + "62695": 1, + "62696": 2, + "62697": 2, + "62698": 1, + "62700": 1, + "62701": 2, + "62702": 1, + "62704": 1, + "62708": 3, + "62731": 2, + "62733": 1, + "62738": 1, + "62740": 1, + "62741": 2, + "62742": 1, + "62743": 2, + "62744": 3, + "62745": 1, + "62748": 3, + "62751": 1, + "62752": 3, + "62753": 4, + "62755": 1, + "62756": 1, + "62757": 1, + "62758": 1, + "62760": 1, + "62761": 2, + "62762": 1, + "62764": 2, + "62765": 1, + "62767": 1, + "62771": 1, + "62778": 1, + "62783": 3, + "62784": 1, + "62785": 1, + "62786": 3, + "62788": 1, + "62789": 1, + "62790": 1, + "62792": 2, + "62793": 1, + "62794": 2, + "62797": 1, + "62798": 1, + "62800": 2, + "62801": 2, + "62802": 1, + "62804": 1, + "62806": 1, + "62807": 2, + "62808": 1, + "62810": 1, + "62813": 5, + "62814": 3, + "62815": 1, + "62818": 1, + "62821": 3, + "62832": 1, + "62843": 1, + "62844": 1, + "62845": 2, + "62849": 1, + "62854": 1, + "62859": 1, + "62863": 1, + "62864": 1, + "62867": 1, + "62882": 1, + "62897": 1, + "62899": 1, + "62914": 1, + "62915": 1, + "62916": 1, + "62918": 3, + "62919": 2, + "62921": 1, + "62922": 1, + "62924": 1, + "62927": 1, + "62928": 1, + "62932": 1, + "62940": 1, + "62941": 1, + "62944": 1, + "62945": 1, + "62947": 1, + "62952": 1, + "62954": 1, + "62955": 1, + "62957": 1, + "62958": 2, + "62959": 2, + "62960": 1, + "62962": 1, + "62964": 3, + "62965": 2, + "62966": 2, + "62967": 3, + "62972": 1, + "62977": 3, + "62979": 1, + "62980": 1, + "62981": 1, + "62982": 1, + "62987": 1, + "62988": 1, + "62989": 1, + "62996": 4, + "62997": 1, + "63001": 1, + "63003": 1, + "63007": 2, + "63013": 1, + "63015": 2, + "63026": 1, + "63033": 1, + "63039": 1, + "63049": 1, + "63055": 1, + "63063": 1, + "63113": 2, + "63114": 1, + "63119": 1, + "63120": 2, + "63121": 1, + "63122": 2, + "63123": 1, + "63125": 1, + "63130": 1, + "63134": 1, + "63138": 1, + "63149": 1, + "63151": 1, + "63154": 1, + "63161": 1, + "63165": 1, + "63167": 1, + "63170": 1, + "63171": 1, + "63173": 1, + "63174": 1, + "63177": 1, + "63178": 1, + "63182": 1, + "63183": 2, + "63191": 2, + "63192": 1, + "63194": 1, + "63195": 1, + "63197": 1, + "63198": 1, + "63199": 1, + "63202": 2, + "63205": 1, + "63210": 1, + "63212": 1, + "63215": 1, + "63230": 1, + "63232": 1, + "63236": 1, + "63267": 2, + "63280": 1, + "63282": 1, + "63285": 1, + "63371": 1, + "63373": 1, + "63374": 1, + "63379": 1, + "63382": 1, + "63383": 1, + "63410": 2, + "63412": 1, + "63431": 1, + "63433": 1, + "63435": 1, + "63461": 1, + "63462": 1, + "63465": 1, + "63466": 1, + "63467": 2, + "63468": 1, + "63471": 1, + "63472": 1, + "63474": 1, + "63495": 1, + "63498": 1, + "63504": 1, + "63513": 1, + "63515": 1, + "63526": 1, + "63527": 1, + "63528": 1, + "63543": 2, + "63547": 1, + "63548": 1, + "63549": 2, + "63551": 2, + "63552": 1, + "63560": 1, + "63563": 1, + "63564": 1, + "63577": 2, + "63584": 1, + "63619": 1, + "63620": 1, + "63621": 1, + "63633": 3, + "63635": 2, + "63639": 1, + "63656": 2, + "63657": 1, + "63666": 2, + "63669": 1, + "63672": 1, + "63673": 1, + "63678": 2, + "63682": 1, + "63683": 1, + "63684": 1, + "63685": 2, + "63688": 2, + "63689": 1, + "63693": 1, + "63699": 1, + "63701": 4, + "63702": 1, + "63703": 1, + "63704": 1, + "63707": 2, + "63709": 1, + "63712": 3, + "63713": 1, + "63724": 1, + "63742": 1, + "63770": 1, + "63784": 1, + "63786": 1, + "63805": 3, + "63827": 2, + "63831": 1, + "63836": 1, + "63840": 2, + "63842": 3, + "63845": 4, + "63846": 1, + "63856": 1, + "63861": 1, + "63867": 3, + "63868": 1, + "63869": 3, + "63872": 1, + "63874": 1, + "63881": 1, + "63882": 1, + "63885": 2, + "63887": 1, + "63888": 1, + "63889": 1, + "63891": 1, + "63892": 1, + "63894": 2, + "63896": 1, + "63897": 1, + "63898": 1, + "63901": 1, + "63903": 1, + "63905": 1, + "63906": 1, + "63918": 1, + "63920": 1, + "63921": 1, + "63926": 1, + "63941": 1, + "63984": 1, + "63986": 1, + "63988": 1, + "64004": 3, + "64095": 1, + "64098": 1, + "64099": 2, + "64100": 1, + "64101": 1, + "64109": 1, + "64111": 1, + "64113": 1, + "64156": 2, + "64163": 1, + "64194": 1, + "64231": 1, + "64232": 1, + "64233": 1, + "64244": 2, + "64245": 2, + "64246": 1, + "64247": 1, + "64249": 2, + "64254": 1, + "64277": 1, + "64280": 1, + "64282": 1, + "64292": 1, + "64295": 1, + "64296": 1, + "64310": 1, + "64314": 1, + "64315": 1, + "64316": 1, + "64317": 1, + "64333": 1, + "64334": 1, + "64339": 1, + "64342": 1, + "64348": 1, + "64349": 2, + "64350": 3, + "64351": 1, + "64368": 1, + "64379": 1, + "64383": 1, + "64384": 1, + "64395": 1, + "64396": 1, + "64397": 3, + "64398": 1, + "64400": 1, + "64405": 1, + "64423": 1, + "64427": 1, + "64428": 1, + "64429": 1, + "64431": 1, + "64434": 1, + "64437": 1, + "64442": 1, + "64450": 2, + "64451": 1, + "64453": 1, + "64455": 1, + "64468": 1, + "64469": 1, + "64470": 1, + "64472": 1, + "64476": 3, + "64477": 1, + "64479": 1 + }, + "started": "2025-09-11T20:10:38.256Z", + "trafficStats": { + "incomingCompressionRatio": 0.7593745422363282, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 49766370, + "incomingOctetsWireLevel": 49774370, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0001607511257099925, + "outgoingCompressionRatio": 0.7593745422363282, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 49766370, + "outgoingOctetsWireLevel": 50545014, + "outgoingWebSocketFrames": 194897, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015645987440916425, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 193897, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 3, + "3": 1, + "4": 6, + "5": 4, + "6": 4, + "7": 3, + "8": 3, + "9": 1, + "10": 5, + "12": 6, + "13": 3, + "14": 6, + "15": 6, + "16": 5, + "17": 3, + "18": 5, + "19": 3, + "20": 5, + "21": 4, + "22": 9, + "23": 1, + "24": 1, + "25": 8, + "26": 4, + "27": 9, + "28": 1, + "29": 8, + "30": 3, + "31": 3, + "32": 2, + "33": 7, + "34": 8, + "35": 3, + "36": 5, + "38": 4, + "39": 2, + "40": 1, + "41": 5, + "42": 2, + "43": 2, + "44": 4, + "45": 4, + "46": 1, + "47": 1, + "48": 3, + "49": 4, + "50": 3, + "51": 5, + "52": 3, + "53": 5, + "54": 5, + "55": 12, + "56": 1, + "57": 8, + "58": 3, + "59": 3, + "60": 5, + "61": 2, + "62": 5, + "63": 4, + "64": 1, + "65": 6, + "66": 8, + "67": 5, + "68": 5, + "69": 1, + "70": 6, + "71": 4, + "72": 6, + "73": 2, + "74": 4, + "75": 2, + "76": 4, + "77": 6, + "78": 3, + "79": 1, + "80": 4, + "81": 4, + "82": 2, + "83": 3, + "84": 3, + "85": 1, + "86": 3, + "87": 8, + "88": 6, + "89": 5, + "90": 3, + "91": 5, + "92": 6, + "93": 4, + "94": 3, + "95": 9, + "96": 1, + "97": 2, + "98": 1, + "99": 2, + "100": 5, + "101": 4, + "102": 4, + "103": 4, + "104": 3, + "105": 5, + "106": 5, + "107": 3, + "109": 4, + "110": 3, + "111": 3, + "112": 1, + "113": 2, + "114": 1, + "115": 1, + "116": 4, + "117": 8, + "118": 6, + "119": 7, + "120": 1, + "121": 3, + "122": 3, + "123": 1, + "124": 2, + "125": 3, + "126": 2, + "127": 1, + "130": 2, + "131": 3, + "132": 5, + "133": 8, + "134": 6, + "135": 6, + "136": 4, + "137": 11, + "138": 6, + "139": 5, + "140": 6, + "141": 9, + "142": 5, + "143": 7, + "144": 4, + "145": 2, + "146": 5, + "147": 3, + "148": 4, + "149": 5, + "150": 5, + "151": 1, + "152": 4, + "153": 1, + "154": 1, + "155": 2, + "156": 1, + "157": 2, + "158": 4, + "159": 6, + "160": 2, + "161": 3, + "162": 1, + "163": 5, + "164": 2, + "165": 1, + "167": 2, + "168": 3, + "169": 5, + "170": 2, + "171": 6, + "172": 6, + "173": 3, + "174": 8, + "175": 3, + "176": 3, + "177": 3, + "178": 2, + "180": 5, + "181": 4, + "182": 4, + "184": 2, + "185": 7, + "186": 3, + "187": 4, + "188": 2, + "189": 1, + "190": 9, + "191": 8, + "192": 3, + "193": 10, + "194": 5, + "195": 6, + "196": 3, + "197": 10, + "198": 4, + "199": 3, + "200": 2, + "201": 3, + "202": 4, + "203": 4, + "204": 2, + "206": 3, + "207": 3, + "208": 3, + "209": 6, + "210": 3, + "211": 5, + "212": 6, + "213": 2, + "214": 1, + "215": 5, + "216": 6, + "217": 8, + "218": 3, + "219": 3, + "220": 5, + "221": 4, + "222": 5, + "223": 3, + "224": 4, + "225": 4, + "226": 4, + "227": 3, + "228": 5, + "229": 5, + "230": 7, + "231": 4, + "232": 8, + "233": 5, + "234": 5, + "235": 5, + "236": 6, + "237": 3, + "238": 5, + "239": 1, + "240": 12, + "241": 5, + "242": 4, + "243": 6, + "245": 4, + "246": 2, + "247": 5, + "248": 1, + "249": 3, + "250": 6, + "251": 4, + "252": 4, + "253": 4, + "254": 2, + "255": 2, + "256": 7, + "257": 3, + "258": 4, + "259": 2, + "260": 193897 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333837266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826ec4ef1a6d2c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6ec4ef1a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_15.html b/autobahn/client/tungstenite_case_12_5_15.html new file mode 100644 index 0000000..64b6dd2 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_15.html @@ -0,0 +1,1437 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.15 : Pass - 11355 ms @ 2025-09-11T20:10:44.795Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=388&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: o020dgwatIuJcRhHMo8ujQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Urhbq2AW8cHXq9Ywau5vtJ7SLdM=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
51151
1431143
2381238
2571257
150011500
156911569
161311613
161911619
170611706
175811758
372313723
382613826
392213922
392813928
398013980
401314013
403014030
412314123
413014130
425814258
439314393
451114511
452714527
464614646
470214702
486514865
501915019
516915169
558015580
564915649
571015710
575215752
583215832
590715907
785817858
795017950
798617986
804018040
812118121
820318203
923519235
933719337
944919449
953119531
961019610
967219672
968019680
970719707
980219802
980419804
986119861
989619896
992819928
995019950
997719977
10067110067
10208110208
10258110258
10940110940
10960110960
11040111040
11153111153
11255111255
11345111345
11454111454
13587113587
13659113659
13757113757
13778113778
13798113798
13832113832
14480114480
14770114770
14874114874
14891114891
14993114993
15119115119
15124115124
15174115174
15175115175
15222115222
15253115253
15267115267
15286115286
15320115320
15329115329
15370230740
15444115444
15447115447
15470115470
15482115482
15497115497
15565115565
15583115583
15624115624
17579117579
17651117651
17704117704
17774117774
17833117833
18732118732
18799118799
18887118887
18922118922
19004119004
19095119095
19284119284
19299119299
19319119319
19337119337
19356119356
19368119368
19520119520
19532119532
19555119555
19564119564
19590119590
19966119966
20226120226
20361120361
20496120496
20632120632
20741120741
20873120873
21203121203
21216121216
21219121219
21231121231
21235121235
21248121248
21258121258
21329121329
21332121332
21386121386
21464121464
21487121487
21515121515
21573121573
21620121620
21642121642
21648121648
21685121685
21857121857
21883121883
21889121889
21909243818
22080122080
22089122089
22099122099
22119122119
22136122136
22150122150
22341122341
22388244776
22403122403
22415122415
22420122420
22445122445
23445123445
23586123586
23684123684
23824123824
23966123966
24102124102
25402125402
25539125539
25744125744
25806125806
25940125940
26072126072
28502128502
28647128647
28797128797
28932128932
29081129081
29223129223
29655129655
29682129682
29775129775
29900129900
29972129972
30000130000
30873130873
30936130936
31071131071
31202131202
31340131340
31476131476
31526131526
31551131551
31576131576
31598131598
31619131619
31632131632
32056132056
32133132133
32214132214
32302132302
32378132378
32450132450
33494133494
33633133633
33716133716
33834133834
33965133965
34106134106
36043136043
36049136049
36143136143
36183136183
36191136191
36273136273
36281136281
36289136289
36307136307
36321136321
36364136364
36378136378
36418136418
36472136472
36503136503
36532136532
36629136629
36752136752
37487137487
37534137534
37580137580
37642137642
37772137772
37840137840
39480139480
39577139577
39662279324
39695139695
39812139812
39997139997
40096140096
40198140198
40212140212
40225140225
40231140231
40232140232
40234140234
40258140258
40277140277
40368140368
40469140469
41365141365
41428141428
41570141570
41702141702
41837141837
41967141967
42480142480
42499284998
42563142563
42577142577
42578142578
42594142594
42598142598
42641142641
42686142686
42704142704
43689143689
43767143767
43791143791
43854143854
43881143881
43917143917
43931143931
43970143970
43971143971
43996143996
44015144015
44045144045
44358144358
44420144420
44427144427
44469144469
44481144481
44493144493
44496144496
44570144570
44592144592
44612144612
44650144650
44687144687
44719144719
44731144731
44788144788
44856144856
44980144980
45101145101
45888145888
45907145907
45911291822
45914145914
45919145919
45926145926
45930145930
459313137793
45954145954
45992145992
46007146007
46051146051
46103146103
46123146123
46128146128
46193146193
46225146225
46259146259
46325146325
46348146348
46431146431
47598147598
47725147725
47800147800
47854147854
47883147883
47973147973
47983147983
48075148075
48099148099
48175148175
48197148197
48233148233
49018149018
49117149117
49214149214
49298149298
49399149399
49465149465
49542149542
49612149612
49620149620
49690149690
49742149742
49766149766
49807299614
49846299692
49881149881
49932149932
49989149989
50047150047
50175150175
50299150299
50420150420
50549150549
50551150551
50576150576
50680150680
50684150684
50722150722
50741150741
50785150785
50790150790
50885150885
50893150893
50968150968
50986150986
51057151057
52729152729
52833152833
52838152838
52865152865
52900152900
52911152911
52949152949
52964152964
529852105970
52994152994
53012153012
53031153031
53033153033
53052153052
53081153081
53094153094
53127153127
53158153158
53163153163
53201153201
53271153271
53321153321
53414153414
53519153519
54724154724
54776154776
54783154783
54787154787
54885154885
54966154966
54991154991
55068155068
55161155161
55263155263
55365155365
55469155469
55488155488
55610155610
55801155801
55853155853
55857155857
55873155873
55891155891
55949155949
55977155977
56005156005
56020156020
56478156478
56531156531
56579156579
56676156676
56702156702
56749156749
56838156838
56848156848
57540157540
57629157629
57719157719
57816157816
57942157942
58013158013
58747158747
58748158748
58754158754
58797158797
587992117598
58800158800
58853158853
58871158871
58956158956
58997158997
59076159076
59121159121
59191159191
592582118516
592613177783
59268159268
593123177936
59314159314
59315159315
59324159324
59386159386
59418159418
59439159439
594452118890
594463178338
59447159447
59452159452
59453159453
59455159455
59457159457
59534159534
59552159552
59553159553
59556159556
595572119114
59564159564
59635159635
59636159636
59638159638
59640159640
59641159641
596452119290
59655159655
596602119320
596612119322
596632119326
59664159664
59665159665
59671159671
59677159677
59679159679
59680159680
596822119364
59683159683
59684159684
59691159691
59694159694
596962119392
59697159697
59702159702
59704159704
597132119426
59716159716
59717159717
59721159721
59738159738
59745159745
597482119496
59754159754
59767159767
59768159768
59770159770
59771159771
59788159788
59793159793
597972119594
59817159817
59830159830
598732119746
59876159876
598812119762
598832119766
598842119768
59888159888
598982119796
599022119804
599033179709
59907159907
59908159908
59909159909
59914159914
59916159916
59917159917
599202119840
59922159922
599332119866
59937159937
59940159940
59945159945
59954159954
59956159956
59957159957
59958159958
59960159960
59975159975
59994159994
59995159995
59997159997
600012120002
60002160002
60003160003
60004160004
60012160012
60013160013
60018160018
60022160022
60024160024
60029160029
60041160041
60043160043
60045160045
60047160047
60051160051
600523180156
600533180159
60058160058
60064160064
600982120196
60108160108
60122160122
60124160124
60135160135
60146160146
60147160147
601532120306
60154160154
60156160156
601582120316
601592120318
60163160163
601752120350
60176160176
601792120358
60181160181
60184160184
60185160185
60186160186
60188160188
601912120382
601922120384
60193160193
60195160195
60200160200
60202160202
602042120408
60207160207
60209160209
602102120420
60211160211
60216160216
60221160221
60222160222
60223160223
60224160224
60225160225
602262120452
602272120454
602282120456
602312120462
602323180696
60233160233
60234160234
60268160268
60269160269
60286160286
60289160289
60294160294
60308160308
60309160309
60311160311
60316160316
60320160320
60322160322
60325160325
60337160337
604012120802
60406160406
60460160460
60464160464
60466160466
60467160467
60469160469
60474160474
60520160520
60573160573
60578160578
60581160581
60587160587
60646160646
60651160651
607432121486
607472121494
60777160777
60778160778
60782160782
60784160784
60819160819
60820160820
608482121696
60940160940
60944160944
60945160945
60948160948
60949160949
60950160950
60951160951
609522121904
609532121906
609542121908
60956160956
60961160961
60963160963
60964160964
60968160968
60973160973
60975160975
60976160976
609802121960
61002161002
610112122022
61014161014
61015161015
61016161016
61019161019
61020161020
61030161030
61053161053
61102161102
61109161109
61152161152
611582122316
61159161159
61160161160
61161161161
61226161226
61228161228
61231161231
61235161235
61259161259
61275161275
61281161281
61282161282
61297161297
613042122608
61305161305
61307161307
613112122622
61330161330
61354161354
61378161378
61387161387
61390161390
61392161392
61393161393
61397161397
61404161404
61425161425
614864245944
61489161489
61492161492
61496161496
61530161530
61533161533
61536161536
615412123082
615432123086
61548161548
61550161550
61551161551
61553161553
61555161555
61558161558
61564161564
61567161567
61596161596
61612161612
61617161617
61620161620
616223184866
616233184869
61624161624
61625161625
61641161641
616452123290
61648161648
61650161650
61651161651
61653161653
61660161660
61661161661
61662161662
61664161664
61669161669
61672161672
616742123348
61678161678
61684161684
61685161685
61687161687
61690161690
61693161693
61700161700
61745161745
61760161760
61763161763
61767161767
61768161768
61770161770
61779161779
61810161810
61811161811
61813161813
61814161814
61815161815
61821161821
61879161879
619752123950
61980161980
61985161985
61987161987
619892123978
619932123986
62011162011
62036162036
62039162039
62040162040
620422124084
620473186141
62052162052
62058162058
62060162060
62072162072
620752124150
62079162079
62103162103
62125162125
62157162157
62164162164
62187162187
62208162208
62211162211
62216162216
62217162217
622182124436
62219162219
622892124578
62296162296
62298162298
62305162305
62308162308
62340162340
62347162347
62349162349
62352162352
62355162355
62360162360
62385162385
62392162392
62396162396
62397162397
62426162426
62431162431
62447162447
62448162448
62452162452
62454162454
62455162455
62456162456
62461162461
62464162464
624682124936
62471162471
62476162476
62480162480
62484162484
62485162485
624872124974
62489162489
62490162490
624913187473
62494162494
62527162527
625302125060
62531162531
625323187596
62533162533
625352125070
62538162538
625694250276
62570162570
62571162571
626063187818
626082125216
62612162612
62616162616
62620162620
62622162622
62627162627
62630162630
62631162631
62645162645
62682162682
62686162686
62692162692
626932125386
62695162695
626982125396
627002125400
62701162701
62703162703
62705162705
62707162707
62708162708
62733162733
627372125474
62741162741
62758162758
62772162772
62778162778
62868162868
62894162894
62908162908
62945162945
62946162946
62947162947
629522125904
62987162987
629912125982
62993162993
62994162994
63058163058
63067163067
630682126136
63069163069
63077163077
63078163078
63359163359
64144164144
64286164286
64387164387
64401164401
64505164505
64517164517
64577164577
64595164595
64600164600
64602164602
646052129210
64623164623
64646164646
64721164721
64751164751
64835164835
64923164923
65160161042560
65282165282
65378165378
65464382487632
65492165492
6553671546858240
Total177499532850
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
3721
4936
5735
6424
7642
8432
9763
10110
11666
12336
13452
14798
15575
16580
176102
18236
19357
208160
215105
22488
235115
245120
25375
264104
27254
285140
294116
305150
31393
326192
334132
344136
357245
364144
374148
385190
394156
407280
417287
427294
434172
443132
45145
464184
473141
48296
493147
503150
514204
524208
534212
547378
555275
568448
575285
583174
5910590
605300
616366
626372
635315
644256
652130
66166
67167
695345
703210
716426
727504
73173
742148
753225
765380
773231
786468
796474
804320
816486
823246
835415
843252
858680
864344
875435
885440
896534
904360
915455
925460
935465
945470
953285
9610960
972194
984392
995495
1003300
1014404
1022204
1032206
1045520
1054420
1063318
1075535
1086648
1094436
1104440
1117777
1137791
1141114
1154460
1163348
1173351
1181118
1191119
1204480
1212242
1224488
1231123
1242248
1257875
1265630
1274508
1305650
1313393
1323396
1333399
1346804
1354540
1362272
1374548
1386828
139121668
1402280
1415705
1424568
1431143
1441144
1451145
1464584
1473441
1484592
1492298
1503450
1513453
1523456
1534612
1541154
1554620
1562312
1571157
1582316
1592318
1603480
1612322
1624648
1634652
1642328
1653495
1662332
1674668
1683504
1693507
1705850
17171197
17281376
1734692
1742348
1753525
1772354
1785890
1795895
1803540
1812362
1821182
1831183
1851185
1863558
1892378
19061140
1912382
1923576
1933579
1943582
19561170
1962392
1985990
1993597
2004800
2013603
2021202
2033609
2043612
2053615
2064824
2073621
20851040
2091209
21051050
2112422
21251060
21351065
2144856
2154860
2163648
2174868
2182436
2192438
2204880
22151105
22251110
22351115
22461344
22551125
22651130
2272454
2282456
22951145
23051150
2313693
2323696
23351165
234102340
2354940
2364944
23751185
2383714
2394956
24051200
2422484
24361458
24461464
245112695
2464984
2471247
2481248
2494996
25051250
2512502
2523756
2532506
25451270
25551275
25671792
25751285
25871806
25941036
260388277100952020
Total389279101076243
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
0388277
21000
81
Total389278
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333838266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888243052c5540ed
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3433303532633535
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_15.json b/autobahn/client/tungstenite_case_12_5_15.json new file mode 100644 index 0000000..93707a7 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_15.json @@ -0,0 +1,1284 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 388, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 11355, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=388&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: o020dgwatIuJcRhHMo8ujQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Urhbq2AW8cHXq9Ywau5vtJ7SLdM=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "51": 1, + "143": 1, + "238": 1, + "257": 1, + "1500": 1, + "1569": 1, + "1613": 1, + "1619": 1, + "1706": 1, + "1758": 1, + "3723": 1, + "3826": 1, + "3922": 1, + "3928": 1, + "3980": 1, + "4013": 1, + "4030": 1, + "4123": 1, + "4130": 1, + "4258": 1, + "4393": 1, + "4511": 1, + "4527": 1, + "4646": 1, + "4702": 1, + "4865": 1, + "5019": 1, + "5169": 1, + "5580": 1, + "5649": 1, + "5710": 1, + "5752": 1, + "5832": 1, + "5907": 1, + "7858": 1, + "7950": 1, + "7986": 1, + "8040": 1, + "8121": 1, + "8203": 1, + "9235": 1, + "9337": 1, + "9449": 1, + "9531": 1, + "9610": 1, + "9672": 1, + "9680": 1, + "9707": 1, + "9802": 1, + "9804": 1, + "9861": 1, + "9896": 1, + "9928": 1, + "9950": 1, + "9977": 1, + "10067": 1, + "10208": 1, + "10258": 1, + "10940": 1, + "10960": 1, + "11040": 1, + "11153": 1, + "11255": 1, + "11345": 1, + "11454": 1, + "13587": 1, + "13659": 1, + "13757": 1, + "13778": 1, + "13798": 1, + "13832": 1, + "14480": 1, + "14770": 1, + "14874": 1, + "14891": 1, + "14993": 1, + "15119": 1, + "15124": 1, + "15174": 1, + "15175": 1, + "15222": 1, + "15253": 1, + "15267": 1, + "15286": 1, + "15320": 1, + "15329": 1, + "15370": 2, + "15444": 1, + "15447": 1, + "15470": 1, + "15482": 1, + "15497": 1, + "15565": 1, + "15583": 1, + "15624": 1, + "17579": 1, + "17651": 1, + "17704": 1, + "17774": 1, + "17833": 1, + "18732": 1, + "18799": 1, + "18887": 1, + "18922": 1, + "19004": 1, + "19095": 1, + "19284": 1, + "19299": 1, + "19319": 1, + "19337": 1, + "19356": 1, + "19368": 1, + "19520": 1, + "19532": 1, + "19555": 1, + "19564": 1, + "19590": 1, + "19966": 1, + "20226": 1, + "20361": 1, + "20496": 1, + "20632": 1, + "20741": 1, + "20873": 1, + "21203": 1, + "21216": 1, + "21219": 1, + "21231": 1, + "21235": 1, + "21248": 1, + "21258": 1, + "21329": 1, + "21332": 1, + "21386": 1, + "21464": 1, + "21487": 1, + "21515": 1, + "21573": 1, + "21620": 1, + "21642": 1, + "21648": 1, + "21685": 1, + "21857": 1, + "21883": 1, + "21889": 1, + "21909": 2, + "22080": 1, + "22089": 1, + "22099": 1, + "22119": 1, + "22136": 1, + "22150": 1, + "22341": 1, + "22388": 2, + "22403": 1, + "22415": 1, + "22420": 1, + "22445": 1, + "23445": 1, + "23586": 1, + "23684": 1, + "23824": 1, + "23966": 1, + "24102": 1, + "25402": 1, + "25539": 1, + "25744": 1, + "25806": 1, + "25940": 1, + "26072": 1, + "28502": 1, + "28647": 1, + "28797": 1, + "28932": 1, + "29081": 1, + "29223": 1, + "29655": 1, + "29682": 1, + "29775": 1, + "29900": 1, + "29972": 1, + "30000": 1, + "30873": 1, + "30936": 1, + "31071": 1, + "31202": 1, + "31340": 1, + "31476": 1, + "31526": 1, + "31551": 1, + "31576": 1, + "31598": 1, + "31619": 1, + "31632": 1, + "32056": 1, + "32133": 1, + "32214": 1, + "32302": 1, + "32378": 1, + "32450": 1, + "33494": 1, + "33633": 1, + "33716": 1, + "33834": 1, + "33965": 1, + "34106": 1, + "36043": 1, + "36049": 1, + "36143": 1, + "36183": 1, + "36191": 1, + "36273": 1, + "36281": 1, + "36289": 1, + "36307": 1, + "36321": 1, + "36364": 1, + "36378": 1, + "36418": 1, + "36472": 1, + "36503": 1, + "36532": 1, + "36629": 1, + "36752": 1, + "37487": 1, + "37534": 1, + "37580": 1, + "37642": 1, + "37772": 1, + "37840": 1, + "39480": 1, + "39577": 1, + "39662": 2, + "39695": 1, + "39812": 1, + "39997": 1, + "40096": 1, + "40198": 1, + "40212": 1, + "40225": 1, + "40231": 1, + "40232": 1, + "40234": 1, + "40258": 1, + "40277": 1, + "40368": 1, + "40469": 1, + "41365": 1, + "41428": 1, + "41570": 1, + "41702": 1, + "41837": 1, + "41967": 1, + "42480": 1, + "42499": 2, + "42563": 1, + "42577": 1, + "42578": 1, + "42594": 1, + "42598": 1, + "42641": 1, + "42686": 1, + "42704": 1, + "43689": 1, + "43767": 1, + "43791": 1, + "43854": 1, + "43881": 1, + "43917": 1, + "43931": 1, + "43970": 1, + "43971": 1, + "43996": 1, + "44015": 1, + "44045": 1, + "44358": 1, + "44420": 1, + "44427": 1, + "44469": 1, + "44481": 1, + "44493": 1, + "44496": 1, + "44570": 1, + "44592": 1, + "44612": 1, + "44650": 1, + "44687": 1, + "44719": 1, + "44731": 1, + "44788": 1, + "44856": 1, + "44980": 1, + "45101": 1, + "45888": 1, + "45907": 1, + "45911": 2, + "45914": 1, + "45919": 1, + "45926": 1, + "45930": 1, + "45931": 3, + "45954": 1, + "45992": 1, + "46007": 1, + "46051": 1, + "46103": 1, + "46123": 1, + "46128": 1, + "46193": 1, + "46225": 1, + "46259": 1, + "46325": 1, + "46348": 1, + "46431": 1, + "47598": 1, + "47725": 1, + "47800": 1, + "47854": 1, + "47883": 1, + "47973": 1, + "47983": 1, + "48075": 1, + "48099": 1, + "48175": 1, + "48197": 1, + "48233": 1, + "49018": 1, + "49117": 1, + "49214": 1, + "49298": 1, + "49399": 1, + "49465": 1, + "49542": 1, + "49612": 1, + "49620": 1, + "49690": 1, + "49742": 1, + "49766": 1, + "49807": 2, + "49846": 2, + "49881": 1, + "49932": 1, + "49989": 1, + "50047": 1, + "50175": 1, + "50299": 1, + "50420": 1, + "50549": 1, + "50551": 1, + "50576": 1, + "50680": 1, + "50684": 1, + "50722": 1, + "50741": 1, + "50785": 1, + "50790": 1, + "50885": 1, + "50893": 1, + "50968": 1, + "50986": 1, + "51057": 1, + "52729": 1, + "52833": 1, + "52838": 1, + "52865": 1, + "52900": 1, + "52911": 1, + "52949": 1, + "52964": 1, + "52985": 2, + "52994": 1, + "53012": 1, + "53031": 1, + "53033": 1, + "53052": 1, + "53081": 1, + "53094": 1, + "53127": 1, + "53158": 1, + "53163": 1, + "53201": 1, + "53271": 1, + "53321": 1, + "53414": 1, + "53519": 1, + "54724": 1, + "54776": 1, + "54783": 1, + "54787": 1, + "54885": 1, + "54966": 1, + "54991": 1, + "55068": 1, + "55161": 1, + "55263": 1, + "55365": 1, + "55469": 1, + "55488": 1, + "55610": 1, + "55801": 1, + "55853": 1, + "55857": 1, + "55873": 1, + "55891": 1, + "55949": 1, + "55977": 1, + "56005": 1, + "56020": 1, + "56478": 1, + "56531": 1, + "56579": 1, + "56676": 1, + "56702": 1, + "56749": 1, + "56838": 1, + "56848": 1, + "57540": 1, + "57629": 1, + "57719": 1, + "57816": 1, + "57942": 1, + "58013": 1, + "58747": 1, + "58748": 1, + "58754": 1, + "58797": 1, + "58799": 2, + "58800": 1, + "58853": 1, + "58871": 1, + "58956": 1, + "58997": 1, + "59076": 1, + "59121": 1, + "59191": 1, + "59258": 2, + "59261": 3, + "59268": 1, + "59312": 3, + "59314": 1, + "59315": 1, + "59324": 1, + "59386": 1, + "59418": 1, + "59439": 1, + "59445": 2, + "59446": 3, + "59447": 1, + "59452": 1, + "59453": 1, + "59455": 1, + "59457": 1, + "59534": 1, + "59552": 1, + "59553": 1, + "59556": 1, + "59557": 2, + "59564": 1, + "59635": 1, + "59636": 1, + "59638": 1, + "59640": 1, + "59641": 1, + "59645": 2, + "59655": 1, + "59660": 2, + "59661": 2, + "59663": 2, + "59664": 1, + "59665": 1, + "59671": 1, + "59677": 1, + "59679": 1, + "59680": 1, + "59682": 2, + "59683": 1, + "59684": 1, + "59691": 1, + "59694": 1, + "59696": 2, + "59697": 1, + "59702": 1, + "59704": 1, + "59713": 2, + "59716": 1, + "59717": 1, + "59721": 1, + "59738": 1, + "59745": 1, + "59748": 2, + "59754": 1, + "59767": 1, + "59768": 1, + "59770": 1, + "59771": 1, + "59788": 1, + "59793": 1, + "59797": 2, + "59817": 1, + "59830": 1, + "59873": 2, + "59876": 1, + "59881": 2, + "59883": 2, + "59884": 2, + "59888": 1, + "59898": 2, + "59902": 2, + "59903": 3, + "59907": 1, + "59908": 1, + "59909": 1, + "59914": 1, + "59916": 1, + "59917": 1, + "59920": 2, + "59922": 1, + "59933": 2, + "59937": 1, + "59940": 1, + "59945": 1, + "59954": 1, + "59956": 1, + "59957": 1, + "59958": 1, + "59960": 1, + "59975": 1, + "59994": 1, + "59995": 1, + "59997": 1, + "60001": 2, + "60002": 1, + "60003": 1, + "60004": 1, + "60012": 1, + "60013": 1, + "60018": 1, + "60022": 1, + "60024": 1, + "60029": 1, + "60041": 1, + "60043": 1, + "60045": 1, + "60047": 1, + "60051": 1, + "60052": 3, + "60053": 3, + "60058": 1, + "60064": 1, + "60098": 2, + "60108": 1, + "60122": 1, + "60124": 1, + "60135": 1, + "60146": 1, + "60147": 1, + "60153": 2, + "60154": 1, + "60156": 1, + "60158": 2, + "60159": 2, + "60163": 1, + "60175": 2, + "60176": 1, + "60179": 2, + "60181": 1, + "60184": 1, + "60185": 1, + "60186": 1, + "60188": 1, + "60191": 2, + "60192": 2, + "60193": 1, + "60195": 1, + "60200": 1, + "60202": 1, + "60204": 2, + "60207": 1, + "60209": 1, + "60210": 2, + "60211": 1, + "60216": 1, + "60221": 1, + "60222": 1, + "60223": 1, + "60224": 1, + "60225": 1, + "60226": 2, + "60227": 2, + "60228": 2, + "60231": 2, + "60232": 3, + "60233": 1, + "60234": 1, + "60268": 1, + "60269": 1, + "60286": 1, + "60289": 1, + "60294": 1, + "60308": 1, + "60309": 1, + "60311": 1, + "60316": 1, + "60320": 1, + "60322": 1, + "60325": 1, + "60337": 1, + "60401": 2, + "60406": 1, + "60460": 1, + "60464": 1, + "60466": 1, + "60467": 1, + "60469": 1, + "60474": 1, + "60520": 1, + "60573": 1, + "60578": 1, + "60581": 1, + "60587": 1, + "60646": 1, + "60651": 1, + "60743": 2, + "60747": 2, + "60777": 1, + "60778": 1, + "60782": 1, + "60784": 1, + "60819": 1, + "60820": 1, + "60848": 2, + "60940": 1, + "60944": 1, + "60945": 1, + "60948": 1, + "60949": 1, + "60950": 1, + "60951": 1, + "60952": 2, + "60953": 2, + "60954": 2, + "60956": 1, + "60961": 1, + "60963": 1, + "60964": 1, + "60968": 1, + "60973": 1, + "60975": 1, + "60976": 1, + "60980": 2, + "61002": 1, + "61011": 2, + "61014": 1, + "61015": 1, + "61016": 1, + "61019": 1, + "61020": 1, + "61030": 1, + "61053": 1, + "61102": 1, + "61109": 1, + "61152": 1, + "61158": 2, + "61159": 1, + "61160": 1, + "61161": 1, + "61226": 1, + "61228": 1, + "61231": 1, + "61235": 1, + "61259": 1, + "61275": 1, + "61281": 1, + "61282": 1, + "61297": 1, + "61304": 2, + "61305": 1, + "61307": 1, + "61311": 2, + "61330": 1, + "61354": 1, + "61378": 1, + "61387": 1, + "61390": 1, + "61392": 1, + "61393": 1, + "61397": 1, + "61404": 1, + "61425": 1, + "61486": 4, + "61489": 1, + "61492": 1, + "61496": 1, + "61530": 1, + "61533": 1, + "61536": 1, + "61541": 2, + "61543": 2, + "61548": 1, + "61550": 1, + "61551": 1, + "61553": 1, + "61555": 1, + "61558": 1, + "61564": 1, + "61567": 1, + "61596": 1, + "61612": 1, + "61617": 1, + "61620": 1, + "61622": 3, + "61623": 3, + "61624": 1, + "61625": 1, + "61641": 1, + "61645": 2, + "61648": 1, + "61650": 1, + "61651": 1, + "61653": 1, + "61660": 1, + "61661": 1, + "61662": 1, + "61664": 1, + "61669": 1, + "61672": 1, + "61674": 2, + "61678": 1, + "61684": 1, + "61685": 1, + "61687": 1, + "61690": 1, + "61693": 1, + "61700": 1, + "61745": 1, + "61760": 1, + "61763": 1, + "61767": 1, + "61768": 1, + "61770": 1, + "61779": 1, + "61810": 1, + "61811": 1, + "61813": 1, + "61814": 1, + "61815": 1, + "61821": 1, + "61879": 1, + "61975": 2, + "61980": 1, + "61985": 1, + "61987": 1, + "61989": 2, + "61993": 2, + "62011": 1, + "62036": 1, + "62039": 1, + "62040": 1, + "62042": 2, + "62047": 3, + "62052": 1, + "62058": 1, + "62060": 1, + "62072": 1, + "62075": 2, + "62079": 1, + "62103": 1, + "62125": 1, + "62157": 1, + "62164": 1, + "62187": 1, + "62208": 1, + "62211": 1, + "62216": 1, + "62217": 1, + "62218": 2, + "62219": 1, + "62289": 2, + "62296": 1, + "62298": 1, + "62305": 1, + "62308": 1, + "62340": 1, + "62347": 1, + "62349": 1, + "62352": 1, + "62355": 1, + "62360": 1, + "62385": 1, + "62392": 1, + "62396": 1, + "62397": 1, + "62426": 1, + "62431": 1, + "62447": 1, + "62448": 1, + "62452": 1, + "62454": 1, + "62455": 1, + "62456": 1, + "62461": 1, + "62464": 1, + "62468": 2, + "62471": 1, + "62476": 1, + "62480": 1, + "62484": 1, + "62485": 1, + "62487": 2, + "62489": 1, + "62490": 1, + "62491": 3, + "62494": 1, + "62527": 1, + "62530": 2, + "62531": 1, + "62532": 3, + "62533": 1, + "62535": 2, + "62538": 1, + "62569": 4, + "62570": 1, + "62571": 1, + "62606": 3, + "62608": 2, + "62612": 1, + "62616": 1, + "62620": 1, + "62622": 1, + "62627": 1, + "62630": 1, + "62631": 1, + "62645": 1, + "62682": 1, + "62686": 1, + "62692": 1, + "62693": 2, + "62695": 1, + "62698": 2, + "62700": 2, + "62701": 1, + "62703": 1, + "62705": 1, + "62707": 1, + "62708": 1, + "62733": 1, + "62737": 2, + "62741": 1, + "62758": 1, + "62772": 1, + "62778": 1, + "62868": 1, + "62894": 1, + "62908": 1, + "62945": 1, + "62946": 1, + "62947": 1, + "62952": 2, + "62987": 1, + "62991": 2, + "62993": 1, + "62994": 1, + "63058": 1, + "63067": 1, + "63068": 2, + "63069": 1, + "63077": 1, + "63078": 1, + "63359": 1, + "64144": 1, + "64286": 1, + "64387": 1, + "64401": 1, + "64505": 1, + "64517": 1, + "64577": 1, + "64595": 1, + "64600": 1, + "64602": 1, + "64605": 2, + "64623": 1, + "64646": 1, + "64721": 1, + "64751": 1, + "64835": 1, + "64923": 1, + "65160": 16, + "65282": 1, + "65378": 1, + "65464": 38, + "65492": 1, + "65536": 715 + }, + "started": "2025-09-11T20:10:44.795Z", + "trafficStats": { + "incomingCompressionRatio": 0.7592770767211914, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 99519965, + "incomingOctetsWireLevel": 99532585, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0001268087262691461, + "outgoingCompressionRatio": 0.7592770767211914, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 99519965, + "outgoingOctetsWireLevel": 101075987, + "outgoingWebSocketFrames": 389277, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01563527479134463, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 388277, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 7, + "4": 9, + "5": 7, + "6": 4, + "7": 6, + "8": 4, + "9": 7, + "10": 1, + "11": 6, + "12": 3, + "13": 4, + "14": 7, + "15": 5, + "16": 5, + "17": 6, + "18": 2, + "19": 3, + "20": 8, + "21": 5, + "22": 4, + "23": 5, + "24": 5, + "25": 3, + "26": 4, + "27": 2, + "28": 5, + "29": 4, + "30": 5, + "31": 3, + "32": 6, + "33": 4, + "34": 4, + "35": 7, + "36": 4, + "37": 4, + "38": 5, + "39": 4, + "40": 7, + "41": 7, + "42": 7, + "43": 4, + "44": 3, + "45": 1, + "46": 4, + "47": 3, + "48": 2, + "49": 3, + "50": 3, + "51": 4, + "52": 4, + "53": 4, + "54": 7, + "55": 5, + "56": 8, + "57": 5, + "58": 3, + "59": 10, + "60": 5, + "61": 6, + "62": 6, + "63": 5, + "64": 4, + "65": 2, + "66": 1, + "67": 1, + "69": 5, + "70": 3, + "71": 6, + "72": 7, + "73": 1, + "74": 2, + "75": 3, + "76": 5, + "77": 3, + "78": 6, + "79": 6, + "80": 4, + "81": 6, + "82": 3, + "83": 5, + "84": 3, + "85": 8, + "86": 4, + "87": 5, + "88": 5, + "89": 6, + "90": 4, + "91": 5, + "92": 5, + "93": 5, + "94": 5, + "95": 3, + "96": 10, + "97": 2, + "98": 4, + "99": 5, + "100": 3, + "101": 4, + "102": 2, + "103": 2, + "104": 5, + "105": 4, + "106": 3, + "107": 5, + "108": 6, + "109": 4, + "110": 4, + "111": 7, + "113": 7, + "114": 1, + "115": 4, + "116": 3, + "117": 3, + "118": 1, + "119": 1, + "120": 4, + "121": 2, + "122": 4, + "123": 1, + "124": 2, + "125": 7, + "126": 5, + "127": 4, + "130": 5, + "131": 3, + "132": 3, + "133": 3, + "134": 6, + "135": 4, + "136": 2, + "137": 4, + "138": 6, + "139": 12, + "140": 2, + "141": 5, + "142": 4, + "143": 1, + "144": 1, + "145": 1, + "146": 4, + "147": 3, + "148": 4, + "149": 2, + "150": 3, + "151": 3, + "152": 3, + "153": 4, + "154": 1, + "155": 4, + "156": 2, + "157": 1, + "158": 2, + "159": 2, + "160": 3, + "161": 2, + "162": 4, + "163": 4, + "164": 2, + "165": 3, + "166": 2, + "167": 4, + "168": 3, + "169": 3, + "170": 5, + "171": 7, + "172": 8, + "173": 4, + "174": 2, + "175": 3, + "177": 2, + "178": 5, + "179": 5, + "180": 3, + "181": 2, + "182": 1, + "183": 1, + "185": 1, + "186": 3, + "189": 2, + "190": 6, + "191": 2, + "192": 3, + "193": 3, + "194": 3, + "195": 6, + "196": 2, + "198": 5, + "199": 3, + "200": 4, + "201": 3, + "202": 1, + "203": 3, + "204": 3, + "205": 3, + "206": 4, + "207": 3, + "208": 5, + "209": 1, + "210": 5, + "211": 2, + "212": 5, + "213": 5, + "214": 4, + "215": 4, + "216": 3, + "217": 4, + "218": 2, + "219": 2, + "220": 4, + "221": 5, + "222": 5, + "223": 5, + "224": 6, + "225": 5, + "226": 5, + "227": 2, + "228": 2, + "229": 5, + "230": 5, + "231": 3, + "232": 3, + "233": 5, + "234": 10, + "235": 4, + "236": 4, + "237": 5, + "238": 3, + "239": 4, + "240": 5, + "242": 2, + "243": 6, + "244": 6, + "245": 11, + "246": 4, + "247": 1, + "248": 1, + "249": 4, + "250": 5, + "251": 2, + "252": 3, + "253": 2, + "254": 5, + "255": 5, + "256": 7, + "257": 5, + "258": 7, + "259": 4, + "260": 388277 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333838266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888243052c5540ed" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "43052c55" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_16.html b/autobahn/client/tungstenite_case_12_5_16.html new file mode 100644 index 0000000..d151f99 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_16.html @@ -0,0 +1,1813 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.16 : Pass - 10374 ms @ 2025-09-11T20:10:56.151Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=389&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: THoebUaj4welATvKbXU/gw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Y4oVMfvPDW59Bry0td6QXPsYv1U=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
51151
1431143
2381238
2571257
150011500
156911569
161311613
161911619
170611706
175811758
372313723
382613826
392213922
392813928
398013980
401314013
403014030
412314123
413014130
425814258
439314393
451114511
452714527
464614646
470214702
486514865
501915019
516915169
558015580
564915649
571015710
575215752
583215832
590715907
785817858
795017950
798617986
804018040
812118121
820318203
923519235
933719337
944919449
953119531
961019610
967219672
968019680
970719707
980219802
980419804
986119861
989619896
992819928
995019950
997719977
10067110067
10208110208
10258110258
10960110960
11040111040
11153111153
11255111255
11345111345
11454111454
13587113587
13659113659
13757113757
13778113778
13798113798
13832113832
14770114770
14874114874
14891114891
14993114993
15119115119
15124115124
15174115174
15175115175
15222115222
15253115253
15267115267
15286115286
15320115320
15329115329
15370230740
15444115444
15447115447
15470115470
15482115482
15497115497
15565115565
15583115583
15624115624
17579117579
17651117651
17704117704
17774117774
17833117833
18732118732
18799118799
18887118887
18922118922
19004119004
19095119095
19284119284
19299119299
19319119319
19337119337
19356119356
19368119368
19520119520
19532119532
19555119555
19564119564
19590239180
20226120226
20361120361
20496120496
20632120632
20741120741
20873120873
21203121203
21216121216
21219121219
21231121231
21235121235
21248121248
21258121258
21329121329
21332121332
21386121386
21464121464
21487121487
21515121515
21573121573
21620121620
21642121642
21648121648
21685121685
21857121857
21883121883
21909243818
21961121961
21965121965
22080122080
22089122089
22099122099
22119122119
22136122136
22150122150
22388244776
22403122403
22415122415
22445122445
22492122492
23445123445
23487123487
23586123586
23684123684
23824123824
23966123966
24102124102
25402125402
25539125539
25672125672
25806125806
25940125940
26072126072
28502128502
28647128647
28797128797
28932128932
29081129081
29223129223
29655129655
29682129682
29775129775
29900129900
29972129972
30000130000
30801130801
30936130936
31071131071
31202131202
31340131340
31476131476
31526131526
31551131551
31576131576
31598131598
31619131619
31632131632
32056132056
32133132133
32214132214
32302132302
32378132378
32450132450
33494133494
33633133633
33716133716
33834133834
33965133965
34106134106
36043136043
36049136049
36143136143
36183136183
36191136191
36273136273
36281136281
36289136289
36292136292
36307136307
36321136321
36378136378
36418136418
36472136472
36503136503
36532136532
36629136629
36752136752
37534137534
37559137559
37580137580
37642137642
37772137772
37840137840
39480139480
39577139577
39662279324
39695139695
39812139812
39997139997
40096140096
40198140198
40212140212
40225140225
40231140231
40232140232
40234140234
40258140258
40277140277
40368140368
40469140469
41293141293
41428141428
41570141570
41702141702
41837141837
41967141967
42480142480
42499284998
42563142563
42577142577
42578142578
42594142594
42598142598
42641142641
42686142686
42704142704
43440143440
43689143689
43767143767
43791143791
43854143854
43881143881
43917143917
43931143931
43970143970
43971143971
43996143996
44015144015
44045144045
44358144358
44420144420
44427144427
44469144469
44481144481
44493144493
44496144496
44570144570
44592144592
44612144612
44650144650
44687144687
44719144719
44731144731
44788144788
44856144856
44980144980
45101145101
45888145888
45907145907
45911291822
45914145914
45919145919
45926145926
45930145930
459313137793
45954145954
45992145992
46007146007
46051146051
46056146056
46103146103
46123146123
46193146193
46225146225
46259146259
46325146325
46348146348
46431146431
47598147598
47725147725
47800147800
47854147854
47883147883
47973147973
47983147983
48075148075
48099148099
48175148175
48197148197
48233148233
49018149018
49117149117
49214149214
49298149298
49399149399
49465149465
49542149542
49612149612
49620149620
49690149690
49742149742
49766149766
49807299614
49846299692
49881149881
49932149932
49989149989
50047150047
50175150175
50299150299
50420150420
50479150479
50549150549
50576150576
50684150684
50722150722
50741150741
50785150785
50790150790
50885150885
50893150893
50968150968
50986150986
51057151057
52729152729
52833152833
52838152838
52865152865
52900152900
52911152911
52949152949
52964152964
529852105970
52994152994
53012153012
53031153031
53033153033
53052153052
53081153081
53094153094
53127153127
53158153158
53163153163
53201153201
53271153271
53321153321
53414153414
54724154724
54776154776
54783154783
54787154787
54885154885
54966154966
54991154991
55068155068
55161155161
55263155263
55365155365
55469155469
55488155488
55682155682
55729155729
55853155853
55857155857
55873155873
55891155891
55949155949
55977155977
56005156005
56020156020
56102156102
56531156531
56579156579
56676156676
56702156702
56749156749
56838156838
57540157540
57629157629
57719157719
57816157816
57920157920
57942157942
58013158013
58747158747
58748158748
58754158754
58797158797
587992117598
58800158800
58853158853
58871158871
58956158956
58997158997
59076159076
59121159121
59191159191
592582118516
592613177783
59268159268
593123177936
59314159314
59315159315
59324159324
59386159386
59418159418
59439159439
594452118890
594463178338
59447159447
59452159452
59453159453
59455159455
59457159457
59534159534
59552159552
59553159553
59556159556
595572119114
59564159564
59632159632
59635159635
59636159636
59638159638
59640159640
59641159641
596452119290
59646159646
59660159660
596612119322
596632119326
59664159664
59671159671
596772119354
59679159679
59680159680
596822119364
59684159684
59691159691
59694159694
596962119392
59697159697
59702159702
597132119426
59716159716
59717159717
597212119442
59722159722
59727159727
59732159732
59737159737
59738159738
597452119490
59746159746
597482119496
59754159754
59755159755
59767159767
59768159768
59770159770
59771159771
59788159788
597972119594
59830159830
59837159837
598732119746
59876159876
598812119762
598832119766
598842119768
59888159888
598982119796
599022119804
599033179709
59908159908
59910159910
59914159914
59916159916
59917159917
599202119840
59922159922
599332119866
59937159937
59940159940
59945159945
59954159954
59956159956
59957159957
59958159958
59960159960
59961159961
59975159975
59979159979
59994159994
59995159995
59997159997
600012120002
60002160002
60003160003
60004160004
60012160012
60013160013
60018160018
60024160024
60026160026
60029160029
60041160041
60043160043
60045160045
60047160047
60051160051
600523180156
600532120106
60058160058
60064160064
60108160108
60124160124
60135160135
60144160144
60146160146
60147160147
601532120306
60156160156
601582120316
601592120318
60163160163
601752120350
60176160176
601792120358
60181160181
60184160184
60185160185
60186160186
60188160188
601912120382
601922120384
60193160193
60195160195
60196160196
60200160200
60202160202
602042120408
60207160207
60210160210
60211160211
60216160216
60221160221
60222160222
60223160223
60224160224
60225160225
602263180678
602272120454
602282120456
602312120462
602323180696
60233160233
60234160234
60269160269
60281160281
60282160282
60289160289
60308160308
60309160309
60311160311
60316160316
60320160320
60322160322
60325160325
60366160366
604012120802
60406160406
60460160460
60464160464
60466160466
60467160467
60469160469
60474160474
60573160573
60574160574
60578160578
60579160579
60581160581
60587160587
607432121486
607473182241
60748160748
607762121552
60777160777
60778160778
60782160782
60784160784
60889160889
60940160940
60944160944
60945160945
60948160948
60949160949
60950160950
60951160951
609522121904
609532121906
609542121908
60956160956
60963160963
60964160964
60968160968
60973160973
60976160976
609802121960
60981160981
61002161002
610112122022
61014161014
61015161015
61016161016
61019161019
61020161020
610302122060
61047161047
61109161109
61152161152
611582122316
61159161159
61160161160
61161161161
61187161187
61226161226
61228161228
61231161231
61235161235
61239161239
61275161275
61281161281
61282161282
613042122608
61305161305
61307161307
61311161311
61330161330
61354161354
61369161369
61378161378
61387161387
61390161390
61392161392
61393161393
61397161397
61404161404
61424161424
61425161425
61481161481
614864245944
61489161489
614922122984
61530161530
61533161533
61536161536
615412123082
615432123086
61548161548
61550161550
61551161551
61555161555
61558161558
61567161567
61596161596
61612161612
61617161617
616202123240
616223184866
616233184869
61624161624
61625161625
61641161641
616452123290
61648161648
61650161650
61651161651
61660161660
61661161661
61662161662
61663161663
61669161669
61672161672
616742123348
61678161678
61684161684
61690161690
61693161693
61696161696
61700161700
61725161725
61736161736
61745161745
61757161757
61759161759
61760161760
61763161763
61767161767
61768161768
61770161770
61779161779
61810161810
61811161811
61813161813
61814161814
61815161815
61821161821
61879161879
619752123950
61980161980
61985161985
61987161987
619892123978
619932123986
62011162011
62036162036
62040162040
620422124084
620473186141
62052162052
62053162053
62058162058
62060162060
620752124150
62079162079
62103162103
62157162157
62164162164
62187162187
62208162208
62211162211
62216162216
62217162217
622182124436
62219162219
622892124578
62296162296
62298162298
62305162305
62308162308
62340162340
62349162349
62352162352
62360162360
62385162385
62392162392
62396162396
62397162397
62399162399
62404162404
62419162419
62426162426
62427162427
62431162431
62447162447
62448162448
62452162452
62454162454
62455162455
62456162456
62461162461
62464162464
624682124936
62480162480
62484162484
62485162485
624872124974
62490162490
624913187473
62492162492
62494162494
62527162527
62530162530
62531162531
625323187596
62533162533
62534162534
625352125070
62538162538
62561162561
625694250276
62570162570
62571162571
62602162602
626062125212
62608162608
62610162610
62612162612
62620162620
62621162621
62622162622
62627162627
62630162630
62631162631
62645162645
62680162680
62686162686
62688162688
62692162692
62693162693
62695162695
626982125396
627002125400
627012125402
62703162703
62705162705
62706162706
62707162707
62708162708
62733162733
627372125474
62741162741
62758162758
62772162772
62836162836
62894162894
62945162945
62946162946
62947162947
629522125904
62983162983
62987162987
629912125982
62993162993
62994162994
63058163058
63067163067
63068163068
63069163069
63078163078
63140163140
64144164144
64286164286
64387164387
64401164401
64505164505
64517164517
64577164577
64595164595
64600164600
64602164602
646052129210
64623164623
64646164646
64721164721
64751164751
64835164835
64923164923
65160165160
65282165282
65378165378
65464291898456
65492165492
6553673948431104
Total177399532850
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
4312
616
7214
818
919
11222
13113
14114
15460
16116
17234
18118
20120
22244
29129
30130
31131
32132
33133
343102
35135
36136
37274
38138
39278
403120
414164
423126
43143
46146
48148
49149
512102
52152
53153
542108
552110
564224
573171
58158
593177
60160
62162
63163
64164
67167
692138
72172
73173
75175
77177
78178
81181
82182
842168
873261
892178
912182
934372
94194
95195
962192
982196
992198
1041104
1051105
1061106
1071107
1092218
1101110
1111111
1131113
1151115
1201120
1222244
1251125
1261126
1301130
1323396
1331133
1343402
1351135
1361136
1381138
1423426
1462292
1472294
1482296
1501150
1511151
1522304
1532306
1541154
1553465
1562312
1571157
1612322
1623486
1632326
1671167
1702340
1712342
1722344
1733519
1741174
1752350
1781178
1801180
1821182
1911191
1921192
1953585
1961196
1981198
1991199
2002400
2011201
2031203
2052410
2061206
2071207
2101210
2111211
2122424
2132426
2141214
2181218
2192438
2211221
2221222
2231223
2244896
2263678
2272454
2282456
2291229
2301230
2311231
2321232
2333699
2344936
2353705
2361236
2371237
2381238
2391239
2401240
2433729
2441244
2461246
2502500
2511251
2521252
2531253
2541254
2551255
2583774
2593777
2612522
2622524
2633789
2641264
2651265
2661266
2671267
2691269
2721272
2752550
2771277
2781278
2791279
2802560
2812562
2821282
2841284
2851285
2862572
2871287
2881288
2891289
2901290
2921292
2931293
2942588
2951295
2991299
3002600
3011301
3042608
3051305
3081308
3091309
3101310
3112622
3121312
3131313
3141314
3151315
3173951
3181318
3193957
3202640
3213963
3222644
3231323
3291329
3301330
3361336
3372674
3391339
3412682
34331029
3441344
3462692
3471347
3502700
3511351
35231056
3562712
3571357
3581358
3601360
3611361
3621362
3632726
3641364
3652730
3661366
3681368
3692738
3712742
3752750
3761376
3781378
3821382
3831383
3842768
3851385
3862772
3901390
3911391
39541580
3991399
4041404
4051405
4071407
4151415
4201420
4211421
4231423
4241424
4252850
4272854
42831284
4291429
4331433
43531305
4371437
4391439
4421442
4452890
4461446
4481448
4501450
4511451
4541454
4562912
4571457
4581458
4601460
4621462
4632926
4641464
4662932
4681468
47131413
4722944
4731473
4741474
4761476
4771477
4782956
4792958
4801480
48141924
4822964
4861486
4901490
4921492
4962992
4981498
4991499
50031500
50152505
5051505
5061506
5071507
5081508
5091509
5101510
51131533
5121512
5131513
51431542
5151515
51721034
51831554
51931557
52021040
5221522
5231523
5241524
52531575
52621052
52721054
52831584
5291529
53021060
53121062
53431602
53531605
53721074
53821076
53921078
54021080
5411541
54221084
54321086
5451545
54721094
54921098
5501550
5521552
55442216
55521110
55621112
5571557
5581558
5591559
56121122
5621562
5641564
5661566
5681568
5701570
5731573
57521150
57621152
5781578
5791579
5801580
58421168
58542340
58621172
5881588
58921178
59031770
5911591
59231776
59331779
59442376
59521190
5961596
59721194
59921198
60021200
6011601
60221204
60321206
60442416
60531815
6061606
6081608
6091609
61063660
6111611
6131613
6141614
6161616
6171617
62231866
6241624
62531875
6271627
6281628
6291629
6301630
6351635
6361636
6371637
6391639
64121282
6431643
6451645
6471647
64921298
65031950
65153255
6521652
65331959
6561656
6591659
6601660
6611661
6621662
6651665
6701670
6711671
67221344
6771677
6801680
6821682
68332049
6841684
6891689
69021380
6921692
6981698
70232106
7041704
70521410
70621412
70721414
7101710
7131713
7151715
71621432
72021440
7211721
7221722
72421448
7251725
72621452
7291729
73232196
73321466
7341734
7351735
7361736
7371737
7411741
7421742
74421488
74521490
74642984
7491749
75132253
75221504
7541754
7551755
75621512
75743028
7581758
7591759
7601760
76132283
7641764
76632298
7671767
76843072
7691769
7701770
7721772
77332319
7741774
7751775
77732331
7781778
77943116
7821782
7831783
78421568
78621572
7881788
78921578
79032370
7911791
7931793
79421588
7951795
7961796
7981798
80032400
80243208
8031803
80532415
8071807
80832424
80921618
8131813
81421628
8161816
81921638
8201820
8211821
8221822
8231823
82432472
82521650
82621652
8271827
82821656
82932487
83032490
8311831
8321832
8331833
83932517
8401840
8411841
84232526
8441844
84621692
8471847
8481848
8491849
85121702
8521852
8531853
8541854
85532565
8561856
8571857
8581858
8591859
86221724
8651865
86621732
8671867
8691869
8701870
87143484
87432622
8751875
8761876
87721754
87821756
87921758
8801880
8811881
88332649
88521770
88621772
8871887
8891889
89021780
8911891
8921892
8941894
89543580
89621792
8971897
89821796
89921798
9011901
90221804
9031903
9041904
90521810
90621812
90732721
9081908
90921818
9101910
9131913
91421828
9181918
9191919
9201920
9211921
9231923
9261926
9281928
9301930
93121862
9321932
9331933
93421868
93521870
9361936
9371937
93821876
94021880
9421942
9431943
94621892
94721894
9481948
9491949
9531953
9541954
95821916
9591959
9611961
9641964
96621932
96721934
9711971
9731973
97421948
97621952
9781978
9791979
98121962
9821982
9831983
9841984
98521970
9891989
9901990
9911991
99732991
99821996
99921998
100211002
100311003
100422008
100533015
100622012
101111011
101322026
101422028
101822036
102422048
102533075
10289668499391152
Total9768699910717
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
096684
21000
81
Total97685
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333839266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882ac48fd91afa0
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6163343866643931
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_16.json b/autobahn/client/tungstenite_case_12_5_16.json new file mode 100644 index 0000000..478cb36 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_16.json @@ -0,0 +1,1660 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 389, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 10374, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=389&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: THoebUaj4welATvKbXU/gw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Y4oVMfvPDW59Bry0td6QXPsYv1U=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "51": 1, + "143": 1, + "238": 1, + "257": 1, + "1500": 1, + "1569": 1, + "1613": 1, + "1619": 1, + "1706": 1, + "1758": 1, + "3723": 1, + "3826": 1, + "3922": 1, + "3928": 1, + "3980": 1, + "4013": 1, + "4030": 1, + "4123": 1, + "4130": 1, + "4258": 1, + "4393": 1, + "4511": 1, + "4527": 1, + "4646": 1, + "4702": 1, + "4865": 1, + "5019": 1, + "5169": 1, + "5580": 1, + "5649": 1, + "5710": 1, + "5752": 1, + "5832": 1, + "5907": 1, + "7858": 1, + "7950": 1, + "7986": 1, + "8040": 1, + "8121": 1, + "8203": 1, + "9235": 1, + "9337": 1, + "9449": 1, + "9531": 1, + "9610": 1, + "9672": 1, + "9680": 1, + "9707": 1, + "9802": 1, + "9804": 1, + "9861": 1, + "9896": 1, + "9928": 1, + "9950": 1, + "9977": 1, + "10067": 1, + "10208": 1, + "10258": 1, + "10960": 1, + "11040": 1, + "11153": 1, + "11255": 1, + "11345": 1, + "11454": 1, + "13587": 1, + "13659": 1, + "13757": 1, + "13778": 1, + "13798": 1, + "13832": 1, + "14770": 1, + "14874": 1, + "14891": 1, + "14993": 1, + "15119": 1, + "15124": 1, + "15174": 1, + "15175": 1, + "15222": 1, + "15253": 1, + "15267": 1, + "15286": 1, + "15320": 1, + "15329": 1, + "15370": 2, + "15444": 1, + "15447": 1, + "15470": 1, + "15482": 1, + "15497": 1, + "15565": 1, + "15583": 1, + "15624": 1, + "17579": 1, + "17651": 1, + "17704": 1, + "17774": 1, + "17833": 1, + "18732": 1, + "18799": 1, + "18887": 1, + "18922": 1, + "19004": 1, + "19095": 1, + "19284": 1, + "19299": 1, + "19319": 1, + "19337": 1, + "19356": 1, + "19368": 1, + "19520": 1, + "19532": 1, + "19555": 1, + "19564": 1, + "19590": 2, + "20226": 1, + "20361": 1, + "20496": 1, + "20632": 1, + "20741": 1, + "20873": 1, + "21203": 1, + "21216": 1, + "21219": 1, + "21231": 1, + "21235": 1, + "21248": 1, + "21258": 1, + "21329": 1, + "21332": 1, + "21386": 1, + "21464": 1, + "21487": 1, + "21515": 1, + "21573": 1, + "21620": 1, + "21642": 1, + "21648": 1, + "21685": 1, + "21857": 1, + "21883": 1, + "21909": 2, + "21961": 1, + "21965": 1, + "22080": 1, + "22089": 1, + "22099": 1, + "22119": 1, + "22136": 1, + "22150": 1, + "22388": 2, + "22403": 1, + "22415": 1, + "22445": 1, + "22492": 1, + "23445": 1, + "23487": 1, + "23586": 1, + "23684": 1, + "23824": 1, + "23966": 1, + "24102": 1, + "25402": 1, + "25539": 1, + "25672": 1, + "25806": 1, + "25940": 1, + "26072": 1, + "28502": 1, + "28647": 1, + "28797": 1, + "28932": 1, + "29081": 1, + "29223": 1, + "29655": 1, + "29682": 1, + "29775": 1, + "29900": 1, + "29972": 1, + "30000": 1, + "30801": 1, + "30936": 1, + "31071": 1, + "31202": 1, + "31340": 1, + "31476": 1, + "31526": 1, + "31551": 1, + "31576": 1, + "31598": 1, + "31619": 1, + "31632": 1, + "32056": 1, + "32133": 1, + "32214": 1, + "32302": 1, + "32378": 1, + "32450": 1, + "33494": 1, + "33633": 1, + "33716": 1, + "33834": 1, + "33965": 1, + "34106": 1, + "36043": 1, + "36049": 1, + "36143": 1, + "36183": 1, + "36191": 1, + "36273": 1, + "36281": 1, + "36289": 1, + "36292": 1, + "36307": 1, + "36321": 1, + "36378": 1, + "36418": 1, + "36472": 1, + "36503": 1, + "36532": 1, + "36629": 1, + "36752": 1, + "37534": 1, + "37559": 1, + "37580": 1, + "37642": 1, + "37772": 1, + "37840": 1, + "39480": 1, + "39577": 1, + "39662": 2, + "39695": 1, + "39812": 1, + "39997": 1, + "40096": 1, + "40198": 1, + "40212": 1, + "40225": 1, + "40231": 1, + "40232": 1, + "40234": 1, + "40258": 1, + "40277": 1, + "40368": 1, + "40469": 1, + "41293": 1, + "41428": 1, + "41570": 1, + "41702": 1, + "41837": 1, + "41967": 1, + "42480": 1, + "42499": 2, + "42563": 1, + "42577": 1, + "42578": 1, + "42594": 1, + "42598": 1, + "42641": 1, + "42686": 1, + "42704": 1, + "43440": 1, + "43689": 1, + "43767": 1, + "43791": 1, + "43854": 1, + "43881": 1, + "43917": 1, + "43931": 1, + "43970": 1, + "43971": 1, + "43996": 1, + "44015": 1, + "44045": 1, + "44358": 1, + "44420": 1, + "44427": 1, + "44469": 1, + "44481": 1, + "44493": 1, + "44496": 1, + "44570": 1, + "44592": 1, + "44612": 1, + "44650": 1, + "44687": 1, + "44719": 1, + "44731": 1, + "44788": 1, + "44856": 1, + "44980": 1, + "45101": 1, + "45888": 1, + "45907": 1, + "45911": 2, + "45914": 1, + "45919": 1, + "45926": 1, + "45930": 1, + "45931": 3, + "45954": 1, + "45992": 1, + "46007": 1, + "46051": 1, + "46056": 1, + "46103": 1, + "46123": 1, + "46193": 1, + "46225": 1, + "46259": 1, + "46325": 1, + "46348": 1, + "46431": 1, + "47598": 1, + "47725": 1, + "47800": 1, + "47854": 1, + "47883": 1, + "47973": 1, + "47983": 1, + "48075": 1, + "48099": 1, + "48175": 1, + "48197": 1, + "48233": 1, + "49018": 1, + "49117": 1, + "49214": 1, + "49298": 1, + "49399": 1, + "49465": 1, + "49542": 1, + "49612": 1, + "49620": 1, + "49690": 1, + "49742": 1, + "49766": 1, + "49807": 2, + "49846": 2, + "49881": 1, + "49932": 1, + "49989": 1, + "50047": 1, + "50175": 1, + "50299": 1, + "50420": 1, + "50479": 1, + "50549": 1, + "50576": 1, + "50684": 1, + "50722": 1, + "50741": 1, + "50785": 1, + "50790": 1, + "50885": 1, + "50893": 1, + "50968": 1, + "50986": 1, + "51057": 1, + "52729": 1, + "52833": 1, + "52838": 1, + "52865": 1, + "52900": 1, + "52911": 1, + "52949": 1, + "52964": 1, + "52985": 2, + "52994": 1, + "53012": 1, + "53031": 1, + "53033": 1, + "53052": 1, + "53081": 1, + "53094": 1, + "53127": 1, + "53158": 1, + "53163": 1, + "53201": 1, + "53271": 1, + "53321": 1, + "53414": 1, + "54724": 1, + "54776": 1, + "54783": 1, + "54787": 1, + "54885": 1, + "54966": 1, + "54991": 1, + "55068": 1, + "55161": 1, + "55263": 1, + "55365": 1, + "55469": 1, + "55488": 1, + "55682": 1, + "55729": 1, + "55853": 1, + "55857": 1, + "55873": 1, + "55891": 1, + "55949": 1, + "55977": 1, + "56005": 1, + "56020": 1, + "56102": 1, + "56531": 1, + "56579": 1, + "56676": 1, + "56702": 1, + "56749": 1, + "56838": 1, + "57540": 1, + "57629": 1, + "57719": 1, + "57816": 1, + "57920": 1, + "57942": 1, + "58013": 1, + "58747": 1, + "58748": 1, + "58754": 1, + "58797": 1, + "58799": 2, + "58800": 1, + "58853": 1, + "58871": 1, + "58956": 1, + "58997": 1, + "59076": 1, + "59121": 1, + "59191": 1, + "59258": 2, + "59261": 3, + "59268": 1, + "59312": 3, + "59314": 1, + "59315": 1, + "59324": 1, + "59386": 1, + "59418": 1, + "59439": 1, + "59445": 2, + "59446": 3, + "59447": 1, + "59452": 1, + "59453": 1, + "59455": 1, + "59457": 1, + "59534": 1, + "59552": 1, + "59553": 1, + "59556": 1, + "59557": 2, + "59564": 1, + "59632": 1, + "59635": 1, + "59636": 1, + "59638": 1, + "59640": 1, + "59641": 1, + "59645": 2, + "59646": 1, + "59660": 1, + "59661": 2, + "59663": 2, + "59664": 1, + "59671": 1, + "59677": 2, + "59679": 1, + "59680": 1, + "59682": 2, + "59684": 1, + "59691": 1, + "59694": 1, + "59696": 2, + "59697": 1, + "59702": 1, + "59713": 2, + "59716": 1, + "59717": 1, + "59721": 2, + "59722": 1, + "59727": 1, + "59732": 1, + "59737": 1, + "59738": 1, + "59745": 2, + "59746": 1, + "59748": 2, + "59754": 1, + "59755": 1, + "59767": 1, + "59768": 1, + "59770": 1, + "59771": 1, + "59788": 1, + "59797": 2, + "59830": 1, + "59837": 1, + "59873": 2, + "59876": 1, + "59881": 2, + "59883": 2, + "59884": 2, + "59888": 1, + "59898": 2, + "59902": 2, + "59903": 3, + "59908": 1, + "59910": 1, + "59914": 1, + "59916": 1, + "59917": 1, + "59920": 2, + "59922": 1, + "59933": 2, + "59937": 1, + "59940": 1, + "59945": 1, + "59954": 1, + "59956": 1, + "59957": 1, + "59958": 1, + "59960": 1, + "59961": 1, + "59975": 1, + "59979": 1, + "59994": 1, + "59995": 1, + "59997": 1, + "60001": 2, + "60002": 1, + "60003": 1, + "60004": 1, + "60012": 1, + "60013": 1, + "60018": 1, + "60024": 1, + "60026": 1, + "60029": 1, + "60041": 1, + "60043": 1, + "60045": 1, + "60047": 1, + "60051": 1, + "60052": 3, + "60053": 2, + "60058": 1, + "60064": 1, + "60108": 1, + "60124": 1, + "60135": 1, + "60144": 1, + "60146": 1, + "60147": 1, + "60153": 2, + "60156": 1, + "60158": 2, + "60159": 2, + "60163": 1, + "60175": 2, + "60176": 1, + "60179": 2, + "60181": 1, + "60184": 1, + "60185": 1, + "60186": 1, + "60188": 1, + "60191": 2, + "60192": 2, + "60193": 1, + "60195": 1, + "60196": 1, + "60200": 1, + "60202": 1, + "60204": 2, + "60207": 1, + "60210": 1, + "60211": 1, + "60216": 1, + "60221": 1, + "60222": 1, + "60223": 1, + "60224": 1, + "60225": 1, + "60226": 3, + "60227": 2, + "60228": 2, + "60231": 2, + "60232": 3, + "60233": 1, + "60234": 1, + "60269": 1, + "60281": 1, + "60282": 1, + "60289": 1, + "60308": 1, + "60309": 1, + "60311": 1, + "60316": 1, + "60320": 1, + "60322": 1, + "60325": 1, + "60366": 1, + "60401": 2, + "60406": 1, + "60460": 1, + "60464": 1, + "60466": 1, + "60467": 1, + "60469": 1, + "60474": 1, + "60573": 1, + "60574": 1, + "60578": 1, + "60579": 1, + "60581": 1, + "60587": 1, + "60743": 2, + "60747": 3, + "60748": 1, + "60776": 2, + "60777": 1, + "60778": 1, + "60782": 1, + "60784": 1, + "60889": 1, + "60940": 1, + "60944": 1, + "60945": 1, + "60948": 1, + "60949": 1, + "60950": 1, + "60951": 1, + "60952": 2, + "60953": 2, + "60954": 2, + "60956": 1, + "60963": 1, + "60964": 1, + "60968": 1, + "60973": 1, + "60976": 1, + "60980": 2, + "60981": 1, + "61002": 1, + "61011": 2, + "61014": 1, + "61015": 1, + "61016": 1, + "61019": 1, + "61020": 1, + "61030": 2, + "61047": 1, + "61109": 1, + "61152": 1, + "61158": 2, + "61159": 1, + "61160": 1, + "61161": 1, + "61187": 1, + "61226": 1, + "61228": 1, + "61231": 1, + "61235": 1, + "61239": 1, + "61275": 1, + "61281": 1, + "61282": 1, + "61304": 2, + "61305": 1, + "61307": 1, + "61311": 1, + "61330": 1, + "61354": 1, + "61369": 1, + "61378": 1, + "61387": 1, + "61390": 1, + "61392": 1, + "61393": 1, + "61397": 1, + "61404": 1, + "61424": 1, + "61425": 1, + "61481": 1, + "61486": 4, + "61489": 1, + "61492": 2, + "61530": 1, + "61533": 1, + "61536": 1, + "61541": 2, + "61543": 2, + "61548": 1, + "61550": 1, + "61551": 1, + "61555": 1, + "61558": 1, + "61567": 1, + "61596": 1, + "61612": 1, + "61617": 1, + "61620": 2, + "61622": 3, + "61623": 3, + "61624": 1, + "61625": 1, + "61641": 1, + "61645": 2, + "61648": 1, + "61650": 1, + "61651": 1, + "61660": 1, + "61661": 1, + "61662": 1, + "61663": 1, + "61669": 1, + "61672": 1, + "61674": 2, + "61678": 1, + "61684": 1, + "61690": 1, + "61693": 1, + "61696": 1, + "61700": 1, + "61725": 1, + "61736": 1, + "61745": 1, + "61757": 1, + "61759": 1, + "61760": 1, + "61763": 1, + "61767": 1, + "61768": 1, + "61770": 1, + "61779": 1, + "61810": 1, + "61811": 1, + "61813": 1, + "61814": 1, + "61815": 1, + "61821": 1, + "61879": 1, + "61975": 2, + "61980": 1, + "61985": 1, + "61987": 1, + "61989": 2, + "61993": 2, + "62011": 1, + "62036": 1, + "62040": 1, + "62042": 2, + "62047": 3, + "62052": 1, + "62053": 1, + "62058": 1, + "62060": 1, + "62075": 2, + "62079": 1, + "62103": 1, + "62157": 1, + "62164": 1, + "62187": 1, + "62208": 1, + "62211": 1, + "62216": 1, + "62217": 1, + "62218": 2, + "62219": 1, + "62289": 2, + "62296": 1, + "62298": 1, + "62305": 1, + "62308": 1, + "62340": 1, + "62349": 1, + "62352": 1, + "62360": 1, + "62385": 1, + "62392": 1, + "62396": 1, + "62397": 1, + "62399": 1, + "62404": 1, + "62419": 1, + "62426": 1, + "62427": 1, + "62431": 1, + "62447": 1, + "62448": 1, + "62452": 1, + "62454": 1, + "62455": 1, + "62456": 1, + "62461": 1, + "62464": 1, + "62468": 2, + "62480": 1, + "62484": 1, + "62485": 1, + "62487": 2, + "62490": 1, + "62491": 3, + "62492": 1, + "62494": 1, + "62527": 1, + "62530": 1, + "62531": 1, + "62532": 3, + "62533": 1, + "62534": 1, + "62535": 2, + "62538": 1, + "62561": 1, + "62569": 4, + "62570": 1, + "62571": 1, + "62602": 1, + "62606": 2, + "62608": 1, + "62610": 1, + "62612": 1, + "62620": 1, + "62621": 1, + "62622": 1, + "62627": 1, + "62630": 1, + "62631": 1, + "62645": 1, + "62680": 1, + "62686": 1, + "62688": 1, + "62692": 1, + "62693": 1, + "62695": 1, + "62698": 2, + "62700": 2, + "62701": 2, + "62703": 1, + "62705": 1, + "62706": 1, + "62707": 1, + "62708": 1, + "62733": 1, + "62737": 2, + "62741": 1, + "62758": 1, + "62772": 1, + "62836": 1, + "62894": 1, + "62945": 1, + "62946": 1, + "62947": 1, + "62952": 2, + "62983": 1, + "62987": 1, + "62991": 2, + "62993": 1, + "62994": 1, + "63058": 1, + "63067": 1, + "63068": 1, + "63069": 1, + "63078": 1, + "63140": 1, + "64144": 1, + "64286": 1, + "64387": 1, + "64401": 1, + "64505": 1, + "64517": 1, + "64577": 1, + "64595": 1, + "64600": 1, + "64602": 1, + "64605": 2, + "64623": 1, + "64646": 1, + "64721": 1, + "64751": 1, + "64835": 1, + "64923": 1, + "65160": 1, + "65282": 1, + "65378": 1, + "65464": 29, + "65492": 1, + "65536": 739 + }, + "started": "2025-09-11T20:10:56.151Z", + "trafficStats": { + "incomingCompressionRatio": 0.7592770767211914, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 99519965, + "incomingOctetsWireLevel": 99532585, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0001268087262691461, + "outgoingCompressionRatio": 0.7592770767211914, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 99519965, + "outgoingOctetsWireLevel": 99910461, + "outgoingWebSocketFrames": 97684, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.003923795592170877, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 96684, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 3, + "6": 1, + "7": 2, + "8": 1, + "9": 1, + "11": 2, + "13": 1, + "14": 1, + "15": 4, + "16": 1, + "17": 2, + "18": 1, + "20": 1, + "22": 2, + "29": 1, + "30": 1, + "31": 1, + "32": 1, + "33": 1, + "34": 3, + "35": 1, + "36": 1, + "37": 2, + "38": 1, + "39": 2, + "40": 3, + "41": 4, + "42": 3, + "43": 1, + "46": 1, + "48": 1, + "49": 1, + "51": 2, + "52": 1, + "53": 1, + "54": 2, + "55": 2, + "56": 4, + "57": 3, + "58": 1, + "59": 3, + "60": 1, + "62": 1, + "63": 1, + "64": 1, + "67": 1, + "69": 2, + "72": 1, + "73": 1, + "75": 1, + "77": 1, + "78": 1, + "81": 1, + "82": 1, + "84": 2, + "87": 3, + "89": 2, + "91": 2, + "93": 4, + "94": 1, + "95": 1, + "96": 2, + "98": 2, + "99": 2, + "104": 1, + "105": 1, + "106": 1, + "107": 1, + "109": 2, + "110": 1, + "111": 1, + "113": 1, + "115": 1, + "120": 1, + "122": 2, + "125": 1, + "126": 1, + "130": 1, + "132": 3, + "133": 1, + "134": 3, + "135": 1, + "136": 1, + "138": 1, + "142": 3, + "146": 2, + "147": 2, + "148": 2, + "150": 1, + "151": 1, + "152": 2, + "153": 2, + "154": 1, + "155": 3, + "156": 2, + "157": 1, + "161": 2, + "162": 3, + "163": 2, + "167": 1, + "170": 2, + "171": 2, + "172": 2, + "173": 3, + "174": 1, + "175": 2, + "178": 1, + "180": 1, + "182": 1, + "191": 1, + "192": 1, + "195": 3, + "196": 1, + "198": 1, + "199": 1, + "200": 2, + "201": 1, + "203": 1, + "205": 2, + "206": 1, + "207": 1, + "210": 1, + "211": 1, + "212": 2, + "213": 2, + "214": 1, + "218": 1, + "219": 2, + "221": 1, + "222": 1, + "223": 1, + "224": 4, + "226": 3, + "227": 2, + "228": 2, + "229": 1, + "230": 1, + "231": 1, + "232": 1, + "233": 3, + "234": 4, + "235": 3, + "236": 1, + "237": 1, + "238": 1, + "239": 1, + "240": 1, + "243": 3, + "244": 1, + "246": 1, + "250": 2, + "251": 1, + "252": 1, + "253": 1, + "254": 1, + "255": 1, + "258": 3, + "259": 3, + "261": 2, + "262": 2, + "263": 3, + "264": 1, + "265": 1, + "266": 1, + "267": 1, + "269": 1, + "272": 1, + "275": 2, + "277": 1, + "278": 1, + "279": 1, + "280": 2, + "281": 2, + "282": 1, + "284": 1, + "285": 1, + "286": 2, + "287": 1, + "288": 1, + "289": 1, + "290": 1, + "292": 1, + "293": 1, + "294": 2, + "295": 1, + "299": 1, + "300": 2, + "301": 1, + "304": 2, + "305": 1, + "308": 1, + "309": 1, + "310": 1, + "311": 2, + "312": 1, + "313": 1, + "314": 1, + "315": 1, + "317": 3, + "318": 1, + "319": 3, + "320": 2, + "321": 3, + "322": 2, + "323": 1, + "329": 1, + "330": 1, + "336": 1, + "337": 2, + "339": 1, + "341": 2, + "343": 3, + "344": 1, + "346": 2, + "347": 1, + "350": 2, + "351": 1, + "352": 3, + "356": 2, + "357": 1, + "358": 1, + "360": 1, + "361": 1, + "362": 1, + "363": 2, + "364": 1, + "365": 2, + "366": 1, + "368": 1, + "369": 2, + "371": 2, + "375": 2, + "376": 1, + "378": 1, + "382": 1, + "383": 1, + "384": 2, + "385": 1, + "386": 2, + "390": 1, + "391": 1, + "395": 4, + "399": 1, + "404": 1, + "405": 1, + "407": 1, + "415": 1, + "420": 1, + "421": 1, + "423": 1, + "424": 1, + "425": 2, + "427": 2, + "428": 3, + "429": 1, + "433": 1, + "435": 3, + "437": 1, + "439": 1, + "442": 1, + "445": 2, + "446": 1, + "448": 1, + "450": 1, + "451": 1, + "454": 1, + "456": 2, + "457": 1, + "458": 1, + "460": 1, + "462": 1, + "463": 2, + "464": 1, + "466": 2, + "468": 1, + "471": 3, + "472": 2, + "473": 1, + "474": 1, + "476": 1, + "477": 1, + "478": 2, + "479": 2, + "480": 1, + "481": 4, + "482": 2, + "486": 1, + "490": 1, + "492": 1, + "496": 2, + "498": 1, + "499": 1, + "500": 3, + "501": 5, + "505": 1, + "506": 1, + "507": 1, + "508": 1, + "509": 1, + "510": 1, + "511": 3, + "512": 1, + "513": 1, + "514": 3, + "515": 1, + "517": 2, + "518": 3, + "519": 3, + "520": 2, + "522": 1, + "523": 1, + "524": 1, + "525": 3, + "526": 2, + "527": 2, + "528": 3, + "529": 1, + "530": 2, + "531": 2, + "534": 3, + "535": 3, + "537": 2, + "538": 2, + "539": 2, + "540": 2, + "541": 1, + "542": 2, + "543": 2, + "545": 1, + "547": 2, + "549": 2, + "550": 1, + "552": 1, + "554": 4, + "555": 2, + "556": 2, + "557": 1, + "558": 1, + "559": 1, + "561": 2, + "562": 1, + "564": 1, + "566": 1, + "568": 1, + "570": 1, + "573": 1, + "575": 2, + "576": 2, + "578": 1, + "579": 1, + "580": 1, + "584": 2, + "585": 4, + "586": 2, + "588": 1, + "589": 2, + "590": 3, + "591": 1, + "592": 3, + "593": 3, + "594": 4, + "595": 2, + "596": 1, + "597": 2, + "599": 2, + "600": 2, + "601": 1, + "602": 2, + "603": 2, + "604": 4, + "605": 3, + "606": 1, + "608": 1, + "609": 1, + "610": 6, + "611": 1, + "613": 1, + "614": 1, + "616": 1, + "617": 1, + "622": 3, + "624": 1, + "625": 3, + "627": 1, + "628": 1, + "629": 1, + "630": 1, + "635": 1, + "636": 1, + "637": 1, + "639": 1, + "641": 2, + "643": 1, + "645": 1, + "647": 1, + "649": 2, + "650": 3, + "651": 5, + "652": 1, + "653": 3, + "656": 1, + "659": 1, + "660": 1, + "661": 1, + "662": 1, + "665": 1, + "670": 1, + "671": 1, + "672": 2, + "677": 1, + "680": 1, + "682": 1, + "683": 3, + "684": 1, + "689": 1, + "690": 2, + "692": 1, + "698": 1, + "702": 3, + "704": 1, + "705": 2, + "706": 2, + "707": 2, + "710": 1, + "713": 1, + "715": 1, + "716": 2, + "720": 2, + "721": 1, + "722": 1, + "724": 2, + "725": 1, + "726": 2, + "729": 1, + "732": 3, + "733": 2, + "734": 1, + "735": 1, + "736": 1, + "737": 1, + "741": 1, + "742": 1, + "744": 2, + "745": 2, + "746": 4, + "749": 1, + "751": 3, + "752": 2, + "754": 1, + "755": 1, + "756": 2, + "757": 4, + "758": 1, + "759": 1, + "760": 1, + "761": 3, + "764": 1, + "766": 3, + "767": 1, + "768": 4, + "769": 1, + "770": 1, + "772": 1, + "773": 3, + "774": 1, + "775": 1, + "777": 3, + "778": 1, + "779": 4, + "782": 1, + "783": 1, + "784": 2, + "786": 2, + "788": 1, + "789": 2, + "790": 3, + "791": 1, + "793": 1, + "794": 2, + "795": 1, + "796": 1, + "798": 1, + "800": 3, + "802": 4, + "803": 1, + "805": 3, + "807": 1, + "808": 3, + "809": 2, + "813": 1, + "814": 2, + "816": 1, + "819": 2, + "820": 1, + "821": 1, + "822": 1, + "823": 1, + "824": 3, + "825": 2, + "826": 2, + "827": 1, + "828": 2, + "829": 3, + "830": 3, + "831": 1, + "832": 1, + "833": 1, + "839": 3, + "840": 1, + "841": 1, + "842": 3, + "844": 1, + "846": 2, + "847": 1, + "848": 1, + "849": 1, + "851": 2, + "852": 1, + "853": 1, + "854": 1, + "855": 3, + "856": 1, + "857": 1, + "858": 1, + "859": 1, + "862": 2, + "865": 1, + "866": 2, + "867": 1, + "869": 1, + "870": 1, + "871": 4, + "874": 3, + "875": 1, + "876": 1, + "877": 2, + "878": 2, + "879": 2, + "880": 1, + "881": 1, + "883": 3, + "885": 2, + "886": 2, + "887": 1, + "889": 1, + "890": 2, + "891": 1, + "892": 1, + "894": 1, + "895": 4, + "896": 2, + "897": 1, + "898": 2, + "899": 2, + "901": 1, + "902": 2, + "903": 1, + "904": 1, + "905": 2, + "906": 2, + "907": 3, + "908": 1, + "909": 2, + "910": 1, + "913": 1, + "914": 2, + "918": 1, + "919": 1, + "920": 1, + "921": 1, + "923": 1, + "926": 1, + "928": 1, + "930": 1, + "931": 2, + "932": 1, + "933": 1, + "934": 2, + "935": 2, + "936": 1, + "937": 1, + "938": 2, + "940": 2, + "942": 1, + "943": 1, + "946": 2, + "947": 2, + "948": 1, + "949": 1, + "953": 1, + "954": 1, + "958": 2, + "959": 1, + "961": 1, + "964": 1, + "966": 2, + "967": 2, + "971": 1, + "973": 1, + "974": 2, + "976": 2, + "978": 1, + "979": 1, + "981": 2, + "982": 1, + "983": 1, + "984": 1, + "985": 2, + "989": 1, + "990": 1, + "991": 1, + "997": 3, + "998": 2, + "999": 2, + "1002": 1, + "1003": 1, + "1004": 2, + "1005": 3, + "1006": 2, + "1011": 1, + "1013": 2, + "1014": 2, + "1018": 2, + "1024": 2, + "1025": 3, + "1028": 96684 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333839266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ac48fd91afa0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ac48fd91" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_17.html b/autobahn/client/tungstenite_case_12_5_17.html new file mode 100644 index 0000000..145b475 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_17.html @@ -0,0 +1,2005 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.17 : Pass - 8742 ms @ 2025-09-11T20:11:06.528Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=390&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: XokDnACJutBmWeHZ/r1bDg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0vSzLRfyCUQRWlZBdUAie9jPERU=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
51151
1431143
2381238
2571257
150011500
156911569
161311613
161911619
170611706
175811758
372313723
382613826
392213922
392813928
398013980
401314013
403014030
412314123
413014130
425814258
439314393
451114511
452714527
464614646
470214702
486514865
501915019
516915169
564915649
565215652
571015710
575215752
583215832
590715907
785817858
795017950
798617986
804018040
812118121
820318203
923519235
933719337
944919449
953119531
961019610
967219672
970719707
975219752
980219802
980419804
986119861
989619896
992819928
995019950
997719977
10067110067
10208110208
10258110258
10960110960
11040111040
11153111153
11255111255
11345111345
11454111454
13587113587
13659113659
13757113757
13778113778
13798113798
13832113832
14770114770
14874114874
14891114891
14993114993
15119115119
15124115124
15174115174
15175115175
15222115222
15253115253
15267115267
15286115286
15320115320
15329115329
15370230740
15444115444
15447115447
15470115470
15482115482
15497115497
15565115565
15583115583
15624115624
17579117579
17651117651
17704117704
17774117774
18209118209
18732118732
18799118799
18887118887
18922118922
19004119004
19095119095
19284119284
19299119299
19319119319
19337119337
19356119356
19368119368
19520119520
19532119532
19555119555
19564119564
19590239180
20226120226
20361120361
20496120496
20632120632
20741120741
20873120873
21203121203
21216121216
21219121219
21231121231
21235121235
21248121248
21258121258
21329121329
21332121332
21386121386
21464121464
21487121487
21515121515
21573121573
21620121620
21642121642
21648121648
21685121685
21857121857
21883121883
21889121889
21909243818
21965121965
22080122080
22089122089
22099122099
22119122119
22136122136
22150122150
22388244776
22403122403
22415122415
22420122420
22445122445
23445123445
23487123487
23586123586
23684123684
23824123824
23966123966
24102124102
25402125402
25539125539
25672125672
25806125806
25940125940
26072126072
28502128502
28647128647
28797128797
28932128932
29081129081
29223129223
29655129655
29682129682
29775129775
29900129900
29972129972
30000130000
30801130801
30936130936
31071131071
31202131202
31340131340
31476131476
31526131526
31551131551
31576131576
31598131598
31619131619
31632131632
32056132056
32133132133
32214132214
32302132302
32378132378
32450132450
33494133494
33633133633
33716133716
33834133834
33965133965
34106134106
36043136043
36049136049
36143136143
36183136183
36191136191
36273136273
36281136281
36289136289
36292136292
36307136307
36321136321
36378136378
36418136418
36472136472
36503136503
36532136532
36629136629
36752136752
37487137487
37534137534
37642137642
37652137652
37772137772
37840137840
39480139480
39577139577
39662279324
39695139695
39812139812
39997139997
40096140096
40198140198
40212140212
40225140225
40231140231
40232140232
40234140234
40258140258
40277140277
40368140368
40469140469
41365141365
41428141428
41570141570
41702141702
41837141837
41967141967
42480142480
42499284998
42563142563
42577142577
42578142578
42594142594
42598142598
42641142641
42686142686
42704142704
43440143440
43689143689
43767143767
43791143791
43854143854
43881143881
43917143917
43931143931
43970143970
43971143971
43996143996
44015144015
44045144045
44358144358
44420144420
44427144427
44469144469
44481144481
44493144493
44496144496
44570144570
44592144592
44612144612
44650144650
44687144687
44719144719
44731144731
44788144788
44856144856
44980144980
45101145101
45888145888
45907145907
45911291822
45914145914
45919145919
45926145926
45930145930
459313137793
45954145954
45992145992
46007146007
46051146051
46056146056
46103146103
46123146123
46193146193
46225146225
46259146259
46325146325
46348146348
46431146431
47598147598
47725147725
47800147800
47854147854
47883147883
47973147973
47983147983
48075148075
48099148099
48175148175
48197148197
48233148233
49018149018
49117149117
49214149214
49298149298
49399149399
49465149465
49542149542
49612149612
49620149620
49690149690
49742149742
49766149766
49807299614
49846299692
49881149881
49932149932
49989149989
50047150047
50175150175
50299150299
50420150420
50479150479
50549150549
50576150576
50684150684
50722150722
50741150741
50785150785
50790150790
50885150885
50893150893
50968150968
50986150986
51057151057
52729152729
52833152833
52838152838
52865152865
52900152900
52911152911
52949152949
52964152964
529852105970
52994152994
53012153012
53031153031
53033153033
53052153052
53081153081
53094153094
53127153127
53158153158
53163153163
53201153201
53271153271
53321153321
53414153414
54724154724
54776154776
54783154783
54787154787
54885154885
54966154966
54991154991
55068155068
55161155161
55263155263
55365155365
55469155469
55488155488
55610155610
55729155729
55853155853
55857155857
55873155873
55891155891
55949155949
55977155977
56005156005
56020156020
56102156102
56531156531
56579156579
56676156676
56702156702
56749156749
56838156838
57540157540
57629157629
57719157719
57816157816
57920157920
57942157942
58013158013
58747158747
58748158748
58754158754
58797158797
587992117598
58800158800
58853158853
58871158871
58956158956
58997158997
59076159076
59121159121
59191159191
592582118516
592613177783
59268159268
59269159269
593123177936
59314159314
59315159315
59324159324
59386159386
59418159418
59439159439
594452118890
594463178338
59447159447
59452159452
59453159453
59455159455
59457159457
59534159534
59552159552
59553159553
59556159556
595572119114
59564159564
59632159632
59635159635
59636159636
59638159638
59640159640
59641159641
59645159645
59646159646
59655159655
596602119320
596612119322
596632119326
59664159664
59665159665
59671159671
596772119354
59679159679
59680159680
596822119364
59683159683
59684159684
59691159691
59694159694
596962119392
59697159697
59702159702
597132119426
59716159716
59717159717
597212119442
59722159722
59738159738
597452119490
59746159746
597482119496
59754159754
59767159767
59768159768
59770159770
59771159771
59788159788
597972119594
59830159830
59837159837
598732119746
59876159876
598812119762
598832119766
598842119768
59888159888
598982119796
599022119804
599033179709
59907159907
59908159908
59910159910
59914159914
59916159916
59917159917
599202119840
59922159922
599332119866
59937159937
59940159940
59945159945
59954159954
59956159956
59957159957
59958159958
59960159960
59961159961
59975159975
59994159994
59995159995
59997159997
600012120002
60002160002
60003160003
60012160012
60013160013
60018160018
60024160024
60026160026
60029160029
60041160041
60043160043
60045160045
60047160047
60051160051
600523180156
600532120106
60058160058
60064160064
60076160076
60108160108
60124160124
60135160135
60144160144
60146160146
60147160147
601532120306
60154160154
60156160156
601582120316
601592120318
60163160163
601752120350
60176160176
601792120358
60181160181
60184160184
60185160185
60186160186
60188160188
601912120382
601922120384
60193160193
60195160195
60196160196
60197160197
60200160200
60202160202
602042120408
60207160207
60209160209
602102120420
60211160211
60216160216
60221160221
60222160222
60223160223
60224160224
60225160225
602262120452
602272120454
602282120456
602312120462
602323180696
60233160233
60234160234
60289160289
60294160294
60308160308
60309160309
60311160311
60316160316
60320160320
60322160322
60325160325
604012120802
60406160406
60460160460
60464160464
60466160466
60467160467
60469160469
60474160474
60573160573
60574160574
60578160578
60579160579
60581160581
60587160587
607432121486
607473182241
60748160748
607762121552
60777160777
60778160778
60782160782
60784160784
60889160889
60940160940
60944160944
60945160945
60948160948
60949160949
60950160950
60951160951
609522121904
609532121906
609542121908
60956160956
60963160963
60964160964
60968160968
60973160973
60975160975
60976160976
609802121960
60981160981
61002161002
610112122022
61014161014
61015161015
61016161016
61019161019
61020161020
610302122060
61109161109
61152161152
611582122316
61159161159
61160161160
61161161161
61226161226
61228161228
61235161235
61239161239
61259161259
61275161275
61281161281
61282161282
61297161297
613042122608
61305161305
61307161307
61311161311
61330161330
61354161354
61378161378
61387161387
61390161390
61392161392
61393161393
61397161397
61404161404
61424161424
61425161425
61481161481
614864245944
61489161489
614922122984
61530161530
61533161533
61536161536
615412123082
615432123086
61548161548
61550161550
61551161551
61555161555
61558161558
61567161567
61596161596
61607161607
61612161612
61617161617
616202123240
616223184866
616233184869
61624161624
61625161625
61641161641
616452123290
61648161648
61650161650
61651161651
61653161653
61660161660
61661161661
61662161662
61663161663
61664161664
61669161669
61672161672
616742123348
61678161678
61684161684
61685161685
61687161687
61690161690
61693161693
61696161696
61700161700
61745161745
61760161760
61763161763
61767161767
61768161768
61770161770
61779161779
61810161810
61811161811
61813161813
61814161814
61815161815
61821161821
61879161879
619752123950
61980161980
61985161985
61987161987
619892123978
61993161993
62011162011
62036162036
62040162040
620422124084
620473186141
62052162052
62053162053
62058162058
62060162060
62065162065
620752124150
62079162079
62103162103
62157162157
62164162164
62187162187
62208162208
62211162211
62216162216
62217162217
622182124436
62219162219
622892124578
62296162296
62298162298
62305162305
62308162308
62340162340
62347162347
62349162349
62352162352
62355162355
62360162360
62385162385
62392162392
62396162396
62397162397
62399162399
62404162404
62426162426
62431162431
62447162447
62448162448
62452162452
62454162454
62455162455
62456162456
62461162461
62464162464
624682124936
62480162480
62484162484
62485162485
62487162487
62489162489
62490162490
624913187473
62492162492
62494162494
62527162527
625302125060
62531162531
625323187596
62533162533
62534162534
625352125070
62538162538
625694250276
62570162570
62571162571
626062125212
626082125216
62610162610
62612162612
62616162616
62620162620
62622162622
62627162627
62630162630
62631162631
62645162645
62686162686
62692162692
626932125386
62695162695
626982125396
627003188100
627012125402
62703162703
62705162705
62706162706
62707162707
62708162708
62733162733
627372125474
62741162741
62758162758
62836162836
62863162863
62894162894
62946162946
62947162947
629522125904
62983162983
62987162987
629912125982
62993162993
62994162994
63017163017
63058163058
63067163067
630682126136
63069163069
63078163078
64144164144
64286164286
64387164387
64401164401
64505164505
64517164517
64577164577
64595164595
64600164600
64602164602
646052129210
64623164623
64646164646
64721164721
64751164751
64835164835
64923164923
651603195480
65282165282
65378165378
6546410654640
65492165492
6553675649545216
Total177399532850
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
428
15115
17117
22122
29129
33133
343102
37137
39139
403120
56156
67167
78178
81181
84184
892178
912182
96196
98198
99199
1061106
1091109
1131113
1151115
1331133
1422284
1461146
1521152
1622324
1671167
1702340
1722344
1733519
1741174
1751175
1781178
1911191
1921192
1952390
1981198
2001200
2011201
2031203
2101210
2111211
2121212
2131213
2141214
2191219
2221222
2242448
2282456
2341234
2351235
2371237
2401240
2432486
2461246
2502500
2511251
2521252
2811281
2871287
3011301
3091309
3101310
3131313
3171317
3181318
3201320
3231323
3291329
3601360
3611361
3631363
3641364
3651365
3712742
3831383
3861386
3991399
4051405
4211421
4351435
4561456
4581458
4641464
4681468
52521050
5301530
5341534
5351535
5371537
53921078
5401540
5411541
5431543
5491549
5611561
58621172
5901590
59221184
5941594
5961596
59721194
6001600
6021602
60321206
6081608
61021220
6131613
62521250
6291629
65121302
6591659
6601660
6651665
69021380
7061706
7071707
7131713
7161716
7201720
7251725
7261726
7291729
7321732
7371737
7411741
7451745
7581758
7591759
7611761
7641764
7661766
7671767
76843072
7691769
7701770
8161816
8281828
8331833
83932517
8421842
8461846
8471847
8481848
85121702
8541854
85521710
8581858
8591859
8661866
8671867
8701870
87132613
8851885
8901890
8941894
8961896
8971897
8981898
8991899
9021902
9051905
9101910
9131913
9321932
9351935
9381938
9421942
9461946
94721894
9491949
9531953
9541954
9661966
9741974
9761976
9791979
9811981
9851985
9901990
99732991
9981998
100211002
100411004
100511005
100622012
101111011
101311013
101411014
101822036
102511025
103011030
103311033
103411034
103511035
103722074
103911039
104011040
104133123
104211042
104311043
104411044
105611056
105711057
106311063
107711077
108022160
108111081
108233246
108322166
108411084
108522170
108611086
108811088
109911099
111944476
112011120
112111121
113011130
113311133
113511135
113711137
115211152
115622312
115833474
115911159
116011160
116211162
116611166
117011170
117111171
117211172
117711177
118011180
118111181
118511185
118711187
119522390
119911199
122011220
122411224
123611236
124211242
124311243
124511245
124711247
124822496
125033750
125122502
125311253
125511255
125611256
125722514
125822516
125911259
128311283
128722574
128811288
128911289
129111291
129611296
130811308
131011310
131711317
132411324
132811328
132911329
135411354
136111361
136511365
136711367
138011380
138611386
138711387
139311393
139922798
140011400
140611406
140811408
141411414
141922838
143911439
144411444
144911449
145122902
145211452
145911459
147011470
147211472
147411474
147511475
147811478
148011480
148611486
149011490
149511495
149611496
149711497
150011500
150223004
150523010
151611516
152211522
152311523
152411524
153111531
153311533
153411534
153534605
153711537
154123082
154323086
154411544
155911559
156611566
158511585
159011590
159923198
160011600
160211602
160311603
160411604
160823216
160923218
161311613
161411614
161711617
161823236
161911619
162823256
162923258
163011630
163311633
163411634
164623292
164911649
165911659
166011660
167711677
169411694
169611696
170811708
172211722
172623452
172811728
172911729
173111731
173911739
174011740
174823496
177311773
177511775
180111801
181011810
181211812
182411824
184311843
186511865
189823796
190111901
190311903
190411904
190735721
191011910
191311913
191411914
191511915
192511925
193011930
195511955
195711957
195823916
196011960
196111961
196411964
197011970
200512005
200612006
203812038
205612056
207012070
208512085
209124182
209236276
209312093
209812098
209912099
210112101
210312103
210712107
211912119
218012180
219812198
219912199
220212202
220324406
221012210
221112211
223012230
225412254
227812278
228112281
228212282
228412284
228612286
228712287
229112291
229212292
230112301
230624612
230724614
230924618
231012310
231112311
231712317
232324646
232512325
232612326
232824656
232912329
233012330
233712337
233812338
234012340
234224684
234312343
234812348
235212352
235924718
236212362
236312363
236724734
236812368
238412384
238912389
239124782
239212392
239424788
240012400
240512405
241312413
241412414
241612416
241712417
243412434
244324886
247112471
247212472
247612476
248312483
249312493
251925038
252012520
252212522
252725054
252812528
252925058
253025060
253412534
253812538
254425088
254825096
2549410196
255312553
255412554
255612556
256012560
256212562
256312563
256625132
256812568
257612576
257925158
258312583
258612586
259112591
259312593
259512595
260012600
260212602
260312603
260412604
260512605
260612606
260712607
261012610
261212612
262112621
263912639
264012640
264112641
264312643
264725294
264812648
264912649
265012650
265825316
265912659
266412664
266512665
267012670
267212672
267512675
268712687
268912689
269112691
269312693
269512695
269725394
269838094
269925398
270012700
270112701
270412704
270912709
271012710
271912719
272512725
274012740
275312753
275412754
275812758
276812768
277012770
278112781
279012790
279212792
279312793
2794411176
279925598
280012800
280212802
280312803
280425608
280525610
280912809
282138463
282212822
282312823
282525650
282612826
282738481
283012830
283112831
283212832
283412834
283725674
283838514
283912839
284112841
284225684
284312843
284412844
284612846
284812848
285038550
285312853
285512855
285625712
285712857
286212862
286712867
286812868
286912869
287012870
287112871
287225744
287325746
287425748
287512875
287612876
287738631
287838634
287912879
288012880
289025780
290012900
290512905
291312913
291712917
292212922
292312923
292412924
292512925
293512935
294012940
294338829
294412944
295112951
295312953
295412954
295538865
295612956
295725914
296225924
296612966
296712967
296812968
296912969
297112971
297412974
298812988
300613006
300713007
301513015
302213022
303113031
303213032
303913039
304726094
305113051
305213052
305313053
306113061
307226144
307313073
308113081
309613096
310613106
311013110
311213112
311313113
311526230
312013120
312613126
312913129
313313133
313713137
313813138
314313143
314613146
314913149
315113151
315613156
315813158
316139483
317013170
317213172
317313173
317913179
318413184
319413194
319626392
319913199
320213202
321913219
322013220
322413224
322513225
322713227
322813228
323313233
325213252
326713267
327113271
327726554
327913279
328513285
330713307
332613326
332713327
333013330
333413334
333813338
335113351
335713357
335813358
336013360
337113371
338013380
338413384
338926778
339113391
3393310179
339426788
340913409
341113411
341913419
342226844
342313423
342426848
342813428
343013430
345013450
345613456
345713457
346313463
347613476
347913479
349713497
350013500
350113501
350513505
350913509
351113511
351413514
351713517
352913529
353213532
353527070
353813538
354913549
357313573
358627172
359013590
359113591
359413594
359513595
359613596
359713597
359827196
359927198
360027200
360113601
360213602
360627212
360913609
361013610
361213612
361413614
361913619
362113621
362213622
3626310878
362713627
362813628
364013640
364213642
364813648
365727314
366013660
366113661
366213662
366513665
366613666
367627352
367713677
368213682
368613686
370013700
370213702
370913709
371313713
372313723
372513725
374413744
375213752
375413754
3755311265
376113761
377413774
379313793
379813798
380427608
380513805
380613806
380713807
380813808
381613816
382413824
382927658
383213832
383313833
383827676
384413844
385113851
385613856
387213872
387413874
387513875
387727754
388013880
388113881
388513885
388613886
389613896
391213912
391613916
391813918
392113921
392513925
392713927
392813928
393427868
393813938
394313943
395027900
395113951
395313953
395713957
395813958
396713967
397013970
397113971
397413974
397613976
400014000
400214002
400314003
400714007
401014010
401514015
402014020
403014030
403314033
403614036
403814038
403914039
404314043
404514045
404814048
405014050
405714057
406114061
407014070
407714077
409714097
41002378997534900
Total2479199619317
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
023789
21000
81
Total24790
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333930266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882310bf22532e3
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3331306266323235
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_17.json b/autobahn/client/tungstenite_case_12_5_17.json new file mode 100644 index 0000000..8f3326e --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_17.json @@ -0,0 +1,1852 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 390, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 8742, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=390&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: XokDnACJutBmWeHZ/r1bDg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0vSzLRfyCUQRWlZBdUAie9jPERU=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "51": 1, + "143": 1, + "238": 1, + "257": 1, + "1500": 1, + "1569": 1, + "1613": 1, + "1619": 1, + "1706": 1, + "1758": 1, + "3723": 1, + "3826": 1, + "3922": 1, + "3928": 1, + "3980": 1, + "4013": 1, + "4030": 1, + "4123": 1, + "4130": 1, + "4258": 1, + "4393": 1, + "4511": 1, + "4527": 1, + "4646": 1, + "4702": 1, + "4865": 1, + "5019": 1, + "5169": 1, + "5649": 1, + "5652": 1, + "5710": 1, + "5752": 1, + "5832": 1, + "5907": 1, + "7858": 1, + "7950": 1, + "7986": 1, + "8040": 1, + "8121": 1, + "8203": 1, + "9235": 1, + "9337": 1, + "9449": 1, + "9531": 1, + "9610": 1, + "9672": 1, + "9707": 1, + "9752": 1, + "9802": 1, + "9804": 1, + "9861": 1, + "9896": 1, + "9928": 1, + "9950": 1, + "9977": 1, + "10067": 1, + "10208": 1, + "10258": 1, + "10960": 1, + "11040": 1, + "11153": 1, + "11255": 1, + "11345": 1, + "11454": 1, + "13587": 1, + "13659": 1, + "13757": 1, + "13778": 1, + "13798": 1, + "13832": 1, + "14770": 1, + "14874": 1, + "14891": 1, + "14993": 1, + "15119": 1, + "15124": 1, + "15174": 1, + "15175": 1, + "15222": 1, + "15253": 1, + "15267": 1, + "15286": 1, + "15320": 1, + "15329": 1, + "15370": 2, + "15444": 1, + "15447": 1, + "15470": 1, + "15482": 1, + "15497": 1, + "15565": 1, + "15583": 1, + "15624": 1, + "17579": 1, + "17651": 1, + "17704": 1, + "17774": 1, + "18209": 1, + "18732": 1, + "18799": 1, + "18887": 1, + "18922": 1, + "19004": 1, + "19095": 1, + "19284": 1, + "19299": 1, + "19319": 1, + "19337": 1, + "19356": 1, + "19368": 1, + "19520": 1, + "19532": 1, + "19555": 1, + "19564": 1, + "19590": 2, + "20226": 1, + "20361": 1, + "20496": 1, + "20632": 1, + "20741": 1, + "20873": 1, + "21203": 1, + "21216": 1, + "21219": 1, + "21231": 1, + "21235": 1, + "21248": 1, + "21258": 1, + "21329": 1, + "21332": 1, + "21386": 1, + "21464": 1, + "21487": 1, + "21515": 1, + "21573": 1, + "21620": 1, + "21642": 1, + "21648": 1, + "21685": 1, + "21857": 1, + "21883": 1, + "21889": 1, + "21909": 2, + "21965": 1, + "22080": 1, + "22089": 1, + "22099": 1, + "22119": 1, + "22136": 1, + "22150": 1, + "22388": 2, + "22403": 1, + "22415": 1, + "22420": 1, + "22445": 1, + "23445": 1, + "23487": 1, + "23586": 1, + "23684": 1, + "23824": 1, + "23966": 1, + "24102": 1, + "25402": 1, + "25539": 1, + "25672": 1, + "25806": 1, + "25940": 1, + "26072": 1, + "28502": 1, + "28647": 1, + "28797": 1, + "28932": 1, + "29081": 1, + "29223": 1, + "29655": 1, + "29682": 1, + "29775": 1, + "29900": 1, + "29972": 1, + "30000": 1, + "30801": 1, + "30936": 1, + "31071": 1, + "31202": 1, + "31340": 1, + "31476": 1, + "31526": 1, + "31551": 1, + "31576": 1, + "31598": 1, + "31619": 1, + "31632": 1, + "32056": 1, + "32133": 1, + "32214": 1, + "32302": 1, + "32378": 1, + "32450": 1, + "33494": 1, + "33633": 1, + "33716": 1, + "33834": 1, + "33965": 1, + "34106": 1, + "36043": 1, + "36049": 1, + "36143": 1, + "36183": 1, + "36191": 1, + "36273": 1, + "36281": 1, + "36289": 1, + "36292": 1, + "36307": 1, + "36321": 1, + "36378": 1, + "36418": 1, + "36472": 1, + "36503": 1, + "36532": 1, + "36629": 1, + "36752": 1, + "37487": 1, + "37534": 1, + "37642": 1, + "37652": 1, + "37772": 1, + "37840": 1, + "39480": 1, + "39577": 1, + "39662": 2, + "39695": 1, + "39812": 1, + "39997": 1, + "40096": 1, + "40198": 1, + "40212": 1, + "40225": 1, + "40231": 1, + "40232": 1, + "40234": 1, + "40258": 1, + "40277": 1, + "40368": 1, + "40469": 1, + "41365": 1, + "41428": 1, + "41570": 1, + "41702": 1, + "41837": 1, + "41967": 1, + "42480": 1, + "42499": 2, + "42563": 1, + "42577": 1, + "42578": 1, + "42594": 1, + "42598": 1, + "42641": 1, + "42686": 1, + "42704": 1, + "43440": 1, + "43689": 1, + "43767": 1, + "43791": 1, + "43854": 1, + "43881": 1, + "43917": 1, + "43931": 1, + "43970": 1, + "43971": 1, + "43996": 1, + "44015": 1, + "44045": 1, + "44358": 1, + "44420": 1, + "44427": 1, + "44469": 1, + "44481": 1, + "44493": 1, + "44496": 1, + "44570": 1, + "44592": 1, + "44612": 1, + "44650": 1, + "44687": 1, + "44719": 1, + "44731": 1, + "44788": 1, + "44856": 1, + "44980": 1, + "45101": 1, + "45888": 1, + "45907": 1, + "45911": 2, + "45914": 1, + "45919": 1, + "45926": 1, + "45930": 1, + "45931": 3, + "45954": 1, + "45992": 1, + "46007": 1, + "46051": 1, + "46056": 1, + "46103": 1, + "46123": 1, + "46193": 1, + "46225": 1, + "46259": 1, + "46325": 1, + "46348": 1, + "46431": 1, + "47598": 1, + "47725": 1, + "47800": 1, + "47854": 1, + "47883": 1, + "47973": 1, + "47983": 1, + "48075": 1, + "48099": 1, + "48175": 1, + "48197": 1, + "48233": 1, + "49018": 1, + "49117": 1, + "49214": 1, + "49298": 1, + "49399": 1, + "49465": 1, + "49542": 1, + "49612": 1, + "49620": 1, + "49690": 1, + "49742": 1, + "49766": 1, + "49807": 2, + "49846": 2, + "49881": 1, + "49932": 1, + "49989": 1, + "50047": 1, + "50175": 1, + "50299": 1, + "50420": 1, + "50479": 1, + "50549": 1, + "50576": 1, + "50684": 1, + "50722": 1, + "50741": 1, + "50785": 1, + "50790": 1, + "50885": 1, + "50893": 1, + "50968": 1, + "50986": 1, + "51057": 1, + "52729": 1, + "52833": 1, + "52838": 1, + "52865": 1, + "52900": 1, + "52911": 1, + "52949": 1, + "52964": 1, + "52985": 2, + "52994": 1, + "53012": 1, + "53031": 1, + "53033": 1, + "53052": 1, + "53081": 1, + "53094": 1, + "53127": 1, + "53158": 1, + "53163": 1, + "53201": 1, + "53271": 1, + "53321": 1, + "53414": 1, + "54724": 1, + "54776": 1, + "54783": 1, + "54787": 1, + "54885": 1, + "54966": 1, + "54991": 1, + "55068": 1, + "55161": 1, + "55263": 1, + "55365": 1, + "55469": 1, + "55488": 1, + "55610": 1, + "55729": 1, + "55853": 1, + "55857": 1, + "55873": 1, + "55891": 1, + "55949": 1, + "55977": 1, + "56005": 1, + "56020": 1, + "56102": 1, + "56531": 1, + "56579": 1, + "56676": 1, + "56702": 1, + "56749": 1, + "56838": 1, + "57540": 1, + "57629": 1, + "57719": 1, + "57816": 1, + "57920": 1, + "57942": 1, + "58013": 1, + "58747": 1, + "58748": 1, + "58754": 1, + "58797": 1, + "58799": 2, + "58800": 1, + "58853": 1, + "58871": 1, + "58956": 1, + "58997": 1, + "59076": 1, + "59121": 1, + "59191": 1, + "59258": 2, + "59261": 3, + "59268": 1, + "59269": 1, + "59312": 3, + "59314": 1, + "59315": 1, + "59324": 1, + "59386": 1, + "59418": 1, + "59439": 1, + "59445": 2, + "59446": 3, + "59447": 1, + "59452": 1, + "59453": 1, + "59455": 1, + "59457": 1, + "59534": 1, + "59552": 1, + "59553": 1, + "59556": 1, + "59557": 2, + "59564": 1, + "59632": 1, + "59635": 1, + "59636": 1, + "59638": 1, + "59640": 1, + "59641": 1, + "59645": 1, + "59646": 1, + "59655": 1, + "59660": 2, + "59661": 2, + "59663": 2, + "59664": 1, + "59665": 1, + "59671": 1, + "59677": 2, + "59679": 1, + "59680": 1, + "59682": 2, + "59683": 1, + "59684": 1, + "59691": 1, + "59694": 1, + "59696": 2, + "59697": 1, + "59702": 1, + "59713": 2, + "59716": 1, + "59717": 1, + "59721": 2, + "59722": 1, + "59738": 1, + "59745": 2, + "59746": 1, + "59748": 2, + "59754": 1, + "59767": 1, + "59768": 1, + "59770": 1, + "59771": 1, + "59788": 1, + "59797": 2, + "59830": 1, + "59837": 1, + "59873": 2, + "59876": 1, + "59881": 2, + "59883": 2, + "59884": 2, + "59888": 1, + "59898": 2, + "59902": 2, + "59903": 3, + "59907": 1, + "59908": 1, + "59910": 1, + "59914": 1, + "59916": 1, + "59917": 1, + "59920": 2, + "59922": 1, + "59933": 2, + "59937": 1, + "59940": 1, + "59945": 1, + "59954": 1, + "59956": 1, + "59957": 1, + "59958": 1, + "59960": 1, + "59961": 1, + "59975": 1, + "59994": 1, + "59995": 1, + "59997": 1, + "60001": 2, + "60002": 1, + "60003": 1, + "60012": 1, + "60013": 1, + "60018": 1, + "60024": 1, + "60026": 1, + "60029": 1, + "60041": 1, + "60043": 1, + "60045": 1, + "60047": 1, + "60051": 1, + "60052": 3, + "60053": 2, + "60058": 1, + "60064": 1, + "60076": 1, + "60108": 1, + "60124": 1, + "60135": 1, + "60144": 1, + "60146": 1, + "60147": 1, + "60153": 2, + "60154": 1, + "60156": 1, + "60158": 2, + "60159": 2, + "60163": 1, + "60175": 2, + "60176": 1, + "60179": 2, + "60181": 1, + "60184": 1, + "60185": 1, + "60186": 1, + "60188": 1, + "60191": 2, + "60192": 2, + "60193": 1, + "60195": 1, + "60196": 1, + "60197": 1, + "60200": 1, + "60202": 1, + "60204": 2, + "60207": 1, + "60209": 1, + "60210": 2, + "60211": 1, + "60216": 1, + "60221": 1, + "60222": 1, + "60223": 1, + "60224": 1, + "60225": 1, + "60226": 2, + "60227": 2, + "60228": 2, + "60231": 2, + "60232": 3, + "60233": 1, + "60234": 1, + "60289": 1, + "60294": 1, + "60308": 1, + "60309": 1, + "60311": 1, + "60316": 1, + "60320": 1, + "60322": 1, + "60325": 1, + "60401": 2, + "60406": 1, + "60460": 1, + "60464": 1, + "60466": 1, + "60467": 1, + "60469": 1, + "60474": 1, + "60573": 1, + "60574": 1, + "60578": 1, + "60579": 1, + "60581": 1, + "60587": 1, + "60743": 2, + "60747": 3, + "60748": 1, + "60776": 2, + "60777": 1, + "60778": 1, + "60782": 1, + "60784": 1, + "60889": 1, + "60940": 1, + "60944": 1, + "60945": 1, + "60948": 1, + "60949": 1, + "60950": 1, + "60951": 1, + "60952": 2, + "60953": 2, + "60954": 2, + "60956": 1, + "60963": 1, + "60964": 1, + "60968": 1, + "60973": 1, + "60975": 1, + "60976": 1, + "60980": 2, + "60981": 1, + "61002": 1, + "61011": 2, + "61014": 1, + "61015": 1, + "61016": 1, + "61019": 1, + "61020": 1, + "61030": 2, + "61109": 1, + "61152": 1, + "61158": 2, + "61159": 1, + "61160": 1, + "61161": 1, + "61226": 1, + "61228": 1, + "61235": 1, + "61239": 1, + "61259": 1, + "61275": 1, + "61281": 1, + "61282": 1, + "61297": 1, + "61304": 2, + "61305": 1, + "61307": 1, + "61311": 1, + "61330": 1, + "61354": 1, + "61378": 1, + "61387": 1, + "61390": 1, + "61392": 1, + "61393": 1, + "61397": 1, + "61404": 1, + "61424": 1, + "61425": 1, + "61481": 1, + "61486": 4, + "61489": 1, + "61492": 2, + "61530": 1, + "61533": 1, + "61536": 1, + "61541": 2, + "61543": 2, + "61548": 1, + "61550": 1, + "61551": 1, + "61555": 1, + "61558": 1, + "61567": 1, + "61596": 1, + "61607": 1, + "61612": 1, + "61617": 1, + "61620": 2, + "61622": 3, + "61623": 3, + "61624": 1, + "61625": 1, + "61641": 1, + "61645": 2, + "61648": 1, + "61650": 1, + "61651": 1, + "61653": 1, + "61660": 1, + "61661": 1, + "61662": 1, + "61663": 1, + "61664": 1, + "61669": 1, + "61672": 1, + "61674": 2, + "61678": 1, + "61684": 1, + "61685": 1, + "61687": 1, + "61690": 1, + "61693": 1, + "61696": 1, + "61700": 1, + "61745": 1, + "61760": 1, + "61763": 1, + "61767": 1, + "61768": 1, + "61770": 1, + "61779": 1, + "61810": 1, + "61811": 1, + "61813": 1, + "61814": 1, + "61815": 1, + "61821": 1, + "61879": 1, + "61975": 2, + "61980": 1, + "61985": 1, + "61987": 1, + "61989": 2, + "61993": 1, + "62011": 1, + "62036": 1, + "62040": 1, + "62042": 2, + "62047": 3, + "62052": 1, + "62053": 1, + "62058": 1, + "62060": 1, + "62065": 1, + "62075": 2, + "62079": 1, + "62103": 1, + "62157": 1, + "62164": 1, + "62187": 1, + "62208": 1, + "62211": 1, + "62216": 1, + "62217": 1, + "62218": 2, + "62219": 1, + "62289": 2, + "62296": 1, + "62298": 1, + "62305": 1, + "62308": 1, + "62340": 1, + "62347": 1, + "62349": 1, + "62352": 1, + "62355": 1, + "62360": 1, + "62385": 1, + "62392": 1, + "62396": 1, + "62397": 1, + "62399": 1, + "62404": 1, + "62426": 1, + "62431": 1, + "62447": 1, + "62448": 1, + "62452": 1, + "62454": 1, + "62455": 1, + "62456": 1, + "62461": 1, + "62464": 1, + "62468": 2, + "62480": 1, + "62484": 1, + "62485": 1, + "62487": 1, + "62489": 1, + "62490": 1, + "62491": 3, + "62492": 1, + "62494": 1, + "62527": 1, + "62530": 2, + "62531": 1, + "62532": 3, + "62533": 1, + "62534": 1, + "62535": 2, + "62538": 1, + "62569": 4, + "62570": 1, + "62571": 1, + "62606": 2, + "62608": 2, + "62610": 1, + "62612": 1, + "62616": 1, + "62620": 1, + "62622": 1, + "62627": 1, + "62630": 1, + "62631": 1, + "62645": 1, + "62686": 1, + "62692": 1, + "62693": 2, + "62695": 1, + "62698": 2, + "62700": 3, + "62701": 2, + "62703": 1, + "62705": 1, + "62706": 1, + "62707": 1, + "62708": 1, + "62733": 1, + "62737": 2, + "62741": 1, + "62758": 1, + "62836": 1, + "62863": 1, + "62894": 1, + "62946": 1, + "62947": 1, + "62952": 2, + "62983": 1, + "62987": 1, + "62991": 2, + "62993": 1, + "62994": 1, + "63017": 1, + "63058": 1, + "63067": 1, + "63068": 2, + "63069": 1, + "63078": 1, + "64144": 1, + "64286": 1, + "64387": 1, + "64401": 1, + "64505": 1, + "64517": 1, + "64577": 1, + "64595": 1, + "64600": 1, + "64602": 1, + "64605": 2, + "64623": 1, + "64646": 1, + "64721": 1, + "64751": 1, + "64835": 1, + "64923": 1, + "65160": 3, + "65282": 1, + "65378": 1, + "65464": 10, + "65492": 1, + "65536": 756 + }, + "started": "2025-09-11T20:11:06.528Z", + "trafficStats": { + "incomingCompressionRatio": 0.7592770767211914, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 99519965, + "incomingOctetsWireLevel": 99532585, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0001268087262691461, + "outgoingCompressionRatio": 0.7592770767211914, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 99519965, + "outgoingOctetsWireLevel": 99619061, + "outgoingWebSocketFrames": 24789, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0009957399000291047, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 23789, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 2, + "15": 1, + "17": 1, + "22": 1, + "29": 1, + "33": 1, + "34": 3, + "37": 1, + "39": 1, + "40": 3, + "56": 1, + "67": 1, + "78": 1, + "81": 1, + "84": 1, + "89": 2, + "91": 2, + "96": 1, + "98": 1, + "99": 1, + "106": 1, + "109": 1, + "113": 1, + "115": 1, + "133": 1, + "142": 2, + "146": 1, + "152": 1, + "162": 2, + "167": 1, + "170": 2, + "172": 2, + "173": 3, + "174": 1, + "175": 1, + "178": 1, + "191": 1, + "192": 1, + "195": 2, + "198": 1, + "200": 1, + "201": 1, + "203": 1, + "210": 1, + "211": 1, + "212": 1, + "213": 1, + "214": 1, + "219": 1, + "222": 1, + "224": 2, + "228": 2, + "234": 1, + "235": 1, + "237": 1, + "240": 1, + "243": 2, + "246": 1, + "250": 2, + "251": 1, + "252": 1, + "281": 1, + "287": 1, + "301": 1, + "309": 1, + "310": 1, + "313": 1, + "317": 1, + "318": 1, + "320": 1, + "323": 1, + "329": 1, + "360": 1, + "361": 1, + "363": 1, + "364": 1, + "365": 1, + "371": 2, + "383": 1, + "386": 1, + "399": 1, + "405": 1, + "421": 1, + "435": 1, + "456": 1, + "458": 1, + "464": 1, + "468": 1, + "525": 2, + "530": 1, + "534": 1, + "535": 1, + "537": 1, + "539": 2, + "540": 1, + "541": 1, + "543": 1, + "549": 1, + "561": 1, + "586": 2, + "590": 1, + "592": 2, + "594": 1, + "596": 1, + "597": 2, + "600": 1, + "602": 1, + "603": 2, + "608": 1, + "610": 2, + "613": 1, + "625": 2, + "629": 1, + "651": 2, + "659": 1, + "660": 1, + "665": 1, + "690": 2, + "706": 1, + "707": 1, + "713": 1, + "716": 1, + "720": 1, + "725": 1, + "726": 1, + "729": 1, + "732": 1, + "737": 1, + "741": 1, + "745": 1, + "758": 1, + "759": 1, + "761": 1, + "764": 1, + "766": 1, + "767": 1, + "768": 4, + "769": 1, + "770": 1, + "816": 1, + "828": 1, + "833": 1, + "839": 3, + "842": 1, + "846": 1, + "847": 1, + "848": 1, + "851": 2, + "854": 1, + "855": 2, + "858": 1, + "859": 1, + "866": 1, + "867": 1, + "870": 1, + "871": 3, + "885": 1, + "890": 1, + "894": 1, + "896": 1, + "897": 1, + "898": 1, + "899": 1, + "902": 1, + "905": 1, + "910": 1, + "913": 1, + "932": 1, + "935": 1, + "938": 1, + "942": 1, + "946": 1, + "947": 2, + "949": 1, + "953": 1, + "954": 1, + "966": 1, + "974": 1, + "976": 1, + "979": 1, + "981": 1, + "985": 1, + "990": 1, + "997": 3, + "998": 1, + "1002": 1, + "1004": 1, + "1005": 1, + "1006": 2, + "1011": 1, + "1013": 1, + "1014": 1, + "1018": 2, + "1025": 1, + "1030": 1, + "1033": 1, + "1034": 1, + "1035": 1, + "1037": 2, + "1039": 1, + "1040": 1, + "1041": 3, + "1042": 1, + "1043": 1, + "1044": 1, + "1056": 1, + "1057": 1, + "1063": 1, + "1077": 1, + "1080": 2, + "1081": 1, + "1082": 3, + "1083": 2, + "1084": 1, + "1085": 2, + "1086": 1, + "1088": 1, + "1099": 1, + "1119": 4, + "1120": 1, + "1121": 1, + "1130": 1, + "1133": 1, + "1135": 1, + "1137": 1, + "1152": 1, + "1156": 2, + "1158": 3, + "1159": 1, + "1160": 1, + "1162": 1, + "1166": 1, + "1170": 1, + "1171": 1, + "1172": 1, + "1177": 1, + "1180": 1, + "1181": 1, + "1185": 1, + "1187": 1, + "1195": 2, + "1199": 1, + "1220": 1, + "1224": 1, + "1236": 1, + "1242": 1, + "1243": 1, + "1245": 1, + "1247": 1, + "1248": 2, + "1250": 3, + "1251": 2, + "1253": 1, + "1255": 1, + "1256": 1, + "1257": 2, + "1258": 2, + "1259": 1, + "1283": 1, + "1287": 2, + "1288": 1, + "1289": 1, + "1291": 1, + "1296": 1, + "1308": 1, + "1310": 1, + "1317": 1, + "1324": 1, + "1328": 1, + "1329": 1, + "1354": 1, + "1361": 1, + "1365": 1, + "1367": 1, + "1380": 1, + "1386": 1, + "1387": 1, + "1393": 1, + "1399": 2, + "1400": 1, + "1406": 1, + "1408": 1, + "1414": 1, + "1419": 2, + "1439": 1, + "1444": 1, + "1449": 1, + "1451": 2, + "1452": 1, + "1459": 1, + "1470": 1, + "1472": 1, + "1474": 1, + "1475": 1, + "1478": 1, + "1480": 1, + "1486": 1, + "1490": 1, + "1495": 1, + "1496": 1, + "1497": 1, + "1500": 1, + "1502": 2, + "1505": 2, + "1516": 1, + "1522": 1, + "1523": 1, + "1524": 1, + "1531": 1, + "1533": 1, + "1534": 1, + "1535": 3, + "1537": 1, + "1541": 2, + "1543": 2, + "1544": 1, + "1559": 1, + "1566": 1, + "1585": 1, + "1590": 1, + "1599": 2, + "1600": 1, + "1602": 1, + "1603": 1, + "1604": 1, + "1608": 2, + "1609": 2, + "1613": 1, + "1614": 1, + "1617": 1, + "1618": 2, + "1619": 1, + "1628": 2, + "1629": 2, + "1630": 1, + "1633": 1, + "1634": 1, + "1646": 2, + "1649": 1, + "1659": 1, + "1660": 1, + "1677": 1, + "1694": 1, + "1696": 1, + "1708": 1, + "1722": 1, + "1726": 2, + "1728": 1, + "1729": 1, + "1731": 1, + "1739": 1, + "1740": 1, + "1748": 2, + "1773": 1, + "1775": 1, + "1801": 1, + "1810": 1, + "1812": 1, + "1824": 1, + "1843": 1, + "1865": 1, + "1898": 2, + "1901": 1, + "1903": 1, + "1904": 1, + "1907": 3, + "1910": 1, + "1913": 1, + "1914": 1, + "1915": 1, + "1925": 1, + "1930": 1, + "1955": 1, + "1957": 1, + "1958": 2, + "1960": 1, + "1961": 1, + "1964": 1, + "1970": 1, + "2005": 1, + "2006": 1, + "2038": 1, + "2056": 1, + "2070": 1, + "2085": 1, + "2091": 2, + "2092": 3, + "2093": 1, + "2098": 1, + "2099": 1, + "2101": 1, + "2103": 1, + "2107": 1, + "2119": 1, + "2180": 1, + "2198": 1, + "2199": 1, + "2202": 1, + "2203": 2, + "2210": 1, + "2211": 1, + "2230": 1, + "2254": 1, + "2278": 1, + "2281": 1, + "2282": 1, + "2284": 1, + "2286": 1, + "2287": 1, + "2291": 1, + "2292": 1, + "2301": 1, + "2306": 2, + "2307": 2, + "2309": 2, + "2310": 1, + "2311": 1, + "2317": 1, + "2323": 2, + "2325": 1, + "2326": 1, + "2328": 2, + "2329": 1, + "2330": 1, + "2337": 1, + "2338": 1, + "2340": 1, + "2342": 2, + "2343": 1, + "2348": 1, + "2352": 1, + "2359": 2, + "2362": 1, + "2363": 1, + "2367": 2, + "2368": 1, + "2384": 1, + "2389": 1, + "2391": 2, + "2392": 1, + "2394": 2, + "2400": 1, + "2405": 1, + "2413": 1, + "2414": 1, + "2416": 1, + "2417": 1, + "2434": 1, + "2443": 2, + "2471": 1, + "2472": 1, + "2476": 1, + "2483": 1, + "2493": 1, + "2519": 2, + "2520": 1, + "2522": 1, + "2527": 2, + "2528": 1, + "2529": 2, + "2530": 2, + "2534": 1, + "2538": 1, + "2544": 2, + "2548": 2, + "2549": 4, + "2553": 1, + "2554": 1, + "2556": 1, + "2560": 1, + "2562": 1, + "2563": 1, + "2566": 2, + "2568": 1, + "2576": 1, + "2579": 2, + "2583": 1, + "2586": 1, + "2591": 1, + "2593": 1, + "2595": 1, + "2600": 1, + "2602": 1, + "2603": 1, + "2604": 1, + "2605": 1, + "2606": 1, + "2607": 1, + "2610": 1, + "2612": 1, + "2621": 1, + "2639": 1, + "2640": 1, + "2641": 1, + "2643": 1, + "2647": 2, + "2648": 1, + "2649": 1, + "2650": 1, + "2658": 2, + "2659": 1, + "2664": 1, + "2665": 1, + "2670": 1, + "2672": 1, + "2675": 1, + "2687": 1, + "2689": 1, + "2691": 1, + "2693": 1, + "2695": 1, + "2697": 2, + "2698": 3, + "2699": 2, + "2700": 1, + "2701": 1, + "2704": 1, + "2709": 1, + "2710": 1, + "2719": 1, + "2725": 1, + "2740": 1, + "2753": 1, + "2754": 1, + "2758": 1, + "2768": 1, + "2770": 1, + "2781": 1, + "2790": 1, + "2792": 1, + "2793": 1, + "2794": 4, + "2799": 2, + "2800": 1, + "2802": 1, + "2803": 1, + "2804": 2, + "2805": 2, + "2809": 1, + "2821": 3, + "2822": 1, + "2823": 1, + "2825": 2, + "2826": 1, + "2827": 3, + "2830": 1, + "2831": 1, + "2832": 1, + "2834": 1, + "2837": 2, + "2838": 3, + "2839": 1, + "2841": 1, + "2842": 2, + "2843": 1, + "2844": 1, + "2846": 1, + "2848": 1, + "2850": 3, + "2853": 1, + "2855": 1, + "2856": 2, + "2857": 1, + "2862": 1, + "2867": 1, + "2868": 1, + "2869": 1, + "2870": 1, + "2871": 1, + "2872": 2, + "2873": 2, + "2874": 2, + "2875": 1, + "2876": 1, + "2877": 3, + "2878": 3, + "2879": 1, + "2880": 1, + "2890": 2, + "2900": 1, + "2905": 1, + "2913": 1, + "2917": 1, + "2922": 1, + "2923": 1, + "2924": 1, + "2925": 1, + "2935": 1, + "2940": 1, + "2943": 3, + "2944": 1, + "2951": 1, + "2953": 1, + "2954": 1, + "2955": 3, + "2956": 1, + "2957": 2, + "2962": 2, + "2966": 1, + "2967": 1, + "2968": 1, + "2969": 1, + "2971": 1, + "2974": 1, + "2988": 1, + "3006": 1, + "3007": 1, + "3015": 1, + "3022": 1, + "3031": 1, + "3032": 1, + "3039": 1, + "3047": 2, + "3051": 1, + "3052": 1, + "3053": 1, + "3061": 1, + "3072": 2, + "3073": 1, + "3081": 1, + "3096": 1, + "3106": 1, + "3110": 1, + "3112": 1, + "3113": 1, + "3115": 2, + "3120": 1, + "3126": 1, + "3129": 1, + "3133": 1, + "3137": 1, + "3138": 1, + "3143": 1, + "3146": 1, + "3149": 1, + "3151": 1, + "3156": 1, + "3158": 1, + "3161": 3, + "3170": 1, + "3172": 1, + "3173": 1, + "3179": 1, + "3184": 1, + "3194": 1, + "3196": 2, + "3199": 1, + "3202": 1, + "3219": 1, + "3220": 1, + "3224": 1, + "3225": 1, + "3227": 1, + "3228": 1, + "3233": 1, + "3252": 1, + "3267": 1, + "3271": 1, + "3277": 2, + "3279": 1, + "3285": 1, + "3307": 1, + "3326": 1, + "3327": 1, + "3330": 1, + "3334": 1, + "3338": 1, + "3351": 1, + "3357": 1, + "3358": 1, + "3360": 1, + "3371": 1, + "3380": 1, + "3384": 1, + "3389": 2, + "3391": 1, + "3393": 3, + "3394": 2, + "3409": 1, + "3411": 1, + "3419": 1, + "3422": 2, + "3423": 1, + "3424": 2, + "3428": 1, + "3430": 1, + "3450": 1, + "3456": 1, + "3457": 1, + "3463": 1, + "3476": 1, + "3479": 1, + "3497": 1, + "3500": 1, + "3501": 1, + "3505": 1, + "3509": 1, + "3511": 1, + "3514": 1, + "3517": 1, + "3529": 1, + "3532": 1, + "3535": 2, + "3538": 1, + "3549": 1, + "3573": 1, + "3586": 2, + "3590": 1, + "3591": 1, + "3594": 1, + "3595": 1, + "3596": 1, + "3597": 1, + "3598": 2, + "3599": 2, + "3600": 2, + "3601": 1, + "3602": 1, + "3606": 2, + "3609": 1, + "3610": 1, + "3612": 1, + "3614": 1, + "3619": 1, + "3621": 1, + "3622": 1, + "3626": 3, + "3627": 1, + "3628": 1, + "3640": 1, + "3642": 1, + "3648": 1, + "3657": 2, + "3660": 1, + "3661": 1, + "3662": 1, + "3665": 1, + "3666": 1, + "3676": 2, + "3677": 1, + "3682": 1, + "3686": 1, + "3700": 1, + "3702": 1, + "3709": 1, + "3713": 1, + "3723": 1, + "3725": 1, + "3744": 1, + "3752": 1, + "3754": 1, + "3755": 3, + "3761": 1, + "3774": 1, + "3793": 1, + "3798": 1, + "3804": 2, + "3805": 1, + "3806": 1, + "3807": 1, + "3808": 1, + "3816": 1, + "3824": 1, + "3829": 2, + "3832": 1, + "3833": 1, + "3838": 2, + "3844": 1, + "3851": 1, + "3856": 1, + "3872": 1, + "3874": 1, + "3875": 1, + "3877": 2, + "3880": 1, + "3881": 1, + "3885": 1, + "3886": 1, + "3896": 1, + "3912": 1, + "3916": 1, + "3918": 1, + "3921": 1, + "3925": 1, + "3927": 1, + "3928": 1, + "3934": 2, + "3938": 1, + "3943": 1, + "3950": 2, + "3951": 1, + "3953": 1, + "3957": 1, + "3958": 1, + "3967": 1, + "3970": 1, + "3971": 1, + "3974": 1, + "3976": 1, + "4000": 1, + "4002": 1, + "4003": 1, + "4007": 1, + "4010": 1, + "4015": 1, + "4020": 1, + "4030": 1, + "4033": 1, + "4036": 1, + "4038": 1, + "4039": 1, + "4043": 1, + "4045": 1, + "4048": 1, + "4050": 1, + "4057": 1, + "4061": 1, + "4070": 1, + "4077": 1, + "4097": 1, + "4100": 23789 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333930266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882310bf22532e3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "310bf225" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_18.html b/autobahn/client/tungstenite_case_12_5_18.html new file mode 100644 index 0000000..d63c416 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_18.html @@ -0,0 +1,2074 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.18 : Pass - 9223 ms @ 2025-09-11T20:11:15.273Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=391&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 3feQlahZ95KW4QVi4iJE+w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZFbGlyfrxvpNLwxOL/crtycuZkA=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
51151
1431143
2381238
2571257
150011500
156911569
161311613
161911619
170611706
175811758
372313723
382613826
392213922
392813928
398013980
401314013
403014030
412314123
413014130
425814258
439314393
451114511
452714527
464614646
470214702
493714937
501915019
516915169
558015580
564915649
571015710
575215752
583215832
590715907
785817858
795017950
798617986
811218112
812118121
820318203
923519235
933719337
944919449
953119531
961019610
967219672
968019680
970719707
980219802
980419804
986119861
989619896
992819928
995019950
997719977
10139110139
10208110208
10258110258
10960110960
11040111040
11153111153
11255111255
11345111345
11454111454
13587113587
13659113659
13757113757
13778113778
13798113798
13832113832
14770114770
14874114874
14891114891
14993114993
15119115119
15124115124
15174115174
15175115175
15222115222
15253115253
15267115267
15286115286
15320115320
15329115329
15370230740
15444115444
15447115447
15470115470
15482115482
15497115497
15565115565
15583115583
15624115624
17579117579
17651117651
17704117704
17774117774
17833117833
18732118732
18799118799
18887118887
18922118922
19004119004
19095119095
19284119284
19299119299
19319119319
19356119356
19368119368
19409119409
19520119520
19532119532
19555119555
19564119564
19590119590
19662119662
20226120226
20361120361
20496120496
20632120632
20741120741
20873120873
21203121203
21216121216
21219121219
21231121231
21235121235
21248121248
21258121258
21329121329
21332121332
21386121386
21464121464
21487121487
21515121515
21573121573
21620121620
21642121642
21648121648
21685121685
21857121857
21883121883
21889121889
21909243818
21965121965
22080122080
22089122089
22099122099
22119122119
22136122136
22150122150
22388244776
22403122403
22415122415
22420122420
22445122445
23445123445
23487123487
23586123586
23684123684
23896123896
23966123966
24102124102
25402125402
25539125539
25744125744
25806125806
25940125940
26072126072
28502128502
28647128647
28797128797
28932128932
29081129081
29223129223
29655129655
29682129682
29775129775
29900129900
29972129972
30000130000
30801130801
30936130936
31071131071
31202131202
31340131340
31476131476
31526131526
31551131551
31576131576
31598131598
31619131619
31632131632
32056132056
32133132133
32214132214
32302132302
32378132378
32450132450
33494133494
33705133705
33716133716
33834133834
33965133965
34106134106
36043136043
36049136049
36143136143
36183136183
36191136191
36273136273
36281136281
36289136289
36292136292
36307136307
36321136321
36378136378
36418136418
36472136472
36503136503
36532136532
36629136629
36752136752
37487137487
37534137534
37580137580
37642137642
37772137772
37840137840
39480139480
39577139577
39662279324
39695139695
39812139812
39997139997
40096140096
40198140198
40212140212
40225140225
40231140231
40232140232
40234140234
40258140258
40277140277
40368140368
40469140469
41293141293
41428141428
41570141570
41702141702
41837141837
41967141967
42480142480
42499284998
42563142563
42577142577
42578142578
42594142594
42598142598
42641142641
42686142686
42704142704
43440143440
43689143689
43767143767
43791143791
43854143854
43881143881
43917143917
43931143931
43970143970
43971143971
43996143996
44015144015
44045144045
44358144358
44420144420
44427144427
44469144469
44481144481
44493144493
44496144496
44570144570
44592144592
44650144650
44684144684
44687144687
44719144719
44731144731
44788144788
44928144928
44980144980
45101145101
45888145888
45907145907
45911291822
45914145914
45919145919
45926145926
45930145930
459313137793
45954145954
45992145992
46007146007
46051146051
46056146056
46103146103
46123146123
46193146193
46225146225
46259146259
46325146325
46348146348
46431146431
47598147598
47725147725
47800147800
47854147854
47883147883
47973147973
47983147983
48075148075
48099148099
48175148175
48197148197
48233148233
49018149018
49117149117
49214149214
49298149298
49399149399
49465149465
49542149542
49612149612
49620149620
49690149690
49742149742
49766149766
49807299614
49846299692
49881149881
49932149932
49989149989
50047150047
50175150175
50299150299
50420150420
50479150479
50549150549
50576150576
50684150684
50722150722
50741150741
50785150785
50790150790
50885150885
50893150893
50968150968
50986150986
51057151057
52729152729
52833152833
52838152838
52865152865
52900152900
52911152911
52949152949
52964152964
529852105970
52994152994
53012153012
53031153031
53033153033
53052153052
53081153081
53094153094
53127153127
53158153158
53163153163
53201153201
53271153271
53321153321
53414153414
54724154724
54776154776
54783154783
54787154787
54885154885
54966154966
54991154991
55068155068
55161155161
55263155263
55365155365
55469155469
55488155488
55610155610
55729155729
55853155853
55857155857
55873155873
55891155891
55949155949
55977155977
56005156005
56020156020
56102156102
56531156531
56579156579
56676156676
56702156702
56749156749
56838156838
57540157540
57629157629
57719157719
57816157816
57920157920
57942157942
58013158013
58747158747
58748158748
58754158754
58797158797
587992117598
58800158800
58853158853
58871158871
58956158956
58997158997
59076159076
59121159121
59191159191
592582118516
592613177783
59268159268
593122118624
59314159314
59315159315
59324159324
59384159384
59386159386
59418159418
59439159439
594452118890
594463178338
59447159447
59452159452
59453159453
59455159455
59457159457
59534159534
59552159552
59553159553
59556159556
59557159557
59564159564
59629159629
59632159632
59635159635
59636159636
59638159638
59640159640
59641159641
596452119290
59646159646
59655159655
596602119320
596612119322
596632119326
59664159664
59665159665
59671159671
59677159677
59679159679
59680159680
596822119364
59683159683
59684159684
59691159691
59694159694
59696159696
59697159697
59702159702
597132119426
59716159716
59717159717
597212119442
59722159722
59738159738
597452119490
59746159746
597482119496
59754159754
59767159767
597682119536
59770159770
59771159771
59788159788
597972119594
59830159830
59837159837
598732119746
59876159876
598812119762
598832119766
59884159884
59888159888
598982119796
599022119804
599034239612
59907159907
59908159908
59910159910
59914159914
59916159916
59917159917
599202119840
59922159922
599332119866
59937159937
59940159940
59945159945
59954159954
599562119912
59957159957
59958159958
59960159960
59961159961
59994159994
59995159995
59997159997
600012120002
60002160002
60003160003
60004160004
60012160012
60013160013
60018160018
60024160024
60026160026
60029160029
60041160041
60043160043
60045160045
60047160047
60051160051
600523180156
600533180159
60058160058
60064160064
60108160108
60124160124
60135160135
60144160144
60146160146
60147160147
601532120306
60154160154
60156160156
601582120316
601592120318
60163160163
601752120350
60176160176
601792120358
60181160181
60184160184
60185160185
60186160186
60188160188
601912120382
601922120384
60193160193
60195160195
60196160196
60197160197
60200160200
60202160202
60204160204
60207160207
60209160209
602102120420
60211160211
60216160216
60221160221
60223160223
60224160224
60225160225
602262120452
602272120454
60228160228
602312120462
602323180696
60233160233
60234160234
60276160276
60289160289
602942120588
60300160300
60308160308
60309160309
60311160311
60316160316
60320160320
60322160322
60325160325
604012120802
60460160460
60464160464
60466160466
60467160467
60469160469
60474160474
60478160478
60573160573
60574160574
60578160578
60579160579
60581160581
60587160587
607432121486
607473182241
60748160748
607762121552
60777160777
60778160778
60782160782
60784160784
60889160889
60940160940
60944160944
60945160945
60948160948
60949160949
60950160950
60951160951
609522121904
60953160953
60954160954
60956160956
60963160963
60964160964
60968160968
60973160973
60975160975
60976160976
609802121960
60981160981
61002161002
610112122022
61014161014
61015161015
61016161016
61019161019
61020161020
61025161025
61026161026
610302122060
61109161109
61152161152
61158161158
61159161159
61160161160
61161161161
61187161187
61226161226
61228161228
61230161230
61231161231
61235161235
61239161239
61275161275
61281161281
61282161282
61297161297
613042122608
61305161305
61307161307
61311161311
61330161330
61378161378
61387161387
61390161390
61392161392
61393161393
61397161397
61404161404
61424161424
61425161425
61426161426
61481161481
614864245944
61489161489
614922122984
61530161530
61533161533
61536161536
615412123082
615432123086
61548161548
61550161550
61551161551
61555161555
61558161558
61596161596
61617161617
616202123240
616223184866
616233184869
61624161624
61625161625
61641161641
616452123290
61648161648
61651161651
61653161653
61660161660
61661161661
61662161662
61663161663
61664161664
61669161669
61672161672
616742123348
61678161678
616842123368
61685161685
61687161687
61690161690
61693161693
61696161696
61700161700
61722161722
61745161745
61760161760
61763161763
61767161767
61768161768
61770161770
61779161779
61810161810
61811161811
61813161813
61814161814
61815161815
61821161821
61879161879
61943161943
619752123950
61980161980
61987161987
619892123978
619932123986
62011162011
62036162036
62040162040
620422124084
620473186141
62053162053
62057162057
62058162058
62060162060
62075162075
62079162079
62103162103
62124162124
62147162147
62157162157
62164162164
62187162187
62208162208
62211162211
62216162216
62217162217
622182124436
62219162219
622892124578
62296162296
62305162305
62308162308
62340162340
62347162347
62349162349
62355162355
62360162360
62370162370
62385162385
62392162392
62397162397
62399162399
62404162404
62424162424
62426162426
62431162431
62447162447
62448162448
62452162452
62454162454
62455162455
62456162456
62461162461
62464162464
624682124936
62480162480
62484162484
62485162485
624872124974
62489162489
62490162490
624913187473
62492162492
62494162494
62527162527
625302125060
62531162531
625323187596
62533162533
62534162534
625352125070
62538162538
62540162540
625693187707
62570162570
62571162571
626062125212
62608162608
62610162610
62612162612
62616162616
62620162620
62621162621
62622162622
62627162627
62630162630
62631162631
62641162641
62645162645
62680162680
62686162686
62692162692
62693162693
62695162695
626982125396
627003188100
627012125402
62703162703
62705162705
62706162706
62707162707
62708162708
62733162733
627372125474
62741162741
62758162758
62836162836
62894162894
62945162945
62946162946
62947162947
629522125904
62983162983
62987162987
629912125982
62993162993
62994162994
63067163067
630682126136
63069163069
63078163078
63434163434
64144164144
64286164286
64387164387
64401164401
64505164505
64517164517
64577164577
64595164595
64600164600
64602164602
646052129210
64623164623
64646164646
64721164721
64751164751
64835164835
64923164923
651604260640
65282165282
65378165378
65464332160312
65492165492
6553673247972352
Total177399532850
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
39139
1331133
2281228
2521252
7161716
8551855
9381938
105611056
118711187
132811328
149011490
155911559
160311603
160911609
169611696
174811748
327113271
327713277
337113371
341113411
341913419
350113501
350913509
351413514
351713517
353513535
354913549
360613606
364013640
370013700
371313713
372513725
375413754
381613816
385113851
391213912
391813918
397013970
397413974
400314003
402014020
411314113
412014120
424814248
438314383
450114501
451714517
463614636
469214692
470914709
475614756
480214802
485514855
486414864
499414994
500915009
506215062
515915159
557015570
563915639
570015700
574215742
582215822
589715897
670816708
680516805
6890213780
692316923
704017040
722517225
732417324
742617426
743417434
744717447
745317453
745417454
745617456
748017480
750517505
759617596
769717697
784817848
794017940
797617976
803018030
811118111
819318193
851518515
865018650
879218792
892418924
905919059
918919189
922519225
932719327
943919439
952119521
960019600
966219662
967019670
969719697
970819708
9727219454
979119791
979219792
979419794
980519805
980619806
982219822
982619826
985119851
986919869
988619886
991419914
991819918
993219932
994019940
996719967
10057110057
10198110198
10248110248
10917110917
10950110950
10995110995
11019111019
11030111030
11082111082
11109111109
11143111143
11145111145
11159111159
11198111198
11199111199
11224111224
11243111243
11245111245
11273111273
11335111335
11444111444
11586111586
11648111648
11655111655
11697111697
11703111703
11721111721
11724111724
11798111798
11820111820
11834111834
11878111878
11915111915
11947111947
11953111953
12016112016
12078112078
12202112202
12323112323
13116113116
13135113135
13139226278
13142113142
13147113147
13154113154
13158113158
13159339477
13182113182
13220113220
13235113235
13273113273
13278113278
13331113331
13345113345
13421113421
13447113447
13487113487
13547113547
13576113576
13577113577
13649113649
13653113653
13747113747
13768113768
13788113788
13822113822
14760114760
14826114826
14864114864
14881114881
14953114953
14983114983
15028115028
15082115082
15109115109
15111115111
15114115114
15164115164
15165115165
15201115201
15211115211
15212115212
15243115243
15257115257
15276115276
15303115303
15310115310
15319115319
15327115327
15360230720
15403115403
15425115425
15434115434
15437115437
15460115460
15461115461
15472115472
15487115487
15555115555
15573115573
15614115614
16246116246
16345116345
16442116442
16526116526
16627116627
16693116693
16770116770
16840116840
16848116848
16918116918
16970116970
16994116994
17035234070
17074234148
17109117109
17154117154
17217117217
17269117269
17397117397
17521117521
17569117569
17641117641
17642117642
17694117694
17701117701
17764117764
17771117771
17798117798
17823117823
17906117906
17950117950
17969117969
18012118012
18013118013
18113118113
18115118115
18196118196
18208118208
18285118285
18722118722
18789118789
18877118877
18912118912
18994118994
19085119085
19274119274
19289119289
19309119309
19327119327
19346119346
19358119358
19510119510
19522119522
19545119545
19554119554
19580239160
19957119957
20061120061
20066120066
20093120093
20128120128
20139120139
20177120177
20192120192
20213240426
20216120216
20222120222
20240120240
20259120259
20261120261
20280120280
20309120309
20322120322
20351120351
20355120355
20386120386
20391120391
20429120429
20486120486
20499120499
20549120549
20622120622
20642120642
20731120731
20863120863
21193121193
21206121206
21209121209
21221121221
21225121225
21238121238
21248121248
21319121319
21322121322
21376121376
21454121454
21477121477
21505121505
21563121563
21610121610
21632121632
21638121638
21675121675
21847121847
21873121873
21879121879
21899243798
21952121952
21955121955
22004122004
22011122011
22015122015
22070122070
22079122079
22089122089
22109122109
22113122113
22126122126
22140122140
22188122188
22219122219
22290122290
22378244756
22383122383
22393122393
22405122405
22410122410
22435122435
22485122485
22587122587
22691122691
22710122710
22832122832
22951122951
23075123075
23085123085
23101123101
23119123119
23177123177
23199123199
23233123233
23248123248
23324123324
23435123435
23576123576
23674123674
23759123759
23807123807
23814123814
23904123904
23930123930
23956123956
23977123977
24066124066
24092124092
24768124768
24857124857
24947124947
25044125044
25170125170
25241125241
25392125392
25529125529
25662125662
25796125796
25930125930
25975125975
25976125976
25982125982
26025126025
26027252054
26028126028
26062126062
26081126081
26099126099
26184126184
26225126225
26304126304
26349126349
26419126419
26480126480
26483379449
26486126486
26490126490
26491126491
26533126533
26534253068
26536126536
26537126537
26540126540
26546126546
26614126614
26646126646
26661126661
26667253334
26668380004
26669126669
26674126674
26675126675
26677126677
26679126679
26756126756
26774126774
26775126775
26778126778
26779253558
26786126786
26854126854
26857126857
26858126858
26860126860
26862126862
26863126863
26867126867
26868126868
26877126877
26882253764
26883253766
26885253770
26886126886
26887126887
26893126893
26899253798
26901126901
26902126902
26904253808
26905126905
26906126906
26913126913
26916126916
26918253836
26919126919
26924126924
26935253870
26938126938
26939126939
26943253886
26944126944
26960126960
26967253934
26968126968
26970253940
26976126976
26989126989
26990126990
26992126992
26993126993
27010127010
27019254038
27052127052
27059127059
27095254190
27098127098
27103254206
27105254210
27106254212
27110127110
27120254240
27124254248
271254108500
27129127129
27130127130
27132127132
27136127136
27138127138
27139127139
27142254284
27144127144
27155254310
27159127159
27162127162
27167127167
27176127176
27178127178
27179127179
27180127180
27182127182
27183127183
27216127216
27217127217
27219127219
27223254446
27224127224
27225127225
27226127226
27234127234
27235127235
27240127240
27246127246
27248127248
27251127251
27263127263
27265127265
27267127267
27269127269
27273127273
27274381822
27275254550
27280127280
27286127286
27330127330
27346127346
27357127357
27366127366
27368127368
27369127369
27375254750
27376127376
27378127378
27380254760
27381254762
27385127385
27397254794
27398127398
27401254802
27403127403
27406127406
27407127407
27408127408
27410127410
27413254826
27414254828
27415127415
27417127417
27418127418
27419127419
27422127422
27424127424
27426254852
27429127429
27431127431
27432254864
27433127433
27438127438
27443127443
27444127444
27445127445
27446127446
27447127447
27448254896
27449254898
27450254900
27453254906
27454382362
27455127455
27456127456
27511127511
27516127516
27530127530
27531127531
27533127533
27538127538
27542127542
27544127544
27547127547
27623255246
27628127628
27682127682
27686127686
27688127688
27689127689
27691127691
27696127696
27795127795
27796127796
27800127800
27801127801
27803127803
27809127809
27965255930
27969383907
27970127970
27998255996
27999127999
28000128000
28004128004
28006128006
28111128111
28162128162
28166128166
28167128167
28170128170
28171128171
28172128172
28173128173
28174256348
28175256350
28176256352
28178128178
28185128185
28186128186
28190128190
28195128195
28197128197
28198128198
28202256404
28203128203
28224128224
28233256466
28236128236
28237128237
28238128238
28241128241
28242128242
28252256504
28331128331
28374128374
28380256760
28381128381
28382128382
28383128383
28409128409
28448128448
28450128450
28453128453
28457128457
28461128461
28492128492
28497128497
28503128503
28504128504
28519128519
28526257052
28527128527
28529128529
28533128533
28552128552
28576128576
28606128606
28609128609
28612128612
28614128614
28615128615
28619128619
28626128626
28637128637
28646128646
28653128653
28703128703
28708386124
28711128711
28714386142
28752128752
28755128755
28758128758
28763257526
28765257530
28770128770
28772128772
28773128773
28780128780
28783128783
28787128787
28789128789
28818128818
28834128834
28839128839
28842257684
28844257688
28845386535
28846128846
28847128847
28850128850
28863128863
28867257734
28870128870
28872128872
28873128873
28875128875
28882128882
28883128883
28884128884
28885128885
28886128886
28891128891
28894128894
28896257792
28900128900
28906128906
28907128907
28909128909
28912128912
28915128915
28918128918
28922257844
28973128973
28982128982
28985128985
28989128989
28990128990
28992128992
29001129001
29032129032
29033129033
29035129035
29036129036
29037129037
29043129043
29071129071
29107129107
29197258394
29202129202
29207129207
29209129209
29211258422
29213129213
29215129215
29221129221
29233129233
29258129258
29262129262
29264258528
29269258538
29274129274
29275258550
29280129280
29282129282
29297258594
29301129301
29331129331
29379129379
29392129392
29409129409
29433129433
29436129436
29438129438
29439129439
29440258880
29441129441
29511259022
29518129518
29520129520
29527129527
29530129530
29562129562
29569129569
29571129571
29574129574
29577129577
29582129582
29607129607
29614129614
29618129618
29619129619
29621129621
29626129626
29648129648
29651129651
29653129653
29669129669
29670129670
29674129674
29676129676
29677129677
29678259356
29683129683
29686129686
29690259380
29702129702
29706129706
29707129707
29709259418
29711129711
29712129712
29713389139
29714129714
29716129716
29749129749
29752259504
29753129753
29754389262
29755129755
29756129756
29757259514
29760129760
29771129771
297914119164
29792129792
29793129793
29828259656
29830259660
29832129832
29834129834
29838129838
29842129842
29843129843
29844129844
29849129849
29852129852
29853129853
29867129867
29896129896
29908129908
29914129914
29915129915
29917129917
29920259840
29922389766
29923259846
29925129925
29927129927
29928129928
29929129929
29930129930
29955129955
29959259918
29963129963
29968129968
29980129980
29996129996
30058130058
30116130116
30167130167
30168130168
30169130169
30174260348
30205130205
30209130209
30213260426
30215130215
30216130216
30280130280
30289130289
30290260580
30291130291
30300130300
30791130791
30926130926
31061131061
31192131192
31330131330
31372131372
31466131466
31514131514
31522131522
31547131547
31572131572
31594131594
31615263230
31628131628
31629131629
31733131733
31745131745
31805131805
31823131823
31828131828
31830131830
31833263666
31851131851
31874131874
31949131949
31979131979
32052132052
32063132063
32129132129
32151132151
32210132210
32298132298
32374132374
32446132446
32510132510
32606132606
32720132720
32772234076686480
Total334299533579
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02340
21000
81
Total3341
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333931266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d9dd5c6cda35
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6439646435633663
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_18.json b/autobahn/client/tungstenite_case_12_5_18.json new file mode 100644 index 0000000..5b27bf3 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_18.json @@ -0,0 +1,1921 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 391, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 9223, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=391&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 3feQlahZ95KW4QVi4iJE+w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZFbGlyfrxvpNLwxOL/crtycuZkA=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "51": 1, + "143": 1, + "238": 1, + "257": 1, + "1500": 1, + "1569": 1, + "1613": 1, + "1619": 1, + "1706": 1, + "1758": 1, + "3723": 1, + "3826": 1, + "3922": 1, + "3928": 1, + "3980": 1, + "4013": 1, + "4030": 1, + "4123": 1, + "4130": 1, + "4258": 1, + "4393": 1, + "4511": 1, + "4527": 1, + "4646": 1, + "4702": 1, + "4937": 1, + "5019": 1, + "5169": 1, + "5580": 1, + "5649": 1, + "5710": 1, + "5752": 1, + "5832": 1, + "5907": 1, + "7858": 1, + "7950": 1, + "7986": 1, + "8112": 1, + "8121": 1, + "8203": 1, + "9235": 1, + "9337": 1, + "9449": 1, + "9531": 1, + "9610": 1, + "9672": 1, + "9680": 1, + "9707": 1, + "9802": 1, + "9804": 1, + "9861": 1, + "9896": 1, + "9928": 1, + "9950": 1, + "9977": 1, + "10139": 1, + "10208": 1, + "10258": 1, + "10960": 1, + "11040": 1, + "11153": 1, + "11255": 1, + "11345": 1, + "11454": 1, + "13587": 1, + "13659": 1, + "13757": 1, + "13778": 1, + "13798": 1, + "13832": 1, + "14770": 1, + "14874": 1, + "14891": 1, + "14993": 1, + "15119": 1, + "15124": 1, + "15174": 1, + "15175": 1, + "15222": 1, + "15253": 1, + "15267": 1, + "15286": 1, + "15320": 1, + "15329": 1, + "15370": 2, + "15444": 1, + "15447": 1, + "15470": 1, + "15482": 1, + "15497": 1, + "15565": 1, + "15583": 1, + "15624": 1, + "17579": 1, + "17651": 1, + "17704": 1, + "17774": 1, + "17833": 1, + "18732": 1, + "18799": 1, + "18887": 1, + "18922": 1, + "19004": 1, + "19095": 1, + "19284": 1, + "19299": 1, + "19319": 1, + "19356": 1, + "19368": 1, + "19409": 1, + "19520": 1, + "19532": 1, + "19555": 1, + "19564": 1, + "19590": 1, + "19662": 1, + "20226": 1, + "20361": 1, + "20496": 1, + "20632": 1, + "20741": 1, + "20873": 1, + "21203": 1, + "21216": 1, + "21219": 1, + "21231": 1, + "21235": 1, + "21248": 1, + "21258": 1, + "21329": 1, + "21332": 1, + "21386": 1, + "21464": 1, + "21487": 1, + "21515": 1, + "21573": 1, + "21620": 1, + "21642": 1, + "21648": 1, + "21685": 1, + "21857": 1, + "21883": 1, + "21889": 1, + "21909": 2, + "21965": 1, + "22080": 1, + "22089": 1, + "22099": 1, + "22119": 1, + "22136": 1, + "22150": 1, + "22388": 2, + "22403": 1, + "22415": 1, + "22420": 1, + "22445": 1, + "23445": 1, + "23487": 1, + "23586": 1, + "23684": 1, + "23896": 1, + "23966": 1, + "24102": 1, + "25402": 1, + "25539": 1, + "25744": 1, + "25806": 1, + "25940": 1, + "26072": 1, + "28502": 1, + "28647": 1, + "28797": 1, + "28932": 1, + "29081": 1, + "29223": 1, + "29655": 1, + "29682": 1, + "29775": 1, + "29900": 1, + "29972": 1, + "30000": 1, + "30801": 1, + "30936": 1, + "31071": 1, + "31202": 1, + "31340": 1, + "31476": 1, + "31526": 1, + "31551": 1, + "31576": 1, + "31598": 1, + "31619": 1, + "31632": 1, + "32056": 1, + "32133": 1, + "32214": 1, + "32302": 1, + "32378": 1, + "32450": 1, + "33494": 1, + "33705": 1, + "33716": 1, + "33834": 1, + "33965": 1, + "34106": 1, + "36043": 1, + "36049": 1, + "36143": 1, + "36183": 1, + "36191": 1, + "36273": 1, + "36281": 1, + "36289": 1, + "36292": 1, + "36307": 1, + "36321": 1, + "36378": 1, + "36418": 1, + "36472": 1, + "36503": 1, + "36532": 1, + "36629": 1, + "36752": 1, + "37487": 1, + "37534": 1, + "37580": 1, + "37642": 1, + "37772": 1, + "37840": 1, + "39480": 1, + "39577": 1, + "39662": 2, + "39695": 1, + "39812": 1, + "39997": 1, + "40096": 1, + "40198": 1, + "40212": 1, + "40225": 1, + "40231": 1, + "40232": 1, + "40234": 1, + "40258": 1, + "40277": 1, + "40368": 1, + "40469": 1, + "41293": 1, + "41428": 1, + "41570": 1, + "41702": 1, + "41837": 1, + "41967": 1, + "42480": 1, + "42499": 2, + "42563": 1, + "42577": 1, + "42578": 1, + "42594": 1, + "42598": 1, + "42641": 1, + "42686": 1, + "42704": 1, + "43440": 1, + "43689": 1, + "43767": 1, + "43791": 1, + "43854": 1, + "43881": 1, + "43917": 1, + "43931": 1, + "43970": 1, + "43971": 1, + "43996": 1, + "44015": 1, + "44045": 1, + "44358": 1, + "44420": 1, + "44427": 1, + "44469": 1, + "44481": 1, + "44493": 1, + "44496": 1, + "44570": 1, + "44592": 1, + "44650": 1, + "44684": 1, + "44687": 1, + "44719": 1, + "44731": 1, + "44788": 1, + "44928": 1, + "44980": 1, + "45101": 1, + "45888": 1, + "45907": 1, + "45911": 2, + "45914": 1, + "45919": 1, + "45926": 1, + "45930": 1, + "45931": 3, + "45954": 1, + "45992": 1, + "46007": 1, + "46051": 1, + "46056": 1, + "46103": 1, + "46123": 1, + "46193": 1, + "46225": 1, + "46259": 1, + "46325": 1, + "46348": 1, + "46431": 1, + "47598": 1, + "47725": 1, + "47800": 1, + "47854": 1, + "47883": 1, + "47973": 1, + "47983": 1, + "48075": 1, + "48099": 1, + "48175": 1, + "48197": 1, + "48233": 1, + "49018": 1, + "49117": 1, + "49214": 1, + "49298": 1, + "49399": 1, + "49465": 1, + "49542": 1, + "49612": 1, + "49620": 1, + "49690": 1, + "49742": 1, + "49766": 1, + "49807": 2, + "49846": 2, + "49881": 1, + "49932": 1, + "49989": 1, + "50047": 1, + "50175": 1, + "50299": 1, + "50420": 1, + "50479": 1, + "50549": 1, + "50576": 1, + "50684": 1, + "50722": 1, + "50741": 1, + "50785": 1, + "50790": 1, + "50885": 1, + "50893": 1, + "50968": 1, + "50986": 1, + "51057": 1, + "52729": 1, + "52833": 1, + "52838": 1, + "52865": 1, + "52900": 1, + "52911": 1, + "52949": 1, + "52964": 1, + "52985": 2, + "52994": 1, + "53012": 1, + "53031": 1, + "53033": 1, + "53052": 1, + "53081": 1, + "53094": 1, + "53127": 1, + "53158": 1, + "53163": 1, + "53201": 1, + "53271": 1, + "53321": 1, + "53414": 1, + "54724": 1, + "54776": 1, + "54783": 1, + "54787": 1, + "54885": 1, + "54966": 1, + "54991": 1, + "55068": 1, + "55161": 1, + "55263": 1, + "55365": 1, + "55469": 1, + "55488": 1, + "55610": 1, + "55729": 1, + "55853": 1, + "55857": 1, + "55873": 1, + "55891": 1, + "55949": 1, + "55977": 1, + "56005": 1, + "56020": 1, + "56102": 1, + "56531": 1, + "56579": 1, + "56676": 1, + "56702": 1, + "56749": 1, + "56838": 1, + "57540": 1, + "57629": 1, + "57719": 1, + "57816": 1, + "57920": 1, + "57942": 1, + "58013": 1, + "58747": 1, + "58748": 1, + "58754": 1, + "58797": 1, + "58799": 2, + "58800": 1, + "58853": 1, + "58871": 1, + "58956": 1, + "58997": 1, + "59076": 1, + "59121": 1, + "59191": 1, + "59258": 2, + "59261": 3, + "59268": 1, + "59312": 2, + "59314": 1, + "59315": 1, + "59324": 1, + "59384": 1, + "59386": 1, + "59418": 1, + "59439": 1, + "59445": 2, + "59446": 3, + "59447": 1, + "59452": 1, + "59453": 1, + "59455": 1, + "59457": 1, + "59534": 1, + "59552": 1, + "59553": 1, + "59556": 1, + "59557": 1, + "59564": 1, + "59629": 1, + "59632": 1, + "59635": 1, + "59636": 1, + "59638": 1, + "59640": 1, + "59641": 1, + "59645": 2, + "59646": 1, + "59655": 1, + "59660": 2, + "59661": 2, + "59663": 2, + "59664": 1, + "59665": 1, + "59671": 1, + "59677": 1, + "59679": 1, + "59680": 1, + "59682": 2, + "59683": 1, + "59684": 1, + "59691": 1, + "59694": 1, + "59696": 1, + "59697": 1, + "59702": 1, + "59713": 2, + "59716": 1, + "59717": 1, + "59721": 2, + "59722": 1, + "59738": 1, + "59745": 2, + "59746": 1, + "59748": 2, + "59754": 1, + "59767": 1, + "59768": 2, + "59770": 1, + "59771": 1, + "59788": 1, + "59797": 2, + "59830": 1, + "59837": 1, + "59873": 2, + "59876": 1, + "59881": 2, + "59883": 2, + "59884": 1, + "59888": 1, + "59898": 2, + "59902": 2, + "59903": 4, + "59907": 1, + "59908": 1, + "59910": 1, + "59914": 1, + "59916": 1, + "59917": 1, + "59920": 2, + "59922": 1, + "59933": 2, + "59937": 1, + "59940": 1, + "59945": 1, + "59954": 1, + "59956": 2, + "59957": 1, + "59958": 1, + "59960": 1, + "59961": 1, + "59994": 1, + "59995": 1, + "59997": 1, + "60001": 2, + "60002": 1, + "60003": 1, + "60004": 1, + "60012": 1, + "60013": 1, + "60018": 1, + "60024": 1, + "60026": 1, + "60029": 1, + "60041": 1, + "60043": 1, + "60045": 1, + "60047": 1, + "60051": 1, + "60052": 3, + "60053": 3, + "60058": 1, + "60064": 1, + "60108": 1, + "60124": 1, + "60135": 1, + "60144": 1, + "60146": 1, + "60147": 1, + "60153": 2, + "60154": 1, + "60156": 1, + "60158": 2, + "60159": 2, + "60163": 1, + "60175": 2, + "60176": 1, + "60179": 2, + "60181": 1, + "60184": 1, + "60185": 1, + "60186": 1, + "60188": 1, + "60191": 2, + "60192": 2, + "60193": 1, + "60195": 1, + "60196": 1, + "60197": 1, + "60200": 1, + "60202": 1, + "60204": 1, + "60207": 1, + "60209": 1, + "60210": 2, + "60211": 1, + "60216": 1, + "60221": 1, + "60223": 1, + "60224": 1, + "60225": 1, + "60226": 2, + "60227": 2, + "60228": 1, + "60231": 2, + "60232": 3, + "60233": 1, + "60234": 1, + "60276": 1, + "60289": 1, + "60294": 2, + "60300": 1, + "60308": 1, + "60309": 1, + "60311": 1, + "60316": 1, + "60320": 1, + "60322": 1, + "60325": 1, + "60401": 2, + "60460": 1, + "60464": 1, + "60466": 1, + "60467": 1, + "60469": 1, + "60474": 1, + "60478": 1, + "60573": 1, + "60574": 1, + "60578": 1, + "60579": 1, + "60581": 1, + "60587": 1, + "60743": 2, + "60747": 3, + "60748": 1, + "60776": 2, + "60777": 1, + "60778": 1, + "60782": 1, + "60784": 1, + "60889": 1, + "60940": 1, + "60944": 1, + "60945": 1, + "60948": 1, + "60949": 1, + "60950": 1, + "60951": 1, + "60952": 2, + "60953": 1, + "60954": 1, + "60956": 1, + "60963": 1, + "60964": 1, + "60968": 1, + "60973": 1, + "60975": 1, + "60976": 1, + "60980": 2, + "60981": 1, + "61002": 1, + "61011": 2, + "61014": 1, + "61015": 1, + "61016": 1, + "61019": 1, + "61020": 1, + "61025": 1, + "61026": 1, + "61030": 2, + "61109": 1, + "61152": 1, + "61158": 1, + "61159": 1, + "61160": 1, + "61161": 1, + "61187": 1, + "61226": 1, + "61228": 1, + "61230": 1, + "61231": 1, + "61235": 1, + "61239": 1, + "61275": 1, + "61281": 1, + "61282": 1, + "61297": 1, + "61304": 2, + "61305": 1, + "61307": 1, + "61311": 1, + "61330": 1, + "61378": 1, + "61387": 1, + "61390": 1, + "61392": 1, + "61393": 1, + "61397": 1, + "61404": 1, + "61424": 1, + "61425": 1, + "61426": 1, + "61481": 1, + "61486": 4, + "61489": 1, + "61492": 2, + "61530": 1, + "61533": 1, + "61536": 1, + "61541": 2, + "61543": 2, + "61548": 1, + "61550": 1, + "61551": 1, + "61555": 1, + "61558": 1, + "61596": 1, + "61617": 1, + "61620": 2, + "61622": 3, + "61623": 3, + "61624": 1, + "61625": 1, + "61641": 1, + "61645": 2, + "61648": 1, + "61651": 1, + "61653": 1, + "61660": 1, + "61661": 1, + "61662": 1, + "61663": 1, + "61664": 1, + "61669": 1, + "61672": 1, + "61674": 2, + "61678": 1, + "61684": 2, + "61685": 1, + "61687": 1, + "61690": 1, + "61693": 1, + "61696": 1, + "61700": 1, + "61722": 1, + "61745": 1, + "61760": 1, + "61763": 1, + "61767": 1, + "61768": 1, + "61770": 1, + "61779": 1, + "61810": 1, + "61811": 1, + "61813": 1, + "61814": 1, + "61815": 1, + "61821": 1, + "61879": 1, + "61943": 1, + "61975": 2, + "61980": 1, + "61987": 1, + "61989": 2, + "61993": 2, + "62011": 1, + "62036": 1, + "62040": 1, + "62042": 2, + "62047": 3, + "62053": 1, + "62057": 1, + "62058": 1, + "62060": 1, + "62075": 1, + "62079": 1, + "62103": 1, + "62124": 1, + "62147": 1, + "62157": 1, + "62164": 1, + "62187": 1, + "62208": 1, + "62211": 1, + "62216": 1, + "62217": 1, + "62218": 2, + "62219": 1, + "62289": 2, + "62296": 1, + "62305": 1, + "62308": 1, + "62340": 1, + "62347": 1, + "62349": 1, + "62355": 1, + "62360": 1, + "62370": 1, + "62385": 1, + "62392": 1, + "62397": 1, + "62399": 1, + "62404": 1, + "62424": 1, + "62426": 1, + "62431": 1, + "62447": 1, + "62448": 1, + "62452": 1, + "62454": 1, + "62455": 1, + "62456": 1, + "62461": 1, + "62464": 1, + "62468": 2, + "62480": 1, + "62484": 1, + "62485": 1, + "62487": 2, + "62489": 1, + "62490": 1, + "62491": 3, + "62492": 1, + "62494": 1, + "62527": 1, + "62530": 2, + "62531": 1, + "62532": 3, + "62533": 1, + "62534": 1, + "62535": 2, + "62538": 1, + "62540": 1, + "62569": 3, + "62570": 1, + "62571": 1, + "62606": 2, + "62608": 1, + "62610": 1, + "62612": 1, + "62616": 1, + "62620": 1, + "62621": 1, + "62622": 1, + "62627": 1, + "62630": 1, + "62631": 1, + "62641": 1, + "62645": 1, + "62680": 1, + "62686": 1, + "62692": 1, + "62693": 1, + "62695": 1, + "62698": 2, + "62700": 3, + "62701": 2, + "62703": 1, + "62705": 1, + "62706": 1, + "62707": 1, + "62708": 1, + "62733": 1, + "62737": 2, + "62741": 1, + "62758": 1, + "62836": 1, + "62894": 1, + "62945": 1, + "62946": 1, + "62947": 1, + "62952": 2, + "62983": 1, + "62987": 1, + "62991": 2, + "62993": 1, + "62994": 1, + "63067": 1, + "63068": 2, + "63069": 1, + "63078": 1, + "63434": 1, + "64144": 1, + "64286": 1, + "64387": 1, + "64401": 1, + "64505": 1, + "64517": 1, + "64577": 1, + "64595": 1, + "64600": 1, + "64602": 1, + "64605": 2, + "64623": 1, + "64646": 1, + "64721": 1, + "64751": 1, + "64835": 1, + "64923": 1, + "65160": 4, + "65282": 1, + "65378": 1, + "65464": 33, + "65492": 1, + "65536": 732 + }, + "started": "2025-09-11T20:11:15.273Z", + "trafficStats": { + "incomingCompressionRatio": 0.7592770767211914, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 99519965, + "incomingOctetsWireLevel": 99532585, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0001268087262691461, + "outgoingCompressionRatio": 0.7592770767211914, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 99519965, + "outgoingOctetsWireLevel": 99533323, + "outgoingWebSocketFrames": 3340, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.00013422432373242897, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 2340, + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "39": 1, + "133": 1, + "228": 1, + "252": 1, + "716": 1, + "855": 1, + "938": 1, + "1056": 1, + "1187": 1, + "1328": 1, + "1490": 1, + "1559": 1, + "1603": 1, + "1609": 1, + "1696": 1, + "1748": 1, + "3271": 1, + "3277": 1, + "3371": 1, + "3411": 1, + "3419": 1, + "3501": 1, + "3509": 1, + "3514": 1, + "3517": 1, + "3535": 1, + "3549": 1, + "3606": 1, + "3640": 1, + "3700": 1, + "3713": 1, + "3725": 1, + "3754": 1, + "3816": 1, + "3851": 1, + "3912": 1, + "3918": 1, + "3970": 1, + "3974": 1, + "4003": 1, + "4020": 1, + "4113": 1, + "4120": 1, + "4248": 1, + "4383": 1, + "4501": 1, + "4517": 1, + "4636": 1, + "4692": 1, + "4709": 1, + "4756": 1, + "4802": 1, + "4855": 1, + "4864": 1, + "4994": 1, + "5009": 1, + "5062": 1, + "5159": 1, + "5570": 1, + "5639": 1, + "5700": 1, + "5742": 1, + "5822": 1, + "5897": 1, + "6708": 1, + "6805": 1, + "6890": 2, + "6923": 1, + "7040": 1, + "7225": 1, + "7324": 1, + "7426": 1, + "7434": 1, + "7447": 1, + "7453": 1, + "7454": 1, + "7456": 1, + "7480": 1, + "7505": 1, + "7596": 1, + "7697": 1, + "7848": 1, + "7940": 1, + "7976": 1, + "8030": 1, + "8111": 1, + "8193": 1, + "8515": 1, + "8650": 1, + "8792": 1, + "8924": 1, + "9059": 1, + "9189": 1, + "9225": 1, + "9327": 1, + "9439": 1, + "9521": 1, + "9600": 1, + "9662": 1, + "9670": 1, + "9697": 1, + "9708": 1, + "9727": 2, + "9791": 1, + "9792": 1, + "9794": 1, + "9805": 1, + "9806": 1, + "9822": 1, + "9826": 1, + "9851": 1, + "9869": 1, + "9886": 1, + "9914": 1, + "9918": 1, + "9932": 1, + "9940": 1, + "9967": 1, + "10057": 1, + "10198": 1, + "10248": 1, + "10917": 1, + "10950": 1, + "10995": 1, + "11019": 1, + "11030": 1, + "11082": 1, + "11109": 1, + "11143": 1, + "11145": 1, + "11159": 1, + "11198": 1, + "11199": 1, + "11224": 1, + "11243": 1, + "11245": 1, + "11273": 1, + "11335": 1, + "11444": 1, + "11586": 1, + "11648": 1, + "11655": 1, + "11697": 1, + "11703": 1, + "11721": 1, + "11724": 1, + "11798": 1, + "11820": 1, + "11834": 1, + "11878": 1, + "11915": 1, + "11947": 1, + "11953": 1, + "12016": 1, + "12078": 1, + "12202": 1, + "12323": 1, + "13116": 1, + "13135": 1, + "13139": 2, + "13142": 1, + "13147": 1, + "13154": 1, + "13158": 1, + "13159": 3, + "13182": 1, + "13220": 1, + "13235": 1, + "13273": 1, + "13278": 1, + "13331": 1, + "13345": 1, + "13421": 1, + "13447": 1, + "13487": 1, + "13547": 1, + "13576": 1, + "13577": 1, + "13649": 1, + "13653": 1, + "13747": 1, + "13768": 1, + "13788": 1, + "13822": 1, + "14760": 1, + "14826": 1, + "14864": 1, + "14881": 1, + "14953": 1, + "14983": 1, + "15028": 1, + "15082": 1, + "15109": 1, + "15111": 1, + "15114": 1, + "15164": 1, + "15165": 1, + "15201": 1, + "15211": 1, + "15212": 1, + "15243": 1, + "15257": 1, + "15276": 1, + "15303": 1, + "15310": 1, + "15319": 1, + "15327": 1, + "15360": 2, + "15403": 1, + "15425": 1, + "15434": 1, + "15437": 1, + "15460": 1, + "15461": 1, + "15472": 1, + "15487": 1, + "15555": 1, + "15573": 1, + "15614": 1, + "16246": 1, + "16345": 1, + "16442": 1, + "16526": 1, + "16627": 1, + "16693": 1, + "16770": 1, + "16840": 1, + "16848": 1, + "16918": 1, + "16970": 1, + "16994": 1, + "17035": 2, + "17074": 2, + "17109": 1, + "17154": 1, + "17217": 1, + "17269": 1, + "17397": 1, + "17521": 1, + "17569": 1, + "17641": 1, + "17642": 1, + "17694": 1, + "17701": 1, + "17764": 1, + "17771": 1, + "17798": 1, + "17823": 1, + "17906": 1, + "17950": 1, + "17969": 1, + "18012": 1, + "18013": 1, + "18113": 1, + "18115": 1, + "18196": 1, + "18208": 1, + "18285": 1, + "18722": 1, + "18789": 1, + "18877": 1, + "18912": 1, + "18994": 1, + "19085": 1, + "19274": 1, + "19289": 1, + "19309": 1, + "19327": 1, + "19346": 1, + "19358": 1, + "19510": 1, + "19522": 1, + "19545": 1, + "19554": 1, + "19580": 2, + "19957": 1, + "20061": 1, + "20066": 1, + "20093": 1, + "20128": 1, + "20139": 1, + "20177": 1, + "20192": 1, + "20213": 2, + "20216": 1, + "20222": 1, + "20240": 1, + "20259": 1, + "20261": 1, + "20280": 1, + "20309": 1, + "20322": 1, + "20351": 1, + "20355": 1, + "20386": 1, + "20391": 1, + "20429": 1, + "20486": 1, + "20499": 1, + "20549": 1, + "20622": 1, + "20642": 1, + "20731": 1, + "20863": 1, + "21193": 1, + "21206": 1, + "21209": 1, + "21221": 1, + "21225": 1, + "21238": 1, + "21248": 1, + "21319": 1, + "21322": 1, + "21376": 1, + "21454": 1, + "21477": 1, + "21505": 1, + "21563": 1, + "21610": 1, + "21632": 1, + "21638": 1, + "21675": 1, + "21847": 1, + "21873": 1, + "21879": 1, + "21899": 2, + "21952": 1, + "21955": 1, + "22004": 1, + "22011": 1, + "22015": 1, + "22070": 1, + "22079": 1, + "22089": 1, + "22109": 1, + "22113": 1, + "22126": 1, + "22140": 1, + "22188": 1, + "22219": 1, + "22290": 1, + "22378": 2, + "22383": 1, + "22393": 1, + "22405": 1, + "22410": 1, + "22435": 1, + "22485": 1, + "22587": 1, + "22691": 1, + "22710": 1, + "22832": 1, + "22951": 1, + "23075": 1, + "23085": 1, + "23101": 1, + "23119": 1, + "23177": 1, + "23199": 1, + "23233": 1, + "23248": 1, + "23324": 1, + "23435": 1, + "23576": 1, + "23674": 1, + "23759": 1, + "23807": 1, + "23814": 1, + "23904": 1, + "23930": 1, + "23956": 1, + "23977": 1, + "24066": 1, + "24092": 1, + "24768": 1, + "24857": 1, + "24947": 1, + "25044": 1, + "25170": 1, + "25241": 1, + "25392": 1, + "25529": 1, + "25662": 1, + "25796": 1, + "25930": 1, + "25975": 1, + "25976": 1, + "25982": 1, + "26025": 1, + "26027": 2, + "26028": 1, + "26062": 1, + "26081": 1, + "26099": 1, + "26184": 1, + "26225": 1, + "26304": 1, + "26349": 1, + "26419": 1, + "26480": 1, + "26483": 3, + "26486": 1, + "26490": 1, + "26491": 1, + "26533": 1, + "26534": 2, + "26536": 1, + "26537": 1, + "26540": 1, + "26546": 1, + "26614": 1, + "26646": 1, + "26661": 1, + "26667": 2, + "26668": 3, + "26669": 1, + "26674": 1, + "26675": 1, + "26677": 1, + "26679": 1, + "26756": 1, + "26774": 1, + "26775": 1, + "26778": 1, + "26779": 2, + "26786": 1, + "26854": 1, + "26857": 1, + "26858": 1, + "26860": 1, + "26862": 1, + "26863": 1, + "26867": 1, + "26868": 1, + "26877": 1, + "26882": 2, + "26883": 2, + "26885": 2, + "26886": 1, + "26887": 1, + "26893": 1, + "26899": 2, + "26901": 1, + "26902": 1, + "26904": 2, + "26905": 1, + "26906": 1, + "26913": 1, + "26916": 1, + "26918": 2, + "26919": 1, + "26924": 1, + "26935": 2, + "26938": 1, + "26939": 1, + "26943": 2, + "26944": 1, + "26960": 1, + "26967": 2, + "26968": 1, + "26970": 2, + "26976": 1, + "26989": 1, + "26990": 1, + "26992": 1, + "26993": 1, + "27010": 1, + "27019": 2, + "27052": 1, + "27059": 1, + "27095": 2, + "27098": 1, + "27103": 2, + "27105": 2, + "27106": 2, + "27110": 1, + "27120": 2, + "27124": 2, + "27125": 4, + "27129": 1, + "27130": 1, + "27132": 1, + "27136": 1, + "27138": 1, + "27139": 1, + "27142": 2, + "27144": 1, + "27155": 2, + "27159": 1, + "27162": 1, + "27167": 1, + "27176": 1, + "27178": 1, + "27179": 1, + "27180": 1, + "27182": 1, + "27183": 1, + "27216": 1, + "27217": 1, + "27219": 1, + "27223": 2, + "27224": 1, + "27225": 1, + "27226": 1, + "27234": 1, + "27235": 1, + "27240": 1, + "27246": 1, + "27248": 1, + "27251": 1, + "27263": 1, + "27265": 1, + "27267": 1, + "27269": 1, + "27273": 1, + "27274": 3, + "27275": 2, + "27280": 1, + "27286": 1, + "27330": 1, + "27346": 1, + "27357": 1, + "27366": 1, + "27368": 1, + "27369": 1, + "27375": 2, + "27376": 1, + "27378": 1, + "27380": 2, + "27381": 2, + "27385": 1, + "27397": 2, + "27398": 1, + "27401": 2, + "27403": 1, + "27406": 1, + "27407": 1, + "27408": 1, + "27410": 1, + "27413": 2, + "27414": 2, + "27415": 1, + "27417": 1, + "27418": 1, + "27419": 1, + "27422": 1, + "27424": 1, + "27426": 2, + "27429": 1, + "27431": 1, + "27432": 2, + "27433": 1, + "27438": 1, + "27443": 1, + "27444": 1, + "27445": 1, + "27446": 1, + "27447": 1, + "27448": 2, + "27449": 2, + "27450": 2, + "27453": 2, + "27454": 3, + "27455": 1, + "27456": 1, + "27511": 1, + "27516": 1, + "27530": 1, + "27531": 1, + "27533": 1, + "27538": 1, + "27542": 1, + "27544": 1, + "27547": 1, + "27623": 2, + "27628": 1, + "27682": 1, + "27686": 1, + "27688": 1, + "27689": 1, + "27691": 1, + "27696": 1, + "27795": 1, + "27796": 1, + "27800": 1, + "27801": 1, + "27803": 1, + "27809": 1, + "27965": 2, + "27969": 3, + "27970": 1, + "27998": 2, + "27999": 1, + "28000": 1, + "28004": 1, + "28006": 1, + "28111": 1, + "28162": 1, + "28166": 1, + "28167": 1, + "28170": 1, + "28171": 1, + "28172": 1, + "28173": 1, + "28174": 2, + "28175": 2, + "28176": 2, + "28178": 1, + "28185": 1, + "28186": 1, + "28190": 1, + "28195": 1, + "28197": 1, + "28198": 1, + "28202": 2, + "28203": 1, + "28224": 1, + "28233": 2, + "28236": 1, + "28237": 1, + "28238": 1, + "28241": 1, + "28242": 1, + "28252": 2, + "28331": 1, + "28374": 1, + "28380": 2, + "28381": 1, + "28382": 1, + "28383": 1, + "28409": 1, + "28448": 1, + "28450": 1, + "28453": 1, + "28457": 1, + "28461": 1, + "28492": 1, + "28497": 1, + "28503": 1, + "28504": 1, + "28519": 1, + "28526": 2, + "28527": 1, + "28529": 1, + "28533": 1, + "28552": 1, + "28576": 1, + "28606": 1, + "28609": 1, + "28612": 1, + "28614": 1, + "28615": 1, + "28619": 1, + "28626": 1, + "28637": 1, + "28646": 1, + "28653": 1, + "28703": 1, + "28708": 3, + "28711": 1, + "28714": 3, + "28752": 1, + "28755": 1, + "28758": 1, + "28763": 2, + "28765": 2, + "28770": 1, + "28772": 1, + "28773": 1, + "28780": 1, + "28783": 1, + "28787": 1, + "28789": 1, + "28818": 1, + "28834": 1, + "28839": 1, + "28842": 2, + "28844": 2, + "28845": 3, + "28846": 1, + "28847": 1, + "28850": 1, + "28863": 1, + "28867": 2, + "28870": 1, + "28872": 1, + "28873": 1, + "28875": 1, + "28882": 1, + "28883": 1, + "28884": 1, + "28885": 1, + "28886": 1, + "28891": 1, + "28894": 1, + "28896": 2, + "28900": 1, + "28906": 1, + "28907": 1, + "28909": 1, + "28912": 1, + "28915": 1, + "28918": 1, + "28922": 2, + "28973": 1, + "28982": 1, + "28985": 1, + "28989": 1, + "28990": 1, + "28992": 1, + "29001": 1, + "29032": 1, + "29033": 1, + "29035": 1, + "29036": 1, + "29037": 1, + "29043": 1, + "29071": 1, + "29107": 1, + "29197": 2, + "29202": 1, + "29207": 1, + "29209": 1, + "29211": 2, + "29213": 1, + "29215": 1, + "29221": 1, + "29233": 1, + "29258": 1, + "29262": 1, + "29264": 2, + "29269": 2, + "29274": 1, + "29275": 2, + "29280": 1, + "29282": 1, + "29297": 2, + "29301": 1, + "29331": 1, + "29379": 1, + "29392": 1, + "29409": 1, + "29433": 1, + "29436": 1, + "29438": 1, + "29439": 1, + "29440": 2, + "29441": 1, + "29511": 2, + "29518": 1, + "29520": 1, + "29527": 1, + "29530": 1, + "29562": 1, + "29569": 1, + "29571": 1, + "29574": 1, + "29577": 1, + "29582": 1, + "29607": 1, + "29614": 1, + "29618": 1, + "29619": 1, + "29621": 1, + "29626": 1, + "29648": 1, + "29651": 1, + "29653": 1, + "29669": 1, + "29670": 1, + "29674": 1, + "29676": 1, + "29677": 1, + "29678": 2, + "29683": 1, + "29686": 1, + "29690": 2, + "29702": 1, + "29706": 1, + "29707": 1, + "29709": 2, + "29711": 1, + "29712": 1, + "29713": 3, + "29714": 1, + "29716": 1, + "29749": 1, + "29752": 2, + "29753": 1, + "29754": 3, + "29755": 1, + "29756": 1, + "29757": 2, + "29760": 1, + "29771": 1, + "29791": 4, + "29792": 1, + "29793": 1, + "29828": 2, + "29830": 2, + "29832": 1, + "29834": 1, + "29838": 1, + "29842": 1, + "29843": 1, + "29844": 1, + "29849": 1, + "29852": 1, + "29853": 1, + "29867": 1, + "29896": 1, + "29908": 1, + "29914": 1, + "29915": 1, + "29917": 1, + "29920": 2, + "29922": 3, + "29923": 2, + "29925": 1, + "29927": 1, + "29928": 1, + "29929": 1, + "29930": 1, + "29955": 1, + "29959": 2, + "29963": 1, + "29968": 1, + "29980": 1, + "29996": 1, + "30058": 1, + "30116": 1, + "30167": 1, + "30168": 1, + "30169": 1, + "30174": 2, + "30205": 1, + "30209": 1, + "30213": 2, + "30215": 1, + "30216": 1, + "30280": 1, + "30289": 1, + "30290": 2, + "30291": 1, + "30300": 1, + "30791": 1, + "30926": 1, + "31061": 1, + "31192": 1, + "31330": 1, + "31372": 1, + "31466": 1, + "31514": 1, + "31522": 1, + "31547": 1, + "31572": 1, + "31594": 1, + "31615": 2, + "31628": 1, + "31629": 1, + "31733": 1, + "31745": 1, + "31805": 1, + "31823": 1, + "31828": 1, + "31830": 1, + "31833": 2, + "31851": 1, + "31874": 1, + "31949": 1, + "31979": 1, + "32052": 1, + "32063": 1, + "32129": 1, + "32151": 1, + "32210": 1, + "32298": 1, + "32374": 1, + "32446": 1, + "32510": 1, + "32606": 1, + "32720": 1, + "32772": 2340 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333931266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d9dd5c6cda35" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d9dd5c6c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_2.html b/autobahn/client/tungstenite_case_12_5_2.html new file mode 100644 index 0000000..4632640 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_2.html @@ -0,0 +1,390 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.2 : Pass - 69 ms @ 2025-09-11T20:10:12.315Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=375&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: rMNnsrbCDQmBgQ9IEQQGIA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: RTbMVsSk9HubZRqZ16cIyEYzl5g=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
11333
14228
15460
16232
176102
18236
196114
20480
216126
22366
235115
24124
25375
26126
27254
28128
29258
30260
31393
32396
33399
363108
37137
38138
39278
41141
43143
44288
46146
47147
50150
51151
542108
553165
56156
59159
60160
62162
643192
65165
662132
67167
70170
71171
723216
7690068400
2571257
Total100272020
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
7321
10220
11444
12224
13678
14228
15690
16464
176102
18354
19595
20120
21363
22122
23246
24124
25250
26252
27381
28384
29387
32396
33133
34134
35270
37137
39139
40280
42142
43143
46146
47147
502100
513153
52152
55155
56156
58158
603180
61161
622124
63163
66166
67167
683204
7290064800
2521252
Total100268011
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333735266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828eecd6c88d04
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3865656364366338
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_2.json b/autobahn/client/tungstenite_case_12_5_2.json new file mode 100644 index 0000000..a7d2563 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_2.json @@ -0,0 +1,237 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 375, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 69, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=375&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: rMNnsrbCDQmBgQ9IEQQGIA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: RTbMVsSk9HubZRqZ16cIyEYzl5g=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 3, + "14": 2, + "15": 4, + "16": 2, + "17": 6, + "18": 2, + "19": 6, + "20": 4, + "21": 6, + "22": 3, + "23": 5, + "24": 1, + "25": 3, + "26": 1, + "27": 2, + "28": 1, + "29": 2, + "30": 2, + "31": 3, + "32": 3, + "33": 3, + "36": 3, + "37": 1, + "38": 1, + "39": 2, + "41": 1, + "43": 1, + "44": 2, + "46": 1, + "47": 1, + "50": 1, + "51": 1, + "54": 2, + "55": 3, + "56": 1, + "59": 1, + "60": 1, + "62": 1, + "64": 3, + "65": 1, + "66": 2, + "67": 1, + "70": 1, + "71": 1, + "72": 3, + "76": 900, + "257": 1 + }, + "started": "2025-09-11T20:10:12.315Z", + "trafficStats": { + "incomingCompressionRatio": 1.027421875, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 65755, + "incomingOctetsWireLevel": 71755, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.09124781385445974, + "outgoingCompressionRatio": 1.027421875, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 65755, + "outgoingOctetsWireLevel": 67755, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.030415937951486578, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 3, + "10": 2, + "11": 4, + "12": 2, + "13": 6, + "14": 2, + "15": 6, + "16": 4, + "17": 6, + "18": 3, + "19": 5, + "20": 1, + "21": 3, + "22": 1, + "23": 2, + "24": 1, + "25": 2, + "26": 2, + "27": 3, + "28": 3, + "29": 3, + "32": 3, + "33": 1, + "34": 1, + "35": 2, + "37": 1, + "39": 1, + "40": 2, + "42": 1, + "43": 1, + "46": 1, + "47": 1, + "50": 2, + "51": 3, + "52": 1, + "55": 1, + "56": 1, + "58": 1, + "60": 3, + "61": 1, + "62": 2, + "63": 1, + "66": 1, + "67": 1, + "68": 3, + "72": 900, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333735266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828eecd6c88d04" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8eecd6c8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_3.html b/autobahn/client/tungstenite_case_12_5_3.html new file mode 100644 index 0000000..dd809f7 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_3.html @@ -0,0 +1,500 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.3 : Pass - 119 ms @ 2025-09-11T20:10:12.385Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=376&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: rW/ZDGZfs+zEus+udNb8FA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 96EePLRCdy/MTGrOkgkVCZj0h+w=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
37137
41141
42142
45145
52152
54154
60160
64164
65165
682136
69169
70170
74174
77177
80180
832166
84184
85185
90190
92192
93193
97197
99199
1041104
1051105
1091109
1101110
1142228
1151115
1191119
1202240
1211121
1252250
1281128
1301130
1341134
1351135
1381138
1391139
1431143
1441144
1451145
1461146
1472294
1501150
1511151
1521152
1531153
1561156
1571157
1631163
1641164
1651165
1671167
1681168
1701170
1711171
1721172
1741174
1761176
1801180
1822364
1851185
1861186
1881188
1901190
1914764
1951195
1991199
2001200
2023606
2072414
2101210
2112422
2141214
2151215
2161216
2181218
2212442
2231223
2251225
2271227
2281228
2302460
2331233
2341234
2361236
2382476
2391239
2443732
2502500
2521252
2541254
2551255
2571257
2602520
2611261
2631263
2642528
2651265
2671267
270878237060
Total1002257369
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
33133
37137
38138
41141
48148
50150
56156
60160
61161
642128
65165
66166
70170
73173
76176
792158
80180
81181
86186
88188
89189
93193
95195
1001100
1011101
1051105
1061106
1102220
1111111
1151115
1162232
1171117
1212242
1241124
1261126
1301130
1311131
1341134
1351135
1391139
1401140
1411141
1421142
1432286
1461146
1471147
1481148
1491149
1521152
1531153
1591159
1601160
1611161
1631163
1641164
1661166
1671167
1681168
1701170
1721172
1761176
1782356
1811181
1821182
1841184
1861186
1874748
1911191
1951195
1961196
1983594
2032406
2061206
2072414
2101210
2111211
2121212
2141214
2172434
2191219
2211221
2231223
2241224
2262452
2291229
2301230
2321232
2342468
2351235
2403720
2462492
2481248
2501250
2511251
2521252
2562512
2571257
2591259
2602520
2611261
2631263
266878233548
Total1002253360
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333736266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882aea130c1ad49
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6165613133306331
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_3.json b/autobahn/client/tungstenite_case_12_5_3.json new file mode 100644 index 0000000..1b2c0ee --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_3.json @@ -0,0 +1,347 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 376, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 119, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=376&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: rW/ZDGZfs+zEus+udNb8FA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 96EePLRCdy/MTGrOkgkVCZj0h+w=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "37": 1, + "41": 1, + "42": 1, + "45": 1, + "52": 1, + "54": 1, + "60": 1, + "64": 1, + "65": 1, + "68": 2, + "69": 1, + "70": 1, + "74": 1, + "77": 1, + "80": 1, + "83": 2, + "84": 1, + "85": 1, + "90": 1, + "92": 1, + "93": 1, + "97": 1, + "99": 1, + "104": 1, + "105": 1, + "109": 1, + "110": 1, + "114": 2, + "115": 1, + "119": 1, + "120": 2, + "121": 1, + "125": 2, + "128": 1, + "130": 1, + "134": 1, + "135": 1, + "138": 1, + "139": 1, + "143": 1, + "144": 1, + "145": 1, + "146": 1, + "147": 2, + "150": 1, + "151": 1, + "152": 1, + "153": 1, + "156": 1, + "157": 1, + "163": 1, + "164": 1, + "165": 1, + "167": 1, + "168": 1, + "170": 1, + "171": 1, + "172": 1, + "174": 1, + "176": 1, + "180": 1, + "182": 2, + "185": 1, + "186": 1, + "188": 1, + "190": 1, + "191": 4, + "195": 1, + "199": 1, + "200": 1, + "202": 3, + "207": 2, + "210": 1, + "211": 2, + "214": 1, + "215": 1, + "216": 1, + "218": 1, + "221": 2, + "223": 1, + "225": 1, + "227": 1, + "228": 1, + "230": 2, + "233": 1, + "234": 1, + "236": 1, + "238": 2, + "239": 1, + "244": 3, + "250": 2, + "252": 1, + "254": 1, + "255": 1, + "257": 1, + "260": 2, + "261": 1, + "263": 1, + "264": 2, + "265": 1, + "267": 1, + "270": 878 + }, + "started": "2025-09-11T20:10:12.385Z", + "trafficStats": { + "incomingCompressionRatio": 0.973375, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 249184, + "incomingOctetsWireLevel": 257104, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.03178374213432644, + "outgoingCompressionRatio": 0.973375, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 249184, + "outgoingOctetsWireLevel": 253104, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015731347116989855, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "33": 1, + "37": 1, + "38": 1, + "41": 1, + "48": 1, + "50": 1, + "56": 1, + "60": 1, + "61": 1, + "64": 2, + "65": 1, + "66": 1, + "70": 1, + "73": 1, + "76": 1, + "79": 2, + "80": 1, + "81": 1, + "86": 1, + "88": 1, + "89": 1, + "93": 1, + "95": 1, + "100": 1, + "101": 1, + "105": 1, + "106": 1, + "110": 2, + "111": 1, + "115": 1, + "116": 2, + "117": 1, + "121": 2, + "124": 1, + "126": 1, + "130": 1, + "131": 1, + "134": 1, + "135": 1, + "139": 1, + "140": 1, + "141": 1, + "142": 1, + "143": 2, + "146": 1, + "147": 1, + "148": 1, + "149": 1, + "152": 1, + "153": 1, + "159": 1, + "160": 1, + "161": 1, + "163": 1, + "164": 1, + "166": 1, + "167": 1, + "168": 1, + "170": 1, + "172": 1, + "176": 1, + "178": 2, + "181": 1, + "182": 1, + "184": 1, + "186": 1, + "187": 4, + "191": 1, + "195": 1, + "196": 1, + "198": 3, + "203": 2, + "206": 1, + "207": 2, + "210": 1, + "211": 1, + "212": 1, + "214": 1, + "217": 2, + "219": 1, + "221": 1, + "223": 1, + "224": 1, + "226": 2, + "229": 1, + "230": 1, + "232": 1, + "234": 2, + "235": 1, + "240": 3, + "246": 2, + "248": 1, + "250": 1, + "251": 1, + "252": 1, + "256": 2, + "257": 1, + "259": 1, + "260": 2, + "261": 1, + "263": 1, + "266": 878 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333736266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882aea130c1ad49" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "aea130c1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_4.html b/autobahn/client/tungstenite_case_12_5_4.html new file mode 100644 index 0000000..9c199ba --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_4.html @@ -0,0 +1,998 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.4 : Pass - 211 ms @ 2025-09-11T20:10:12.505Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=377&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: oIyNjmHWtEQ+35wTv9YP3g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: y87V4ZopUVqY2Mnns3teOaCE4YU=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
205100
217147
33133
41141
42284
433129
44144
45290
463138
473141
48296
49298
524208
54154
55155
562112
584232
602120
61161
62162
632126
64164
652130
66166
682136
69169
702140
71171
72172
73173
75175
77177
78178
80180
822164
84184
85185
862172
87187
88188
89189
902180
912182
92192
93193
972194
98198
992198
1032206
1042208
1052210
1092218
1101110
1111111
1121112
1161116
1171117
1221122
1271127
1281128
1351135
1371137
1431143
1471147
1491149
1511151
1561156
1592318
1632326
1671167
1701170
1781178
1851185
1902380
1911191
1961196
1981198
2061206
2121212
2141214
2171217
2211221
2221222
2242448
2261226
2281228
2291229
2311231
2371237
2431243
2481248
2541254
2571257
2712542
2781278
2821282
2831283
2861286
2871287
2881288
2921292
2981298
3011301
3021302
3031303
3081308
3101310
3111311
3151315
3201320
3211321
3271327
3281328
3292658
3381338
3481348
3521352
3541354
3562712
3592718
3601360
3651365
3681368
3691369
3731373
3761376
3861386
3871387
3912782
4132826
4151415
4181418
4231423
4261426
4352870
4461446
4651465
4671467
4751475
4861486
4881488
4941494
5081508
5111511
5371537
5431543
54621092
5471547
5491549
5611561
5631563
5651565
5701570
58021160
5811581
5821582
5861586
5941594
59721194
6001600
6081608
6111611
6181618
6261626
6321632
64021280
6421642
6431643
6491649
6501650
6521652
6571657
6581658
65921318
6611661
6721672
6961696
6981698
7021702
7071707
7151715
7181718
7201720
7211721
7271727
7331733
7351735
7381738
7391739
7401740
7421742
7431743
7441744
7461746
74721494
7511751
7531753
7541754
7601760
7671767
7701770
7711771
7751775
77621552
7801780
78121562
78621572
7921792
7951795
7961796
7971797
7981798
8031803
80821616
8101810
8141814
8171817
81821636
8191819
8201820
8211821
8241824
8251825
8261826
8271827
8281828
8311831
83221664
8341834
8351835
83621672
83832514
8391839
84332529
8441844
84521690
8461846
8481848
8491849
85021700
8511851
85232556
85321706
85421708
8551855
8571857
8581858
85921718
8601860
8611861
8621862
86321726
8641864
86621732
86721734
8681868
86921738
87021740
8711871
8741874
8761876
8771877
87832634
87943516
8801880
88154405
88221764
88321766
8851885
88621772
88721774
8901890
89121782
8921892
89321786
89532685
89721794
89932697
9011901
9021902
90343612
90421808
90543620
90721814
91321826
91421828
9151915
9161916
91721834
91921838
92054600
9211921
9221922
9231923
9241924
92521850
9271927
93032790
93121862
93321866
9341934
9351935
93621872
93732811
9391939
9401940
94132823
94221884
9431943
94432832
94543780
94743788
94921898
9501950
9511951
95221904
9541954
95521910
9561956
9591959
9601960
9611961
9641964
96532895
96621932
96721934
97421948
9771977
97821956
9801980
98321966
98421968
9891989
9911991
9941994
99821996
9991999
100411004
100722014
101011010
101111011
101311013
102122042
102233066
102511025
102622052
102733081
102911029
103233096
103511035
1038493511734
Total1002812950
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
16580
177119
29129
37137
38276
393117
40140
41282
423126
433129
44288
45290
484192
50150
51151
522104
544216
562112
57157
58158
592118
60160
612122
62162
642128
65165
662132
67167
68168
69169
71171
73173
74174
76176
782156
80180
81181
822164
83183
84184
85185
862172
872174
88188
89189
932186
94194
952190
992198
1002200
1012202
1052210
1061106
1071107
1081108
1121112
1131113
1181118
1231123
1241124
1311131
1331133
1391139
1431143
1451145
1471147
1521152
1552310
1592318
1631163
1661166
1741174
1811181
1862372
1871187
1921192
1941194
2021202
2081208
2101210
2131213
2171217
2181218
2202440
2221222
2241224
2251225
2271227
2331233
2391239
2441244
2501250
2521252
2672534
2741274
2781278
2791279
2821282
2831283
2841284
2881288
2941294
2971297
2981298
2991299
3041304
3061306
3071307
3111311
3161316
3171317
3231323
3241324
3252650
3341334
3441344
3481348
3501350
3522704
3552710
3561356
3611361
3641364
3651365
3691369
3721372
3821382
3831383
3872774
4092818
4111411
4141414
4191419
4221422
4312862
4421442
4611461
4631463
4711471
4821482
4841484
4901490
5041504
5071507
5331533
5391539
54221084
5431543
5451545
5571557
5591559
5611561
5661566
57621152
5771577
5781578
5821582
5901590
59321186
5961596
6041604
6071607
6141614
6221622
6281628
63621272
6381638
6391639
6451645
6461646
6481648
6531653
6541654
65521310
6571657
6681668
6921692
6941694
6981698
7031703
7111711
7141714
7161716
7171717
7231723
7291729
7311731
7341734
7351735
7361736
7381738
7391739
7401740
7421742
74321486
7471747
7491749
7501750
7561756
7631763
7661766
7671767
7711771
77221544
7761776
77721554
78221564
7881788
7911791
7921792
7931793
7941794
7991799
80421608
8061806
8101810
8131813
81421628
8151815
8161816
8171817
8201820
8211821
8221822
8231823
8241824
8271827
82821656
8301830
8311831
83221664
83432502
8351835
83932517
8401840
84121682
8421842
8441844
8451845
84621692
8471847
84832544
84921698
85021700
8511851
8531853
8541854
85521710
8561856
8571857
8581858
85921718
8601860
86221724
86321726
8641864
86521730
86621732
8671867
8701870
8721872
8731873
87432622
87543500
8761876
87754385
87821756
87921758
8811881
88221764
88321766
8861886
88721774
8881888
88921778
89132673
89321786
89532685
8971897
8981898
89943596
90021800
90143604
90321806
90921818
91021820
9111911
9121912
91321826
91521830
91654580
9171917
9181918
9191919
9201920
92121842
9231923
92632778
92721854
92921858
9301930
9311931
93221864
93332799
9351935
9361936
93732811
93821876
9391939
94032820
94143764
94343772
94521890
9461946
9471947
94821896
9501950
95121902
9521952
9551955
9561956
9571957
9601960
96132883
96221924
96321926
97021940
9731973
97421948
9761976
97921958
98021960
9851985
9871987
9901990
99421988
9951995
100011000
100322006
100611006
100711007
100911009
101722034
101833054
102111021
102222044
102333069
102511025
102833084
103111031
1034493509762
Total1002808941
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333737266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882abc13047a829
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6162633133303437
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_4.json b/autobahn/client/tungstenite_case_12_5_4.json new file mode 100644 index 0000000..3f335f9 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_4.json @@ -0,0 +1,845 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 377, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 211, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=377&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: oIyNjmHWtEQ+35wTv9YP3g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: y87V4ZopUVqY2Mnns3teOaCE4YU=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "20": 5, + "21": 7, + "33": 1, + "41": 1, + "42": 2, + "43": 3, + "44": 1, + "45": 2, + "46": 3, + "47": 3, + "48": 2, + "49": 2, + "52": 4, + "54": 1, + "55": 1, + "56": 2, + "58": 4, + "60": 2, + "61": 1, + "62": 1, + "63": 2, + "64": 1, + "65": 2, + "66": 1, + "68": 2, + "69": 1, + "70": 2, + "71": 1, + "72": 1, + "73": 1, + "75": 1, + "77": 1, + "78": 1, + "80": 1, + "82": 2, + "84": 1, + "85": 1, + "86": 2, + "87": 1, + "88": 1, + "89": 1, + "90": 2, + "91": 2, + "92": 1, + "93": 1, + "97": 2, + "98": 1, + "99": 2, + "103": 2, + "104": 2, + "105": 2, + "109": 2, + "110": 1, + "111": 1, + "112": 1, + "116": 1, + "117": 1, + "122": 1, + "127": 1, + "128": 1, + "135": 1, + "137": 1, + "143": 1, + "147": 1, + "149": 1, + "151": 1, + "156": 1, + "159": 2, + "163": 2, + "167": 1, + "170": 1, + "178": 1, + "185": 1, + "190": 2, + "191": 1, + "196": 1, + "198": 1, + "206": 1, + "212": 1, + "214": 1, + "217": 1, + "221": 1, + "222": 1, + "224": 2, + "226": 1, + "228": 1, + "229": 1, + "231": 1, + "237": 1, + "243": 1, + "248": 1, + "254": 1, + "257": 1, + "271": 2, + "278": 1, + "282": 1, + "283": 1, + "286": 1, + "287": 1, + "288": 1, + "292": 1, + "298": 1, + "301": 1, + "302": 1, + "303": 1, + "308": 1, + "310": 1, + "311": 1, + "315": 1, + "320": 1, + "321": 1, + "327": 1, + "328": 1, + "329": 2, + "338": 1, + "348": 1, + "352": 1, + "354": 1, + "356": 2, + "359": 2, + "360": 1, + "365": 1, + "368": 1, + "369": 1, + "373": 1, + "376": 1, + "386": 1, + "387": 1, + "391": 2, + "413": 2, + "415": 1, + "418": 1, + "423": 1, + "426": 1, + "435": 2, + "446": 1, + "465": 1, + "467": 1, + "475": 1, + "486": 1, + "488": 1, + "494": 1, + "508": 1, + "511": 1, + "537": 1, + "543": 1, + "546": 2, + "547": 1, + "549": 1, + "561": 1, + "563": 1, + "565": 1, + "570": 1, + "580": 2, + "581": 1, + "582": 1, + "586": 1, + "594": 1, + "597": 2, + "600": 1, + "608": 1, + "611": 1, + "618": 1, + "626": 1, + "632": 1, + "640": 2, + "642": 1, + "643": 1, + "649": 1, + "650": 1, + "652": 1, + "657": 1, + "658": 1, + "659": 2, + "661": 1, + "672": 1, + "696": 1, + "698": 1, + "702": 1, + "707": 1, + "715": 1, + "718": 1, + "720": 1, + "721": 1, + "727": 1, + "733": 1, + "735": 1, + "738": 1, + "739": 1, + "740": 1, + "742": 1, + "743": 1, + "744": 1, + "746": 1, + "747": 2, + "751": 1, + "753": 1, + "754": 1, + "760": 1, + "767": 1, + "770": 1, + "771": 1, + "775": 1, + "776": 2, + "780": 1, + "781": 2, + "786": 2, + "792": 1, + "795": 1, + "796": 1, + "797": 1, + "798": 1, + "803": 1, + "808": 2, + "810": 1, + "814": 1, + "817": 1, + "818": 2, + "819": 1, + "820": 1, + "821": 1, + "824": 1, + "825": 1, + "826": 1, + "827": 1, + "828": 1, + "831": 1, + "832": 2, + "834": 1, + "835": 1, + "836": 2, + "838": 3, + "839": 1, + "843": 3, + "844": 1, + "845": 2, + "846": 1, + "848": 1, + "849": 1, + "850": 2, + "851": 1, + "852": 3, + "853": 2, + "854": 2, + "855": 1, + "857": 1, + "858": 1, + "859": 2, + "860": 1, + "861": 1, + "862": 1, + "863": 2, + "864": 1, + "866": 2, + "867": 2, + "868": 1, + "869": 2, + "870": 2, + "871": 1, + "874": 1, + "876": 1, + "877": 1, + "878": 3, + "879": 4, + "880": 1, + "881": 5, + "882": 2, + "883": 2, + "885": 1, + "886": 2, + "887": 2, + "890": 1, + "891": 2, + "892": 1, + "893": 2, + "895": 3, + "897": 2, + "899": 3, + "901": 1, + "902": 1, + "903": 4, + "904": 2, + "905": 4, + "907": 2, + "913": 2, + "914": 2, + "915": 1, + "916": 1, + "917": 2, + "919": 2, + "920": 5, + "921": 1, + "922": 1, + "923": 1, + "924": 1, + "925": 2, + "927": 1, + "930": 3, + "931": 2, + "933": 2, + "934": 1, + "935": 1, + "936": 2, + "937": 3, + "939": 1, + "940": 1, + "941": 3, + "942": 2, + "943": 1, + "944": 3, + "945": 4, + "947": 4, + "949": 2, + "950": 1, + "951": 1, + "952": 2, + "954": 1, + "955": 2, + "956": 1, + "959": 1, + "960": 1, + "961": 1, + "964": 1, + "965": 3, + "966": 2, + "967": 2, + "974": 2, + "977": 1, + "978": 2, + "980": 1, + "983": 2, + "984": 2, + "989": 1, + "991": 1, + "994": 1, + "998": 2, + "999": 1, + "1004": 1, + "1007": 2, + "1010": 1, + "1011": 1, + "1013": 1, + "1021": 2, + "1022": 3, + "1025": 1, + "1026": 2, + "1027": 3, + "1029": 1, + "1032": 3, + "1035": 1, + "1038": 493 + }, + "started": "2025-09-11T20:10:12.505Z", + "trafficStats": { + "incomingCompressionRatio": 0.7860244140625, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 804889, + "incomingOctetsWireLevel": 812685, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.009685807608254058, + "outgoingCompressionRatio": 0.7860244140625, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 804889, + "outgoingOctetsWireLevel": 808685, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.004716178255635249, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "16": 5, + "17": 7, + "29": 1, + "37": 1, + "38": 2, + "39": 3, + "40": 1, + "41": 2, + "42": 3, + "43": 3, + "44": 2, + "45": 2, + "48": 4, + "50": 1, + "51": 1, + "52": 2, + "54": 4, + "56": 2, + "57": 1, + "58": 1, + "59": 2, + "60": 1, + "61": 2, + "62": 1, + "64": 2, + "65": 1, + "66": 2, + "67": 1, + "68": 1, + "69": 1, + "71": 1, + "73": 1, + "74": 1, + "76": 1, + "78": 2, + "80": 1, + "81": 1, + "82": 2, + "83": 1, + "84": 1, + "85": 1, + "86": 2, + "87": 2, + "88": 1, + "89": 1, + "93": 2, + "94": 1, + "95": 2, + "99": 2, + "100": 2, + "101": 2, + "105": 2, + "106": 1, + "107": 1, + "108": 1, + "112": 1, + "113": 1, + "118": 1, + "123": 1, + "124": 1, + "131": 1, + "133": 1, + "139": 1, + "143": 1, + "145": 1, + "147": 1, + "152": 1, + "155": 2, + "159": 2, + "163": 1, + "166": 1, + "174": 1, + "181": 1, + "186": 2, + "187": 1, + "192": 1, + "194": 1, + "202": 1, + "208": 1, + "210": 1, + "213": 1, + "217": 1, + "218": 1, + "220": 2, + "222": 1, + "224": 1, + "225": 1, + "227": 1, + "233": 1, + "239": 1, + "244": 1, + "250": 1, + "252": 1, + "267": 2, + "274": 1, + "278": 1, + "279": 1, + "282": 1, + "283": 1, + "284": 1, + "288": 1, + "294": 1, + "297": 1, + "298": 1, + "299": 1, + "304": 1, + "306": 1, + "307": 1, + "311": 1, + "316": 1, + "317": 1, + "323": 1, + "324": 1, + "325": 2, + "334": 1, + "344": 1, + "348": 1, + "350": 1, + "352": 2, + "355": 2, + "356": 1, + "361": 1, + "364": 1, + "365": 1, + "369": 1, + "372": 1, + "382": 1, + "383": 1, + "387": 2, + "409": 2, + "411": 1, + "414": 1, + "419": 1, + "422": 1, + "431": 2, + "442": 1, + "461": 1, + "463": 1, + "471": 1, + "482": 1, + "484": 1, + "490": 1, + "504": 1, + "507": 1, + "533": 1, + "539": 1, + "542": 2, + "543": 1, + "545": 1, + "557": 1, + "559": 1, + "561": 1, + "566": 1, + "576": 2, + "577": 1, + "578": 1, + "582": 1, + "590": 1, + "593": 2, + "596": 1, + "604": 1, + "607": 1, + "614": 1, + "622": 1, + "628": 1, + "636": 2, + "638": 1, + "639": 1, + "645": 1, + "646": 1, + "648": 1, + "653": 1, + "654": 1, + "655": 2, + "657": 1, + "668": 1, + "692": 1, + "694": 1, + "698": 1, + "703": 1, + "711": 1, + "714": 1, + "716": 1, + "717": 1, + "723": 1, + "729": 1, + "731": 1, + "734": 1, + "735": 1, + "736": 1, + "738": 1, + "739": 1, + "740": 1, + "742": 1, + "743": 2, + "747": 1, + "749": 1, + "750": 1, + "756": 1, + "763": 1, + "766": 1, + "767": 1, + "771": 1, + "772": 2, + "776": 1, + "777": 2, + "782": 2, + "788": 1, + "791": 1, + "792": 1, + "793": 1, + "794": 1, + "799": 1, + "804": 2, + "806": 1, + "810": 1, + "813": 1, + "814": 2, + "815": 1, + "816": 1, + "817": 1, + "820": 1, + "821": 1, + "822": 1, + "823": 1, + "824": 1, + "827": 1, + "828": 2, + "830": 1, + "831": 1, + "832": 2, + "834": 3, + "835": 1, + "839": 3, + "840": 1, + "841": 2, + "842": 1, + "844": 1, + "845": 1, + "846": 2, + "847": 1, + "848": 3, + "849": 2, + "850": 2, + "851": 1, + "853": 1, + "854": 1, + "855": 2, + "856": 1, + "857": 1, + "858": 1, + "859": 2, + "860": 1, + "862": 2, + "863": 2, + "864": 1, + "865": 2, + "866": 2, + "867": 1, + "870": 1, + "872": 1, + "873": 1, + "874": 3, + "875": 4, + "876": 1, + "877": 5, + "878": 2, + "879": 2, + "881": 1, + "882": 2, + "883": 2, + "886": 1, + "887": 2, + "888": 1, + "889": 2, + "891": 3, + "893": 2, + "895": 3, + "897": 1, + "898": 1, + "899": 4, + "900": 2, + "901": 4, + "903": 2, + "909": 2, + "910": 2, + "911": 1, + "912": 1, + "913": 2, + "915": 2, + "916": 5, + "917": 1, + "918": 1, + "919": 1, + "920": 1, + "921": 2, + "923": 1, + "926": 3, + "927": 2, + "929": 2, + "930": 1, + "931": 1, + "932": 2, + "933": 3, + "935": 1, + "936": 1, + "937": 3, + "938": 2, + "939": 1, + "940": 3, + "941": 4, + "943": 4, + "945": 2, + "946": 1, + "947": 1, + "948": 2, + "950": 1, + "951": 2, + "952": 1, + "955": 1, + "956": 1, + "957": 1, + "960": 1, + "961": 3, + "962": 2, + "963": 2, + "970": 2, + "973": 1, + "974": 2, + "976": 1, + "979": 2, + "980": 2, + "985": 1, + "987": 1, + "990": 1, + "994": 2, + "995": 1, + "1000": 1, + "1003": 2, + "1006": 1, + "1007": 1, + "1009": 1, + "1017": 2, + "1018": 3, + "1021": 1, + "1022": 2, + "1023": 3, + "1025": 1, + "1028": 3, + "1031": 1, + "1034": 493 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333737266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882abc13047a829" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "abc13047" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_5.html b/autobahn/client/tungstenite_case_12_5_5.html new file mode 100644 index 0000000..12f5179 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_5.html @@ -0,0 +1,1382 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.5 : Pass - 495 ms @ 2025-09-11T20:10:12.718Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=378&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 3Il9YDXIOb2Ey6oZTx4gHA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: lmtuf5cvEJNr0dWE91ZcV4jhUyY=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1001100
1081108
1311131
1381138
1541154
1711171
1751175
1831183
1842368
1861186
1871187
1922384
1931193
1971197
2022404
2073621
2101210
2111211
2311231
2371237
2401240
2461246
2541254
2571257
2581258
2601260
2631263
2671267
2681268
2691269
2741274
2782556
2811281
2833849
2871287
2881288
2892578
2922584
2941294
2951295
2961296
2973891
2981298
3001300
3042608
3051305
3071307
3121312
3131313
3141314
3301330
3451345
3551355
3561356
3631363
3732746
3761376
3821382
3871387
3881388
3921392
4061406
4221422
4361436
4452890
4461446
4541454
4562912
4601460
4792958
4861486
4881488
4971497
5151515
5171517
5181518
5241524
5301530
5631563
57721154
5901590
6161616
6191619
6201620
6341634
6521652
6671667
6711671
6721672
7261726
7481748
7561756
7641764
7781778
7851785
80721614
8091809
8121812
8151815
8181818
8191819
82043280
8221822
8261826
8271827
8321832
8351835
8611861
8861886
8881888
90021800
9211921
9361936
9561956
9631963
9641964
101711017
105611056
105722114
111711117
112411124
112811128
114311143
119111191
119311193
119511195
120811208
122611226
124211242
124311243
124511245
125011250
126311263
128711287
129011290
131711317
132111321
132811328
135211352
139011390
139311393
140711407
142011420
146211462
146711467
147011470
147711477
154111541
155211552
157511575
160911609
163411634
164911649
169311693
170911709
172511725
174511745
183911839
184311843
187811878
190011900
193811938
202412024
202612026
203912039
205512055
212612126
219912199
220212202
231512315
231712317
232312323
234812348
235312353
235712357
235912359
236512365
239612396
241312413
243412434
243612436
245412454
249312493
251412514
253625072
254212542
255112551
256812568
258012580
259012590
259212592
260212602
261812618
262912629
263112631
263312633
264512645
266112661
266212662
268112681
269012690
269612696
270412704
271612716
271712717
276412764
276912769
278312783
278412784
279825596
280312803
280625612
280825616
281025620
281325626
281612816
281812818
281912819
282312823
282412824
282512825
282812828
282912829
283112831
283625672
284512845
284612846
284912849
285212852
285725714
285812858
286012860
286312863
286712867
286812868
287212872
287612876
287712877
287938637
288112881
289312893
289612896
289825796
290312903
290512905
291812918
292212922
292612926
293012930
293325866
293425868
293912939
294512945
294612946
295012950
295212952
295312953
295412954
295512955
295912959
296012960
296312963
296412964
296612966
297312973
297712977
297812978
298012980
298212982
298512985
298812988
298912989
299312993
299912999
300113001
301413014
301913019
302113021
302213022
302613026
302713027
302813028
303013030
303813038
304126082
304413044
304913049
306013060
306213062
307313073
308413084
308713087
309013090
309213092
309413094
311113111
312413124
312613126
313713137
315513155
320713207
321213212
322013220
322313223
323913239
324013240
324813248
325613256
328513285
329713297
333713337
335013350
345113451
345213452
348813488
363427268
363613636
364627292
365113651
367913679
370913709
371313713
372313723
372513725
372727454
373013730
374413744
374513745
374713747
374913749
375213752
375313753
375513755
375713757
376113761
376213762
376713767
376913769
377113771
377513775
378313783
378713787
3789311367
3790311370
380113801
380213802
380613806
380713807
380813808
382127642
382813828
383313833
383413834
384013840
384413844
384713847
385013850
385113851
385727714
386013860
386413864
386527730
386613866
387013870
387513875
388113881
388213882
388313883
389127782
389227784
389313893
389413894
389513895
389613896
389813898
389913899
390013900
390113901
390213902
390313903
390427808
390813908
391013910
3911415644
391213912
3913311739
391427828
391513915
391613916
391813918
391927838
392013920
392127842
392227844
3923311769
392427848
392527850
392613926
392713927
3928311784
392927858
393127862
393413934
3936311808
393713937
393827876
393927878
3940415760
394127882
394227884
3943519715
3944519720
3946311838
394727894
3948311844
39491143439
3950415800
3951623706
39521247424
3953415812
3954727678
3955311865
3956519780
3957415828
3958623748
3959311877
3960519800
3961519805
396227924
3963623778
3964623784
3965415860
3966311898
3967727769
3968831744
3969311907
3970415880
3971415884
3972623832
3973519865
3974311922
397527950
3976727832
3977311931
397813978
3979727853
398027960
3982519910
398313983
3984311952
3985415940
398727974
3988519940
3989519945
399013990
3992415968
3993415972
3994415976
3995311985
3996727972
399727994
3998415992
3999311997
400014000
400128002
4002312006
400314003
400414004
4005416020
4006312018
400728014
4008624048
400928018
401014010
401114011
401228024
4013312039
401528030
401628032
401714017
401828036
402028040
402128042
402214022
402314023
4024416096
4026416104
402728054
4028416112
403028060
4031312093
4032312096
403314033
4034312102
403528070
403628072
403714037
403814038
4039416156
404128082
404214042
404314043
404414044
404914049
405014050
405114051
405228104
405528110
405814058
406014060
406114061
406214062
406414064
406514065
406728134
406928138
407028140
407128142
407214072
407314073
407728154
407928158
408014080
408214082
408314083
408414084
408514085
408728174
408814088
409014090
409114091
409314093
409414094
409614096
409728194
409914099
410528210
4106312318
410728214
4108312324
410914109
4110141579510
Total10023190832
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
96196
1041104
1271127
1341134
1501150
1671167
1711171
1791179
1802360
1821182
1831183
1882376
1891189
1931193
1982396
2033609
2061206
2071207
2271227
2331233
2361236
2421242
2501250
2521252
2541254
2561256
2591259
2631263
2641264
2651265
2701270
2742548
2771277
2793837
2831283
2841284
2852570
2882576
2901290
2911291
2921292
2933879
2941294
2961296
3002600
3011301
3031303
3081308
3091309
3101310
3261326
3411341
3511351
3521352
3591359
3692738
3721372
3781378
3831383
3841384
3881388
4021402
4181418
4321432
4412882
4421442
4501450
4522904
4561456
4752950
4821482
4841484
4931493
5111511
5131513
5141514
5201520
5261526
5591559
57321146
5861586
6121612
6151615
6161616
6301630
6481648
6631663
6671667
6681668
7221722
7441744
7521752
7601760
7741774
7811781
80321606
8051805
8081808
8111811
8141814
8151815
81643264
8181818
8221822
8231823
8281828
8311831
8571857
8821882
8841884
89621792
9171917
9321932
9521952
9591959
9601960
101311013
105211052
105322106
111311113
112011120
112411124
113911139
118711187
118911189
119111191
120411204
122211222
123811238
123911239
124111241
124611246
125911259
128311283
128611286
131311313
131711317
132411324
134811348
138611386
138911389
140311403
141611416
145811458
146311463
146611466
147311473
153711537
154811548
157111571
160511605
163011630
164511645
168911689
170511705
172111721
174111741
183511835
183911839
187411874
189611896
193411934
202012020
202212022
203512035
205112051
212212122
219512195
219812198
231112311
231312313
231912319
234412344
234912349
235312353
235512355
236112361
239212392
240912409
243012430
243212432
245012450
248912489
251012510
253225064
253812538
254712547
256412564
257612576
258612586
258812588
259812598
261412614
262512625
262712627
262912629
264112641
265712657
265812658
267712677
268612686
269212692
270012700
271212712
271312713
276012760
276512765
277912779
278012780
279425588
279912799
280225604
280425608
280625612
280925618
281212812
281412814
281512815
281912819
282012820
282112821
282412824
282512825
282712827
283225664
284112841
284212842
284512845
284812848
285325706
285412854
285612856
285912859
286312863
286412864
286812868
287212872
287312873
287538625
287712877
288912889
289212892
289425788
289912899
290112901
291412914
291812918
292212922
292612926
292925858
293025860
293512935
294112941
294212942
294612946
294812948
294912949
295012950
295112951
295512955
295612956
295912959
296012960
296212962
296912969
297312973
297412974
297612976
297812978
298112981
298412984
298512985
298912989
299512995
299712997
301013010
301513015
301713017
301813018
302213022
302313023
302413024
302613026
303413034
303726074
304013040
304513045
305613056
305813058
306913069
308013080
308313083
308613086
308813088
309013090
310713107
312013120
312213122
313313133
315113151
320313203
320813208
321613216
321913219
323513235
323613236
324413244
325213252
328113281
329313293
333313333
334613346
344713447
344813448
348413484
363027260
363213632
364227284
364713647
367513675
370513705
370913709
371913719
372113721
372327446
372613726
374013740
374113741
374313743
374513745
374813748
374913749
375113751
375313753
375713757
375813758
376313763
376513765
376713767
377113771
377913779
378313783
3785311355
3786311358
379713797
379813798
380213802
380313803
380413804
381727634
382413824
382913829
383013830
383613836
384013840
384313843
384613846
384713847
385327706
385613856
386013860
386127722
386213862
386613866
387113871
387713877
387813878
387913879
388727774
388827776
388913889
389013890
389113891
389213892
389413894
389513895
389613896
389713897
389813898
389913899
390027800
390413904
390613906
3907415628
390813908
3909311727
391027820
391113911
391213912
391413914
391527830
391613916
391727834
391827836
3919311757
392027840
392127842
392213922
392313923
3924311772
392527850
392727854
393013930
3932311796
393313933
393427868
393527870
3936415744
393727874
393827876
3939519695
3940519700
3942311826
394327886
3944311832
39451143395
3946415784
3947623682
39481247376
3949415796
3950727650
3951311853
3952519760
3953415812
3954623724
3955311865
3956519780
3957519785
395827916
3959623754
3960623760
3961415844
3962311886
3963727741
3964831712
3965311895
3966415864
3967415868
3968623808
3969519845
3970311910
397127942
3972727804
3973311919
397413974
3975727825
397627952
3978519890
397913979
3980311940
3981415924
398327966
3984519920
3985519925
398613986
3988415952
3989415956
3990415960
3991311973
3992727944
399327986
3994415976
3995311985
399613996
399727994
3998311994
399913999
400014000
4001416004
4002312006
400328006
4004624024
400528010
400614006
400714007
400828016
4009312027
401128022
401228024
401314013
401428028
401628032
401728034
401814018
401914019
4020416080
4022416088
402328046
4024416096
402628052
4027312081
4028312084
402914029
4030312090
403128062
403228064
403314033
403414034
4035416140
403728074
403814038
403914039
404014040
404514045
404614046
404714047
404828096
405128102
405414054
405614056
405714057
405814058
406014060
406114061
406328126
406528130
406628132
406728134
406814068
406914069
407328146
407528150
407614076
407814078
407914079
408014080
408114081
408328166
408414084
408614086
408714087
408914089
409014090
409214092
409328186
409514095
409628192
409714097
409828196
4099312297
410014100
410114101
410228204
4106140574840
Total10023186773
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333738266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882fe474734fdaf
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6665343734373334
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_5.json b/autobahn/client/tungstenite_case_12_5_5.json new file mode 100644 index 0000000..93c58e0 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_5.json @@ -0,0 +1,1229 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 378, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 495, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=378&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 3Il9YDXIOb2Ey6oZTx4gHA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: lmtuf5cvEJNr0dWE91ZcV4jhUyY=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "100": 1, + "108": 1, + "131": 1, + "138": 1, + "154": 1, + "171": 1, + "175": 1, + "183": 1, + "184": 2, + "186": 1, + "187": 1, + "192": 2, + "193": 1, + "197": 1, + "202": 2, + "207": 3, + "210": 1, + "211": 1, + "231": 1, + "237": 1, + "240": 1, + "246": 1, + "254": 1, + "257": 1, + "258": 1, + "260": 1, + "263": 1, + "267": 1, + "268": 1, + "269": 1, + "274": 1, + "278": 2, + "281": 1, + "283": 3, + "287": 1, + "288": 1, + "289": 2, + "292": 2, + "294": 1, + "295": 1, + "296": 1, + "297": 3, + "298": 1, + "300": 1, + "304": 2, + "305": 1, + "307": 1, + "312": 1, + "313": 1, + "314": 1, + "330": 1, + "345": 1, + "355": 1, + "356": 1, + "363": 1, + "373": 2, + "376": 1, + "382": 1, + "387": 1, + "388": 1, + "392": 1, + "406": 1, + "422": 1, + "436": 1, + "445": 2, + "446": 1, + "454": 1, + "456": 2, + "460": 1, + "479": 2, + "486": 1, + "488": 1, + "497": 1, + "515": 1, + "517": 1, + "518": 1, + "524": 1, + "530": 1, + "563": 1, + "577": 2, + "590": 1, + "616": 1, + "619": 1, + "620": 1, + "634": 1, + "652": 1, + "667": 1, + "671": 1, + "672": 1, + "726": 1, + "748": 1, + "756": 1, + "764": 1, + "778": 1, + "785": 1, + "807": 2, + "809": 1, + "812": 1, + "815": 1, + "818": 1, + "819": 1, + "820": 4, + "822": 1, + "826": 1, + "827": 1, + "832": 1, + "835": 1, + "861": 1, + "886": 1, + "888": 1, + "900": 2, + "921": 1, + "936": 1, + "956": 1, + "963": 1, + "964": 1, + "1017": 1, + "1056": 1, + "1057": 2, + "1117": 1, + "1124": 1, + "1128": 1, + "1143": 1, + "1191": 1, + "1193": 1, + "1195": 1, + "1208": 1, + "1226": 1, + "1242": 1, + "1243": 1, + "1245": 1, + "1250": 1, + "1263": 1, + "1287": 1, + "1290": 1, + "1317": 1, + "1321": 1, + "1328": 1, + "1352": 1, + "1390": 1, + "1393": 1, + "1407": 1, + "1420": 1, + "1462": 1, + "1467": 1, + "1470": 1, + "1477": 1, + "1541": 1, + "1552": 1, + "1575": 1, + "1609": 1, + "1634": 1, + "1649": 1, + "1693": 1, + "1709": 1, + "1725": 1, + "1745": 1, + "1839": 1, + "1843": 1, + "1878": 1, + "1900": 1, + "1938": 1, + "2024": 1, + "2026": 1, + "2039": 1, + "2055": 1, + "2126": 1, + "2199": 1, + "2202": 1, + "2315": 1, + "2317": 1, + "2323": 1, + "2348": 1, + "2353": 1, + "2357": 1, + "2359": 1, + "2365": 1, + "2396": 1, + "2413": 1, + "2434": 1, + "2436": 1, + "2454": 1, + "2493": 1, + "2514": 1, + "2536": 2, + "2542": 1, + "2551": 1, + "2568": 1, + "2580": 1, + "2590": 1, + "2592": 1, + "2602": 1, + "2618": 1, + "2629": 1, + "2631": 1, + "2633": 1, + "2645": 1, + "2661": 1, + "2662": 1, + "2681": 1, + "2690": 1, + "2696": 1, + "2704": 1, + "2716": 1, + "2717": 1, + "2764": 1, + "2769": 1, + "2783": 1, + "2784": 1, + "2798": 2, + "2803": 1, + "2806": 2, + "2808": 2, + "2810": 2, + "2813": 2, + "2816": 1, + "2818": 1, + "2819": 1, + "2823": 1, + "2824": 1, + "2825": 1, + "2828": 1, + "2829": 1, + "2831": 1, + "2836": 2, + "2845": 1, + "2846": 1, + "2849": 1, + "2852": 1, + "2857": 2, + "2858": 1, + "2860": 1, + "2863": 1, + "2867": 1, + "2868": 1, + "2872": 1, + "2876": 1, + "2877": 1, + "2879": 3, + "2881": 1, + "2893": 1, + "2896": 1, + "2898": 2, + "2903": 1, + "2905": 1, + "2918": 1, + "2922": 1, + "2926": 1, + "2930": 1, + "2933": 2, + "2934": 2, + "2939": 1, + "2945": 1, + "2946": 1, + "2950": 1, + "2952": 1, + "2953": 1, + "2954": 1, + "2955": 1, + "2959": 1, + "2960": 1, + "2963": 1, + "2964": 1, + "2966": 1, + "2973": 1, + "2977": 1, + "2978": 1, + "2980": 1, + "2982": 1, + "2985": 1, + "2988": 1, + "2989": 1, + "2993": 1, + "2999": 1, + "3001": 1, + "3014": 1, + "3019": 1, + "3021": 1, + "3022": 1, + "3026": 1, + "3027": 1, + "3028": 1, + "3030": 1, + "3038": 1, + "3041": 2, + "3044": 1, + "3049": 1, + "3060": 1, + "3062": 1, + "3073": 1, + "3084": 1, + "3087": 1, + "3090": 1, + "3092": 1, + "3094": 1, + "3111": 1, + "3124": 1, + "3126": 1, + "3137": 1, + "3155": 1, + "3207": 1, + "3212": 1, + "3220": 1, + "3223": 1, + "3239": 1, + "3240": 1, + "3248": 1, + "3256": 1, + "3285": 1, + "3297": 1, + "3337": 1, + "3350": 1, + "3451": 1, + "3452": 1, + "3488": 1, + "3634": 2, + "3636": 1, + "3646": 2, + "3651": 1, + "3679": 1, + "3709": 1, + "3713": 1, + "3723": 1, + "3725": 1, + "3727": 2, + "3730": 1, + "3744": 1, + "3745": 1, + "3747": 1, + "3749": 1, + "3752": 1, + "3753": 1, + "3755": 1, + "3757": 1, + "3761": 1, + "3762": 1, + "3767": 1, + "3769": 1, + "3771": 1, + "3775": 1, + "3783": 1, + "3787": 1, + "3789": 3, + "3790": 3, + "3801": 1, + "3802": 1, + "3806": 1, + "3807": 1, + "3808": 1, + "3821": 2, + "3828": 1, + "3833": 1, + "3834": 1, + "3840": 1, + "3844": 1, + "3847": 1, + "3850": 1, + "3851": 1, + "3857": 2, + "3860": 1, + "3864": 1, + "3865": 2, + "3866": 1, + "3870": 1, + "3875": 1, + "3881": 1, + "3882": 1, + "3883": 1, + "3891": 2, + "3892": 2, + "3893": 1, + "3894": 1, + "3895": 1, + "3896": 1, + "3898": 1, + "3899": 1, + "3900": 1, + "3901": 1, + "3902": 1, + "3903": 1, + "3904": 2, + "3908": 1, + "3910": 1, + "3911": 4, + "3912": 1, + "3913": 3, + "3914": 2, + "3915": 1, + "3916": 1, + "3918": 1, + "3919": 2, + "3920": 1, + "3921": 2, + "3922": 2, + "3923": 3, + "3924": 2, + "3925": 2, + "3926": 1, + "3927": 1, + "3928": 3, + "3929": 2, + "3931": 2, + "3934": 1, + "3936": 3, + "3937": 1, + "3938": 2, + "3939": 2, + "3940": 4, + "3941": 2, + "3942": 2, + "3943": 5, + "3944": 5, + "3946": 3, + "3947": 2, + "3948": 3, + "3949": 11, + "3950": 4, + "3951": 6, + "3952": 12, + "3953": 4, + "3954": 7, + "3955": 3, + "3956": 5, + "3957": 4, + "3958": 6, + "3959": 3, + "3960": 5, + "3961": 5, + "3962": 2, + "3963": 6, + "3964": 6, + "3965": 4, + "3966": 3, + "3967": 7, + "3968": 8, + "3969": 3, + "3970": 4, + "3971": 4, + "3972": 6, + "3973": 5, + "3974": 3, + "3975": 2, + "3976": 7, + "3977": 3, + "3978": 1, + "3979": 7, + "3980": 2, + "3982": 5, + "3983": 1, + "3984": 3, + "3985": 4, + "3987": 2, + "3988": 5, + "3989": 5, + "3990": 1, + "3992": 4, + "3993": 4, + "3994": 4, + "3995": 3, + "3996": 7, + "3997": 2, + "3998": 4, + "3999": 3, + "4000": 1, + "4001": 2, + "4002": 3, + "4003": 1, + "4004": 1, + "4005": 4, + "4006": 3, + "4007": 2, + "4008": 6, + "4009": 2, + "4010": 1, + "4011": 1, + "4012": 2, + "4013": 3, + "4015": 2, + "4016": 2, + "4017": 1, + "4018": 2, + "4020": 2, + "4021": 2, + "4022": 1, + "4023": 1, + "4024": 4, + "4026": 4, + "4027": 2, + "4028": 4, + "4030": 2, + "4031": 3, + "4032": 3, + "4033": 1, + "4034": 3, + "4035": 2, + "4036": 2, + "4037": 1, + "4038": 1, + "4039": 4, + "4041": 2, + "4042": 1, + "4043": 1, + "4044": 1, + "4049": 1, + "4050": 1, + "4051": 1, + "4052": 2, + "4055": 2, + "4058": 1, + "4060": 1, + "4061": 1, + "4062": 1, + "4064": 1, + "4065": 1, + "4067": 2, + "4069": 2, + "4070": 2, + "4071": 2, + "4072": 1, + "4073": 1, + "4077": 2, + "4079": 2, + "4080": 1, + "4082": 1, + "4083": 1, + "4084": 1, + "4085": 1, + "4087": 2, + "4088": 1, + "4090": 1, + "4091": 1, + "4093": 1, + "4094": 1, + "4096": 1, + "4097": 2, + "4099": 1, + "4105": 2, + "4106": 3, + "4107": 2, + "4108": 3, + "4109": 1, + "4110": 141 + }, + "started": "2025-09-11T20:10:12.718Z", + "trafficStats": { + "incomingCompressionRatio": 0.776995361328125, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 3182573, + "incomingOctetsWireLevel": 3190567, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.002511804128294936, + "outgoingCompressionRatio": 0.776983154296875, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 3182523, + "outgoingOctetsWireLevel": 3186517, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0012549791470477982, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "96": 1, + "104": 1, + "127": 1, + "134": 1, + "150": 1, + "167": 1, + "171": 1, + "179": 1, + "180": 2, + "182": 1, + "183": 1, + "188": 2, + "189": 1, + "193": 1, + "198": 2, + "203": 3, + "206": 1, + "207": 1, + "227": 1, + "233": 1, + "236": 1, + "242": 1, + "250": 1, + "252": 1, + "254": 1, + "256": 1, + "259": 1, + "263": 1, + "264": 1, + "265": 1, + "270": 1, + "274": 2, + "277": 1, + "279": 3, + "283": 1, + "284": 1, + "285": 2, + "288": 2, + "290": 1, + "291": 1, + "292": 1, + "293": 3, + "294": 1, + "296": 1, + "300": 2, + "301": 1, + "303": 1, + "308": 1, + "309": 1, + "310": 1, + "326": 1, + "341": 1, + "351": 1, + "352": 1, + "359": 1, + "369": 2, + "372": 1, + "378": 1, + "383": 1, + "384": 1, + "388": 1, + "402": 1, + "418": 1, + "432": 1, + "441": 2, + "442": 1, + "450": 1, + "452": 2, + "456": 1, + "475": 2, + "482": 1, + "484": 1, + "493": 1, + "511": 1, + "513": 1, + "514": 1, + "520": 1, + "526": 1, + "559": 1, + "573": 2, + "586": 1, + "612": 1, + "615": 1, + "616": 1, + "630": 1, + "648": 1, + "663": 1, + "667": 1, + "668": 1, + "722": 1, + "744": 1, + "752": 1, + "760": 1, + "774": 1, + "781": 1, + "803": 2, + "805": 1, + "808": 1, + "811": 1, + "814": 1, + "815": 1, + "816": 4, + "818": 1, + "822": 1, + "823": 1, + "828": 1, + "831": 1, + "857": 1, + "882": 1, + "884": 1, + "896": 2, + "917": 1, + "932": 1, + "952": 1, + "959": 1, + "960": 1, + "1013": 1, + "1052": 1, + "1053": 2, + "1113": 1, + "1120": 1, + "1124": 1, + "1139": 1, + "1187": 1, + "1189": 1, + "1191": 1, + "1204": 1, + "1222": 1, + "1238": 1, + "1239": 1, + "1241": 1, + "1246": 1, + "1259": 1, + "1283": 1, + "1286": 1, + "1313": 1, + "1317": 1, + "1324": 1, + "1348": 1, + "1386": 1, + "1389": 1, + "1403": 1, + "1416": 1, + "1458": 1, + "1463": 1, + "1466": 1, + "1473": 1, + "1537": 1, + "1548": 1, + "1571": 1, + "1605": 1, + "1630": 1, + "1645": 1, + "1689": 1, + "1705": 1, + "1721": 1, + "1741": 1, + "1835": 1, + "1839": 1, + "1874": 1, + "1896": 1, + "1934": 1, + "2020": 1, + "2022": 1, + "2035": 1, + "2051": 1, + "2122": 1, + "2195": 1, + "2198": 1, + "2311": 1, + "2313": 1, + "2319": 1, + "2344": 1, + "2349": 1, + "2353": 1, + "2355": 1, + "2361": 1, + "2392": 1, + "2409": 1, + "2430": 1, + "2432": 1, + "2450": 1, + "2489": 1, + "2510": 1, + "2532": 2, + "2538": 1, + "2547": 1, + "2564": 1, + "2576": 1, + "2586": 1, + "2588": 1, + "2598": 1, + "2614": 1, + "2625": 1, + "2627": 1, + "2629": 1, + "2641": 1, + "2657": 1, + "2658": 1, + "2677": 1, + "2686": 1, + "2692": 1, + "2700": 1, + "2712": 1, + "2713": 1, + "2760": 1, + "2765": 1, + "2779": 1, + "2780": 1, + "2794": 2, + "2799": 1, + "2802": 2, + "2804": 2, + "2806": 2, + "2809": 2, + "2812": 1, + "2814": 1, + "2815": 1, + "2819": 1, + "2820": 1, + "2821": 1, + "2824": 1, + "2825": 1, + "2827": 1, + "2832": 2, + "2841": 1, + "2842": 1, + "2845": 1, + "2848": 1, + "2853": 2, + "2854": 1, + "2856": 1, + "2859": 1, + "2863": 1, + "2864": 1, + "2868": 1, + "2872": 1, + "2873": 1, + "2875": 3, + "2877": 1, + "2889": 1, + "2892": 1, + "2894": 2, + "2899": 1, + "2901": 1, + "2914": 1, + "2918": 1, + "2922": 1, + "2926": 1, + "2929": 2, + "2930": 2, + "2935": 1, + "2941": 1, + "2942": 1, + "2946": 1, + "2948": 1, + "2949": 1, + "2950": 1, + "2951": 1, + "2955": 1, + "2956": 1, + "2959": 1, + "2960": 1, + "2962": 1, + "2969": 1, + "2973": 1, + "2974": 1, + "2976": 1, + "2978": 1, + "2981": 1, + "2984": 1, + "2985": 1, + "2989": 1, + "2995": 1, + "2997": 1, + "3010": 1, + "3015": 1, + "3017": 1, + "3018": 1, + "3022": 1, + "3023": 1, + "3024": 1, + "3026": 1, + "3034": 1, + "3037": 2, + "3040": 1, + "3045": 1, + "3056": 1, + "3058": 1, + "3069": 1, + "3080": 1, + "3083": 1, + "3086": 1, + "3088": 1, + "3090": 1, + "3107": 1, + "3120": 1, + "3122": 1, + "3133": 1, + "3151": 1, + "3203": 1, + "3208": 1, + "3216": 1, + "3219": 1, + "3235": 1, + "3236": 1, + "3244": 1, + "3252": 1, + "3281": 1, + "3293": 1, + "3333": 1, + "3346": 1, + "3447": 1, + "3448": 1, + "3484": 1, + "3630": 2, + "3632": 1, + "3642": 2, + "3647": 1, + "3675": 1, + "3705": 1, + "3709": 1, + "3719": 1, + "3721": 1, + "3723": 2, + "3726": 1, + "3740": 1, + "3741": 1, + "3743": 1, + "3745": 1, + "3748": 1, + "3749": 1, + "3751": 1, + "3753": 1, + "3757": 1, + "3758": 1, + "3763": 1, + "3765": 1, + "3767": 1, + "3771": 1, + "3779": 1, + "3783": 1, + "3785": 3, + "3786": 3, + "3797": 1, + "3798": 1, + "3802": 1, + "3803": 1, + "3804": 1, + "3817": 2, + "3824": 1, + "3829": 1, + "3830": 1, + "3836": 1, + "3840": 1, + "3843": 1, + "3846": 1, + "3847": 1, + "3853": 2, + "3856": 1, + "3860": 1, + "3861": 2, + "3862": 1, + "3866": 1, + "3871": 1, + "3877": 1, + "3878": 1, + "3879": 1, + "3887": 2, + "3888": 2, + "3889": 1, + "3890": 1, + "3891": 1, + "3892": 1, + "3894": 1, + "3895": 1, + "3896": 1, + "3897": 1, + "3898": 1, + "3899": 1, + "3900": 2, + "3904": 1, + "3906": 1, + "3907": 4, + "3908": 1, + "3909": 3, + "3910": 2, + "3911": 1, + "3912": 1, + "3914": 1, + "3915": 2, + "3916": 1, + "3917": 2, + "3918": 2, + "3919": 3, + "3920": 2, + "3921": 2, + "3922": 1, + "3923": 1, + "3924": 3, + "3925": 2, + "3927": 2, + "3930": 1, + "3932": 3, + "3933": 1, + "3934": 2, + "3935": 2, + "3936": 4, + "3937": 2, + "3938": 2, + "3939": 5, + "3940": 5, + "3942": 3, + "3943": 2, + "3944": 3, + "3945": 11, + "3946": 4, + "3947": 6, + "3948": 12, + "3949": 4, + "3950": 7, + "3951": 3, + "3952": 5, + "3953": 4, + "3954": 6, + "3955": 3, + "3956": 5, + "3957": 5, + "3958": 2, + "3959": 6, + "3960": 6, + "3961": 4, + "3962": 3, + "3963": 7, + "3964": 8, + "3965": 3, + "3966": 4, + "3967": 4, + "3968": 6, + "3969": 5, + "3970": 3, + "3971": 2, + "3972": 7, + "3973": 3, + "3974": 1, + "3975": 7, + "3976": 2, + "3978": 5, + "3979": 1, + "3980": 3, + "3981": 4, + "3983": 2, + "3984": 5, + "3985": 5, + "3986": 1, + "3988": 4, + "3989": 4, + "3990": 4, + "3991": 3, + "3992": 7, + "3993": 2, + "3994": 4, + "3995": 3, + "3996": 1, + "3997": 2, + "3998": 3, + "3999": 1, + "4000": 1, + "4001": 4, + "4002": 3, + "4003": 2, + "4004": 6, + "4005": 2, + "4006": 1, + "4007": 1, + "4008": 2, + "4009": 3, + "4011": 2, + "4012": 2, + "4013": 1, + "4014": 2, + "4016": 2, + "4017": 2, + "4018": 1, + "4019": 1, + "4020": 4, + "4022": 4, + "4023": 2, + "4024": 4, + "4026": 2, + "4027": 3, + "4028": 3, + "4029": 1, + "4030": 3, + "4031": 2, + "4032": 2, + "4033": 1, + "4034": 1, + "4035": 4, + "4037": 2, + "4038": 1, + "4039": 1, + "4040": 1, + "4045": 1, + "4046": 1, + "4047": 1, + "4048": 2, + "4051": 2, + "4054": 1, + "4056": 1, + "4057": 1, + "4058": 1, + "4060": 1, + "4061": 1, + "4063": 2, + "4065": 2, + "4066": 2, + "4067": 2, + "4068": 1, + "4069": 1, + "4073": 2, + "4075": 2, + "4076": 1, + "4078": 1, + "4079": 1, + "4080": 1, + "4081": 1, + "4083": 2, + "4084": 1, + "4086": 1, + "4087": 1, + "4089": 1, + "4090": 1, + "4092": 1, + "4093": 2, + "4095": 1, + "4096": 2, + "4097": 1, + "4098": 2, + "4099": 3, + "4100": 1, + "4101": 1, + "4102": 2, + "4106": 140 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333738266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fe474734fdaf" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fe474734" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_6.html b/autobahn/client/tungstenite_case_12_5_6.html new file mode 100644 index 0000000..6ffc5e7 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_6.html @@ -0,0 +1,1686 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.6 : Pass - 869 ms @ 2025-09-11T20:10:13.215Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=379&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: zSXU2zZQQjB0RBXO6sh2IQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zL2vs9NXhvTGhHd5I3unQUg7CFw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
2851285
3251325
3472694
3521352
3581358
3661366
3711371
3841384
3851385
3861386
3932786
4021402
4101410
4121412
4141414
4201420
4271427
4351435
4521452
4861486
4891489
5041504
5421542
5471547
5481548
5491549
55021100
5511551
5541554
55821116
5591559
5641564
5691569
5701570
5721572
5741574
5761576
5901590
6091609
6161616
6381638
64521290
6531653
6661666
6671667
6691669
6771677
6811681
6851685
7031703
7141714
7251725
7531753
7571757
7821782
7931793
7981798
8241824
8261826
8361836
8431843
8461846
8511851
8521852
8571857
8641864
8751875
8791879
8871887
8881888
8921892
8971897
9021902
9041904
9081908
9121912
9161916
9181918
9201920
9251925
9381938
9451945
9551955
9651965
100311003
103811038
104611046
105611056
108911089
111611116
113111131
115411154
117711177
118011180
120911209
124011240
124411244
125111251
125711257
132811328
133011330
134211342
144511445
147311473
150811508
157711577
158611586
159011590
159611596
160511605
160711607
161211612
161311613
161446456
161511615
161711617
161911619
162123242
162211622
171311713
171811718
174211742
176911769
177911779
182111821
183311833
186911869
188811888
192411924
207412074
208312083
214312143
217912179
218312183
222112221
223312233
224512245
225424508
228924578
230812308
231112311
231412314
231512315
232012320
233012330
233812338
234312343
236112361
236312363
251412514
254112541
256812568
258212582
261812618
265812658
266412664
278812788
279112791
279512795
283012830
283912839
287912879
291612916
292712927
296712967
303113031
307913079
313713137
329713297
338413384
343713437
355713557
357013570
361113611
367013670
367413674
367913679
370813708
381413814
393413934
393713937
394913949
397913979
400214002
404114041
404914049
408314083
410914109
412314123
416614166
430114301
433914339
435114351
444214442
452414524
458314583
475014750
478214782
490314903
492614926
493914939
495814958
507615076
512015120
512415124
513315133
516015160
517215172
517315173
519415194
519615196
519915199
522215222
5238210476
524115241
524215242
527115271
532415324
532915329
533915339
534215342
537015370
539315393
5403210806
541015410
541715417
543115431
545815458
546015460
548315483
548415484
548515485
548615486
548915489
549115491
549715497
550215502
551715517
552115521
553315533
553715537
553915539
556415564
556615566
556815568
557015570
558015580
559415594
559515595
5602211204
560515605
561215612
561915619
562515625
562615626
563415634
563715637
564215642
564415644
564515645
564715647
565015650
565515655
567915679
568015680
569115691
569515695
570515705
570715707
571315713
572415724
572515725
572715727
573215732
573415734
574615746
574715747
575015750
575815758
576415764
576515765
577515775
578215782
578815788
579215792
579315793
579415794
580015800
581215812
581315813
581815818
582715827
5842211684
584315843
584515845
584915849
585815858
586115861
587515875
587815878
588315883
588415884
589015890
589715897
589815898
590415904
5914211828
591515915
591915919
592615926
592715927
592815928
593415934
593515935
594515945
595515955
596215962
597015970
597615976
598215982
598615986
599315993
599715997
601716017
602716027
604216042
607316073
608516085
608916089
6097212194
616016160
616916169
627916279
645416454
677216772
7005214010
720117201
723717237
725017250
732417324
732717327
734417344
738317383
746317463
747617476
747817478
748517485
749017490
749217492
751617516
755517555
756017560
756517565
756717567
757217572
757917579
758117581
758917589
759617596
759917599
760617606
761517615
761717617
7618215236
7622215244
762517625
762617626
762717627
763717637
7639215278
764117641
764917649
765217652
765417654
766117661
766317663
766417664
766717667
767217672
7673215346
767517675
767617676
768017680
768117681
768717687
769117691
7692215384
769717697
770217702
770317703
770417704
770717707
770817708
771017710
772217722
772417724
7725215450
772717727
772817728
773017730
773917739
774117741
7742215484
774417744
7747215494
774817748
775017750
775417754
7755215510
775617756
775817758
776517765
776717767
777317773
777917779
7780215560
7782215564
778317783
7793215586
779417794
7797215594
779917799
780017800
780217802
780317803
7804215608
7805431220
780617806
7807215614
7808215616
7809323427
7810215620
781217812
781317813
7814323442
7815323445
7818323454
781917819
7821215642
782217822
7824431296
7825323475
7826431304
7827215654
782817828
7829323487
783117831
7833323499
7834215668
783517835
7836323508
783917839
7840431360
7841215682
7842647052
7843215686
7844431376
7845215690
7846323538
7847323541
7848647088
7849323547
7850323550
7851323553
7852215704
7853431412
7855215710
7856431424
7857323571
7858215716
785917859
7861431444
7862215724
7863215726
786417864
7865431460
7867215734
786817868
786917869
7870215740
7871215742
787217872
787317873
7876215752
7878215756
7879323637
7880215760
7881539405
7882431528
788417884
7886215772
788717887
7888215776
7889215778
7890215780
789117891
7892539460
7893215786
7894215788
7896215792
789917899
7900323700
790317903
7905215810
7913431652
7915215830
7916431664
791717917
791817918
7919215838
7920323760
792117921
7922323766
7923215846
792417924
792517925
7926215852
792717927
7928215856
7931323793
7934215868
7936215872
7940539700
794117941
7942215884
794517945
7946323838
7948323844
7949323847
7950323850
795217952
795317953
795417954
795517955
7956215912
795817958
795917959
7960215920
7961431844
7962215924
796417964
7965323895
796617966
796717967
796817968
7969215938
7971215942
797217972
797317973
797417974
797517975
797717977
797817978
7981215962
7982215964
7983431932
798417984
7985215970
798617986
798717987
798817988
798917989
799117991
799217992
799317993
799917999
8000216000
8001216002
800318003
8004324012
8006216012
800918009
8010216020
8011216022
8013324039
8015216030
8016540080
8017324051
8018216036
801918019
802018020
802218022
8024540120
802518025
802618026
8029324087
803118031
8032216064
8033324099
8034324102
803518035
8036216072
8038432152
8039432156
8040216080
8041324123
8042216084
8043432172
8044216088
804518045
8046216092
8047324141
8048648288
8049540245
805018050
8051432204
805218052
8053216106
8054216108
8055540275
8056216112
805718057
8058324174
8059216118
806018060
806218062
806318063
806518065
806618066
8067216134
806818068
806918069
807018070
8071432284
8072324216
807318073
8075324225
8076216152
807718077
808018080
808118081
8083216166
8085324255
808618086
808718087
809018090
8091432364
809218092
8097216194
8098324294
809918099
810018100
8101216202
810218102
8103216206
8108324324
8109216218
8110324330
811218112
811318113
8114324342
811518115
811618116
811718117
8119324357
812018120
812118121
812218122
8124216248
8125216250
8126216252
812718127
8128216256
813018130
8132324396
813318133
8135216270
813818138
813918139
8140216280
814118141
8142216284
8143216286
814418144
8145216290
814718147
8148216296
8149216298
815218152
815618156
8157216314
816318163
816618166
816818168
816918169
817018170
817318173
817418174
818518185
818618186
818818188
819018190
8204216408
8206757442
Total10026296261
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
2811281
3211321
3432686
3481348
3541354
3621362
3671367
3801380
3811381
3821382
3892778
3981398
4061406
4081408
4101410
4161416
4231423
4311431
4481448
4821482
4851485
5001500
5381538
5431543
5441544
5451545
54621092
5471547
5501550
55421108
5551555
5601560
5651565
5661566
5681568
5701570
5721572
5861586
6051605
6121612
6341634
64121282
6491649
6621662
6631663
6651665
6731673
6771677
6811681
6991699
7101710
7211721
7491749
7531753
7781778
7891789
7941794
8201820
8221822
8321832
8391839
8421842
8471847
8481848
8531853
8601860
8711871
8751875
8831883
8841884
8881888
8931893
8981898
9001900
9041904
9081908
9121912
9141914
9161916
9211921
9341934
9411941
9511951
9611961
9991999
103411034
104211042
105211052
108511085
111211112
112711127
115011150
117311173
117611176
120511205
123611236
124011240
124711247
125311253
132411324
132611326
133811338
144111441
146911469
150411504
157311573
158211582
158611586
159211592
160111601
160311603
160811608
160911609
161046440
161111611
161311613
161511615
161723234
161811618
170911709
171411714
173811738
176511765
177511775
181711817
182911829
186511865
188411884
192011920
207012070
207912079
213912139
217512175
217912179
221712217
222912229
224112241
225024500
228524570
230412304
230712307
231012310
231112311
231612316
232612326
233412334
233912339
235712357
235912359
251012510
253712537
256412564
257812578
261412614
265412654
266012660
278412784
278712787
279112791
282612826
283512835
287512875
291212912
292312923
296312963
302713027
307513075
313313133
329313293
338013380
343313433
355313553
356613566
360713607
366613666
367013670
367513675
370413704
381013810
393013930
393313933
394513945
397513975
399813998
403714037
404514045
407914079
410514105
411914119
416214162
429714297
433514335
434714347
443814438
452014520
457914579
474614746
477814778
489914899
492214922
493514935
495414954
507215072
511615116
512015120
512915129
515615156
516815168
516915169
519015190
519215192
519515195
521815218
5234210468
523715237
523815238
526715267
532015320
532515325
533515335
533815338
536615366
538915389
5399210798
540615406
541315413
542715427
545415454
545615456
547915479
548015480
548115481
548215482
548515485
548715487
549315493
549815498
551315513
551715517
552915529
553315533
553515535
556015560
556215562
556415564
556615566
557615576
559015590
559115591
5598211196
560115601
560815608
561515615
562115621
562215622
563015630
563315633
563815638
564015640
564115641
564315643
564615646
565115651
567515675
567615676
568715687
569115691
570115701
570315703
570915709
572015720
572115721
572315723
572815728
573015730
574215742
574315743
574615746
575415754
576015760
576115761
577115771
577815778
578415784
578815788
578915789
579015790
579615796
580815808
580915809
581415814
582315823
5838211676
583915839
584115841
584515845
585415854
585715857
587115871
587415874
587915879
588015880
588615886
589315893
589415894
590015900
5910211820
591115911
591515915
592215922
592315923
592415924
593015930
593115931
594115941
595115951
595815958
596615966
597215972
597815978
598215982
598915989
599315993
601316013
602316023
603816038
606916069
608116081
608516085
6093212186
615616156
616516165
627516275
645016450
676816768
7001214002
719717197
723317233
724617246
732017320
732317323
734017340
737917379
745917459
747217472
747417474
748117481
748617486
748817488
751217512
755117551
755617556
756117561
756317563
756817568
757517575
757717577
758517585
759217592
759517595
760217602
761117611
761317613
7614215228
7618215236
762117621
762217622
762317623
763317633
7635215270
763717637
764517645
764817648
765017650
765717657
765917659
766017660
766317663
766817668
7669215338
767117671
767217672
767617676
767717677
768317683
768717687
7688215376
769317693
769817698
769917699
770017700
770317703
770417704
770617706
771817718
772017720
7721215442
772317723
772417724
772617726
773517735
773717737
7738215476
774017740
7743215486
774417744
774617746
775017750
7751215502
775217752
775417754
776117761
776317763
776917769
777517775
7776215552
7778215556
777917779
7789215578
779017790
7793215586
779517795
779617796
779817798
779917799
7800215600
7801431204
780217802
7803215606
7804215608
7805323415
7806215612
780817808
780917809
7810323430
7811323433
7814323442
781517815
7817215634
781817818
7820431280
7821323463
7822431288
7823215646
782417824
7825323475
782717827
7829323487
7830215660
783117831
7832323496
783517835
7836431344
7837215674
7838647028
7839215678
7840431360
7841215682
7842323526
7843323529
7844647064
7845323535
7846323538
7847323541
7848215696
7849431396
7851215702
7852431408
7853323559
7854215708
785517855
7857431428
7858215716
7859215718
786017860
7861431444
7863215726
786417864
786517865
7866215732
7867215734
786817868
786917869
7872215744
7874215748
7875323625
7876215752
7877539385
7878431512
788017880
7882215764
788317883
7884215768
7885215770
7886215772
788717887
7888539440
7889215778
7890215780
7892215784
789517895
7896323688
789917899
7901215802
7909431636
7911215822
7912431648
791317913
791417914
7915215830
7916323748
791717917
7918323754
7919215838
792017920
792117921
7922215844
792317923
7924215848
7927323781
7930215860
7932215864
7936539680
793717937
7938215876
794117941
7942323826
7944323832
7945323835
7946323838
794817948
794917949
795017950
795117951
7952215904
795417954
795517955
7956215912
7957431828
7958215916
796017960
7961323883
796217962
796317963
796417964
7965215930
7967215934
796817968
796917969
797017970
797117971
797317973
797417974
7977215954
7978215956
7979431916
798017980
7981215962
798217982
798317983
798417984
798517985
798717987
798817988
798917989
799517995
7996215992
7997215994
799917999
8000324000
8002216004
800518005
8006216012
8007216014
8009324027
8011216022
8012540060
8013324039
8014216028
801518015
801618016
801818018
8020540100
802118021
802218022
8025324075
802718027
8028216056
8029324087
8030324090
803118031
8032216064
8034432136
8035432140
8036216072
8037324111
8038216076
8039432156
8040216080
804118041
8042216084
8043324129
8044648264
8045540225
804618046
8047432188
804818048
8049216098
8050216100
8051540255
8052216104
805318053
8054324162
8055216110
805618056
805818058
805918059
806118061
806218062
8063216126
806418064
806518065
806618066
8067432268
8068324204
806918069
8071324213
8072216144
807318073
807618076
807718077
8079216158
8081324243
808218082
808318083
808618086
8087432348
808818088
8093216186
8094324282
809518095
809618096
8097216194
809818098
8099216198
8104324312
8105216210
8106324318
810818108
810918109
8110324330
811118111
811218112
811318113
8115324345
811618116
811718117
811818118
8120216240
8121216242
8122216244
812318123
8124216248
812618126
8128324384
812918129
8131216262
813418134
813518135
8136216272
813718137
8138216276
8139216278
814018140
8141216282
814318143
8144216288
8145216290
814818148
815218152
8153216306
815918159
816218162
816418164
816518165
816618166
816918169
817018170
818118181
818218182
818418184
818618186
8195216390
8202757414
Total10026292242
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333739266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820455252a07bd
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3034353532353261
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_6.json b/autobahn/client/tungstenite_case_12_5_6.json new file mode 100644 index 0000000..d5a6fb1 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_6.json @@ -0,0 +1,1533 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 379, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 869, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=379&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: zSXU2zZQQjB0RBXO6sh2IQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zL2vs9NXhvTGhHd5I3unQUg7CFw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "285": 1, + "325": 1, + "347": 2, + "352": 1, + "358": 1, + "366": 1, + "371": 1, + "384": 1, + "385": 1, + "386": 1, + "393": 2, + "402": 1, + "410": 1, + "412": 1, + "414": 1, + "420": 1, + "427": 1, + "435": 1, + "452": 1, + "486": 1, + "489": 1, + "504": 1, + "542": 1, + "547": 1, + "548": 1, + "549": 1, + "550": 2, + "551": 1, + "554": 1, + "558": 2, + "559": 1, + "564": 1, + "569": 1, + "570": 1, + "572": 1, + "574": 1, + "576": 1, + "590": 1, + "609": 1, + "616": 1, + "638": 1, + "645": 2, + "653": 1, + "666": 1, + "667": 1, + "669": 1, + "677": 1, + "681": 1, + "685": 1, + "703": 1, + "714": 1, + "725": 1, + "753": 1, + "757": 1, + "782": 1, + "793": 1, + "798": 1, + "824": 1, + "826": 1, + "836": 1, + "843": 1, + "846": 1, + "851": 1, + "852": 1, + "857": 1, + "864": 1, + "875": 1, + "879": 1, + "887": 1, + "888": 1, + "892": 1, + "897": 1, + "902": 1, + "904": 1, + "908": 1, + "912": 1, + "916": 1, + "918": 1, + "920": 1, + "925": 1, + "938": 1, + "945": 1, + "955": 1, + "965": 1, + "1003": 1, + "1038": 1, + "1046": 1, + "1056": 1, + "1089": 1, + "1116": 1, + "1131": 1, + "1154": 1, + "1177": 1, + "1180": 1, + "1209": 1, + "1240": 1, + "1244": 1, + "1251": 1, + "1257": 1, + "1328": 1, + "1330": 1, + "1342": 1, + "1445": 1, + "1473": 1, + "1508": 1, + "1577": 1, + "1586": 1, + "1590": 1, + "1596": 1, + "1605": 1, + "1607": 1, + "1612": 1, + "1613": 1, + "1614": 4, + "1615": 1, + "1617": 1, + "1619": 1, + "1621": 2, + "1622": 1, + "1713": 1, + "1718": 1, + "1742": 1, + "1769": 1, + "1779": 1, + "1821": 1, + "1833": 1, + "1869": 1, + "1888": 1, + "1924": 1, + "2074": 1, + "2083": 1, + "2143": 1, + "2179": 1, + "2183": 1, + "2221": 1, + "2233": 1, + "2245": 1, + "2254": 2, + "2289": 2, + "2308": 1, + "2311": 1, + "2314": 1, + "2315": 1, + "2320": 1, + "2330": 1, + "2338": 1, + "2343": 1, + "2361": 1, + "2363": 1, + "2514": 1, + "2541": 1, + "2568": 1, + "2582": 1, + "2618": 1, + "2658": 1, + "2664": 1, + "2788": 1, + "2791": 1, + "2795": 1, + "2830": 1, + "2839": 1, + "2879": 1, + "2916": 1, + "2927": 1, + "2967": 1, + "3031": 1, + "3079": 1, + "3137": 1, + "3297": 1, + "3384": 1, + "3437": 1, + "3557": 1, + "3570": 1, + "3611": 1, + "3670": 1, + "3674": 1, + "3679": 1, + "3708": 1, + "3814": 1, + "3934": 1, + "3937": 1, + "3949": 1, + "3979": 1, + "4002": 1, + "4041": 1, + "4049": 1, + "4083": 1, + "4109": 1, + "4123": 1, + "4166": 1, + "4301": 1, + "4339": 1, + "4351": 1, + "4442": 1, + "4524": 1, + "4583": 1, + "4750": 1, + "4782": 1, + "4903": 1, + "4926": 1, + "4939": 1, + "4958": 1, + "5076": 1, + "5120": 1, + "5124": 1, + "5133": 1, + "5160": 1, + "5172": 1, + "5173": 1, + "5194": 1, + "5196": 1, + "5199": 1, + "5222": 1, + "5238": 2, + "5241": 1, + "5242": 1, + "5271": 1, + "5324": 1, + "5329": 1, + "5339": 1, + "5342": 1, + "5370": 1, + "5393": 1, + "5403": 2, + "5410": 1, + "5417": 1, + "5431": 1, + "5458": 1, + "5460": 1, + "5483": 1, + "5484": 1, + "5485": 1, + "5486": 1, + "5489": 1, + "5491": 1, + "5497": 1, + "5502": 1, + "5517": 1, + "5521": 1, + "5533": 1, + "5537": 1, + "5539": 1, + "5564": 1, + "5566": 1, + "5568": 1, + "5570": 1, + "5580": 1, + "5594": 1, + "5595": 1, + "5602": 2, + "5605": 1, + "5612": 1, + "5619": 1, + "5625": 1, + "5626": 1, + "5634": 1, + "5637": 1, + "5642": 1, + "5644": 1, + "5645": 1, + "5647": 1, + "5650": 1, + "5655": 1, + "5679": 1, + "5680": 1, + "5691": 1, + "5695": 1, + "5705": 1, + "5707": 1, + "5713": 1, + "5724": 1, + "5725": 1, + "5727": 1, + "5732": 1, + "5734": 1, + "5746": 1, + "5747": 1, + "5750": 1, + "5758": 1, + "5764": 1, + "5765": 1, + "5775": 1, + "5782": 1, + "5788": 1, + "5792": 1, + "5793": 1, + "5794": 1, + "5800": 1, + "5812": 1, + "5813": 1, + "5818": 1, + "5827": 1, + "5842": 2, + "5843": 1, + "5845": 1, + "5849": 1, + "5858": 1, + "5861": 1, + "5875": 1, + "5878": 1, + "5883": 1, + "5884": 1, + "5890": 1, + "5897": 1, + "5898": 1, + "5904": 1, + "5914": 2, + "5915": 1, + "5919": 1, + "5926": 1, + "5927": 1, + "5928": 1, + "5934": 1, + "5935": 1, + "5945": 1, + "5955": 1, + "5962": 1, + "5970": 1, + "5976": 1, + "5982": 1, + "5986": 1, + "5993": 1, + "5997": 1, + "6017": 1, + "6027": 1, + "6042": 1, + "6073": 1, + "6085": 1, + "6089": 1, + "6097": 2, + "6160": 1, + "6169": 1, + "6279": 1, + "6454": 1, + "6772": 1, + "7005": 2, + "7201": 1, + "7237": 1, + "7250": 1, + "7324": 1, + "7327": 1, + "7344": 1, + "7383": 1, + "7463": 1, + "7476": 1, + "7478": 1, + "7485": 1, + "7490": 1, + "7492": 1, + "7516": 1, + "7555": 1, + "7560": 1, + "7565": 1, + "7567": 1, + "7572": 1, + "7579": 1, + "7581": 1, + "7589": 1, + "7596": 1, + "7599": 1, + "7606": 1, + "7615": 1, + "7617": 1, + "7618": 2, + "7622": 2, + "7625": 1, + "7626": 1, + "7627": 1, + "7637": 1, + "7639": 2, + "7641": 1, + "7649": 1, + "7652": 1, + "7654": 1, + "7661": 1, + "7663": 1, + "7664": 1, + "7667": 1, + "7672": 1, + "7673": 2, + "7675": 1, + "7676": 1, + "7680": 1, + "7681": 1, + "7687": 1, + "7691": 1, + "7692": 2, + "7697": 1, + "7702": 1, + "7703": 1, + "7704": 1, + "7707": 1, + "7708": 1, + "7710": 1, + "7722": 1, + "7724": 1, + "7725": 2, + "7727": 1, + "7728": 1, + "7730": 1, + "7739": 1, + "7741": 1, + "7742": 2, + "7744": 1, + "7747": 2, + "7748": 1, + "7750": 1, + "7754": 1, + "7755": 2, + "7756": 1, + "7758": 1, + "7765": 1, + "7767": 1, + "7773": 1, + "7779": 1, + "7780": 2, + "7782": 2, + "7783": 1, + "7793": 2, + "7794": 1, + "7797": 2, + "7799": 1, + "7800": 1, + "7802": 1, + "7803": 1, + "7804": 2, + "7805": 4, + "7806": 1, + "7807": 2, + "7808": 2, + "7809": 3, + "7810": 2, + "7812": 1, + "7813": 1, + "7814": 3, + "7815": 3, + "7818": 3, + "7819": 1, + "7821": 2, + "7822": 1, + "7824": 4, + "7825": 3, + "7826": 4, + "7827": 2, + "7828": 1, + "7829": 3, + "7831": 1, + "7833": 3, + "7834": 2, + "7835": 1, + "7836": 3, + "7839": 1, + "7840": 4, + "7841": 2, + "7842": 6, + "7843": 2, + "7844": 4, + "7845": 2, + "7846": 3, + "7847": 3, + "7848": 6, + "7849": 3, + "7850": 3, + "7851": 3, + "7852": 2, + "7853": 4, + "7855": 2, + "7856": 4, + "7857": 3, + "7858": 2, + "7859": 1, + "7861": 4, + "7862": 2, + "7863": 2, + "7864": 1, + "7865": 4, + "7867": 2, + "7868": 1, + "7869": 1, + "7870": 2, + "7871": 2, + "7872": 1, + "7873": 1, + "7876": 2, + "7878": 2, + "7879": 3, + "7880": 2, + "7881": 5, + "7882": 4, + "7884": 1, + "7886": 2, + "7887": 1, + "7888": 2, + "7889": 2, + "7890": 2, + "7891": 1, + "7892": 5, + "7893": 2, + "7894": 2, + "7896": 2, + "7899": 1, + "7900": 3, + "7903": 1, + "7905": 2, + "7913": 4, + "7915": 2, + "7916": 4, + "7917": 1, + "7918": 1, + "7919": 2, + "7920": 3, + "7921": 1, + "7922": 3, + "7923": 2, + "7924": 1, + "7925": 1, + "7926": 2, + "7927": 1, + "7928": 2, + "7931": 3, + "7934": 2, + "7936": 2, + "7940": 5, + "7941": 1, + "7942": 2, + "7945": 1, + "7946": 3, + "7948": 3, + "7949": 3, + "7950": 3, + "7952": 1, + "7953": 1, + "7954": 1, + "7955": 1, + "7956": 2, + "7958": 1, + "7959": 1, + "7960": 2, + "7961": 4, + "7962": 2, + "7964": 1, + "7965": 3, + "7966": 1, + "7967": 1, + "7968": 1, + "7969": 2, + "7971": 2, + "7972": 1, + "7973": 1, + "7974": 1, + "7975": 1, + "7977": 1, + "7978": 1, + "7981": 2, + "7982": 2, + "7983": 4, + "7984": 1, + "7985": 2, + "7986": 1, + "7987": 1, + "7988": 1, + "7989": 1, + "7991": 1, + "7992": 1, + "7993": 1, + "7999": 1, + "8000": 2, + "8001": 2, + "8003": 1, + "8004": 3, + "8006": 2, + "8009": 1, + "8010": 2, + "8011": 2, + "8013": 3, + "8015": 2, + "8016": 5, + "8017": 3, + "8018": 2, + "8019": 1, + "8020": 1, + "8022": 1, + "8024": 5, + "8025": 1, + "8026": 1, + "8029": 3, + "8031": 1, + "8032": 2, + "8033": 3, + "8034": 3, + "8035": 1, + "8036": 2, + "8038": 4, + "8039": 4, + "8040": 2, + "8041": 3, + "8042": 2, + "8043": 4, + "8044": 2, + "8045": 1, + "8046": 2, + "8047": 3, + "8048": 6, + "8049": 5, + "8050": 1, + "8051": 4, + "8052": 1, + "8053": 2, + "8054": 2, + "8055": 5, + "8056": 2, + "8057": 1, + "8058": 3, + "8059": 2, + "8060": 1, + "8062": 1, + "8063": 1, + "8065": 1, + "8066": 1, + "8067": 2, + "8068": 1, + "8069": 1, + "8070": 1, + "8071": 4, + "8072": 3, + "8073": 1, + "8075": 3, + "8076": 2, + "8077": 1, + "8080": 1, + "8081": 1, + "8083": 2, + "8085": 3, + "8086": 1, + "8087": 1, + "8090": 1, + "8091": 4, + "8092": 1, + "8097": 2, + "8098": 3, + "8099": 1, + "8100": 1, + "8101": 2, + "8102": 1, + "8103": 2, + "8108": 3, + "8109": 2, + "8110": 3, + "8112": 1, + "8113": 1, + "8114": 3, + "8115": 1, + "8116": 1, + "8117": 1, + "8119": 3, + "8120": 1, + "8121": 1, + "8122": 1, + "8124": 2, + "8125": 2, + "8126": 2, + "8127": 1, + "8128": 2, + "8130": 1, + "8132": 3, + "8133": 1, + "8135": 2, + "8138": 1, + "8139": 1, + "8140": 2, + "8141": 1, + "8142": 2, + "8143": 2, + "8144": 1, + "8145": 2, + "8147": 1, + "8148": 2, + "8149": 2, + "8152": 1, + "8156": 1, + "8157": 2, + "8163": 1, + "8166": 1, + "8168": 1, + "8169": 1, + "8170": 1, + "8173": 1, + "8174": 1, + "8185": 1, + "8186": 1, + "8188": 1, + "8190": 1, + "8204": 2, + "8206": 7 + }, + "started": "2025-09-11T20:10:13.215Z", + "trafficStats": { + "incomingCompressionRatio": 0.76757763671875, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 6287996, + "incomingOctetsWireLevel": 6295996, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0012722654403724176, + "outgoingCompressionRatio": 0.767576416015625, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 6287986, + "outgoingOctetsWireLevel": 6291986, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0006361337318499119, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "281": 1, + "321": 1, + "343": 2, + "348": 1, + "354": 1, + "362": 1, + "367": 1, + "380": 1, + "381": 1, + "382": 1, + "389": 2, + "398": 1, + "406": 1, + "408": 1, + "410": 1, + "416": 1, + "423": 1, + "431": 1, + "448": 1, + "482": 1, + "485": 1, + "500": 1, + "538": 1, + "543": 1, + "544": 1, + "545": 1, + "546": 2, + "547": 1, + "550": 1, + "554": 2, + "555": 1, + "560": 1, + "565": 1, + "566": 1, + "568": 1, + "570": 1, + "572": 1, + "586": 1, + "605": 1, + "612": 1, + "634": 1, + "641": 2, + "649": 1, + "662": 1, + "663": 1, + "665": 1, + "673": 1, + "677": 1, + "681": 1, + "699": 1, + "710": 1, + "721": 1, + "749": 1, + "753": 1, + "778": 1, + "789": 1, + "794": 1, + "820": 1, + "822": 1, + "832": 1, + "839": 1, + "842": 1, + "847": 1, + "848": 1, + "853": 1, + "860": 1, + "871": 1, + "875": 1, + "883": 1, + "884": 1, + "888": 1, + "893": 1, + "898": 1, + "900": 1, + "904": 1, + "908": 1, + "912": 1, + "914": 1, + "916": 1, + "921": 1, + "934": 1, + "941": 1, + "951": 1, + "961": 1, + "999": 1, + "1034": 1, + "1042": 1, + "1052": 1, + "1085": 1, + "1112": 1, + "1127": 1, + "1150": 1, + "1173": 1, + "1176": 1, + "1205": 1, + "1236": 1, + "1240": 1, + "1247": 1, + "1253": 1, + "1324": 1, + "1326": 1, + "1338": 1, + "1441": 1, + "1469": 1, + "1504": 1, + "1573": 1, + "1582": 1, + "1586": 1, + "1592": 1, + "1601": 1, + "1603": 1, + "1608": 1, + "1609": 1, + "1610": 4, + "1611": 1, + "1613": 1, + "1615": 1, + "1617": 2, + "1618": 1, + "1709": 1, + "1714": 1, + "1738": 1, + "1765": 1, + "1775": 1, + "1817": 1, + "1829": 1, + "1865": 1, + "1884": 1, + "1920": 1, + "2070": 1, + "2079": 1, + "2139": 1, + "2175": 1, + "2179": 1, + "2217": 1, + "2229": 1, + "2241": 1, + "2250": 2, + "2285": 2, + "2304": 1, + "2307": 1, + "2310": 1, + "2311": 1, + "2316": 1, + "2326": 1, + "2334": 1, + "2339": 1, + "2357": 1, + "2359": 1, + "2510": 1, + "2537": 1, + "2564": 1, + "2578": 1, + "2614": 1, + "2654": 1, + "2660": 1, + "2784": 1, + "2787": 1, + "2791": 1, + "2826": 1, + "2835": 1, + "2875": 1, + "2912": 1, + "2923": 1, + "2963": 1, + "3027": 1, + "3075": 1, + "3133": 1, + "3293": 1, + "3380": 1, + "3433": 1, + "3553": 1, + "3566": 1, + "3607": 1, + "3666": 1, + "3670": 1, + "3675": 1, + "3704": 1, + "3810": 1, + "3930": 1, + "3933": 1, + "3945": 1, + "3975": 1, + "3998": 1, + "4037": 1, + "4045": 1, + "4079": 1, + "4105": 1, + "4119": 1, + "4162": 1, + "4297": 1, + "4335": 1, + "4347": 1, + "4438": 1, + "4520": 1, + "4579": 1, + "4746": 1, + "4778": 1, + "4899": 1, + "4922": 1, + "4935": 1, + "4954": 1, + "5072": 1, + "5116": 1, + "5120": 1, + "5129": 1, + "5156": 1, + "5168": 1, + "5169": 1, + "5190": 1, + "5192": 1, + "5195": 1, + "5218": 1, + "5234": 2, + "5237": 1, + "5238": 1, + "5267": 1, + "5320": 1, + "5325": 1, + "5335": 1, + "5338": 1, + "5366": 1, + "5389": 1, + "5399": 2, + "5406": 1, + "5413": 1, + "5427": 1, + "5454": 1, + "5456": 1, + "5479": 1, + "5480": 1, + "5481": 1, + "5482": 1, + "5485": 1, + "5487": 1, + "5493": 1, + "5498": 1, + "5513": 1, + "5517": 1, + "5529": 1, + "5533": 1, + "5535": 1, + "5560": 1, + "5562": 1, + "5564": 1, + "5566": 1, + "5576": 1, + "5590": 1, + "5591": 1, + "5598": 2, + "5601": 1, + "5608": 1, + "5615": 1, + "5621": 1, + "5622": 1, + "5630": 1, + "5633": 1, + "5638": 1, + "5640": 1, + "5641": 1, + "5643": 1, + "5646": 1, + "5651": 1, + "5675": 1, + "5676": 1, + "5687": 1, + "5691": 1, + "5701": 1, + "5703": 1, + "5709": 1, + "5720": 1, + "5721": 1, + "5723": 1, + "5728": 1, + "5730": 1, + "5742": 1, + "5743": 1, + "5746": 1, + "5754": 1, + "5760": 1, + "5761": 1, + "5771": 1, + "5778": 1, + "5784": 1, + "5788": 1, + "5789": 1, + "5790": 1, + "5796": 1, + "5808": 1, + "5809": 1, + "5814": 1, + "5823": 1, + "5838": 2, + "5839": 1, + "5841": 1, + "5845": 1, + "5854": 1, + "5857": 1, + "5871": 1, + "5874": 1, + "5879": 1, + "5880": 1, + "5886": 1, + "5893": 1, + "5894": 1, + "5900": 1, + "5910": 2, + "5911": 1, + "5915": 1, + "5922": 1, + "5923": 1, + "5924": 1, + "5930": 1, + "5931": 1, + "5941": 1, + "5951": 1, + "5958": 1, + "5966": 1, + "5972": 1, + "5978": 1, + "5982": 1, + "5989": 1, + "5993": 1, + "6013": 1, + "6023": 1, + "6038": 1, + "6069": 1, + "6081": 1, + "6085": 1, + "6093": 2, + "6156": 1, + "6165": 1, + "6275": 1, + "6450": 1, + "6768": 1, + "7001": 2, + "7197": 1, + "7233": 1, + "7246": 1, + "7320": 1, + "7323": 1, + "7340": 1, + "7379": 1, + "7459": 1, + "7472": 1, + "7474": 1, + "7481": 1, + "7486": 1, + "7488": 1, + "7512": 1, + "7551": 1, + "7556": 1, + "7561": 1, + "7563": 1, + "7568": 1, + "7575": 1, + "7577": 1, + "7585": 1, + "7592": 1, + "7595": 1, + "7602": 1, + "7611": 1, + "7613": 1, + "7614": 2, + "7618": 2, + "7621": 1, + "7622": 1, + "7623": 1, + "7633": 1, + "7635": 2, + "7637": 1, + "7645": 1, + "7648": 1, + "7650": 1, + "7657": 1, + "7659": 1, + "7660": 1, + "7663": 1, + "7668": 1, + "7669": 2, + "7671": 1, + "7672": 1, + "7676": 1, + "7677": 1, + "7683": 1, + "7687": 1, + "7688": 2, + "7693": 1, + "7698": 1, + "7699": 1, + "7700": 1, + "7703": 1, + "7704": 1, + "7706": 1, + "7718": 1, + "7720": 1, + "7721": 2, + "7723": 1, + "7724": 1, + "7726": 1, + "7735": 1, + "7737": 1, + "7738": 2, + "7740": 1, + "7743": 2, + "7744": 1, + "7746": 1, + "7750": 1, + "7751": 2, + "7752": 1, + "7754": 1, + "7761": 1, + "7763": 1, + "7769": 1, + "7775": 1, + "7776": 2, + "7778": 2, + "7779": 1, + "7789": 2, + "7790": 1, + "7793": 2, + "7795": 1, + "7796": 1, + "7798": 1, + "7799": 1, + "7800": 2, + "7801": 4, + "7802": 1, + "7803": 2, + "7804": 2, + "7805": 3, + "7806": 2, + "7808": 1, + "7809": 1, + "7810": 3, + "7811": 3, + "7814": 3, + "7815": 1, + "7817": 2, + "7818": 1, + "7820": 4, + "7821": 3, + "7822": 4, + "7823": 2, + "7824": 1, + "7825": 3, + "7827": 1, + "7829": 3, + "7830": 2, + "7831": 1, + "7832": 3, + "7835": 1, + "7836": 4, + "7837": 2, + "7838": 6, + "7839": 2, + "7840": 4, + "7841": 2, + "7842": 3, + "7843": 3, + "7844": 6, + "7845": 3, + "7846": 3, + "7847": 3, + "7848": 2, + "7849": 4, + "7851": 2, + "7852": 4, + "7853": 3, + "7854": 2, + "7855": 1, + "7857": 4, + "7858": 2, + "7859": 2, + "7860": 1, + "7861": 4, + "7863": 2, + "7864": 1, + "7865": 1, + "7866": 2, + "7867": 2, + "7868": 1, + "7869": 1, + "7872": 2, + "7874": 2, + "7875": 3, + "7876": 2, + "7877": 5, + "7878": 4, + "7880": 1, + "7882": 2, + "7883": 1, + "7884": 2, + "7885": 2, + "7886": 2, + "7887": 1, + "7888": 5, + "7889": 2, + "7890": 2, + "7892": 2, + "7895": 1, + "7896": 3, + "7899": 1, + "7901": 2, + "7909": 4, + "7911": 2, + "7912": 4, + "7913": 1, + "7914": 1, + "7915": 2, + "7916": 3, + "7917": 1, + "7918": 3, + "7919": 2, + "7920": 1, + "7921": 1, + "7922": 2, + "7923": 1, + "7924": 2, + "7927": 3, + "7930": 2, + "7932": 2, + "7936": 5, + "7937": 1, + "7938": 2, + "7941": 1, + "7942": 3, + "7944": 3, + "7945": 3, + "7946": 3, + "7948": 1, + "7949": 1, + "7950": 1, + "7951": 1, + "7952": 2, + "7954": 1, + "7955": 1, + "7956": 2, + "7957": 4, + "7958": 2, + "7960": 1, + "7961": 3, + "7962": 1, + "7963": 1, + "7964": 1, + "7965": 2, + "7967": 2, + "7968": 1, + "7969": 1, + "7970": 1, + "7971": 1, + "7973": 1, + "7974": 1, + "7977": 2, + "7978": 2, + "7979": 4, + "7980": 1, + "7981": 2, + "7982": 1, + "7983": 1, + "7984": 1, + "7985": 1, + "7987": 1, + "7988": 1, + "7989": 1, + "7995": 1, + "7996": 2, + "7997": 2, + "7999": 1, + "8000": 3, + "8002": 2, + "8005": 1, + "8006": 2, + "8007": 2, + "8009": 3, + "8011": 2, + "8012": 5, + "8013": 3, + "8014": 2, + "8015": 1, + "8016": 1, + "8018": 1, + "8020": 5, + "8021": 1, + "8022": 1, + "8025": 3, + "8027": 1, + "8028": 2, + "8029": 3, + "8030": 3, + "8031": 1, + "8032": 2, + "8034": 4, + "8035": 4, + "8036": 2, + "8037": 3, + "8038": 2, + "8039": 4, + "8040": 2, + "8041": 1, + "8042": 2, + "8043": 3, + "8044": 6, + "8045": 5, + "8046": 1, + "8047": 4, + "8048": 1, + "8049": 2, + "8050": 2, + "8051": 5, + "8052": 2, + "8053": 1, + "8054": 3, + "8055": 2, + "8056": 1, + "8058": 1, + "8059": 1, + "8061": 1, + "8062": 1, + "8063": 2, + "8064": 1, + "8065": 1, + "8066": 1, + "8067": 4, + "8068": 3, + "8069": 1, + "8071": 3, + "8072": 2, + "8073": 1, + "8076": 1, + "8077": 1, + "8079": 2, + "8081": 3, + "8082": 1, + "8083": 1, + "8086": 1, + "8087": 4, + "8088": 1, + "8093": 2, + "8094": 3, + "8095": 1, + "8096": 1, + "8097": 2, + "8098": 1, + "8099": 2, + "8104": 3, + "8105": 2, + "8106": 3, + "8108": 1, + "8109": 1, + "8110": 3, + "8111": 1, + "8112": 1, + "8113": 1, + "8115": 3, + "8116": 1, + "8117": 1, + "8118": 1, + "8120": 2, + "8121": 2, + "8122": 2, + "8123": 1, + "8124": 2, + "8126": 1, + "8128": 3, + "8129": 1, + "8131": 2, + "8134": 1, + "8135": 1, + "8136": 2, + "8137": 1, + "8138": 2, + "8139": 2, + "8140": 1, + "8141": 2, + "8143": 1, + "8144": 2, + "8145": 2, + "8148": 1, + "8152": 1, + "8153": 2, + "8159": 1, + "8162": 1, + "8164": 1, + "8165": 1, + "8166": 1, + "8169": 1, + "8170": 1, + "8181": 1, + "8182": 1, + "8184": 1, + "8186": 1, + "8195": 2, + "8202": 7 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333739266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820455252a07bd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0455252a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_7.html b/autobahn/client/tungstenite_case_12_5_7.html new file mode 100644 index 0000000..9798b1c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_7.html @@ -0,0 +1,1871 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.7 : Pass - 1398 ms @ 2025-09-11T20:10:14.087Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=380&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: PE6IOqLCxuFYVxMvgtzVMA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: z6rEKNbIF54fOJPda4tOFV5jIgQ=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
3111311
6961696
7171717
7191719
7491749
7671767
7711771
7881788
8861886
9931993
109111091
109311093
110611106
111211112
111311113
112911129
116111161
120911209
122811228
126211262
127111271
130911309
132611326
133511335
135722714
136411364
137111371
137211372
138611386
138711387
139211392
139611396
140011400
140111401
141411414
142211422
144111441
144311443
145911459
147611476
148511485
149211492
149311493
150711507
150811508
151511515
153511535
153811538
154811548
154911549
156111561
156311563
156511565
157311573
157511575
158211582
158911589
159911599
160211602
161111611
161511615
162311623
163111631
163711637
165711657
169911699
172411724
173011730
175511755
178511785
180711807
184311843
191311913
195611956
195811958
204112041
205212052
210612106
217012170
218512185
220912209
221212212
229612296
234012340
236312363
238412384
239412394
252612526
257112571
260112601
262912629
265712657
267812678
269912699
273412734
286612866
288712887
289612896
289812898
293312933
297512975
300013000
308013080
308513085
309613096
311013110
318513185
318813188
319013190
320013200
320713207
321013210
321313213
321613216
323313233
323713237
326613266
328713287
328813288
333213332
335713357
338513385
344813448
348413484
348813488
352313523
356613566
363913639
367013670
371413714
383813838
393313933
397413974
401814018
404414044
409414094
413814138
420114201
420214202
420914209
422514225
428214282
428314283
432614326
434914349
435414354
435614356
436414364
441714417
445614456
445814458
446314463
448214482
449414494
451414514
453614536
459414594
464814648
473814738
476614766
477614776
482714827
490314903
500715007
505015050
508115081
508815088
526615266
538715387
539215392
544415444
555115551
562315623
573515735
573915739
577115771
583515835
605116051
611716117
617016170
635316353
640816408
643316433
643516435
652516525
656216562
699316993
7169214338
732617326
738317383
741517415
780017800
782117821
784317843
790717907
832918329
837318373
844618446
861118611
863518635
869518695
884318843
891818918
902719027
912519125
919719197
920219202
922819228
925119251
926119261
929519295
932519325
944719447
946519465
951919519
957619576
961419614
971219712
974319743
999419994
10013110013
10021110021
10212110212
10227110227
10228110228
10264110264
10408110408
10438110438
10445110445
10474110474
10480110480
10487110487
10507110507
10513110513
10548110548
10554110554
10561110561
10582110582
10596110596
10600110600
10679110679
10684110684
10697110697
10711110711
10717110717
10768110768
10771110771
10786110786
10791110791
10793110793
10803110803
10807110807
10821110821
10823110823
10843110843
10850110850
10858110858
10862110862
10873110873
10897110897
10902110902
10920221840
10921110921
10924110924
10933221866
10941221882
10943110943
10978110978
10985110985
10987110987
11002111002
11019111019
11028111028
11030111030
11035111035
11053222106
11055111055
11069111069
11070111070
11072111072
11074111074
11088111088
11111111111
11124111124
11177111177
11209111209
11210111210
11223111223
11226111226
11265111265
11307111307
11316111316
11321111321
11326111326
11334111334
11341111341
11358111358
11360111360
11371111371
11376111376
11378111378
11390111390
11402111402
11417111417
11422111422
11425111425
11426111426
11430111430
11433111433
11461111461
11465111465
11469111469
11492111492
11499111499
11510111510
11511111511
11535111535
11546111546
11553111553
11556111556
11565111565
11588111588
11590111590
11594111594
11595111595
11596223192
11597111597
11623111623
11647111647
11660111660
11664111664
11666111666
11684111684
11687111687
11689111689
11691111691
11698111698
11712111712
11760111760
11791111791
11806111806
11814111814
11819111819
11859111859
11867111867
11898111898
11952111952
12013112013
12402112402
12993112993
13250113250
13727113727
13996113996
14334114334
14480114480
14627114627
14855114855
14888114888
14936114936
14940114940
14976114976
14981229962
15052115052
15068115068
15069115069
15074115074
15094115094
15100115100
15103115103
15117115117
15165115165
15174115174
15195230390
15231115231
15232115232
15322115322
15346230692
15362115362
15364115364
15367115367
15370115370
15371230742
15372230744
15373115373
15374115374
15375115375
15377115377
15378115378
15379230758
15382115382
15384115384
15387115387
15395115395
15451115451
15464115464
15467115467
15468115468
15469230938
15476230952
15482115482
15489115489
15493115493
15494115494
15495115495
15498115498
15500115500
15506231012
15510115510
15511231022
15512115512
15513115513
15523115523
15524115524
15530115530
15531115531
15533115533
15534115534
15539115539
15543115543
15544115544
15547346641
15550231100
15551115551
15553115553
15554115554
15559115559
15562115562
15563115563
15564115564
15565115565
15566115566
15567115567
15571231142
15572231144
15575115575
15576115576
15578346734
15579115579
15580346740
15584115584
15585231170
15586115586
15587577935
15588115588
15589346767
15590346770
15593115593
15597231194
15598462392
15599346797
15600231200
15602115602
15603346809
15604115604
15605346815
15607115607
15608231216
15609115609
156107109270
15612346836
15613115613
15614231228
15615115615
15616115616
15618115618
15621231242
15622231244
15624115624
15629115629
15630231260
15631115631
15633115633
15639115639
15640115640
15642115642
15644231288
15648115648
15650346950
15651231302
15652231304
15653115653
15656115656
15659115659
15660231320
15664115664
15665346995
15666115666
15668115668
15670347010
15671115671
15672115672
15673231346
15675115675
15677115677
15678115678
15679115679
15680231360
15682115682
15684347052
15685115685
15686231372
15687231374
15688115688
15696115696
15699115699
15703115703
15705115705
15706231412
15709115709
15713115713
15714347142
15717115717
15720115720
15721115721
15722462888
15724347172
15725231450
15728231456
15730115730
15731347193
15733115733
15734347202
15735115735
15736347208
15737115737
15738115738
15745231490
15747115747
15748347244
15751115751
15752463008
15754115754
15756231512
15757115757
15758115758
15759115759
15761115761
15762115762
15763115763
15764115764
15765115765
15766115766
15768115768
15769115769
15770115770
15771115771
15772115772
15773115773
15774231548
15775115775
15776115776
15778115778
15779347337
15780115780
15782115782
15783115783
15786115786
15787115787
15788231576
15789115789
15790231580
15793115793
15794347382
15796231592
15798115798
15799115799
15800115800
15803115803
15804463216
15805579025
15806347418
15807463228
15808115808
15809231618
15810347430
15811115811
15812115812
15814347442
15815694890
15816231632
15817579085
15819231638
15820115820
15821347463
15822231644
15823115823
15824231648
15827115827
15828231656
15829231658
15835231670
15836115836
15837115837
15838115838
15839115839
15840231680
15842115842
15843231686
15845347535
15846115846
15847115847
15848347544
15850231700
15851231702
15853231706
15854115854
15855115855
15856231712
15858347574
15859115859
15860231720
15861231722
15862231724
15863231726
15864231728
15865463460
15866231732
15867115867
15868231736
15869231738
15870347610
15871231742
15873231746
15874115874
15875231750
15876115876
15882115882
15883115883
15884115884
15886115886
15887231774
15894115894
15899115899
15901231802
15902231804
15904115904
15907115907
15911115911
15912115912
15913115913
15914115914
15915231830
15917115917
15919231838
15920231840
15922115922
15924115924
15928115928
15935115935
15936115936
15938115938
15939115939
15940115940
15942115942
15944231888
15948115948
15949115949
15950115950
15954115954
15956115956
15957115957
15958115958
15959115959
15963115963
15969115969
15973231946
15974115974
15982115982
15983231966
15987231974
15989115989
15991231982
15993115993
15994115994
15995115995
15996231992
15998115998
15999115999
16001116001
16002116002
16004116004
16006116006
16008116008
16009116009
16010116010
16012348036
16014348042
16015116015
16016116016
16019116019
16020116020
16032232064
16034116034
16036232072
16038232076
16039116039
16041232082
16043116043
16045116045
16046232092
16047116047
16048116048
16049116049
16051116051
16052232104
16054232108
16057348171
16058116058
16060232120
16061232122
16063116063
16066232132
16067232134
16068116068
16069116069
16070116070
16071116071
16072348216
16073116073
16074116074
16076232152
16077116077
16079116079
16080116080
16082232164
16083232166
16085116085
16086116086
16089348267
16093116093
16095116095
16098232196
16109116109
16110232220
16111116111
16112116112
16113116113
16114232228
16115348345
16116232232
16117116117
16118116118
16119116119
16120116120
16121116121
16122116122
16123116123
16125116125
16126116126
16130116130
16131116131
16137116137
16139116139
16140232280
16141116141
16142116142
16143116143
16147116147
16149116149
16150116150
16156232312
16163116163
16166116166
16168116168
16170116170
16171116171
16172116172
16179116179
16182116182
16184232368
16188116188
16191116191
16192116192
16193116193
16194116194
16198116198
16200116200
16216116216
16233116233
16240116240
16242116242
16270116270
16295116295
16324116324
16326116326
16330116330
16332116332
Total100312511895
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
6921692
7131713
7151715
7451745
7631763
7671767
7841784
8821882
9891989
108711087
108911089
110211102
110811108
110911109
112511125
115711157
120511205
122411224
125811258
126711267
130511305
132211322
133111331
135322706
136011360
136711367
136811368
138211382
138311383
138811388
139211392
139611396
139711397
141011410
141811418
143711437
143911439
145511455
147211472
148111481
148811488
148911489
150311503
150411504
151111511
153111531
153411534
154411544
154511545
155711557
155911559
156111561
156911569
157111571
157811578
158511585
159511595
159811598
160711607
161111611
161911619
162711627
163311633
165311653
169511695
172011720
172611726
175111751
178111781
180311803
183911839
190911909
195211952
195411954
203712037
204812048
210212102
216612166
218112181
220512205
220812208
229212292
233612336
235912359
238012380
239012390
252212522
256712567
259712597
262512625
265312653
267412674
269512695
273012730
286212862
288312883
289212892
289412894
292912929
297112971
299612996
307613076
308113081
309213092
310613106
318113181
318413184
318613186
319613196
320313203
320613206
320913209
321213212
322913229
323313233
326213262
328313283
328413284
332813328
335313353
338113381
344413444
348013480
348413484
351913519
356213562
363513635
366613666
371013710
383413834
392913929
397013970
401414014
404014040
409014090
413414134
419714197
419814198
420514205
422114221
427814278
427914279
432214322
434514345
435014350
435214352
436014360
441314413
445214452
445414454
445914459
447814478
449014490
451014510
453214532
459014590
464414644
473414734
476214762
477214772
482314823
489914899
500315003
504615046
507715077
508415084
526215262
538315383
538815388
544015440
554715547
561915619
573115731
573515735
576715767
583115831
604716047
611316113
616616166
634916349
640416404
642916429
643116431
652116521
655816558
698916989
7165214330
732217322
737917379
741117411
779617796
781717817
783917839
790317903
832518325
836918369
844218442
860718607
863118631
869118691
883918839
891418914
902319023
912119121
919319193
919819198
922419224
924719247
925719257
929119291
932119321
944319443
946119461
951519515
957219572
961019610
970819708
973919739
999019990
10009110009
10017110017
10208110208
10223110223
10224110224
10260110260
10404110404
10434110434
10441110441
10470110470
10476110476
10483110483
10503110503
10509110509
10544110544
10550110550
10557110557
10578110578
10592110592
10596110596
10675110675
10680110680
10693110693
10707110707
10713110713
10764110764
10767110767
10782110782
10787110787
10789110789
10799110799
10803110803
10817110817
10819110819
10839110839
10846110846
10854110854
10858110858
10869110869
10893110893
10898110898
10916221832
10917110917
10920110920
10929221858
10937221874
10939110939
10974110974
10981110981
10983110983
10998110998
11015111015
11024111024
11026111026
11031111031
11049222098
11051111051
11065111065
11066111066
11068111068
11070111070
11084111084
11107111107
11120111120
11173111173
11205111205
11206111206
11219111219
11222111222
11261111261
11303111303
11312111312
11317111317
11322111322
11330111330
11337111337
11354111354
11356111356
11367111367
11372111372
11374111374
11386111386
11398111398
11413111413
11418111418
11421111421
11422111422
11426111426
11429111429
11457111457
11461111461
11465111465
11488111488
11495111495
11506111506
11507111507
11531111531
11542111542
11549111549
11552111552
11561111561
11584111584
11586111586
11590111590
11591111591
11592223184
11593111593
11619111619
11643111643
11656111656
11660111660
11662111662
11680111680
11683111683
11685111685
11687111687
11694111694
11708111708
11756111756
11787111787
11802111802
11810111810
11815111815
11855111855
11863111863
11894111894
11948111948
12009112009
12398112398
12989112989
13246113246
13723113723
13992113992
14330114330
14623114623
14787114787
14851114851
14884114884
14932114932
14936114936
14972114972
14977229954
15048115048
15064115064
15065115065
15070115070
15090115090
15096115096
15099115099
15113115113
15161115161
15170115170
15191230382
15227115227
15228115228
15318115318
15342230684
15358115358
15360115360
15363115363
15366115366
15367230734
15368230736
15369115369
15370115370
15371115371
15373115373
15374115374
15375230750
15378115378
15380115380
15383115383
15391115391
15447115447
15460115460
15463115463
15464115464
15465230930
15472230944
15478115478
15485115485
15489115489
15490115490
15491115491
15494115494
15496115496
15502231004
15506115506
15507231014
15508115508
15509115509
15519115519
15520115520
15526115526
15527115527
15529115529
15530115530
15535115535
15539115539
15540115540
15543346629
15546231092
15547115547
15549115549
15550115550
15555115555
15558115558
15559115559
15560115560
15561115561
15562115562
15563115563
15567231134
15568231136
15571115571
15572115572
15574346722
15575115575
15576346728
15580115580
15581231162
15582115582
15583577915
15584115584
15585346755
15586346758
15589115589
15593231186
15594462376
15595346785
15596231192
15598115598
15599346797
15600115600
15601346803
15603115603
15604231208
15605115605
156067109242
15608346824
15609115609
15610231220
15611115611
15612115612
15614115614
15617231234
15618231236
15620115620
15625115625
15626231252
15627115627
15629115629
15635115635
15636115636
15638115638
15640231280
15644115644
15646346938
15647231294
15648231296
15649115649
15652115652
15655115655
15656231312
15660115660
15661346983
15662115662
15664115664
15666346998
15667115667
15668115668
15669231338
15671115671
15673115673
15674115674
15675115675
15676231352
15678115678
15680347040
15681115681
15682231364
15683231366
15684115684
15692115692
15695115695
15699115699
15701115701
15702231404
15705115705
15709115709
15710347130
15713115713
15716115716
15717115717
15718462872
15720347160
15721231442
15724231448
15726115726
15727347181
15729115729
15730347190
15731115731
15732347196
15733115733
15734115734
15741231482
15743115743
15744347232
15747115747
15748462992
15750115750
15752231504
15753115753
15754115754
15755115755
15757115757
15758115758
15759115759
15760115760
15761115761
15762115762
15764115764
15765115765
15766115766
15767115767
15768115768
15769115769
15770231540
15771115771
15772115772
15774115774
15775347325
15776115776
15778115778
15779115779
15782115782
15783115783
15784231568
15785115785
15786231572
15789115789
15790347370
15792231584
15794115794
15795115795
15796115796
15799115799
15800463200
15801579005
15802347406
15803463212
15804115804
15805231610
15806347418
15807115807
15808115808
15810347430
15811694866
15812231624
15813579065
15815231630
15816115816
15817347451
15818231636
15819115819
15820231640
15823115823
15824231648
15825231650
15831231662
15832115832
15833115833
15834115834
15835115835
15836231672
15838115838
15839231678
15841347523
15842115842
15843115843
15844347532
15846231692
15847231694
15849231698
15850115850
15851115851
15852231704
15854347562
15855115855
15856231712
15857231714
15858231716
15859231718
15860231720
15861463444
15862231724
15863115863
15864231728
15865231730
15866347598
15867231734
15869231738
15870115870
15871231742
15872115872
15878115878
15879115879
15880115880
15882115882
15883231766
15890115890
15895115895
15897231794
15898231796
15900115900
15903115903
15907115907
15908115908
15909115909
15910115910
15911231822
15913115913
15915231830
15916231832
15918115918
15920115920
15924115924
15931115931
15932115932
15934115934
15935115935
15936115936
15938115938
15940231880
15944115944
15945115945
15946115946
15950115950
15952115952
15953115953
15954115954
15955115955
15959115959
15965115965
15969231938
15970115970
15978115978
15979231958
15983231966
15985115985
15987231974
15989115989
15990115990
15991115991
15992231984
15994115994
15995115995
15997115997
15998115998
16000116000
16002116002
16004116004
16005116005
16006116006
16008348024
16010348030
16011116011
16012116012
16015116015
16016116016
16028232056
16030116030
16032232064
16034232068
16035116035
16037232074
16039116039
16041116041
16042232084
16043116043
16044116044
16045116045
16047116047
16048232096
16050232100
16053348159
16054116054
16056232112
16057232114
16059116059
16062232124
16063232126
16064116064
16065116065
16066116066
16067116067
16068348204
16069116069
16070116070
16072232144
16073116073
16075116075
16076116076
16078232156
16079232158
16081116081
16082116082
16085348255
16089116089
16091116091
16094232188
16105116105
16106232212
16107116107
16108116108
16109116109
16110232220
16111348333
16112232224
16113116113
16114116114
16115116115
16116116116
16117116117
16118116118
16119116119
16121116121
16122116122
16126116126
16127116127
16133116133
16135116135
16136232272
16137116137
16138116138
16139116139
16143116143
16145116145
16146116146
16152232304
16159116159
16162116162
16164116164
16166116166
16167116167
16168116168
16175116175
16178116178
16180232360
16184116184
16187116187
16188116188
16189116189
16190116190
16194116194
16196116196
16212116212
16229116229
16236116236
16238116238
16266116266
16291116291
16320116320
16322116322
16326116326
16328116328
Total100212507886
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333830266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888206b1dc880559
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3036623164633838
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_7.json b/autobahn/client/tungstenite_case_12_5_7.json new file mode 100644 index 0000000..3b3463c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_7.json @@ -0,0 +1,1718 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 380, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 1398, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=380&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: PE6IOqLCxuFYVxMvgtzVMA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: z6rEKNbIF54fOJPda4tOFV5jIgQ=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "311": 1, + "696": 1, + "717": 1, + "719": 1, + "749": 1, + "767": 1, + "771": 1, + "788": 1, + "886": 1, + "993": 1, + "1091": 1, + "1093": 1, + "1106": 1, + "1112": 1, + "1113": 1, + "1129": 1, + "1161": 1, + "1209": 1, + "1228": 1, + "1262": 1, + "1271": 1, + "1309": 1, + "1326": 1, + "1335": 1, + "1357": 2, + "1364": 1, + "1371": 1, + "1372": 1, + "1386": 1, + "1387": 1, + "1392": 1, + "1396": 1, + "1400": 1, + "1401": 1, + "1414": 1, + "1422": 1, + "1441": 1, + "1443": 1, + "1459": 1, + "1476": 1, + "1485": 1, + "1492": 1, + "1493": 1, + "1507": 1, + "1508": 1, + "1515": 1, + "1535": 1, + "1538": 1, + "1548": 1, + "1549": 1, + "1561": 1, + "1563": 1, + "1565": 1, + "1573": 1, + "1575": 1, + "1582": 1, + "1589": 1, + "1599": 1, + "1602": 1, + "1611": 1, + "1615": 1, + "1623": 1, + "1631": 1, + "1637": 1, + "1657": 1, + "1699": 1, + "1724": 1, + "1730": 1, + "1755": 1, + "1785": 1, + "1807": 1, + "1843": 1, + "1913": 1, + "1956": 1, + "1958": 1, + "2041": 1, + "2052": 1, + "2106": 1, + "2170": 1, + "2185": 1, + "2209": 1, + "2212": 1, + "2296": 1, + "2340": 1, + "2363": 1, + "2384": 1, + "2394": 1, + "2526": 1, + "2571": 1, + "2601": 1, + "2629": 1, + "2657": 1, + "2678": 1, + "2699": 1, + "2734": 1, + "2866": 1, + "2887": 1, + "2896": 1, + "2898": 1, + "2933": 1, + "2975": 1, + "3000": 1, + "3080": 1, + "3085": 1, + "3096": 1, + "3110": 1, + "3185": 1, + "3188": 1, + "3190": 1, + "3200": 1, + "3207": 1, + "3210": 1, + "3213": 1, + "3216": 1, + "3233": 1, + "3237": 1, + "3266": 1, + "3287": 1, + "3288": 1, + "3332": 1, + "3357": 1, + "3385": 1, + "3448": 1, + "3484": 1, + "3488": 1, + "3523": 1, + "3566": 1, + "3639": 1, + "3670": 1, + "3714": 1, + "3838": 1, + "3933": 1, + "3974": 1, + "4018": 1, + "4044": 1, + "4094": 1, + "4138": 1, + "4201": 1, + "4202": 1, + "4209": 1, + "4225": 1, + "4282": 1, + "4283": 1, + "4326": 1, + "4349": 1, + "4354": 1, + "4356": 1, + "4364": 1, + "4417": 1, + "4456": 1, + "4458": 1, + "4463": 1, + "4482": 1, + "4494": 1, + "4514": 1, + "4536": 1, + "4594": 1, + "4648": 1, + "4738": 1, + "4766": 1, + "4776": 1, + "4827": 1, + "4903": 1, + "5007": 1, + "5050": 1, + "5081": 1, + "5088": 1, + "5266": 1, + "5387": 1, + "5392": 1, + "5444": 1, + "5551": 1, + "5623": 1, + "5735": 1, + "5739": 1, + "5771": 1, + "5835": 1, + "6051": 1, + "6117": 1, + "6170": 1, + "6353": 1, + "6408": 1, + "6433": 1, + "6435": 1, + "6525": 1, + "6562": 1, + "6993": 1, + "7169": 2, + "7326": 1, + "7383": 1, + "7415": 1, + "7800": 1, + "7821": 1, + "7843": 1, + "7907": 1, + "8329": 1, + "8373": 1, + "8446": 1, + "8611": 1, + "8635": 1, + "8695": 1, + "8843": 1, + "8918": 1, + "9027": 1, + "9125": 1, + "9197": 1, + "9202": 1, + "9228": 1, + "9251": 1, + "9261": 1, + "9295": 1, + "9325": 1, + "9447": 1, + "9465": 1, + "9519": 1, + "9576": 1, + "9614": 1, + "9712": 1, + "9743": 1, + "9994": 1, + "10013": 1, + "10021": 1, + "10212": 1, + "10227": 1, + "10228": 1, + "10264": 1, + "10408": 1, + "10438": 1, + "10445": 1, + "10474": 1, + "10480": 1, + "10487": 1, + "10507": 1, + "10513": 1, + "10548": 1, + "10554": 1, + "10561": 1, + "10582": 1, + "10596": 1, + "10600": 1, + "10679": 1, + "10684": 1, + "10697": 1, + "10711": 1, + "10717": 1, + "10768": 1, + "10771": 1, + "10786": 1, + "10791": 1, + "10793": 1, + "10803": 1, + "10807": 1, + "10821": 1, + "10823": 1, + "10843": 1, + "10850": 1, + "10858": 1, + "10862": 1, + "10873": 1, + "10897": 1, + "10902": 1, + "10920": 2, + "10921": 1, + "10924": 1, + "10933": 2, + "10941": 2, + "10943": 1, + "10978": 1, + "10985": 1, + "10987": 1, + "11002": 1, + "11019": 1, + "11028": 1, + "11030": 1, + "11035": 1, + "11053": 2, + "11055": 1, + "11069": 1, + "11070": 1, + "11072": 1, + "11074": 1, + "11088": 1, + "11111": 1, + "11124": 1, + "11177": 1, + "11209": 1, + "11210": 1, + "11223": 1, + "11226": 1, + "11265": 1, + "11307": 1, + "11316": 1, + "11321": 1, + "11326": 1, + "11334": 1, + "11341": 1, + "11358": 1, + "11360": 1, + "11371": 1, + "11376": 1, + "11378": 1, + "11390": 1, + "11402": 1, + "11417": 1, + "11422": 1, + "11425": 1, + "11426": 1, + "11430": 1, + "11433": 1, + "11461": 1, + "11465": 1, + "11469": 1, + "11492": 1, + "11499": 1, + "11510": 1, + "11511": 1, + "11535": 1, + "11546": 1, + "11553": 1, + "11556": 1, + "11565": 1, + "11588": 1, + "11590": 1, + "11594": 1, + "11595": 1, + "11596": 2, + "11597": 1, + "11623": 1, + "11647": 1, + "11660": 1, + "11664": 1, + "11666": 1, + "11684": 1, + "11687": 1, + "11689": 1, + "11691": 1, + "11698": 1, + "11712": 1, + "11760": 1, + "11791": 1, + "11806": 1, + "11814": 1, + "11819": 1, + "11859": 1, + "11867": 1, + "11898": 1, + "11952": 1, + "12013": 1, + "12402": 1, + "12993": 1, + "13250": 1, + "13727": 1, + "13996": 1, + "14334": 1, + "14480": 1, + "14627": 1, + "14855": 1, + "14888": 1, + "14936": 1, + "14940": 1, + "14976": 1, + "14981": 2, + "15052": 1, + "15068": 1, + "15069": 1, + "15074": 1, + "15094": 1, + "15100": 1, + "15103": 1, + "15117": 1, + "15165": 1, + "15174": 1, + "15195": 2, + "15231": 1, + "15232": 1, + "15322": 1, + "15346": 2, + "15362": 1, + "15364": 1, + "15367": 1, + "15370": 1, + "15371": 2, + "15372": 2, + "15373": 1, + "15374": 1, + "15375": 1, + "15377": 1, + "15378": 1, + "15379": 2, + "15382": 1, + "15384": 1, + "15387": 1, + "15395": 1, + "15451": 1, + "15464": 1, + "15467": 1, + "15468": 1, + "15469": 2, + "15476": 2, + "15482": 1, + "15489": 1, + "15493": 1, + "15494": 1, + "15495": 1, + "15498": 1, + "15500": 1, + "15506": 2, + "15510": 1, + "15511": 2, + "15512": 1, + "15513": 1, + "15523": 1, + "15524": 1, + "15530": 1, + "15531": 1, + "15533": 1, + "15534": 1, + "15539": 1, + "15543": 1, + "15544": 1, + "15547": 3, + "15550": 2, + "15551": 1, + "15553": 1, + "15554": 1, + "15559": 1, + "15562": 1, + "15563": 1, + "15564": 1, + "15565": 1, + "15566": 1, + "15567": 1, + "15571": 2, + "15572": 2, + "15575": 1, + "15576": 1, + "15578": 3, + "15579": 1, + "15580": 3, + "15584": 1, + "15585": 2, + "15586": 1, + "15587": 5, + "15588": 1, + "15589": 3, + "15590": 3, + "15593": 1, + "15597": 2, + "15598": 4, + "15599": 3, + "15600": 2, + "15602": 1, + "15603": 3, + "15604": 1, + "15605": 3, + "15607": 1, + "15608": 2, + "15609": 1, + "15610": 7, + "15612": 3, + "15613": 1, + "15614": 2, + "15615": 1, + "15616": 1, + "15618": 1, + "15621": 2, + "15622": 2, + "15624": 1, + "15629": 1, + "15630": 2, + "15631": 1, + "15633": 1, + "15639": 1, + "15640": 1, + "15642": 1, + "15644": 2, + "15648": 1, + "15650": 3, + "15651": 2, + "15652": 2, + "15653": 1, + "15656": 1, + "15659": 1, + "15660": 2, + "15664": 1, + "15665": 3, + "15666": 1, + "15668": 1, + "15670": 3, + "15671": 1, + "15672": 1, + "15673": 2, + "15675": 1, + "15677": 1, + "15678": 1, + "15679": 1, + "15680": 2, + "15682": 1, + "15684": 3, + "15685": 1, + "15686": 2, + "15687": 2, + "15688": 1, + "15696": 1, + "15699": 1, + "15703": 1, + "15705": 1, + "15706": 2, + "15709": 1, + "15713": 1, + "15714": 3, + "15717": 1, + "15720": 1, + "15721": 1, + "15722": 4, + "15724": 3, + "15725": 2, + "15728": 2, + "15730": 1, + "15731": 3, + "15733": 1, + "15734": 3, + "15735": 1, + "15736": 3, + "15737": 1, + "15738": 1, + "15745": 2, + "15747": 1, + "15748": 3, + "15751": 1, + "15752": 4, + "15754": 1, + "15756": 2, + "15757": 1, + "15758": 1, + "15759": 1, + "15761": 1, + "15762": 1, + "15763": 1, + "15764": 1, + "15765": 1, + "15766": 1, + "15768": 1, + "15769": 1, + "15770": 1, + "15771": 1, + "15772": 1, + "15773": 1, + "15774": 2, + "15775": 1, + "15776": 1, + "15778": 1, + "15779": 3, + "15780": 1, + "15782": 1, + "15783": 1, + "15786": 1, + "15787": 1, + "15788": 2, + "15789": 1, + "15790": 2, + "15793": 1, + "15794": 3, + "15796": 2, + "15798": 1, + "15799": 1, + "15800": 1, + "15803": 1, + "15804": 4, + "15805": 5, + "15806": 3, + "15807": 4, + "15808": 1, + "15809": 2, + "15810": 3, + "15811": 1, + "15812": 1, + "15814": 3, + "15815": 6, + "15816": 2, + "15817": 5, + "15819": 2, + "15820": 1, + "15821": 3, + "15822": 2, + "15823": 1, + "15824": 2, + "15827": 1, + "15828": 2, + "15829": 2, + "15835": 2, + "15836": 1, + "15837": 1, + "15838": 1, + "15839": 1, + "15840": 2, + "15842": 1, + "15843": 2, + "15845": 3, + "15846": 1, + "15847": 1, + "15848": 3, + "15850": 2, + "15851": 2, + "15853": 2, + "15854": 1, + "15855": 1, + "15856": 2, + "15858": 3, + "15859": 1, + "15860": 2, + "15861": 2, + "15862": 2, + "15863": 2, + "15864": 2, + "15865": 4, + "15866": 2, + "15867": 1, + "15868": 2, + "15869": 2, + "15870": 3, + "15871": 2, + "15873": 2, + "15874": 1, + "15875": 2, + "15876": 1, + "15882": 1, + "15883": 1, + "15884": 1, + "15886": 1, + "15887": 2, + "15894": 1, + "15899": 1, + "15901": 2, + "15902": 2, + "15904": 1, + "15907": 1, + "15911": 1, + "15912": 1, + "15913": 1, + "15914": 1, + "15915": 2, + "15917": 1, + "15919": 2, + "15920": 2, + "15922": 1, + "15924": 1, + "15928": 1, + "15935": 1, + "15936": 1, + "15938": 1, + "15939": 1, + "15940": 1, + "15942": 1, + "15944": 2, + "15948": 1, + "15949": 1, + "15950": 1, + "15954": 1, + "15956": 1, + "15957": 1, + "15958": 1, + "15959": 1, + "15963": 1, + "15969": 1, + "15973": 2, + "15974": 1, + "15982": 1, + "15983": 2, + "15987": 2, + "15989": 1, + "15991": 2, + "15993": 1, + "15994": 1, + "15995": 1, + "15996": 2, + "15998": 1, + "15999": 1, + "16001": 1, + "16002": 1, + "16004": 1, + "16006": 1, + "16008": 1, + "16009": 1, + "16010": 1, + "16012": 3, + "16014": 3, + "16015": 1, + "16016": 1, + "16019": 1, + "16020": 1, + "16032": 2, + "16034": 1, + "16036": 2, + "16038": 2, + "16039": 1, + "16041": 2, + "16043": 1, + "16045": 1, + "16046": 2, + "16047": 1, + "16048": 1, + "16049": 1, + "16051": 1, + "16052": 2, + "16054": 2, + "16057": 3, + "16058": 1, + "16060": 2, + "16061": 2, + "16063": 1, + "16066": 2, + "16067": 2, + "16068": 1, + "16069": 1, + "16070": 1, + "16071": 1, + "16072": 3, + "16073": 1, + "16074": 1, + "16076": 2, + "16077": 1, + "16079": 1, + "16080": 1, + "16082": 2, + "16083": 2, + "16085": 1, + "16086": 1, + "16089": 3, + "16093": 1, + "16095": 1, + "16098": 2, + "16109": 1, + "16110": 2, + "16111": 1, + "16112": 1, + "16113": 1, + "16114": 2, + "16115": 3, + "16116": 2, + "16117": 1, + "16118": 1, + "16119": 1, + "16120": 1, + "16121": 1, + "16122": 1, + "16123": 1, + "16125": 1, + "16126": 1, + "16130": 1, + "16131": 1, + "16137": 1, + "16139": 1, + "16140": 2, + "16141": 1, + "16142": 1, + "16143": 1, + "16147": 1, + "16149": 1, + "16150": 1, + "16156": 2, + "16163": 1, + "16166": 1, + "16168": 1, + "16170": 1, + "16171": 1, + "16172": 1, + "16179": 1, + "16182": 1, + "16184": 2, + "16188": 1, + "16191": 1, + "16192": 1, + "16193": 1, + "16194": 1, + "16198": 1, + "16200": 1, + "16216": 1, + "16233": 1, + "16240": 1, + "16242": 1, + "16270": 1, + "16295": 1, + "16324": 1, + "16326": 1, + "16330": 1, + "16332": 1 + }, + "started": "2025-09-11T20:10:14.087Z", + "trafficStats": { + "incomingCompressionRatio": 0.7631610107421875, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 12503630, + "incomingOctetsWireLevel": 12511630, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0006398141979569133, + "outgoingCompressionRatio": 0.7631610107421875, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 12503630, + "outgoingOctetsWireLevel": 12507630, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.00031990709897845664, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "692": 1, + "713": 1, + "715": 1, + "745": 1, + "763": 1, + "767": 1, + "784": 1, + "882": 1, + "989": 1, + "1087": 1, + "1089": 1, + "1102": 1, + "1108": 1, + "1109": 1, + "1125": 1, + "1157": 1, + "1205": 1, + "1224": 1, + "1258": 1, + "1267": 1, + "1305": 1, + "1322": 1, + "1331": 1, + "1353": 2, + "1360": 1, + "1367": 1, + "1368": 1, + "1382": 1, + "1383": 1, + "1388": 1, + "1392": 1, + "1396": 1, + "1397": 1, + "1410": 1, + "1418": 1, + "1437": 1, + "1439": 1, + "1455": 1, + "1472": 1, + "1481": 1, + "1488": 1, + "1489": 1, + "1503": 1, + "1504": 1, + "1511": 1, + "1531": 1, + "1534": 1, + "1544": 1, + "1545": 1, + "1557": 1, + "1559": 1, + "1561": 1, + "1569": 1, + "1571": 1, + "1578": 1, + "1585": 1, + "1595": 1, + "1598": 1, + "1607": 1, + "1611": 1, + "1619": 1, + "1627": 1, + "1633": 1, + "1653": 1, + "1695": 1, + "1720": 1, + "1726": 1, + "1751": 1, + "1781": 1, + "1803": 1, + "1839": 1, + "1909": 1, + "1952": 1, + "1954": 1, + "2037": 1, + "2048": 1, + "2102": 1, + "2166": 1, + "2181": 1, + "2205": 1, + "2208": 1, + "2292": 1, + "2336": 1, + "2359": 1, + "2380": 1, + "2390": 1, + "2522": 1, + "2567": 1, + "2597": 1, + "2625": 1, + "2653": 1, + "2674": 1, + "2695": 1, + "2730": 1, + "2862": 1, + "2883": 1, + "2892": 1, + "2894": 1, + "2929": 1, + "2971": 1, + "2996": 1, + "3076": 1, + "3081": 1, + "3092": 1, + "3106": 1, + "3181": 1, + "3184": 1, + "3186": 1, + "3196": 1, + "3203": 1, + "3206": 1, + "3209": 1, + "3212": 1, + "3229": 1, + "3233": 1, + "3262": 1, + "3283": 1, + "3284": 1, + "3328": 1, + "3353": 1, + "3381": 1, + "3444": 1, + "3480": 1, + "3484": 1, + "3519": 1, + "3562": 1, + "3635": 1, + "3666": 1, + "3710": 1, + "3834": 1, + "3929": 1, + "3970": 1, + "4014": 1, + "4040": 1, + "4090": 1, + "4134": 1, + "4197": 1, + "4198": 1, + "4205": 1, + "4221": 1, + "4278": 1, + "4279": 1, + "4322": 1, + "4345": 1, + "4350": 1, + "4352": 1, + "4360": 1, + "4413": 1, + "4452": 1, + "4454": 1, + "4459": 1, + "4478": 1, + "4490": 1, + "4510": 1, + "4532": 1, + "4590": 1, + "4644": 1, + "4734": 1, + "4762": 1, + "4772": 1, + "4823": 1, + "4899": 1, + "5003": 1, + "5046": 1, + "5077": 1, + "5084": 1, + "5262": 1, + "5383": 1, + "5388": 1, + "5440": 1, + "5547": 1, + "5619": 1, + "5731": 1, + "5735": 1, + "5767": 1, + "5831": 1, + "6047": 1, + "6113": 1, + "6166": 1, + "6349": 1, + "6404": 1, + "6429": 1, + "6431": 1, + "6521": 1, + "6558": 1, + "6989": 1, + "7165": 2, + "7322": 1, + "7379": 1, + "7411": 1, + "7796": 1, + "7817": 1, + "7839": 1, + "7903": 1, + "8325": 1, + "8369": 1, + "8442": 1, + "8607": 1, + "8631": 1, + "8691": 1, + "8839": 1, + "8914": 1, + "9023": 1, + "9121": 1, + "9193": 1, + "9198": 1, + "9224": 1, + "9247": 1, + "9257": 1, + "9291": 1, + "9321": 1, + "9443": 1, + "9461": 1, + "9515": 1, + "9572": 1, + "9610": 1, + "9708": 1, + "9739": 1, + "9990": 1, + "10009": 1, + "10017": 1, + "10208": 1, + "10223": 1, + "10224": 1, + "10260": 1, + "10404": 1, + "10434": 1, + "10441": 1, + "10470": 1, + "10476": 1, + "10483": 1, + "10503": 1, + "10509": 1, + "10544": 1, + "10550": 1, + "10557": 1, + "10578": 1, + "10592": 1, + "10596": 1, + "10675": 1, + "10680": 1, + "10693": 1, + "10707": 1, + "10713": 1, + "10764": 1, + "10767": 1, + "10782": 1, + "10787": 1, + "10789": 1, + "10799": 1, + "10803": 1, + "10817": 1, + "10819": 1, + "10839": 1, + "10846": 1, + "10854": 1, + "10858": 1, + "10869": 1, + "10893": 1, + "10898": 1, + "10916": 2, + "10917": 1, + "10920": 1, + "10929": 2, + "10937": 2, + "10939": 1, + "10974": 1, + "10981": 1, + "10983": 1, + "10998": 1, + "11015": 1, + "11024": 1, + "11026": 1, + "11031": 1, + "11049": 2, + "11051": 1, + "11065": 1, + "11066": 1, + "11068": 1, + "11070": 1, + "11084": 1, + "11107": 1, + "11120": 1, + "11173": 1, + "11205": 1, + "11206": 1, + "11219": 1, + "11222": 1, + "11261": 1, + "11303": 1, + "11312": 1, + "11317": 1, + "11322": 1, + "11330": 1, + "11337": 1, + "11354": 1, + "11356": 1, + "11367": 1, + "11372": 1, + "11374": 1, + "11386": 1, + "11398": 1, + "11413": 1, + "11418": 1, + "11421": 1, + "11422": 1, + "11426": 1, + "11429": 1, + "11457": 1, + "11461": 1, + "11465": 1, + "11488": 1, + "11495": 1, + "11506": 1, + "11507": 1, + "11531": 1, + "11542": 1, + "11549": 1, + "11552": 1, + "11561": 1, + "11584": 1, + "11586": 1, + "11590": 1, + "11591": 1, + "11592": 2, + "11593": 1, + "11619": 1, + "11643": 1, + "11656": 1, + "11660": 1, + "11662": 1, + "11680": 1, + "11683": 1, + "11685": 1, + "11687": 1, + "11694": 1, + "11708": 1, + "11756": 1, + "11787": 1, + "11802": 1, + "11810": 1, + "11815": 1, + "11855": 1, + "11863": 1, + "11894": 1, + "11948": 1, + "12009": 1, + "12398": 1, + "12989": 1, + "13246": 1, + "13723": 1, + "13992": 1, + "14330": 1, + "14623": 1, + "14787": 1, + "14851": 1, + "14884": 1, + "14932": 1, + "14936": 1, + "14972": 1, + "14977": 2, + "15048": 1, + "15064": 1, + "15065": 1, + "15070": 1, + "15090": 1, + "15096": 1, + "15099": 1, + "15113": 1, + "15161": 1, + "15170": 1, + "15191": 2, + "15227": 1, + "15228": 1, + "15318": 1, + "15342": 2, + "15358": 1, + "15360": 1, + "15363": 1, + "15366": 1, + "15367": 2, + "15368": 2, + "15369": 1, + "15370": 1, + "15371": 1, + "15373": 1, + "15374": 1, + "15375": 2, + "15378": 1, + "15380": 1, + "15383": 1, + "15391": 1, + "15447": 1, + "15460": 1, + "15463": 1, + "15464": 1, + "15465": 2, + "15472": 2, + "15478": 1, + "15485": 1, + "15489": 1, + "15490": 1, + "15491": 1, + "15494": 1, + "15496": 1, + "15502": 2, + "15506": 1, + "15507": 2, + "15508": 1, + "15509": 1, + "15519": 1, + "15520": 1, + "15526": 1, + "15527": 1, + "15529": 1, + "15530": 1, + "15535": 1, + "15539": 1, + "15540": 1, + "15543": 3, + "15546": 2, + "15547": 1, + "15549": 1, + "15550": 1, + "15555": 1, + "15558": 1, + "15559": 1, + "15560": 1, + "15561": 1, + "15562": 1, + "15563": 1, + "15567": 2, + "15568": 2, + "15571": 1, + "15572": 1, + "15574": 3, + "15575": 1, + "15576": 3, + "15580": 1, + "15581": 2, + "15582": 1, + "15583": 5, + "15584": 1, + "15585": 3, + "15586": 3, + "15589": 1, + "15593": 2, + "15594": 4, + "15595": 3, + "15596": 2, + "15598": 1, + "15599": 3, + "15600": 1, + "15601": 3, + "15603": 1, + "15604": 2, + "15605": 1, + "15606": 7, + "15608": 3, + "15609": 1, + "15610": 2, + "15611": 1, + "15612": 1, + "15614": 1, + "15617": 2, + "15618": 2, + "15620": 1, + "15625": 1, + "15626": 2, + "15627": 1, + "15629": 1, + "15635": 1, + "15636": 1, + "15638": 1, + "15640": 2, + "15644": 1, + "15646": 3, + "15647": 2, + "15648": 2, + "15649": 1, + "15652": 1, + "15655": 1, + "15656": 2, + "15660": 1, + "15661": 3, + "15662": 1, + "15664": 1, + "15666": 3, + "15667": 1, + "15668": 1, + "15669": 2, + "15671": 1, + "15673": 1, + "15674": 1, + "15675": 1, + "15676": 2, + "15678": 1, + "15680": 3, + "15681": 1, + "15682": 2, + "15683": 2, + "15684": 1, + "15692": 1, + "15695": 1, + "15699": 1, + "15701": 1, + "15702": 2, + "15705": 1, + "15709": 1, + "15710": 3, + "15713": 1, + "15716": 1, + "15717": 1, + "15718": 4, + "15720": 3, + "15721": 2, + "15724": 2, + "15726": 1, + "15727": 3, + "15729": 1, + "15730": 3, + "15731": 1, + "15732": 3, + "15733": 1, + "15734": 1, + "15741": 2, + "15743": 1, + "15744": 3, + "15747": 1, + "15748": 4, + "15750": 1, + "15752": 2, + "15753": 1, + "15754": 1, + "15755": 1, + "15757": 1, + "15758": 1, + "15759": 1, + "15760": 1, + "15761": 1, + "15762": 1, + "15764": 1, + "15765": 1, + "15766": 1, + "15767": 1, + "15768": 1, + "15769": 1, + "15770": 2, + "15771": 1, + "15772": 1, + "15774": 1, + "15775": 3, + "15776": 1, + "15778": 1, + "15779": 1, + "15782": 1, + "15783": 1, + "15784": 2, + "15785": 1, + "15786": 2, + "15789": 1, + "15790": 3, + "15792": 2, + "15794": 1, + "15795": 1, + "15796": 1, + "15799": 1, + "15800": 4, + "15801": 5, + "15802": 3, + "15803": 4, + "15804": 1, + "15805": 2, + "15806": 3, + "15807": 1, + "15808": 1, + "15810": 3, + "15811": 6, + "15812": 2, + "15813": 5, + "15815": 2, + "15816": 1, + "15817": 3, + "15818": 2, + "15819": 1, + "15820": 2, + "15823": 1, + "15824": 2, + "15825": 2, + "15831": 2, + "15832": 1, + "15833": 1, + "15834": 1, + "15835": 1, + "15836": 2, + "15838": 1, + "15839": 2, + "15841": 3, + "15842": 1, + "15843": 1, + "15844": 3, + "15846": 2, + "15847": 2, + "15849": 2, + "15850": 1, + "15851": 1, + "15852": 2, + "15854": 3, + "15855": 1, + "15856": 2, + "15857": 2, + "15858": 2, + "15859": 2, + "15860": 2, + "15861": 4, + "15862": 2, + "15863": 1, + "15864": 2, + "15865": 2, + "15866": 3, + "15867": 2, + "15869": 2, + "15870": 1, + "15871": 2, + "15872": 1, + "15878": 1, + "15879": 1, + "15880": 1, + "15882": 1, + "15883": 2, + "15890": 1, + "15895": 1, + "15897": 2, + "15898": 2, + "15900": 1, + "15903": 1, + "15907": 1, + "15908": 1, + "15909": 1, + "15910": 1, + "15911": 2, + "15913": 1, + "15915": 2, + "15916": 2, + "15918": 1, + "15920": 1, + "15924": 1, + "15931": 1, + "15932": 1, + "15934": 1, + "15935": 1, + "15936": 1, + "15938": 1, + "15940": 2, + "15944": 1, + "15945": 1, + "15946": 1, + "15950": 1, + "15952": 1, + "15953": 1, + "15954": 1, + "15955": 1, + "15959": 1, + "15965": 1, + "15969": 2, + "15970": 1, + "15978": 1, + "15979": 2, + "15983": 2, + "15985": 1, + "15987": 2, + "15989": 1, + "15990": 1, + "15991": 1, + "15992": 2, + "15994": 1, + "15995": 1, + "15997": 1, + "15998": 1, + "16000": 1, + "16002": 1, + "16004": 1, + "16005": 1, + "16006": 1, + "16008": 3, + "16010": 3, + "16011": 1, + "16012": 1, + "16015": 1, + "16016": 1, + "16028": 2, + "16030": 1, + "16032": 2, + "16034": 2, + "16035": 1, + "16037": 2, + "16039": 1, + "16041": 1, + "16042": 2, + "16043": 1, + "16044": 1, + "16045": 1, + "16047": 1, + "16048": 2, + "16050": 2, + "16053": 3, + "16054": 1, + "16056": 2, + "16057": 2, + "16059": 1, + "16062": 2, + "16063": 2, + "16064": 1, + "16065": 1, + "16066": 1, + "16067": 1, + "16068": 3, + "16069": 1, + "16070": 1, + "16072": 2, + "16073": 1, + "16075": 1, + "16076": 1, + "16078": 2, + "16079": 2, + "16081": 1, + "16082": 1, + "16085": 3, + "16089": 1, + "16091": 1, + "16094": 2, + "16105": 1, + "16106": 2, + "16107": 1, + "16108": 1, + "16109": 1, + "16110": 2, + "16111": 3, + "16112": 2, + "16113": 1, + "16114": 1, + "16115": 1, + "16116": 1, + "16117": 1, + "16118": 1, + "16119": 1, + "16121": 1, + "16122": 1, + "16126": 1, + "16127": 1, + "16133": 1, + "16135": 1, + "16136": 2, + "16137": 1, + "16138": 1, + "16139": 1, + "16143": 1, + "16145": 1, + "16146": 1, + "16152": 2, + "16159": 1, + "16162": 1, + "16164": 1, + "16166": 1, + "16167": 1, + "16168": 1, + "16175": 1, + "16178": 1, + "16180": 2, + "16184": 1, + "16187": 1, + "16188": 1, + "16189": 1, + "16190": 1, + "16194": 1, + "16196": 1, + "16212": 1, + "16229": 1, + "16236": 1, + "16238": 1, + "16266": 1, + "16291": 1, + "16320": 1, + "16322": 1, + "16326": 1, + "16328": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333830266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888206b1dc880559" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "06b1dc88" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_8.html b/autobahn/client/tungstenite_case_12_5_8.html new file mode 100644 index 0000000..b2cc3c0 --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_8.html @@ -0,0 +1,1985 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.8 : Pass - 2400 ms @ 2025-09-11T20:10:15.487Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=381&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: JSiSnuw54jREgrH/szlZhw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: IK79Y+ige/vCWtqJWOmDo1gPLRo=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
211212112
212612126
216112161
216312163
217412174
232612326
261712617
265512655
268512685
270512705
271412714
272512725
274312743
274512745
278012780
282712827
283812838
284912849
286112861
286312863
286512865
286912869
288412884
290112901
290712907
291212912
292912929
294912949
295812958
296012960
301013010
302813028
313913139
314813148
320513205
322013220
334213342
349313493
350713507
351513515
351913519
352213522
355313553
364513645
364713647
367813678
371513715
374113741
376113761
393413934
395813958
399513995
400414004
400514005
406614066
407314073
420414204
423014230
424014240
438314383
440214402
441214412
444614446
462814628
466714667
468214682
478214782
489114891
491214912
491514915
504215042
515115151
516015160
529015290
536915369
543615436
563215632
565915659
573615736
574415744
576215762
577115771
577715777
578515785
582615826
582815828
584615846
585315853
587715877
590715907
592815928
592915929
595515955
595615956
596215962
596715967
597915979
599315993
606016060
617916179
627816278
631116311
632316323
636616366
657816578
6617213234
663516635
675716757
702817028
722417224
726517265
733217332
735617356
737617376
744917449
779417794
780317803
782317823
782417824
783417834
808418084
820218202
827818278
831618316
833918339
834318343
840518405
843318433
852118521
857118571
858518585
861318613
865818658
867718677
872918729
873118731
8734217468
874218742
874518745
876818768
877618776
877818778
877918779
878518785
882618826
901419014
905819058
919619196
927319273
937719377
941519415
944219442
946219462
949919499
951819518
978819788
989119891
991519915
10052110052
10077110077
10243110243
10635110635
10752110752
10918110918
10986110986
11163111163
11358111358
11552111552
11635111635
11735111735
11858111858
11950111950
11998111998
12054112054
12102112102
12202112202
12224112224
12249112249
12646112646
12724112724
12794112794
13081113081
13354113354
13666113666
13739113739
13818113818
13939113939
14228114228
14404114404
14405114405
14458114458
14480114480
14795114795
15210115210
15291115291
15325115325
15339115339
15345115345
15469115469
15605115605
16020116020
16032116032
16114116114
16355116355
16425116425
16460116460
16544116544
16740116740
16865116865
17123117123
17172117172
17197117197
17218117218
17636117636
17734117734
17878117878
18386118386
18507118507
18787118787
18912118912
18947118947
19082119082
19470119470
19481119481
19570119570
19596119596
19672119672
19705119705
19719119719
19788119788
20000120000
20025120025
20102120102
20154120154
20182120182
20222120222
20333120333
20366120366
20484120484
20487120487
20547120547
20614120614
20627120627
20670120670
20694120694
20701120701
20718120718
20730120730
20779120779
20787120787
20792120792
20834241668
20839120839
20840120840
20849120849
20852120852
20857120857
20890120890
20895120895
20912120912
20916120916
21007121007
21013121013
21017121017
21055121055
21108121108
21133121133
21140121140
21172121172
21255121255
21288121288
21312121312
21313121313
21340121340
21341121341
21442121442
21455121455
21483121483
21510121510
21529121529
21536121536
21537121537
21613121613
21634121634
21642121642
21652121652
21655121655
21673121673
21674121674
217205108600
21746121746
21748121748
21754121754
21756121756
21764121764
21791121791
21792121792
21823121823
21836121836
21855121855
21869121869
21877121877
21930121930
21946121946
21952121952
21961121961
21968121968
22041122041
22055122055
22104122104
22160122160
22164122164
22167122167
22179122179
22190244380
22206122206
22343122343
22347122347
22358122358
22391122391
22470122470
22544122544
22567122567
22591122591
22601122601
22612122612
22624122624
22631122631
22633122633
22639122639
22644122644
22646122646
22648122648
22657122657
22661122661
22664122664
22673122673
22707122707
22709122709
22741122741
22752245504
22773122773
22796122796
22801122801
22815122815
22847122847
22883122883
22920122920
22926122926
22970122970
23000123000
23007369021
23014123014
23033123033
23043123043
23065123065
23067123067
23076123076
23111123111
23169123169
23175123175
23180123180
23190123190
23196123196
23340123340
23361123361
23384123384
24208124208
24312124312
24467124467
25360125360
25467125467
25603125603
26490126490
26983126983
27049127049
27343127343
28218128218
28341128341
28491128491
28593128593
29461129461
29557129557
29558129558
30508261016
30516130516
30591130591
30615130615
30618130618
30667130667
30668130668
30706130706
30710130710
30713130713
30721261442
30729130729
30730130730
30734130734
30739130739
30753130753
30754130754
30755130755
30758130758
30832130832
30833130833
30890130890
30895130895
30896130896
30897130897
30903130903
30932130932
30963130963
309644123856
31008131008
31010262020
31011131011
31016131016
31017131017
31064131064
31068131068
31082131082
31090131090
31092262184
31093131093
31095262190
31096131096
31100131100
31101131101
31102131102
31103131103
31106131106
31113131113
31116131116
31119131119
31123131123
31125131125
31126131126
31128131128
31135131135
31137131137
31138262276
31140131140
31141262282
31146131146
31151131151
31153131153
31154131154
31163393489
31164262328
31166131166
31167131167
31169131169
31170262340
31171262342
31178262356
31179131179
311804124720
31181262362
31182393546
31183131183
31184131184
311854124740
31186131186
31200131200
31209131209
31212131212
31218131218
31224131224
31225131225
31232131232
31234131234
31235131235
31242131242
31252131252
31253262506
31258131258
31262131262
31264131264
31271131271
31273131273
31274131274
31276262552
31277131277
31278131278
31279131279
31283131283
31289131289
31290131290
31305131305
31306131306
31308131308
31310131310
31312262624
31313131313
31314131314
31315131315
31317131317
31323262646
31324262648
31325262650
31326131326
31329131329
31330131330
31331262662
31332131332
31333262666
31334131334
31336131336
31337394011
31338262676
313414125364
31342131342
31343131343
31344262688
31353131353
31355131355
31356131356
31358262716
31359131359
31360262720
31362131362
31364262728
31365131365
31368131368
31370131370
31371131371
31372262744
31375262750
31376131376
31377131377
31380131380
31383131383
31385262770
313864125544
31389262778
31392131392
31393131393
31400131400
31401131401
31402131402
31403131403
314054125620
31407131407
31408262816
31410131410
31411262822
31418131418
31419131419
31420262840
31422131422
31423262846
31427131427
31428131428
31429131429
31432262864
31437131437
31441262882
31442262884
31444131444
31445131445
31446131446
31448262896
31453394359
31456131456
31459131459
31460262920
31461131461
31464262928
31468131468
31471131471
31474131474
31475131475
31478262956
31479131479
31482131482
31483131483
31484262968
31485131485
31496262992
31499262998
31500263000
31501263002
31502131502
31504131504
31506131506
31507131507
31508131508
31514131514
31515131515
31522131522
31525131525
31526131526
31528131528
31529263058
31530131530
31532131532
31533263066
31536394608
31537263074
31539131539
31540131540
31542131542
31550131550
31552131552
31553131553
31557131557
31558131558
31565263130
31568131568
31569263138
31570131570
31572263144
31573394719
31575131575
31576131576
31579131579
31582131582
31583263166
31585263170
31590263180
31592263184
31593263186
31595131595
31596263192
31600131600
31602131602
31603131603
31607131607
31613131613
31615131615
31616131616
31620131620
31621131621
31623263246
316244126496
31627263254
31628131628
31630131630
31632131632
31634131634
31635263270
31636131636
31637131637
31639131639
31640131640
31641131641
31643131643
31647131647
31655131655
31659394977
31662131662
31669131669
31672263344
31674131674
31675131675
31676131676
31678131678
31684131684
31686131686
31688131688
31691131691
31697131697
31698131698
31701131701
31702263404
31703131703
31704131704
31705131705
31706131706
31708131708
31710131710
31712131712
31713395139
31714131714
31715263430
31717131717
31719131719
31720131720
31721131721
31726131726
31730131730
31731131731
31739131739
31741131741
31743131743
31744395232
31745131745
31747131747
31749263498
31751131751
31752131752
31753263506
31754131754
31757131757
31758131758
31763263526
31766131766
31767131767
31768131768
31769131769
31773131773
31774263548
31777131777
31787263574
31795131795
31797131797
31798395394
31801131801
31803263606
31804395412
31807131807
31811131811
31822131822
31827131827
31833131833
31834263668
31837131837
31838131838
31840131840
31841131841
31850131850
31852263704
31853131853
31862131862
31863263726
31864131864
31870131870
31872131872
31873131873
31876131876
31878131878
31879131879
31880131880
31881131881
31883263766
31897131897
31900131900
31903131903
31928131928
31929131929
31933131933
31938131938
31942263884
31943263886
31944263888
31951131951
31955131955
31958131958
31970131970
31971131971
31977131977
31979131979
31982131982
31997263994
32001132001
32004264008
32007132007
32017132017
32018132018
32019132019
32030132030
32038132038
32040132040
32043132043
32067396201
32070132070
32075132075
32076264152
32077132077
32078132078
32079132079
32084264168
32088132088
32090132090
32092132092
32097132097
32099132099
32102396306
32105132105
32106132106
32111132111
32116132116
32118132118
32119132119
32120132120
32124132124
32126132126
32129132129
32131132131
32132396396
32135264270
32137132137
32141132141
32143132143
32144132144
32150132150
32158264316
32159132159
32162396486
32163396489
32164264328
32165132165
32170264340
32178132178
32179132179
32181264362
32182264364
32186132186
32187132187
32188132188
32190264380
32193396579
32195132195
32199132199
32203132203
32204264408
32207132207
32208132208
32211132211
32215132215
32217264434
32222132222
32226132226
32229132229
32230264460
32232132232
32235132235
32236132236
32239396717
32245132245
32248132248
32249132249
32252132252
32254132254
32262132262
32265132265
32273132273
32304132304
32315132315
32317132317
32334264668
32335132335
32336132336
32345132345
32370264740
32371132371
Total100824939837
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
210812108
212212122
215712157
215912159
217012170
232212322
261312613
265112651
268112681
270112701
271012710
272112721
273912739
274112741
277612776
282312823
283412834
284512845
285712857
285912859
286112861
286512865
288012880
289712897
290312903
290812908
292512925
294512945
295412954
295612956
300613006
302413024
313513135
314413144
320113201
321613216
333813338
348913489
350313503
351113511
351513515
351813518
354913549
364113641
364313643
367413674
371113711
373713737
375713757
393013930
395413954
399113991
400014000
400114001
406214062
406914069
420014200
422614226
423614236
437914379
439814398
440814408
444214442
462414624
466314663
467814678
477814778
488714887
490814908
491114911
503815038
514715147
515615156
528615286
536515365
543215432
562815628
565515655
573215732
574015740
575815758
576715767
577315773
578115781
582215822
582415824
584215842
584915849
587315873
590315903
592415924
592515925
595115951
595215952
595815958
596315963
597515975
598915989
605616056
617516175
627416274
630716307
631916319
636216362
657416574
6613213226
663116631
675316753
702417024
722017220
726117261
732817328
735217352
737217372
744517445
779017790
779917799
781917819
782017820
783017830
808018080
819818198
827418274
831218312
833518335
833918339
840118401
842918429
851718517
856718567
858118581
860918609
865418654
867318673
872518725
872718727
8730217460
873818738
874118741
876418764
877218772
877418774
877518775
878118781
882218822
901019010
905419054
919219192
926919269
937319373
941119411
943819438
949519495
951419514
10073110073
10239110239
10631110631
10748110748
10914110914
10982110982
11159111159
11354111354
11548111548
11631111631
11731111731
11854111854
11946111946
11994111994
12050112050
12098112098
12198112198
12220112220
12245112245
12642112642
12720112720
12790112790
13077113077
13350113350
13662113662
13735113735
13814113814
13935113935
14224114224
14400114400
14401114401
14454114454
14791114791
15206115206
15287115287
15321115321
15335115335
15341115341
15465115465
15601115601
16016116016
16110116110
16351116351
16421116421
16456116456
16540116540
16736116736
16861116861
17119117119
17168117168
17193117193
17214117214
17632117632
17730117730
17874117874
18382118382
18503118503
18783118783
18908118908
18943118943
19078119078
19466119466
19477119477
19566119566
19592119592
19668119668
19701119701
19715119715
19784119784
19996119996
20021120021
20098120098
20150120150
20178120178
20218120218
20329120329
20362120362
20480120480
20483120483
20543120543
20610120610
20623120623
20666120666
20690120690
20697120697
20714120714
20726120726
20775120775
20783120783
20788120788
20830241660
20835120835
20836120836
20845120845
20848120848
20853120853
20886120886
20891120891
20908120908
20912120912
21003121003
21009121009
21013121013
21051121051
21104121104
21129121129
21136121136
21168121168
21251121251
21284121284
21308121308
21309121309
21336121336
21337121337
21438121438
21451121451
21479121479
21506121506
21525121525
21532121532
21533121533
21609121609
21630121630
21638121638
21648121648
21651121651
21669121669
21670121670
21742121742
21744121744
21750121750
21752121752
21760121760
21787121787
21788121788
21819121819
21832121832
21851121851
21865121865
21873121873
21926121926
21942121942
21948121948
21957121957
21964121964
22037122037
22051122051
22100122100
22156122156
22160122160
22163122163
22175122175
22186244372
22202122202
22339122339
22343122343
22354122354
22387122387
22466122466
22540122540
22563122563
22587122587
22597122597
22608122608
22620122620
22627122627
22629122629
22635122635
22640122640
22642122642
22644122644
22653122653
22657122657
22660122660
22669122669
22703122703
22705122705
22737122737
22748245496
22769122769
22792122792
22797122797
22811122811
22843122843
22879122879
22916122916
22922122922
22966122966
22996122996
23003369009
23010123010
23029123029
23039123039
23061123061
23063123063
23072123072
23107123107
23165123165
23171123171
23176123176
23186123186
23192123192
23336123336
23357123357
23380123380
24204124204
24308124308
24463124463
25356125356
25463125463
25599125599
26486126486
26979126979
27045127045
27339127339
28214128214
28337128337
28487128487
28589128589
29457129457
29553129553
29554129554
30504261008
30508130508
30512130512
30587130587
30611130611
30614130614
30663130663
30664130664
30702130702
30706130706
30709130709
30717261434
30725130725
30726130726
30730130730
30735130735
30749130749
30750130750
30751130751
30754130754
30828130828
30829130829
30886130886
30891130891
30892130892
30893130893
30899130899
30928130928
30959130959
309604123840
31004131004
31006262012
31007131007
31012131012
31013131013
31060131060
31064131064
31078131078
31086131086
31088262176
31089131089
31091262182
31092131092
31096131096
31097131097
31098131098
31099131099
31102131102
31109131109
31112131112
31115131115
31119131119
31121131121
31122131122
31124131124
31131131131
31133131133
31134262268
31136131136
31137262274
31142131142
31147131147
31149131149
31150131150
31159393477
31160262320
31162131162
31163131163
31165131165
31166262332
31167262334
31174262348
31175131175
311764124704
31177262354
311784124712
31179131179
31180131180
311814124724
31182131182
31196131196
31205131205
31208131208
31214131214
31220131220
31221131221
31228131228
31230131230
31231131231
31238131238
31248131248
31249262498
31254131254
31258131258
31260131260
31267131267
31269131269
31270131270
31272262544
31273131273
31274131274
31275131275
31279131279
31285131285
31286131286
31301131301
31302131302
31304131304
31306131306
31308262616
31309131309
31310131310
31311131311
31313131313
31319262638
31320262640
31321262642
31322131322
31325131325
31326131326
31327262654
31328131328
31329262658
31330131330
31332131332
31333393999
31334262668
313374125348
31338131338
31339131339
31340262680
31349131349
31351131351
31352131352
31354262708
31355131355
31356262712
31358131358
31360262720
31361131361
31364131364
31366131366
31367131367
31368262736
31371262742
31372131372
31373131373
31376131376
31379131379
31381262762
313824125528
31385262770
31388131388
31389131389
31396131396
31397131397
31398131398
31399131399
314014125604
31403131403
31404262808
31406131406
31407262814
31414131414
31415131415
31416262832
31418131418
31419262838
31423131423
31424131424
31425131425
31428262856
31433131433
31437262874
31438262876
31440131440
31441131441
31442131442
31444262888
31449394347
31452131452
31455131455
31456262912
31457131457
31460262920
31464131464
31467131467
31470131470
31471131471
31474262948
31475131475
31478131478
31479131479
31480262960
31481131481
31492262984
31495262990
31496262992
31497262994
31498131498
31500131500
31502131502
31503131503
31504263008
31510131510
31511131511
31518131518
31521131521
31522131522
31524131524
31525263050
31526131526
31528131528
31529263058
31532394596
31533263066
31535131535
31536131536
31538131538
31546131546
31548131548
31549131549
31553131553
31554131554
31561263122
31564131564
31565263130
31566131566
31568263136
31569394707
31571131571
31572131572
31575131575
31578131578
31579263158
31581263162
31586263172
31588263176
31589263178
31591131591
31592263184
31596131596
31598131598
31599131599
31603131603
31607131607
31609131609
31611131611
31612131612
31616131616
31617131617
31619263238
316204126480
31623263246
31624131624
31626131626
31628131628
31630131630
31631394893
31632131632
31633131633
31635131635
31636131636
31637131637
31639131639
31643131643
31651131651
31655394965
31658131658
31665131665
31668263336
31670131670
31671131671
31672131672
31674131674
31680131680
31682131682
31684131684
31687131687
31693131693
31694131694
31697131697
31698263396
31699131699
31700131700
31701131701
31702131702
31704131704
31706131706
31708131708
31709395127
31710131710
31711263422
31713131713
31715131715
31716131716
31717131717
31722131722
31726131726
31727131727
31735131735
31737131737
31739131739
31740395220
31741131741
31743131743
31745263490
31747131747
31748131748
31749263498
31750131750
31753131753
31754131754
31759263518
31762131762
31763131763
31764131764
31765131765
31768131768
31769131769
31770263540
31773131773
31783263566
31791131791
31793131793
31794395382
31797131797
31799263598
31800395400
31803131803
31807131807
31818131818
31823131823
31829131829
31830263660
31833131833
31834131834
31836131836
31837131837
31846131846
31848263696
31849131849
31858131858
31859263718
31860131860
31866131866
31868131868
31869131869
31872131872
31874131874
31875131875
31876131876
31877131877
31879263758
31893131893
31896131896
31899131899
31924131924
31925131925
31929131929
31934131934
31938263876
31939263878
31940263880
31947131947
31951131951
31954131954
31966131966
31967131967
31973131973
31975131975
31978131978
31993263986
31997131997
32000264000
32003132003
32013132013
32014132014
32015132015
32026132026
32034132034
32036132036
32039132039
32063396189
32066132066
32071132071
32072264144
32073132073
32074132074
32075132075
32080264160
32084132084
32086132086
32088132088
32093132093
32095132095
32098396294
32101132101
32102132102
32107132107
32112132112
32114132114
32115132115
32116132116
32120132120
32122132122
32125132125
32127132127
32128396384
32131264262
32133132133
32137132137
32139132139
32140132140
32146132146
32154264308
32155132155
32158396474
32159396477
32160264320
32161132161
32166264332
32174132174
32175132175
32177264354
32178264356
32182132182
32183132183
32184132184
32186264372
32189396567
32191132191
32195132195
32199132199
32200264400
32203132203
32204132204
32207132207
32211132211
32213264426
32218132218
32222132222
32225132225
32226264452
32228132228
32231132231
32232132232
32235396705
32241132241
32244132244
32245132245
32248132248
32250132250
32258132258
32261132261
32269132269
32300132300
32311132311
32313132313
32330264660
32331132331
32332132332
32341132341
32366264732
32367132367
Total100224935828
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333831266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882eaab5536e943
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6561616235353336
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_8.json b/autobahn/client/tungstenite_case_12_5_8.json new file mode 100644 index 0000000..b7ac7fb --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_8.json @@ -0,0 +1,1832 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 381, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 2400, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=381&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: JSiSnuw54jREgrH/szlZhw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: IK79Y+ige/vCWtqJWOmDo1gPLRo=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2112": 1, + "2126": 1, + "2161": 1, + "2163": 1, + "2174": 1, + "2326": 1, + "2617": 1, + "2655": 1, + "2685": 1, + "2705": 1, + "2714": 1, + "2725": 1, + "2743": 1, + "2745": 1, + "2780": 1, + "2827": 1, + "2838": 1, + "2849": 1, + "2861": 1, + "2863": 1, + "2865": 1, + "2869": 1, + "2884": 1, + "2901": 1, + "2907": 1, + "2912": 1, + "2929": 1, + "2949": 1, + "2958": 1, + "2960": 1, + "3010": 1, + "3028": 1, + "3139": 1, + "3148": 1, + "3205": 1, + "3220": 1, + "3342": 1, + "3493": 1, + "3507": 1, + "3515": 1, + "3519": 1, + "3522": 1, + "3553": 1, + "3645": 1, + "3647": 1, + "3678": 1, + "3715": 1, + "3741": 1, + "3761": 1, + "3934": 1, + "3958": 1, + "3995": 1, + "4004": 1, + "4005": 1, + "4066": 1, + "4073": 1, + "4204": 1, + "4230": 1, + "4240": 1, + "4383": 1, + "4402": 1, + "4412": 1, + "4446": 1, + "4628": 1, + "4667": 1, + "4682": 1, + "4782": 1, + "4891": 1, + "4912": 1, + "4915": 1, + "5042": 1, + "5151": 1, + "5160": 1, + "5290": 1, + "5369": 1, + "5436": 1, + "5632": 1, + "5659": 1, + "5736": 1, + "5744": 1, + "5762": 1, + "5771": 1, + "5777": 1, + "5785": 1, + "5826": 1, + "5828": 1, + "5846": 1, + "5853": 1, + "5877": 1, + "5907": 1, + "5928": 1, + "5929": 1, + "5955": 1, + "5956": 1, + "5962": 1, + "5967": 1, + "5979": 1, + "5993": 1, + "6060": 1, + "6179": 1, + "6278": 1, + "6311": 1, + "6323": 1, + "6366": 1, + "6578": 1, + "6617": 2, + "6635": 1, + "6757": 1, + "7028": 1, + "7224": 1, + "7265": 1, + "7332": 1, + "7356": 1, + "7376": 1, + "7449": 1, + "7794": 1, + "7803": 1, + "7823": 1, + "7824": 1, + "7834": 1, + "8084": 1, + "8202": 1, + "8278": 1, + "8316": 1, + "8339": 1, + "8343": 1, + "8405": 1, + "8433": 1, + "8521": 1, + "8571": 1, + "8585": 1, + "8613": 1, + "8658": 1, + "8677": 1, + "8729": 1, + "8731": 1, + "8734": 2, + "8742": 1, + "8745": 1, + "8768": 1, + "8776": 1, + "8778": 1, + "8779": 1, + "8785": 1, + "8826": 1, + "9014": 1, + "9058": 1, + "9196": 1, + "9273": 1, + "9377": 1, + "9415": 1, + "9442": 1, + "9462": 1, + "9499": 1, + "9518": 1, + "9788": 1, + "9891": 1, + "9915": 1, + "10052": 1, + "10077": 1, + "10243": 1, + "10635": 1, + "10752": 1, + "10918": 1, + "10986": 1, + "11163": 1, + "11358": 1, + "11552": 1, + "11635": 1, + "11735": 1, + "11858": 1, + "11950": 1, + "11998": 1, + "12054": 1, + "12102": 1, + "12202": 1, + "12224": 1, + "12249": 1, + "12646": 1, + "12724": 1, + "12794": 1, + "13081": 1, + "13354": 1, + "13666": 1, + "13739": 1, + "13818": 1, + "13939": 1, + "14228": 1, + "14404": 1, + "14405": 1, + "14458": 1, + "14480": 1, + "14795": 1, + "15210": 1, + "15291": 1, + "15325": 1, + "15339": 1, + "15345": 1, + "15469": 1, + "15605": 1, + "16020": 1, + "16032": 1, + "16114": 1, + "16355": 1, + "16425": 1, + "16460": 1, + "16544": 1, + "16740": 1, + "16865": 1, + "17123": 1, + "17172": 1, + "17197": 1, + "17218": 1, + "17636": 1, + "17734": 1, + "17878": 1, + "18386": 1, + "18507": 1, + "18787": 1, + "18912": 1, + "18947": 1, + "19082": 1, + "19470": 1, + "19481": 1, + "19570": 1, + "19596": 1, + "19672": 1, + "19705": 1, + "19719": 1, + "19788": 1, + "20000": 1, + "20025": 1, + "20102": 1, + "20154": 1, + "20182": 1, + "20222": 1, + "20333": 1, + "20366": 1, + "20484": 1, + "20487": 1, + "20547": 1, + "20614": 1, + "20627": 1, + "20670": 1, + "20694": 1, + "20701": 1, + "20718": 1, + "20730": 1, + "20779": 1, + "20787": 1, + "20792": 1, + "20834": 2, + "20839": 1, + "20840": 1, + "20849": 1, + "20852": 1, + "20857": 1, + "20890": 1, + "20895": 1, + "20912": 1, + "20916": 1, + "21007": 1, + "21013": 1, + "21017": 1, + "21055": 1, + "21108": 1, + "21133": 1, + "21140": 1, + "21172": 1, + "21255": 1, + "21288": 1, + "21312": 1, + "21313": 1, + "21340": 1, + "21341": 1, + "21442": 1, + "21455": 1, + "21483": 1, + "21510": 1, + "21529": 1, + "21536": 1, + "21537": 1, + "21613": 1, + "21634": 1, + "21642": 1, + "21652": 1, + "21655": 1, + "21673": 1, + "21674": 1, + "21720": 5, + "21746": 1, + "21748": 1, + "21754": 1, + "21756": 1, + "21764": 1, + "21791": 1, + "21792": 1, + "21823": 1, + "21836": 1, + "21855": 1, + "21869": 1, + "21877": 1, + "21930": 1, + "21946": 1, + "21952": 1, + "21961": 1, + "21968": 1, + "22041": 1, + "22055": 1, + "22104": 1, + "22160": 1, + "22164": 1, + "22167": 1, + "22179": 1, + "22190": 2, + "22206": 1, + "22343": 1, + "22347": 1, + "22358": 1, + "22391": 1, + "22470": 1, + "22544": 1, + "22567": 1, + "22591": 1, + "22601": 1, + "22612": 1, + "22624": 1, + "22631": 1, + "22633": 1, + "22639": 1, + "22644": 1, + "22646": 1, + "22648": 1, + "22657": 1, + "22661": 1, + "22664": 1, + "22673": 1, + "22707": 1, + "22709": 1, + "22741": 1, + "22752": 2, + "22773": 1, + "22796": 1, + "22801": 1, + "22815": 1, + "22847": 1, + "22883": 1, + "22920": 1, + "22926": 1, + "22970": 1, + "23000": 1, + "23007": 3, + "23014": 1, + "23033": 1, + "23043": 1, + "23065": 1, + "23067": 1, + "23076": 1, + "23111": 1, + "23169": 1, + "23175": 1, + "23180": 1, + "23190": 1, + "23196": 1, + "23340": 1, + "23361": 1, + "23384": 1, + "24208": 1, + "24312": 1, + "24467": 1, + "25360": 1, + "25467": 1, + "25603": 1, + "26490": 1, + "26983": 1, + "27049": 1, + "27343": 1, + "28218": 1, + "28341": 1, + "28491": 1, + "28593": 1, + "29461": 1, + "29557": 1, + "29558": 1, + "30508": 2, + "30516": 1, + "30591": 1, + "30615": 1, + "30618": 1, + "30667": 1, + "30668": 1, + "30706": 1, + "30710": 1, + "30713": 1, + "30721": 2, + "30729": 1, + "30730": 1, + "30734": 1, + "30739": 1, + "30753": 1, + "30754": 1, + "30755": 1, + "30758": 1, + "30832": 1, + "30833": 1, + "30890": 1, + "30895": 1, + "30896": 1, + "30897": 1, + "30903": 1, + "30932": 1, + "30963": 1, + "30964": 4, + "31008": 1, + "31010": 2, + "31011": 1, + "31016": 1, + "31017": 1, + "31064": 1, + "31068": 1, + "31082": 1, + "31090": 1, + "31092": 2, + "31093": 1, + "31095": 2, + "31096": 1, + "31100": 1, + "31101": 1, + "31102": 1, + "31103": 1, + "31106": 1, + "31113": 1, + "31116": 1, + "31119": 1, + "31123": 1, + "31125": 1, + "31126": 1, + "31128": 1, + "31135": 1, + "31137": 1, + "31138": 2, + "31140": 1, + "31141": 2, + "31146": 1, + "31151": 1, + "31153": 1, + "31154": 1, + "31163": 3, + "31164": 2, + "31166": 1, + "31167": 1, + "31169": 1, + "31170": 2, + "31171": 2, + "31178": 2, + "31179": 1, + "31180": 4, + "31181": 2, + "31182": 3, + "31183": 1, + "31184": 1, + "31185": 4, + "31186": 1, + "31200": 1, + "31209": 1, + "31212": 1, + "31218": 1, + "31224": 1, + "31225": 1, + "31232": 1, + "31234": 1, + "31235": 1, + "31242": 1, + "31252": 1, + "31253": 2, + "31258": 1, + "31262": 1, + "31264": 1, + "31271": 1, + "31273": 1, + "31274": 1, + "31276": 2, + "31277": 1, + "31278": 1, + "31279": 1, + "31283": 1, + "31289": 1, + "31290": 1, + "31305": 1, + "31306": 1, + "31308": 1, + "31310": 1, + "31312": 2, + "31313": 1, + "31314": 1, + "31315": 1, + "31317": 1, + "31323": 2, + "31324": 2, + "31325": 2, + "31326": 1, + "31329": 1, + "31330": 1, + "31331": 2, + "31332": 1, + "31333": 2, + "31334": 1, + "31336": 1, + "31337": 3, + "31338": 2, + "31341": 4, + "31342": 1, + "31343": 1, + "31344": 2, + "31353": 1, + "31355": 1, + "31356": 1, + "31358": 2, + "31359": 1, + "31360": 2, + "31362": 1, + "31364": 2, + "31365": 1, + "31368": 1, + "31370": 1, + "31371": 1, + "31372": 2, + "31375": 2, + "31376": 1, + "31377": 1, + "31380": 1, + "31383": 1, + "31385": 2, + "31386": 4, + "31389": 2, + "31392": 1, + "31393": 1, + "31400": 1, + "31401": 1, + "31402": 1, + "31403": 1, + "31405": 4, + "31407": 1, + "31408": 2, + "31410": 1, + "31411": 2, + "31418": 1, + "31419": 1, + "31420": 2, + "31422": 1, + "31423": 2, + "31427": 1, + "31428": 1, + "31429": 1, + "31432": 2, + "31437": 1, + "31441": 2, + "31442": 2, + "31444": 1, + "31445": 1, + "31446": 1, + "31448": 2, + "31453": 3, + "31456": 1, + "31459": 1, + "31460": 2, + "31461": 1, + "31464": 2, + "31468": 1, + "31471": 1, + "31474": 1, + "31475": 1, + "31478": 2, + "31479": 1, + "31482": 1, + "31483": 1, + "31484": 2, + "31485": 1, + "31496": 2, + "31499": 2, + "31500": 2, + "31501": 2, + "31502": 1, + "31504": 1, + "31506": 1, + "31507": 1, + "31508": 1, + "31514": 1, + "31515": 1, + "31522": 1, + "31525": 1, + "31526": 1, + "31528": 1, + "31529": 2, + "31530": 1, + "31532": 1, + "31533": 2, + "31536": 3, + "31537": 2, + "31539": 1, + "31540": 1, + "31542": 1, + "31550": 1, + "31552": 1, + "31553": 1, + "31557": 1, + "31558": 1, + "31565": 2, + "31568": 1, + "31569": 2, + "31570": 1, + "31572": 2, + "31573": 3, + "31575": 1, + "31576": 1, + "31579": 1, + "31582": 1, + "31583": 2, + "31585": 2, + "31590": 2, + "31592": 2, + "31593": 2, + "31595": 1, + "31596": 2, + "31600": 1, + "31602": 1, + "31603": 1, + "31607": 1, + "31613": 1, + "31615": 1, + "31616": 1, + "31620": 1, + "31621": 1, + "31623": 2, + "31624": 4, + "31627": 2, + "31628": 1, + "31630": 1, + "31632": 1, + "31634": 1, + "31635": 2, + "31636": 1, + "31637": 1, + "31639": 1, + "31640": 1, + "31641": 1, + "31643": 1, + "31647": 1, + "31655": 1, + "31659": 3, + "31662": 1, + "31669": 1, + "31672": 2, + "31674": 1, + "31675": 1, + "31676": 1, + "31678": 1, + "31684": 1, + "31686": 1, + "31688": 1, + "31691": 1, + "31697": 1, + "31698": 1, + "31701": 1, + "31702": 2, + "31703": 1, + "31704": 1, + "31705": 1, + "31706": 1, + "31708": 1, + "31710": 1, + "31712": 1, + "31713": 3, + "31714": 1, + "31715": 2, + "31717": 1, + "31719": 1, + "31720": 1, + "31721": 1, + "31726": 1, + "31730": 1, + "31731": 1, + "31739": 1, + "31741": 1, + "31743": 1, + "31744": 3, + "31745": 1, + "31747": 1, + "31749": 2, + "31751": 1, + "31752": 1, + "31753": 2, + "31754": 1, + "31757": 1, + "31758": 1, + "31763": 2, + "31766": 1, + "31767": 1, + "31768": 1, + "31769": 1, + "31773": 1, + "31774": 2, + "31777": 1, + "31787": 2, + "31795": 1, + "31797": 1, + "31798": 3, + "31801": 1, + "31803": 2, + "31804": 3, + "31807": 1, + "31811": 1, + "31822": 1, + "31827": 1, + "31833": 1, + "31834": 2, + "31837": 1, + "31838": 1, + "31840": 1, + "31841": 1, + "31850": 1, + "31852": 2, + "31853": 1, + "31862": 1, + "31863": 2, + "31864": 1, + "31870": 1, + "31872": 1, + "31873": 1, + "31876": 1, + "31878": 1, + "31879": 1, + "31880": 1, + "31881": 1, + "31883": 2, + "31897": 1, + "31900": 1, + "31903": 1, + "31928": 1, + "31929": 1, + "31933": 1, + "31938": 1, + "31942": 2, + "31943": 2, + "31944": 2, + "31951": 1, + "31955": 1, + "31958": 1, + "31970": 1, + "31971": 1, + "31977": 1, + "31979": 1, + "31982": 1, + "31997": 2, + "32001": 1, + "32004": 2, + "32007": 1, + "32017": 1, + "32018": 1, + "32019": 1, + "32030": 1, + "32038": 1, + "32040": 1, + "32043": 1, + "32067": 3, + "32070": 1, + "32075": 1, + "32076": 2, + "32077": 1, + "32078": 1, + "32079": 1, + "32084": 2, + "32088": 1, + "32090": 1, + "32092": 1, + "32097": 1, + "32099": 1, + "32102": 3, + "32105": 1, + "32106": 1, + "32111": 1, + "32116": 1, + "32118": 1, + "32119": 1, + "32120": 1, + "32124": 1, + "32126": 1, + "32129": 1, + "32131": 1, + "32132": 3, + "32135": 2, + "32137": 1, + "32141": 1, + "32143": 1, + "32144": 1, + "32150": 1, + "32158": 2, + "32159": 1, + "32162": 3, + "32163": 3, + "32164": 2, + "32165": 1, + "32170": 2, + "32178": 1, + "32179": 1, + "32181": 2, + "32182": 2, + "32186": 1, + "32187": 1, + "32188": 1, + "32190": 2, + "32193": 3, + "32195": 1, + "32199": 1, + "32203": 1, + "32204": 2, + "32207": 1, + "32208": 1, + "32211": 1, + "32215": 1, + "32217": 2, + "32222": 1, + "32226": 1, + "32229": 1, + "32230": 2, + "32232": 1, + "32235": 1, + "32236": 1, + "32239": 3, + "32245": 1, + "32248": 1, + "32249": 1, + "32252": 1, + "32254": 1, + "32262": 1, + "32265": 1, + "32273": 1, + "32304": 1, + "32315": 1, + "32317": 1, + "32334": 2, + "32335": 1, + "32336": 1, + "32345": 1, + "32370": 2, + "32371": 1 + }, + "started": "2025-09-11T20:10:15.487Z", + "trafficStats": { + "incomingCompressionRatio": 0.7608511962890625, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 24931572, + "incomingOctetsWireLevel": 24939572, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.00032087828236422475, + "outgoingCompressionRatio": 0.7608511962890625, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 24931572, + "outgoingOctetsWireLevel": 24935572, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.00016043914118211237, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "2108": 1, + "2122": 1, + "2157": 1, + "2159": 1, + "2170": 1, + "2322": 1, + "2613": 1, + "2651": 1, + "2681": 1, + "2701": 1, + "2710": 1, + "2721": 1, + "2739": 1, + "2741": 1, + "2776": 1, + "2823": 1, + "2834": 1, + "2845": 1, + "2857": 1, + "2859": 1, + "2861": 1, + "2865": 1, + "2880": 1, + "2897": 1, + "2903": 1, + "2908": 1, + "2925": 1, + "2945": 1, + "2954": 1, + "2956": 1, + "3006": 1, + "3024": 1, + "3135": 1, + "3144": 1, + "3201": 1, + "3216": 1, + "3338": 1, + "3489": 1, + "3503": 1, + "3511": 1, + "3515": 1, + "3518": 1, + "3549": 1, + "3641": 1, + "3643": 1, + "3674": 1, + "3711": 1, + "3737": 1, + "3757": 1, + "3930": 1, + "3954": 1, + "3991": 1, + "4000": 1, + "4001": 1, + "4062": 1, + "4069": 1, + "4200": 1, + "4226": 1, + "4236": 1, + "4379": 1, + "4398": 1, + "4408": 1, + "4442": 1, + "4624": 1, + "4663": 1, + "4678": 1, + "4778": 1, + "4887": 1, + "4908": 1, + "4911": 1, + "5038": 1, + "5147": 1, + "5156": 1, + "5286": 1, + "5365": 1, + "5432": 1, + "5628": 1, + "5655": 1, + "5732": 1, + "5740": 1, + "5758": 1, + "5767": 1, + "5773": 1, + "5781": 1, + "5822": 1, + "5824": 1, + "5842": 1, + "5849": 1, + "5873": 1, + "5903": 1, + "5924": 1, + "5925": 1, + "5951": 1, + "5952": 1, + "5958": 1, + "5963": 1, + "5975": 1, + "5989": 1, + "6056": 1, + "6175": 1, + "6274": 1, + "6307": 1, + "6319": 1, + "6362": 1, + "6574": 1, + "6613": 2, + "6631": 1, + "6753": 1, + "7024": 1, + "7220": 1, + "7261": 1, + "7328": 1, + "7352": 1, + "7372": 1, + "7445": 1, + "7790": 1, + "7799": 1, + "7819": 1, + "7820": 1, + "7830": 1, + "8080": 1, + "8198": 1, + "8274": 1, + "8312": 1, + "8335": 1, + "8339": 1, + "8401": 1, + "8429": 1, + "8517": 1, + "8567": 1, + "8581": 1, + "8609": 1, + "8654": 1, + "8673": 1, + "8725": 1, + "8727": 1, + "8730": 2, + "8738": 1, + "8741": 1, + "8764": 1, + "8772": 1, + "8774": 1, + "8775": 1, + "8781": 1, + "8822": 1, + "9010": 1, + "9054": 1, + "9192": 1, + "9269": 1, + "9373": 1, + "9411": 1, + "9438": 1, + "9495": 1, + "9514": 1, + "10073": 1, + "10239": 1, + "10631": 1, + "10748": 1, + "10914": 1, + "10982": 1, + "11159": 1, + "11354": 1, + "11548": 1, + "11631": 1, + "11731": 1, + "11854": 1, + "11946": 1, + "11994": 1, + "12050": 1, + "12098": 1, + "12198": 1, + "12220": 1, + "12245": 1, + "12642": 1, + "12720": 1, + "12790": 1, + "13077": 1, + "13350": 1, + "13662": 1, + "13735": 1, + "13814": 1, + "13935": 1, + "14224": 1, + "14400": 1, + "14401": 1, + "14454": 1, + "14791": 1, + "15206": 1, + "15287": 1, + "15321": 1, + "15335": 1, + "15341": 1, + "15465": 1, + "15601": 1, + "16016": 1, + "16110": 1, + "16351": 1, + "16421": 1, + "16456": 1, + "16540": 1, + "16736": 1, + "16861": 1, + "17119": 1, + "17168": 1, + "17193": 1, + "17214": 1, + "17632": 1, + "17730": 1, + "17874": 1, + "18382": 1, + "18503": 1, + "18783": 1, + "18908": 1, + "18943": 1, + "19078": 1, + "19466": 1, + "19477": 1, + "19566": 1, + "19592": 1, + "19668": 1, + "19701": 1, + "19715": 1, + "19784": 1, + "19996": 1, + "20021": 1, + "20098": 1, + "20150": 1, + "20178": 1, + "20218": 1, + "20329": 1, + "20362": 1, + "20480": 1, + "20483": 1, + "20543": 1, + "20610": 1, + "20623": 1, + "20666": 1, + "20690": 1, + "20697": 1, + "20714": 1, + "20726": 1, + "20775": 1, + "20783": 1, + "20788": 1, + "20830": 2, + "20835": 1, + "20836": 1, + "20845": 1, + "20848": 1, + "20853": 1, + "20886": 1, + "20891": 1, + "20908": 1, + "20912": 1, + "21003": 1, + "21009": 1, + "21013": 1, + "21051": 1, + "21104": 1, + "21129": 1, + "21136": 1, + "21168": 1, + "21251": 1, + "21284": 1, + "21308": 1, + "21309": 1, + "21336": 1, + "21337": 1, + "21438": 1, + "21451": 1, + "21479": 1, + "21506": 1, + "21525": 1, + "21532": 1, + "21533": 1, + "21609": 1, + "21630": 1, + "21638": 1, + "21648": 1, + "21651": 1, + "21669": 1, + "21670": 1, + "21742": 1, + "21744": 1, + "21750": 1, + "21752": 1, + "21760": 1, + "21787": 1, + "21788": 1, + "21819": 1, + "21832": 1, + "21851": 1, + "21865": 1, + "21873": 1, + "21926": 1, + "21942": 1, + "21948": 1, + "21957": 1, + "21964": 1, + "22037": 1, + "22051": 1, + "22100": 1, + "22156": 1, + "22160": 1, + "22163": 1, + "22175": 1, + "22186": 2, + "22202": 1, + "22339": 1, + "22343": 1, + "22354": 1, + "22387": 1, + "22466": 1, + "22540": 1, + "22563": 1, + "22587": 1, + "22597": 1, + "22608": 1, + "22620": 1, + "22627": 1, + "22629": 1, + "22635": 1, + "22640": 1, + "22642": 1, + "22644": 1, + "22653": 1, + "22657": 1, + "22660": 1, + "22669": 1, + "22703": 1, + "22705": 1, + "22737": 1, + "22748": 2, + "22769": 1, + "22792": 1, + "22797": 1, + "22811": 1, + "22843": 1, + "22879": 1, + "22916": 1, + "22922": 1, + "22966": 1, + "22996": 1, + "23003": 3, + "23010": 1, + "23029": 1, + "23039": 1, + "23061": 1, + "23063": 1, + "23072": 1, + "23107": 1, + "23165": 1, + "23171": 1, + "23176": 1, + "23186": 1, + "23192": 1, + "23336": 1, + "23357": 1, + "23380": 1, + "24204": 1, + "24308": 1, + "24463": 1, + "25356": 1, + "25463": 1, + "25599": 1, + "26486": 1, + "26979": 1, + "27045": 1, + "27339": 1, + "28214": 1, + "28337": 1, + "28487": 1, + "28589": 1, + "29457": 1, + "29553": 1, + "29554": 1, + "30504": 2, + "30508": 1, + "30512": 1, + "30587": 1, + "30611": 1, + "30614": 1, + "30663": 1, + "30664": 1, + "30702": 1, + "30706": 1, + "30709": 1, + "30717": 2, + "30725": 1, + "30726": 1, + "30730": 1, + "30735": 1, + "30749": 1, + "30750": 1, + "30751": 1, + "30754": 1, + "30828": 1, + "30829": 1, + "30886": 1, + "30891": 1, + "30892": 1, + "30893": 1, + "30899": 1, + "30928": 1, + "30959": 1, + "30960": 4, + "31004": 1, + "31006": 2, + "31007": 1, + "31012": 1, + "31013": 1, + "31060": 1, + "31064": 1, + "31078": 1, + "31086": 1, + "31088": 2, + "31089": 1, + "31091": 2, + "31092": 1, + "31096": 1, + "31097": 1, + "31098": 1, + "31099": 1, + "31102": 1, + "31109": 1, + "31112": 1, + "31115": 1, + "31119": 1, + "31121": 1, + "31122": 1, + "31124": 1, + "31131": 1, + "31133": 1, + "31134": 2, + "31136": 1, + "31137": 2, + "31142": 1, + "31147": 1, + "31149": 1, + "31150": 1, + "31159": 3, + "31160": 2, + "31162": 1, + "31163": 1, + "31165": 1, + "31166": 2, + "31167": 2, + "31174": 2, + "31175": 1, + "31176": 4, + "31177": 2, + "31178": 4, + "31179": 1, + "31180": 1, + "31181": 4, + "31182": 1, + "31196": 1, + "31205": 1, + "31208": 1, + "31214": 1, + "31220": 1, + "31221": 1, + "31228": 1, + "31230": 1, + "31231": 1, + "31238": 1, + "31248": 1, + "31249": 2, + "31254": 1, + "31258": 1, + "31260": 1, + "31267": 1, + "31269": 1, + "31270": 1, + "31272": 2, + "31273": 1, + "31274": 1, + "31275": 1, + "31279": 1, + "31285": 1, + "31286": 1, + "31301": 1, + "31302": 1, + "31304": 1, + "31306": 1, + "31308": 2, + "31309": 1, + "31310": 1, + "31311": 1, + "31313": 1, + "31319": 2, + "31320": 2, + "31321": 2, + "31322": 1, + "31325": 1, + "31326": 1, + "31327": 2, + "31328": 1, + "31329": 2, + "31330": 1, + "31332": 1, + "31333": 3, + "31334": 2, + "31337": 4, + "31338": 1, + "31339": 1, + "31340": 2, + "31349": 1, + "31351": 1, + "31352": 1, + "31354": 2, + "31355": 1, + "31356": 2, + "31358": 1, + "31360": 2, + "31361": 1, + "31364": 1, + "31366": 1, + "31367": 1, + "31368": 2, + "31371": 2, + "31372": 1, + "31373": 1, + "31376": 1, + "31379": 1, + "31381": 2, + "31382": 4, + "31385": 2, + "31388": 1, + "31389": 1, + "31396": 1, + "31397": 1, + "31398": 1, + "31399": 1, + "31401": 4, + "31403": 1, + "31404": 2, + "31406": 1, + "31407": 2, + "31414": 1, + "31415": 1, + "31416": 2, + "31418": 1, + "31419": 2, + "31423": 1, + "31424": 1, + "31425": 1, + "31428": 2, + "31433": 1, + "31437": 2, + "31438": 2, + "31440": 1, + "31441": 1, + "31442": 1, + "31444": 2, + "31449": 3, + "31452": 1, + "31455": 1, + "31456": 2, + "31457": 1, + "31460": 2, + "31464": 1, + "31467": 1, + "31470": 1, + "31471": 1, + "31474": 2, + "31475": 1, + "31478": 1, + "31479": 1, + "31480": 2, + "31481": 1, + "31492": 2, + "31495": 2, + "31496": 2, + "31497": 2, + "31498": 1, + "31500": 1, + "31502": 1, + "31503": 1, + "31504": 2, + "31510": 1, + "31511": 1, + "31518": 1, + "31521": 1, + "31522": 1, + "31524": 1, + "31525": 2, + "31526": 1, + "31528": 1, + "31529": 2, + "31532": 3, + "31533": 2, + "31535": 1, + "31536": 1, + "31538": 1, + "31546": 1, + "31548": 1, + "31549": 1, + "31553": 1, + "31554": 1, + "31561": 2, + "31564": 1, + "31565": 2, + "31566": 1, + "31568": 2, + "31569": 3, + "31571": 1, + "31572": 1, + "31575": 1, + "31578": 1, + "31579": 2, + "31581": 2, + "31586": 2, + "31588": 2, + "31589": 2, + "31591": 1, + "31592": 2, + "31596": 1, + "31598": 1, + "31599": 1, + "31603": 1, + "31607": 1, + "31609": 1, + "31611": 1, + "31612": 1, + "31616": 1, + "31617": 1, + "31619": 2, + "31620": 4, + "31623": 2, + "31624": 1, + "31626": 1, + "31628": 1, + "31630": 1, + "31631": 3, + "31632": 1, + "31633": 1, + "31635": 1, + "31636": 1, + "31637": 1, + "31639": 1, + "31643": 1, + "31651": 1, + "31655": 3, + "31658": 1, + "31665": 1, + "31668": 2, + "31670": 1, + "31671": 1, + "31672": 1, + "31674": 1, + "31680": 1, + "31682": 1, + "31684": 1, + "31687": 1, + "31693": 1, + "31694": 1, + "31697": 1, + "31698": 2, + "31699": 1, + "31700": 1, + "31701": 1, + "31702": 1, + "31704": 1, + "31706": 1, + "31708": 1, + "31709": 3, + "31710": 1, + "31711": 2, + "31713": 1, + "31715": 1, + "31716": 1, + "31717": 1, + "31722": 1, + "31726": 1, + "31727": 1, + "31735": 1, + "31737": 1, + "31739": 1, + "31740": 3, + "31741": 1, + "31743": 1, + "31745": 2, + "31747": 1, + "31748": 1, + "31749": 2, + "31750": 1, + "31753": 1, + "31754": 1, + "31759": 2, + "31762": 1, + "31763": 1, + "31764": 1, + "31765": 1, + "31768": 1, + "31769": 1, + "31770": 2, + "31773": 1, + "31783": 2, + "31791": 1, + "31793": 1, + "31794": 3, + "31797": 1, + "31799": 2, + "31800": 3, + "31803": 1, + "31807": 1, + "31818": 1, + "31823": 1, + "31829": 1, + "31830": 2, + "31833": 1, + "31834": 1, + "31836": 1, + "31837": 1, + "31846": 1, + "31848": 2, + "31849": 1, + "31858": 1, + "31859": 2, + "31860": 1, + "31866": 1, + "31868": 1, + "31869": 1, + "31872": 1, + "31874": 1, + "31875": 1, + "31876": 1, + "31877": 1, + "31879": 2, + "31893": 1, + "31896": 1, + "31899": 1, + "31924": 1, + "31925": 1, + "31929": 1, + "31934": 1, + "31938": 2, + "31939": 2, + "31940": 2, + "31947": 1, + "31951": 1, + "31954": 1, + "31966": 1, + "31967": 1, + "31973": 1, + "31975": 1, + "31978": 1, + "31993": 2, + "31997": 1, + "32000": 2, + "32003": 1, + "32013": 1, + "32014": 1, + "32015": 1, + "32026": 1, + "32034": 1, + "32036": 1, + "32039": 1, + "32063": 3, + "32066": 1, + "32071": 1, + "32072": 2, + "32073": 1, + "32074": 1, + "32075": 1, + "32080": 2, + "32084": 1, + "32086": 1, + "32088": 1, + "32093": 1, + "32095": 1, + "32098": 3, + "32101": 1, + "32102": 1, + "32107": 1, + "32112": 1, + "32114": 1, + "32115": 1, + "32116": 1, + "32120": 1, + "32122": 1, + "32125": 1, + "32127": 1, + "32128": 3, + "32131": 2, + "32133": 1, + "32137": 1, + "32139": 1, + "32140": 1, + "32146": 1, + "32154": 2, + "32155": 1, + "32158": 3, + "32159": 3, + "32160": 2, + "32161": 1, + "32166": 2, + "32174": 1, + "32175": 1, + "32177": 2, + "32178": 2, + "32182": 1, + "32183": 1, + "32184": 1, + "32186": 2, + "32189": 3, + "32191": 1, + "32195": 1, + "32199": 1, + "32200": 2, + "32203": 1, + "32204": 1, + "32207": 1, + "32211": 1, + "32213": 2, + "32218": 1, + "32222": 1, + "32225": 1, + "32226": 2, + "32228": 1, + "32231": 1, + "32232": 1, + "32235": 3, + "32241": 1, + "32244": 1, + "32245": 1, + "32248": 1, + "32250": 1, + "32258": 1, + "32261": 1, + "32269": 1, + "32300": 1, + "32311": 1, + "32313": 1, + "32330": 2, + "32331": 1, + "32332": 1, + "32341": 1, + "32366": 2, + "32367": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333831266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882eaab5536e943" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "eaab5536" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_12_5_9.html b/autobahn/client/tungstenite_case_12_5_9.html new file mode 100644 index 0000000..eec1f9c --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_9.html @@ -0,0 +1,2019 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 12.5.9 : Pass - 5177 ms @ 2025-09-11T20:10:17.889Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=382&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 2MzjCa+m3/7rip971pzKrg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 6EM6iNWx0gfdU9Zzj/fXrA9eiUE=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
7208214416
722417224
730017300
730917309
731217312
747517475
747817478
752117521
757217572
759917599
762517625
787717877
790617906
791417914
817218172
820318203
822518225
855818558
858418584
858518585
890118901
893818938
904019040
914419144
918119181
946919469
948819488
949919499
954819548
955019550
957219572
986319863
986519865
990419904
990619906
993419934
996519965
10375110375
10387110387
10439110439
10546110546
10563110563
10611110611
10841110841
10842110842
10849110849
11081111081
11171111171
11198111198
11202111202
11223111223
11228111228
11272111272
11282111282
11323111323
11324111324
11335111335
11440111440
11587111587
11715111715
11822111822
12020112020
12138112138
12232112232
12306112306
12436112436
12563112563
12862112862
12940112940
13038113038
13301113301
13427113427
13540113540
13914113914
14043114043
14108114108
14266114266
14281114281
14290114290
14318114318
14329114329
14335114335
14386114386
14395114395
14401114401
14489114489
14496114496
14499114499
14604114604
14620229240
14628114628
14693114693
14733114733
14744114744
14748114748
14759114759
14765114765
14773114773
14802114802
15152115152
15277115277
15417115417
15851115851
15983115983
16033116033
16127116127
16149116149
16196116196
16709116709
16782116782
16898116898
17741117741
17878117878
17948117948
18015118015
18035118035
18140118140
18188118188
18298118298
18343118343
18807118807
18929118929
19067119067
19402119402
19515119515
19638119638
20333120333
20453120453
20577120577
20579120579
20672120672
20793120793
20831120831
20847120847
20860120860
21558121558
21658121658
21716121716
21866121866
21868121868
21877121877
22456122456
22469122469
22473122473
22839122839
22951122951
23071123071
23170123170
23308123308
23441123441
23783123783
23887123887
23994123994
24095124095
24206124206
24335124335
25223125223
25352125352
25471125471
25707125707
25805125805
25817125817
25866125866
25913125913
25972125972
26513126513
26540126540
26610126610
27105127105
27210127210
27321127321
27731127731
27763127763
27796127796
28403128403
28538128538
28673128673
28960128960
29036129036
29092129092
29120129120
29198129198
29266129266
29267129267
29291129291
29389129389
29491129491
30629130629
30652130652
30685130685
31288131288
31308131308
31382131382
31426131426
31492131492
31556131556
31867131867
32004132004
32150132150
32734132734
32809132809
32898132898
33423133423
33531133531
33618133618
33643133643
33783133783
33916133916
34330134330
34396134396
34441134441
34735134735
34838134838
34935134935
35251135251
35326135326
35338135338
36086136086
36208136208
36295136295
36319136319
36384136384
36407136407
36429136429
36483136483
36507136507
36543136543
36576136576
36636136636
37754137754
37826137826
37872137872
37919137919
37966137966
38005138005
38059138059
38129138129
38196138196
38283138283
38350138350
38424138424
39122139122
39153139153
39189139189
39254139254
39278139278
39418139418
39613139613
39741139741
39821139821
40524140524
40604140604
40612140612
40656140656
40765140765
40830140830
41469141469
41521141521
41538141538
41674141674
41688141688
41754141754
41825141825
41844141844
41859141859
41881141881
41891283782
41913141913
41970141970
41979283958
41984141984
42006142006
42012142012
42017142017
42044142044
42109142109
42151142151
42223142223
42240142240
42249142249
42258284516
42289142289
42304142304
42348284696
42349142349
42361142361
42363142363
42367142367
42376142376
42379142379
42418142418
42655142655
42661142661
42707142707
42745142745
42746142746
42781142781
42791142791
42813142813
42825142825
42862142862
42865142865
42870142870
42877142877
42943142943
42989142989
43146143146
43215143215
43223143223
43225143225
43237143237
43241143241
43270143270
43274143274
43283143283
43306143306
43311143311
43350143350
43467143467
43504143504
43511143511
43534143534
43551143551
43553143553
43564143564
43580143580
43613143613
43618143618
43619143619
43644143644
43658143658
43665143665
43666143666
43697143697
43709143709
43717143717
43756143756
43773143773
43779143779
43786143786
43790143790
43792143792
43844143844
43848143848
43896143896
43917143917
43928143928
43949143949
44156144156
44293144293
44428144428
44532144532
44539144539
44641144641
44672144672
44698144698
44798144798
44980144980
45091145091
45199145199
45576145576
45584145584
45610145610
45740145740
45743145743
45747145747
45784145784
45830291660
45837145837
45846145846
45864145864
45871145871
45890145890
45930145930
46572146572
46663146663
46664146664
47246147246
47376147376
47502147502
48794148794
48898148898
48999148999
50061150061
50174150174
50288150288
50877150877
50979150979
51080151080
52716152716
52769152769
52889152889
53320153320
53422153422
53526153526
55401155401
55494155494
55499155499
55603155603
55621155621
55747155747
57804157804
57903157903
58001158001
58246158246
58356158356
58477158477
59722159722
59770159770
59875159875
61019161019
61144161144
61183161183
61778161778
61780161780
61781161781
61861161861
61862161862
61985161985
61986161986
61987161987
62234162234
62277162277
62279162279
622842124568
62286162286
62288162288
62291162291
62292162292
62314162314
62319162319
62324162324
62344162344
62345162345
62346162346
62347162347
62348162348
62371162371
62403162403
62419162419
62427162427
62430162430
62436162436
62438162438
62440162440
62442162442
62459162459
62463162463
62469162469
62471162471
62483162483
62484162484
62487162487
62491162491
62494162494
62495162495
624992124998
62501162501
625032125006
62504162504
62506162506
62508162508
62509162509
62511162511
62520162520
62521162521
62522162522
625253187575
625272125054
62529162529
62532162532
625353187605
625362125072
62537162537
62538162538
62542162542
62552162552
62564162564
62567162567
62568162568
62569162569
62570162570
62571162571
62575162575
62577162577
62600162600
62601162601
62602162602
626102125220
62615162615
62616162616
62617162617
62639162639
626403187920
62644162644
626482125296
62650162650
62652162652
626533187959
62655162655
62657162657
62659162659
62660162660
62661162661
626653187995
62670162670
62677162677
626852125370
62689162689
626902125380
62691162691
626922125384
626942125388
62695162695
626962125392
626972125394
62698162698
62700162700
627012125402
62702162702
62704162704
627083188124
627312125462
62733162733
62738162738
62740162740
627412125482
62742162742
627432125486
627443188232
62745162745
627483188244
62751162751
627523188256
627534251012
62755162755
62756162756
62757162757
62758162758
62760162760
627612125522
62762162762
627642125528
62765162765
62767162767
62771162771
62778162778
627833188349
62784162784
62785162785
627863188358
62788162788
62789162789
62790162790
627922125584
62793162793
627942125588
62797162797
62798162798
628002125600
628012125602
62802162802
62804162804
62806162806
628072125614
62808162808
62810162810
628135314065
628143188442
62815162815
62818162818
628213188463
62832162832
62843162843
62844162844
628452125690
62849162849
62854162854
62859162859
62863162863
62864162864
62867162867
62882162882
62897162897
62899162899
62914162914
62915162915
62916162916
629183188754
629192125838
62921162921
62922162922
62924162924
62927162927
62928162928
62932162932
62940162940
62941162941
62944162944
62945162945
62947162947
62952162952
62954162954
62955162955
62957162957
629582125916
629592125918
62960162960
62962162962
629643188892
629652125930
629662125932
629673188901
62972162972
629773188931
62979162979
62980162980
62981162981
62982162982
62987162987
62988162988
62989162989
62994162994
629964251984
62997162997
63001163001
63003163003
630072126014
63013163013
630152126030
63026163026
63033163033
63039163039
63049163049
63055163055
63063163063
631132126226
63114163114
63119163119
631202126240
63121163121
631222126244
63123163123
63125163125
63130163130
63134163134
63138163138
63149163149
63151163151
63154163154
63161163161
63165163165
63167163167
63170163170
63171163171
63173163173
63174163174
63177163177
63178163178
63182163182
631832126366
631912126382
63192163192
63194163194
63195163195
63197163197
63198163198
63199163199
632022126404
63205163205
63210163210
63212163212
63215163215
63230163230
63232163232
63236163236
632672126534
63280163280
63282163282
63285163285
63371163371
63373163373
63374163374
63379163379
63382163382
63383163383
634102126820
63412163412
63431163431
63433163433
63435163435
63461163461
63462163462
63465163465
63466163466
634672126934
63468163468
63471163471
63472163472
63474163474
63495163495
63498163498
63504163504
63513163513
63515163515
63526163526
63527163527
63528163528
635432127086
63547163547
63548163548
635492127098
635512127102
63552163552
63560163560
63563163563
63564163564
635772127154
63584163584
63619163619
63620163620
63621163621
636333190899
636352127270
63639163639
636562127312
63657163657
636662127332
63669163669
63672163672
63673163673
636782127356
63682163682
63683163683
63684163684
636852127370
636882127376
63689163689
63693163693
63699163699
637014254804
63702163702
63703163703
63704163704
637072127414
63709163709
637123191136
63713163713
63724163724
63742163742
63770163770
63784163784
63786163786
638053191415
638272127654
63831163831
63836163836
638402127680
638423191526
638454255380
63846163846
63856163856
63861163861
638673191601
63868163868
638693191607
63872163872
63874163874
63881163881
63882163882
638852127770
63887163887
63888163888
63889163889
63891163891
63892163892
638942127788
63896163896
63897163897
63898163898
63901163901
63903163903
63905163905
63906163906
63918163918
63920163920
63921163921
63926163926
63941163941
63984163984
63986163986
63988163988
640043192012
64095164095
64098164098
640992128198
64100164100
64101164101
64109164109
64111164111
64113164113
641562128312
64163164163
64194164194
64231164231
64232164232
64233164233
642442128488
642452128490
64246164246
64247164247
642492128498
64254164254
64277164277
64280164280
64282164282
64292164292
64295164295
64296164296
64310164310
64314164314
64315164315
64316164316
64317164317
64333164333
64334164334
64339164339
64342164342
64348164348
643492128698
643503193050
64351164351
64368164368
64379164379
64383164383
64384164384
64395164395
64396164396
643973193191
64398164398
64400164400
64405164405
64423164423
64427164427
64428164428
64429164429
64431164431
64434164434
64437164437
64442164442
644502128900
64451164451
64453164453
64455164455
64468164468
64469164469
64470164470
64472164472
644763193428
64477164477
64479164479
Total100349774635
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
7204214408
722017220
729617296
730517305
730817308
747117471
747417474
751717517
756817568
759517595
762117621
787317873
790217902
791017910
816818168
819918199
822118221
855418554
858018580
858118581
889718897
893418934
903619036
914019140
917719177
946519465
948419484
949519495
954419544
954619546
956819568
985919859
986119861
990019900
990219902
993019930
996119961
10371110371
10383110383
10435110435
10542110542
10559110559
10607110607
10837110837
10838110838
10845110845
11077111077
11167111167
11194111194
11198111198
11219111219
11224111224
11268111268
11278111278
11319111319
11320111320
11331111331
11436111436
11583111583
11711111711
11818111818
12016112016
12134112134
12228112228
12302112302
12432112432
12559112559
12858112858
12936112936
13034113034
13297113297
13423113423
13536113536
13910113910
14039114039
14104114104
14262114262
14277114277
14286114286
14314114314
14325114325
14331114331
14382114382
14391114391
14397114397
14485114485
14492114492
14495114495
14600114600
14616229232
14624114624
14689114689
14729114729
14740114740
14744114744
14755114755
14761114761
14769114769
14798114798
15148115148
15273115273
15413115413
15847115847
15979115979
16029116029
16123116123
16145116145
16192116192
16705116705
16778116778
16894116894
17737117737
17874117874
17944117944
18011118011
18031118031
18136118136
18184118184
18294118294
18339118339
18803118803
18925118925
19063119063
19398119398
19511119511
19634119634
20329120329
20449120449
20573120573
20575120575
20668120668
20789120789
20827120827
20843120843
20856120856
21554121554
21654121654
21712121712
21862121862
21864121864
21873121873
22452122452
22465122465
22469122469
22835122835
22947122947
23067123067
23166123166
23304123304
23437123437
23779123779
23883123883
23990123990
24091124091
24202124202
24331124331
25219125219
25348125348
25467125467
25703125703
25801125801
25813125813
25862125862
25909125909
25968125968
26509126509
26536126536
26606126606
27101127101
27206127206
27317127317
27727127727
27759127759
27792127792
28399128399
28534128534
28669128669
29032129032
29088129088
29116129116
29194129194
29262129262
29263129263
29287129287
29385129385
29487129487
30625130625
30648130648
30681130681
31284131284
31304131304
31378131378
31422131422
31488131488
31552131552
31863131863
32000132000
32146132146
32730132730
32805132805
33419133419
33527133527
33614133614
33639133639
33779133779
33912133912
34326134326
34392134392
34437134437
34731134731
34834134834
34931134931
35247135247
35322135322
35334135334
36082136082
36204136204
36291136291
36315136315
36380136380
36403136403
36425136425
36479136479
36503136503
36539136539
36572136572
36632136632
37750137750
37822137822
37868137868
37915137915
37962137962
38001138001
38055138055
38125138125
38192138192
38279138279
38346138346
38420138420
39118139118
39149139149
39185139185
39250139250
39274139274
39414139414
39609139609
39737139737
39817139817
40520140520
40600140600
40608140608
40652140652
40761140761
40826140826
41465141465
41517141517
41534141534
41670141670
41684141684
41750141750
41821141821
41840141840
41855141855
41877141877
41887283774
41909141909
41966141966
41975283950
41980141980
42002142002
42008142008
42013142013
42040142040
42105142105
42147142147
42219142219
42236142236
42245142245
42254284508
42285142285
42300142300
42344284688
42345142345
42357142357
42359142359
42363142363
42372142372
42375142375
42414142414
42651142651
42657142657
42703142703
42741142741
42742142742
42777142777
42787142787
42809142809
42821142821
42858142858
42861142861
42866142866
42873142873
42939142939
42985142985
43142143142
43211143211
43219143219
43221143221
43233143233
43237143237
43266143266
43270143270
43279143279
43302143302
43307143307
43346143346
43463143463
43500143500
43507143507
43530143530
43547143547
43549143549
43560143560
43576143576
43609143609
43614143614
43615143615
43640143640
43654143654
43661143661
43662143662
43693143693
43705143705
43713143713
43752143752
43769143769
43775143775
43782143782
43786143786
43788143788
43840143840
43844143844
43892143892
43913143913
43924143924
43945143945
44152144152
44289144289
44424144424
44528144528
44535144535
44637144637
44668144668
44694144694
44794144794
44976144976
45087145087
45195145195
45572145572
45580145580
45606145606
45736145736
45739145739
45743145743
45780145780
45826291652
45833145833
45842145842
45860145860
45867145867
45886145886
45926145926
46568146568
46659146659
46660146660
47242147242
47372147372
47498147498
48790148790
48894148894
48995148995
50057150057
50170150170
50284150284
50873150873
50975150975
51076151076
52712152712
52765152765
52885152885
53316153316
53418153418
53522153522
55397155397
55490155490
55495155495
55599155599
55617155617
55743155743
57800157800
57899157899
57997157997
58242158242
58352158352
58473158473
59718159718
59766159766
59871159871
61015161015
61140161140
61179161179
61774161774
61776161776
61777161777
61854161854
61857161857
61858161858
61981161981
61982161982
61983161983
62230162230
62273162273
62275162275
622802124560
62282162282
62284162284
62287162287
62288162288
62310162310
62315162315
62320162320
62340162340
62341162341
62342162342
62343162343
62344162344
62367162367
62399162399
62415162415
62423162423
62426162426
62432162432
62434162434
62436162436
62438162438
62455162455
62459162459
62465162465
62467162467
62479162479
62480162480
62483162483
62487162487
62490162490
62491162491
624952124990
62497162497
624992124998
62500162500
62502162502
62504162504
62505162505
62507162507
62516162516
62517162517
62518162518
625213187563
625232125046
62525162525
62528162528
625313187593
625322125064
62533162533
62534162534
62538162538
62548162548
62560162560
62563162563
62564162564
62565162565
62566162566
62567162567
62571162571
62573162573
62596162596
62597162597
62598162598
626062125212
62611162611
62612162612
62613162613
62635162635
626363187908
62640162640
626442125288
62646162646
62648162648
626493187947
62651162651
62653162653
62655162655
62656162656
62657162657
626613187983
62666162666
62673162673
626812125362
62685162685
626862125372
62687162687
626882125376
626902125380
62691162691
626922125384
626932125386
62694162694
62696162696
626972125394
62698162698
62700162700
627043188112
627272125454
62729162729
62734162734
62736162736
627372125474
62738162738
627392125478
627403188220
62741162741
627443188232
62747162747
627483188244
627494250996
62751162751
62752162752
62753162753
62754162754
62756162756
627572125514
62758162758
627602125520
62761162761
62763162763
62767162767
62774162774
627793188337
62780162780
62781162781
627823188346
62784162784
62785162785
62786162786
627882125576
62789162789
627902125580
62793162793
62794162794
627962125592
627972125594
62798162798
62800162800
62802162802
628032125606
62804162804
62806162806
628095314045
628103188430
62811162811
62814162814
628173188451
62828162828
62839162839
62840162840
628412125682
62845162845
62850162850
62855162855
62859162859
62860162860
62863162863
62878162878
62893162893
62895162895
62910162910
62911162911
62912162912
629143188742
629152125830
62917162917
62918162918
62920162920
62923162923
62924162924
62928162928
62936162936
62937162937
62940162940
62941162941
62943162943
62948162948
62950162950
62951162951
62953162953
629542125908
629552125910
62956162956
62958162958
629603188880
629612125922
629622125924
629633188889
62968162968
629733188919
62975162975
62976162976
62977162977
62978162978
62983162983
62984162984
62985162985
62990162990
629924251968
62993162993
62997162997
62999162999
630032126006
63009163009
630112126022
63022163022
63029163029
63035163035
63045163045
63051163051
63059163059
631092126218
63110163110
63115163115
631162126232
63117163117
631182126236
63119163119
63121163121
63126163126
63130163130
63134163134
63145163145
63147163147
63150163150
63157163157
63161163161
63163163163
63166163166
63167163167
63169163169
63170163170
63173163173
63174163174
63178163178
631792126358
631872126374
63188163188
63190163190
63191163191
63193163193
63194163194
63195163195
631982126396
63201163201
63206163206
63208163208
63211163211
63226163226
63228163228
63232163232
632632126526
63276163276
63278163278
63281163281
63367163367
63369163369
63370163370
63375163375
63378163378
63379163379
634062126812
63408163408
63427163427
63429163429
63431163431
63457163457
63458163458
63461163461
63462163462
634632126926
63464163464
63467163467
63468163468
63470163470
63491163491
63494163494
63500163500
63509163509
63511163511
63522163522
63523163523
63524163524
635392127078
63543163543
63544163544
635452127090
635472127094
63548163548
63556163556
63559163559
63560163560
635732127146
63580163580
63615163615
63616163616
63617163617
636293190887
636312127262
63635163635
636522127304
63653163653
636622127324
63665163665
63668163668
63669163669
636742127348
63678163678
63679163679
63680163680
636812127362
636842127368
63685163685
63689163689
63695163695
636974254788
63698163698
63699163699
63700163700
637032127406
63705163705
637083191124
63709163709
63720163720
63738163738
63766163766
63780163780
63782163782
638013191403
638232127646
63827163827
63832163832
638362127672
638383191514
638414255364
63842163842
63852163852
63857163857
638633191589
63864163864
638653191595
63868163868
63870163870
63877163877
63878163878
638812127762
63883163883
63884163884
63885163885
63887163887
63888163888
638902127780
63892163892
63893163893
63894163894
63897163897
63899163899
63901163901
63902163902
63914163914
63916163916
63917163917
63922163922
63937163937
63980163980
63982163982
63984163984
640003192000
64091164091
64094164094
640952128190
64096164096
64097164097
64105164105
64107164107
64109164109
641522128304
64159164159
64190164190
64227164227
64228164228
64229164229
642402128480
642412128482
64242164242
64243164243
642452128490
64250164250
64273164273
64276164276
64278164278
64288164288
64291164291
64292164292
64306164306
64310164310
64311164311
64312164312
64313164313
64329164329
64330164330
64335164335
64338164338
64344164344
643452128690
643463193038
64347164347
64364164364
64375164375
64379164379
64380164380
64391164391
64392164392
643933193179
64394164394
64396164396
64401164401
64419164419
64423164423
64424164424
64425164425
64427164427
64430164430
64433164433
64438164438
644462128892
64447164447
64449164449
64451164451
64464164464
64465164465
64466164466
64468164468
644723193416
64473164473
64475164475
Total100249770626
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333832266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888228cb524e2b23
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3238636235323465
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_12_5_9.json b/autobahn/client/tungstenite_case_12_5_9.json new file mode 100644 index 0000000..234758b --- /dev/null +++ b/autobahn/client/tungstenite_case_12_5_9.json @@ -0,0 +1,1866 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 382, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use default permessage-deflate offer.", + "droppedByMe": true, + "duration": 5177, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=382&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 2MzjCa+m3/7rip971pzKrg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 6EM6iNWx0gfdU9Zzj/fXrA9eiUE=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "12.5.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "7208": 2, + "7224": 1, + "7300": 1, + "7309": 1, + "7312": 1, + "7475": 1, + "7478": 1, + "7521": 1, + "7572": 1, + "7599": 1, + "7625": 1, + "7877": 1, + "7906": 1, + "7914": 1, + "8172": 1, + "8203": 1, + "8225": 1, + "8558": 1, + "8584": 1, + "8585": 1, + "8901": 1, + "8938": 1, + "9040": 1, + "9144": 1, + "9181": 1, + "9469": 1, + "9488": 1, + "9499": 1, + "9548": 1, + "9550": 1, + "9572": 1, + "9863": 1, + "9865": 1, + "9904": 1, + "9906": 1, + "9934": 1, + "9965": 1, + "10375": 1, + "10387": 1, + "10439": 1, + "10546": 1, + "10563": 1, + "10611": 1, + "10841": 1, + "10842": 1, + "10849": 1, + "11081": 1, + "11171": 1, + "11198": 1, + "11202": 1, + "11223": 1, + "11228": 1, + "11272": 1, + "11282": 1, + "11323": 1, + "11324": 1, + "11335": 1, + "11440": 1, + "11587": 1, + "11715": 1, + "11822": 1, + "12020": 1, + "12138": 1, + "12232": 1, + "12306": 1, + "12436": 1, + "12563": 1, + "12862": 1, + "12940": 1, + "13038": 1, + "13301": 1, + "13427": 1, + "13540": 1, + "13914": 1, + "14043": 1, + "14108": 1, + "14266": 1, + "14281": 1, + "14290": 1, + "14318": 1, + "14329": 1, + "14335": 1, + "14386": 1, + "14395": 1, + "14401": 1, + "14489": 1, + "14496": 1, + "14499": 1, + "14604": 1, + "14620": 2, + "14628": 1, + "14693": 1, + "14733": 1, + "14744": 1, + "14748": 1, + "14759": 1, + "14765": 1, + "14773": 1, + "14802": 1, + "15152": 1, + "15277": 1, + "15417": 1, + "15851": 1, + "15983": 1, + "16033": 1, + "16127": 1, + "16149": 1, + "16196": 1, + "16709": 1, + "16782": 1, + "16898": 1, + "17741": 1, + "17878": 1, + "17948": 1, + "18015": 1, + "18035": 1, + "18140": 1, + "18188": 1, + "18298": 1, + "18343": 1, + "18807": 1, + "18929": 1, + "19067": 1, + "19402": 1, + "19515": 1, + "19638": 1, + "20333": 1, + "20453": 1, + "20577": 1, + "20579": 1, + "20672": 1, + "20793": 1, + "20831": 1, + "20847": 1, + "20860": 1, + "21558": 1, + "21658": 1, + "21716": 1, + "21866": 1, + "21868": 1, + "21877": 1, + "22456": 1, + "22469": 1, + "22473": 1, + "22839": 1, + "22951": 1, + "23071": 1, + "23170": 1, + "23308": 1, + "23441": 1, + "23783": 1, + "23887": 1, + "23994": 1, + "24095": 1, + "24206": 1, + "24335": 1, + "25223": 1, + "25352": 1, + "25471": 1, + "25707": 1, + "25805": 1, + "25817": 1, + "25866": 1, + "25913": 1, + "25972": 1, + "26513": 1, + "26540": 1, + "26610": 1, + "27105": 1, + "27210": 1, + "27321": 1, + "27731": 1, + "27763": 1, + "27796": 1, + "28403": 1, + "28538": 1, + "28673": 1, + "28960": 1, + "29036": 1, + "29092": 1, + "29120": 1, + "29198": 1, + "29266": 1, + "29267": 1, + "29291": 1, + "29389": 1, + "29491": 1, + "30629": 1, + "30652": 1, + "30685": 1, + "31288": 1, + "31308": 1, + "31382": 1, + "31426": 1, + "31492": 1, + "31556": 1, + "31867": 1, + "32004": 1, + "32150": 1, + "32734": 1, + "32809": 1, + "32898": 1, + "33423": 1, + "33531": 1, + "33618": 1, + "33643": 1, + "33783": 1, + "33916": 1, + "34330": 1, + "34396": 1, + "34441": 1, + "34735": 1, + "34838": 1, + "34935": 1, + "35251": 1, + "35326": 1, + "35338": 1, + "36086": 1, + "36208": 1, + "36295": 1, + "36319": 1, + "36384": 1, + "36407": 1, + "36429": 1, + "36483": 1, + "36507": 1, + "36543": 1, + "36576": 1, + "36636": 1, + "37754": 1, + "37826": 1, + "37872": 1, + "37919": 1, + "37966": 1, + "38005": 1, + "38059": 1, + "38129": 1, + "38196": 1, + "38283": 1, + "38350": 1, + "38424": 1, + "39122": 1, + "39153": 1, + "39189": 1, + "39254": 1, + "39278": 1, + "39418": 1, + "39613": 1, + "39741": 1, + "39821": 1, + "40524": 1, + "40604": 1, + "40612": 1, + "40656": 1, + "40765": 1, + "40830": 1, + "41469": 1, + "41521": 1, + "41538": 1, + "41674": 1, + "41688": 1, + "41754": 1, + "41825": 1, + "41844": 1, + "41859": 1, + "41881": 1, + "41891": 2, + "41913": 1, + "41970": 1, + "41979": 2, + "41984": 1, + "42006": 1, + "42012": 1, + "42017": 1, + "42044": 1, + "42109": 1, + "42151": 1, + "42223": 1, + "42240": 1, + "42249": 1, + "42258": 2, + "42289": 1, + "42304": 1, + "42348": 2, + "42349": 1, + "42361": 1, + "42363": 1, + "42367": 1, + "42376": 1, + "42379": 1, + "42418": 1, + "42655": 1, + "42661": 1, + "42707": 1, + "42745": 1, + "42746": 1, + "42781": 1, + "42791": 1, + "42813": 1, + "42825": 1, + "42862": 1, + "42865": 1, + "42870": 1, + "42877": 1, + "42943": 1, + "42989": 1, + "43146": 1, + "43215": 1, + "43223": 1, + "43225": 1, + "43237": 1, + "43241": 1, + "43270": 1, + "43274": 1, + "43283": 1, + "43306": 1, + "43311": 1, + "43350": 1, + "43467": 1, + "43504": 1, + "43511": 1, + "43534": 1, + "43551": 1, + "43553": 1, + "43564": 1, + "43580": 1, + "43613": 1, + "43618": 1, + "43619": 1, + "43644": 1, + "43658": 1, + "43665": 1, + "43666": 1, + "43697": 1, + "43709": 1, + "43717": 1, + "43756": 1, + "43773": 1, + "43779": 1, + "43786": 1, + "43790": 1, + "43792": 1, + "43844": 1, + "43848": 1, + "43896": 1, + "43917": 1, + "43928": 1, + "43949": 1, + "44156": 1, + "44293": 1, + "44428": 1, + "44532": 1, + "44539": 1, + "44641": 1, + "44672": 1, + "44698": 1, + "44798": 1, + "44980": 1, + "45091": 1, + "45199": 1, + "45576": 1, + "45584": 1, + "45610": 1, + "45740": 1, + "45743": 1, + "45747": 1, + "45784": 1, + "45830": 2, + "45837": 1, + "45846": 1, + "45864": 1, + "45871": 1, + "45890": 1, + "45930": 1, + "46572": 1, + "46663": 1, + "46664": 1, + "47246": 1, + "47376": 1, + "47502": 1, + "48794": 1, + "48898": 1, + "48999": 1, + "50061": 1, + "50174": 1, + "50288": 1, + "50877": 1, + "50979": 1, + "51080": 1, + "52716": 1, + "52769": 1, + "52889": 1, + "53320": 1, + "53422": 1, + "53526": 1, + "55401": 1, + "55494": 1, + "55499": 1, + "55603": 1, + "55621": 1, + "55747": 1, + "57804": 1, + "57903": 1, + "58001": 1, + "58246": 1, + "58356": 1, + "58477": 1, + "59722": 1, + "59770": 1, + "59875": 1, + "61019": 1, + "61144": 1, + "61183": 1, + "61778": 1, + "61780": 1, + "61781": 1, + "61861": 1, + "61862": 1, + "61985": 1, + "61986": 1, + "61987": 1, + "62234": 1, + "62277": 1, + "62279": 1, + "62284": 2, + "62286": 1, + "62288": 1, + "62291": 1, + "62292": 1, + "62314": 1, + "62319": 1, + "62324": 1, + "62344": 1, + "62345": 1, + "62346": 1, + "62347": 1, + "62348": 1, + "62371": 1, + "62403": 1, + "62419": 1, + "62427": 1, + "62430": 1, + "62436": 1, + "62438": 1, + "62440": 1, + "62442": 1, + "62459": 1, + "62463": 1, + "62469": 1, + "62471": 1, + "62483": 1, + "62484": 1, + "62487": 1, + "62491": 1, + "62494": 1, + "62495": 1, + "62499": 2, + "62501": 1, + "62503": 2, + "62504": 1, + "62506": 1, + "62508": 1, + "62509": 1, + "62511": 1, + "62520": 1, + "62521": 1, + "62522": 1, + "62525": 3, + "62527": 2, + "62529": 1, + "62532": 1, + "62535": 3, + "62536": 2, + "62537": 1, + "62538": 1, + "62542": 1, + "62552": 1, + "62564": 1, + "62567": 1, + "62568": 1, + "62569": 1, + "62570": 1, + "62571": 1, + "62575": 1, + "62577": 1, + "62600": 1, + "62601": 1, + "62602": 1, + "62610": 2, + "62615": 1, + "62616": 1, + "62617": 1, + "62639": 1, + "62640": 3, + "62644": 1, + "62648": 2, + "62650": 1, + "62652": 1, + "62653": 3, + "62655": 1, + "62657": 1, + "62659": 1, + "62660": 1, + "62661": 1, + "62665": 3, + "62670": 1, + "62677": 1, + "62685": 2, + "62689": 1, + "62690": 2, + "62691": 1, + "62692": 2, + "62694": 2, + "62695": 1, + "62696": 2, + "62697": 2, + "62698": 1, + "62700": 1, + "62701": 2, + "62702": 1, + "62704": 1, + "62708": 3, + "62731": 2, + "62733": 1, + "62738": 1, + "62740": 1, + "62741": 2, + "62742": 1, + "62743": 2, + "62744": 3, + "62745": 1, + "62748": 3, + "62751": 1, + "62752": 3, + "62753": 4, + "62755": 1, + "62756": 1, + "62757": 1, + "62758": 1, + "62760": 1, + "62761": 2, + "62762": 1, + "62764": 2, + "62765": 1, + "62767": 1, + "62771": 1, + "62778": 1, + "62783": 3, + "62784": 1, + "62785": 1, + "62786": 3, + "62788": 1, + "62789": 1, + "62790": 1, + "62792": 2, + "62793": 1, + "62794": 2, + "62797": 1, + "62798": 1, + "62800": 2, + "62801": 2, + "62802": 1, + "62804": 1, + "62806": 1, + "62807": 2, + "62808": 1, + "62810": 1, + "62813": 5, + "62814": 3, + "62815": 1, + "62818": 1, + "62821": 3, + "62832": 1, + "62843": 1, + "62844": 1, + "62845": 2, + "62849": 1, + "62854": 1, + "62859": 1, + "62863": 1, + "62864": 1, + "62867": 1, + "62882": 1, + "62897": 1, + "62899": 1, + "62914": 1, + "62915": 1, + "62916": 1, + "62918": 3, + "62919": 2, + "62921": 1, + "62922": 1, + "62924": 1, + "62927": 1, + "62928": 1, + "62932": 1, + "62940": 1, + "62941": 1, + "62944": 1, + "62945": 1, + "62947": 1, + "62952": 1, + "62954": 1, + "62955": 1, + "62957": 1, + "62958": 2, + "62959": 2, + "62960": 1, + "62962": 1, + "62964": 3, + "62965": 2, + "62966": 2, + "62967": 3, + "62972": 1, + "62977": 3, + "62979": 1, + "62980": 1, + "62981": 1, + "62982": 1, + "62987": 1, + "62988": 1, + "62989": 1, + "62994": 1, + "62996": 4, + "62997": 1, + "63001": 1, + "63003": 1, + "63007": 2, + "63013": 1, + "63015": 2, + "63026": 1, + "63033": 1, + "63039": 1, + "63049": 1, + "63055": 1, + "63063": 1, + "63113": 2, + "63114": 1, + "63119": 1, + "63120": 2, + "63121": 1, + "63122": 2, + "63123": 1, + "63125": 1, + "63130": 1, + "63134": 1, + "63138": 1, + "63149": 1, + "63151": 1, + "63154": 1, + "63161": 1, + "63165": 1, + "63167": 1, + "63170": 1, + "63171": 1, + "63173": 1, + "63174": 1, + "63177": 1, + "63178": 1, + "63182": 1, + "63183": 2, + "63191": 2, + "63192": 1, + "63194": 1, + "63195": 1, + "63197": 1, + "63198": 1, + "63199": 1, + "63202": 2, + "63205": 1, + "63210": 1, + "63212": 1, + "63215": 1, + "63230": 1, + "63232": 1, + "63236": 1, + "63267": 2, + "63280": 1, + "63282": 1, + "63285": 1, + "63371": 1, + "63373": 1, + "63374": 1, + "63379": 1, + "63382": 1, + "63383": 1, + "63410": 2, + "63412": 1, + "63431": 1, + "63433": 1, + "63435": 1, + "63461": 1, + "63462": 1, + "63465": 1, + "63466": 1, + "63467": 2, + "63468": 1, + "63471": 1, + "63472": 1, + "63474": 1, + "63495": 1, + "63498": 1, + "63504": 1, + "63513": 1, + "63515": 1, + "63526": 1, + "63527": 1, + "63528": 1, + "63543": 2, + "63547": 1, + "63548": 1, + "63549": 2, + "63551": 2, + "63552": 1, + "63560": 1, + "63563": 1, + "63564": 1, + "63577": 2, + "63584": 1, + "63619": 1, + "63620": 1, + "63621": 1, + "63633": 3, + "63635": 2, + "63639": 1, + "63656": 2, + "63657": 1, + "63666": 2, + "63669": 1, + "63672": 1, + "63673": 1, + "63678": 2, + "63682": 1, + "63683": 1, + "63684": 1, + "63685": 2, + "63688": 2, + "63689": 1, + "63693": 1, + "63699": 1, + "63701": 4, + "63702": 1, + "63703": 1, + "63704": 1, + "63707": 2, + "63709": 1, + "63712": 3, + "63713": 1, + "63724": 1, + "63742": 1, + "63770": 1, + "63784": 1, + "63786": 1, + "63805": 3, + "63827": 2, + "63831": 1, + "63836": 1, + "63840": 2, + "63842": 3, + "63845": 4, + "63846": 1, + "63856": 1, + "63861": 1, + "63867": 3, + "63868": 1, + "63869": 3, + "63872": 1, + "63874": 1, + "63881": 1, + "63882": 1, + "63885": 2, + "63887": 1, + "63888": 1, + "63889": 1, + "63891": 1, + "63892": 1, + "63894": 2, + "63896": 1, + "63897": 1, + "63898": 1, + "63901": 1, + "63903": 1, + "63905": 1, + "63906": 1, + "63918": 1, + "63920": 1, + "63921": 1, + "63926": 1, + "63941": 1, + "63984": 1, + "63986": 1, + "63988": 1, + "64004": 3, + "64095": 1, + "64098": 1, + "64099": 2, + "64100": 1, + "64101": 1, + "64109": 1, + "64111": 1, + "64113": 1, + "64156": 2, + "64163": 1, + "64194": 1, + "64231": 1, + "64232": 1, + "64233": 1, + "64244": 2, + "64245": 2, + "64246": 1, + "64247": 1, + "64249": 2, + "64254": 1, + "64277": 1, + "64280": 1, + "64282": 1, + "64292": 1, + "64295": 1, + "64296": 1, + "64310": 1, + "64314": 1, + "64315": 1, + "64316": 1, + "64317": 1, + "64333": 1, + "64334": 1, + "64339": 1, + "64342": 1, + "64348": 1, + "64349": 2, + "64350": 3, + "64351": 1, + "64368": 1, + "64379": 1, + "64383": 1, + "64384": 1, + "64395": 1, + "64396": 1, + "64397": 3, + "64398": 1, + "64400": 1, + "64405": 1, + "64423": 1, + "64427": 1, + "64428": 1, + "64429": 1, + "64431": 1, + "64434": 1, + "64437": 1, + "64442": 1, + "64450": 2, + "64451": 1, + "64453": 1, + "64455": 1, + "64468": 1, + "64469": 1, + "64470": 1, + "64472": 1, + "64476": 3, + "64477": 1, + "64479": 1 + }, + "started": "2025-09-11T20:10:17.889Z", + "trafficStats": { + "incomingCompressionRatio": 0.7593745422363282, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 49766370, + "incomingOctetsWireLevel": 49774370, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0001607511257099925, + "outgoingCompressionRatio": 0.7593745422363282, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 49766370, + "outgoingOctetsWireLevel": 49770370, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 8.037556285499626e-05, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "7204": 2, + "7220": 1, + "7296": 1, + "7305": 1, + "7308": 1, + "7471": 1, + "7474": 1, + "7517": 1, + "7568": 1, + "7595": 1, + "7621": 1, + "7873": 1, + "7902": 1, + "7910": 1, + "8168": 1, + "8199": 1, + "8221": 1, + "8554": 1, + "8580": 1, + "8581": 1, + "8897": 1, + "8934": 1, + "9036": 1, + "9140": 1, + "9177": 1, + "9465": 1, + "9484": 1, + "9495": 1, + "9544": 1, + "9546": 1, + "9568": 1, + "9859": 1, + "9861": 1, + "9900": 1, + "9902": 1, + "9930": 1, + "9961": 1, + "10371": 1, + "10383": 1, + "10435": 1, + "10542": 1, + "10559": 1, + "10607": 1, + "10837": 1, + "10838": 1, + "10845": 1, + "11077": 1, + "11167": 1, + "11194": 1, + "11198": 1, + "11219": 1, + "11224": 1, + "11268": 1, + "11278": 1, + "11319": 1, + "11320": 1, + "11331": 1, + "11436": 1, + "11583": 1, + "11711": 1, + "11818": 1, + "12016": 1, + "12134": 1, + "12228": 1, + "12302": 1, + "12432": 1, + "12559": 1, + "12858": 1, + "12936": 1, + "13034": 1, + "13297": 1, + "13423": 1, + "13536": 1, + "13910": 1, + "14039": 1, + "14104": 1, + "14262": 1, + "14277": 1, + "14286": 1, + "14314": 1, + "14325": 1, + "14331": 1, + "14382": 1, + "14391": 1, + "14397": 1, + "14485": 1, + "14492": 1, + "14495": 1, + "14600": 1, + "14616": 2, + "14624": 1, + "14689": 1, + "14729": 1, + "14740": 1, + "14744": 1, + "14755": 1, + "14761": 1, + "14769": 1, + "14798": 1, + "15148": 1, + "15273": 1, + "15413": 1, + "15847": 1, + "15979": 1, + "16029": 1, + "16123": 1, + "16145": 1, + "16192": 1, + "16705": 1, + "16778": 1, + "16894": 1, + "17737": 1, + "17874": 1, + "17944": 1, + "18011": 1, + "18031": 1, + "18136": 1, + "18184": 1, + "18294": 1, + "18339": 1, + "18803": 1, + "18925": 1, + "19063": 1, + "19398": 1, + "19511": 1, + "19634": 1, + "20329": 1, + "20449": 1, + "20573": 1, + "20575": 1, + "20668": 1, + "20789": 1, + "20827": 1, + "20843": 1, + "20856": 1, + "21554": 1, + "21654": 1, + "21712": 1, + "21862": 1, + "21864": 1, + "21873": 1, + "22452": 1, + "22465": 1, + "22469": 1, + "22835": 1, + "22947": 1, + "23067": 1, + "23166": 1, + "23304": 1, + "23437": 1, + "23779": 1, + "23883": 1, + "23990": 1, + "24091": 1, + "24202": 1, + "24331": 1, + "25219": 1, + "25348": 1, + "25467": 1, + "25703": 1, + "25801": 1, + "25813": 1, + "25862": 1, + "25909": 1, + "25968": 1, + "26509": 1, + "26536": 1, + "26606": 1, + "27101": 1, + "27206": 1, + "27317": 1, + "27727": 1, + "27759": 1, + "27792": 1, + "28399": 1, + "28534": 1, + "28669": 1, + "29032": 1, + "29088": 1, + "29116": 1, + "29194": 1, + "29262": 1, + "29263": 1, + "29287": 1, + "29385": 1, + "29487": 1, + "30625": 1, + "30648": 1, + "30681": 1, + "31284": 1, + "31304": 1, + "31378": 1, + "31422": 1, + "31488": 1, + "31552": 1, + "31863": 1, + "32000": 1, + "32146": 1, + "32730": 1, + "32805": 1, + "33419": 1, + "33527": 1, + "33614": 1, + "33639": 1, + "33779": 1, + "33912": 1, + "34326": 1, + "34392": 1, + "34437": 1, + "34731": 1, + "34834": 1, + "34931": 1, + "35247": 1, + "35322": 1, + "35334": 1, + "36082": 1, + "36204": 1, + "36291": 1, + "36315": 1, + "36380": 1, + "36403": 1, + "36425": 1, + "36479": 1, + "36503": 1, + "36539": 1, + "36572": 1, + "36632": 1, + "37750": 1, + "37822": 1, + "37868": 1, + "37915": 1, + "37962": 1, + "38001": 1, + "38055": 1, + "38125": 1, + "38192": 1, + "38279": 1, + "38346": 1, + "38420": 1, + "39118": 1, + "39149": 1, + "39185": 1, + "39250": 1, + "39274": 1, + "39414": 1, + "39609": 1, + "39737": 1, + "39817": 1, + "40520": 1, + "40600": 1, + "40608": 1, + "40652": 1, + "40761": 1, + "40826": 1, + "41465": 1, + "41517": 1, + "41534": 1, + "41670": 1, + "41684": 1, + "41750": 1, + "41821": 1, + "41840": 1, + "41855": 1, + "41877": 1, + "41887": 2, + "41909": 1, + "41966": 1, + "41975": 2, + "41980": 1, + "42002": 1, + "42008": 1, + "42013": 1, + "42040": 1, + "42105": 1, + "42147": 1, + "42219": 1, + "42236": 1, + "42245": 1, + "42254": 2, + "42285": 1, + "42300": 1, + "42344": 2, + "42345": 1, + "42357": 1, + "42359": 1, + "42363": 1, + "42372": 1, + "42375": 1, + "42414": 1, + "42651": 1, + "42657": 1, + "42703": 1, + "42741": 1, + "42742": 1, + "42777": 1, + "42787": 1, + "42809": 1, + "42821": 1, + "42858": 1, + "42861": 1, + "42866": 1, + "42873": 1, + "42939": 1, + "42985": 1, + "43142": 1, + "43211": 1, + "43219": 1, + "43221": 1, + "43233": 1, + "43237": 1, + "43266": 1, + "43270": 1, + "43279": 1, + "43302": 1, + "43307": 1, + "43346": 1, + "43463": 1, + "43500": 1, + "43507": 1, + "43530": 1, + "43547": 1, + "43549": 1, + "43560": 1, + "43576": 1, + "43609": 1, + "43614": 1, + "43615": 1, + "43640": 1, + "43654": 1, + "43661": 1, + "43662": 1, + "43693": 1, + "43705": 1, + "43713": 1, + "43752": 1, + "43769": 1, + "43775": 1, + "43782": 1, + "43786": 1, + "43788": 1, + "43840": 1, + "43844": 1, + "43892": 1, + "43913": 1, + "43924": 1, + "43945": 1, + "44152": 1, + "44289": 1, + "44424": 1, + "44528": 1, + "44535": 1, + "44637": 1, + "44668": 1, + "44694": 1, + "44794": 1, + "44976": 1, + "45087": 1, + "45195": 1, + "45572": 1, + "45580": 1, + "45606": 1, + "45736": 1, + "45739": 1, + "45743": 1, + "45780": 1, + "45826": 2, + "45833": 1, + "45842": 1, + "45860": 1, + "45867": 1, + "45886": 1, + "45926": 1, + "46568": 1, + "46659": 1, + "46660": 1, + "47242": 1, + "47372": 1, + "47498": 1, + "48790": 1, + "48894": 1, + "48995": 1, + "50057": 1, + "50170": 1, + "50284": 1, + "50873": 1, + "50975": 1, + "51076": 1, + "52712": 1, + "52765": 1, + "52885": 1, + "53316": 1, + "53418": 1, + "53522": 1, + "55397": 1, + "55490": 1, + "55495": 1, + "55599": 1, + "55617": 1, + "55743": 1, + "57800": 1, + "57899": 1, + "57997": 1, + "58242": 1, + "58352": 1, + "58473": 1, + "59718": 1, + "59766": 1, + "59871": 1, + "61015": 1, + "61140": 1, + "61179": 1, + "61774": 1, + "61776": 1, + "61777": 1, + "61854": 1, + "61857": 1, + "61858": 1, + "61981": 1, + "61982": 1, + "61983": 1, + "62230": 1, + "62273": 1, + "62275": 1, + "62280": 2, + "62282": 1, + "62284": 1, + "62287": 1, + "62288": 1, + "62310": 1, + "62315": 1, + "62320": 1, + "62340": 1, + "62341": 1, + "62342": 1, + "62343": 1, + "62344": 1, + "62367": 1, + "62399": 1, + "62415": 1, + "62423": 1, + "62426": 1, + "62432": 1, + "62434": 1, + "62436": 1, + "62438": 1, + "62455": 1, + "62459": 1, + "62465": 1, + "62467": 1, + "62479": 1, + "62480": 1, + "62483": 1, + "62487": 1, + "62490": 1, + "62491": 1, + "62495": 2, + "62497": 1, + "62499": 2, + "62500": 1, + "62502": 1, + "62504": 1, + "62505": 1, + "62507": 1, + "62516": 1, + "62517": 1, + "62518": 1, + "62521": 3, + "62523": 2, + "62525": 1, + "62528": 1, + "62531": 3, + "62532": 2, + "62533": 1, + "62534": 1, + "62538": 1, + "62548": 1, + "62560": 1, + "62563": 1, + "62564": 1, + "62565": 1, + "62566": 1, + "62567": 1, + "62571": 1, + "62573": 1, + "62596": 1, + "62597": 1, + "62598": 1, + "62606": 2, + "62611": 1, + "62612": 1, + "62613": 1, + "62635": 1, + "62636": 3, + "62640": 1, + "62644": 2, + "62646": 1, + "62648": 1, + "62649": 3, + "62651": 1, + "62653": 1, + "62655": 1, + "62656": 1, + "62657": 1, + "62661": 3, + "62666": 1, + "62673": 1, + "62681": 2, + "62685": 1, + "62686": 2, + "62687": 1, + "62688": 2, + "62690": 2, + "62691": 1, + "62692": 2, + "62693": 2, + "62694": 1, + "62696": 1, + "62697": 2, + "62698": 1, + "62700": 1, + "62704": 3, + "62727": 2, + "62729": 1, + "62734": 1, + "62736": 1, + "62737": 2, + "62738": 1, + "62739": 2, + "62740": 3, + "62741": 1, + "62744": 3, + "62747": 1, + "62748": 3, + "62749": 4, + "62751": 1, + "62752": 1, + "62753": 1, + "62754": 1, + "62756": 1, + "62757": 2, + "62758": 1, + "62760": 2, + "62761": 1, + "62763": 1, + "62767": 1, + "62774": 1, + "62779": 3, + "62780": 1, + "62781": 1, + "62782": 3, + "62784": 1, + "62785": 1, + "62786": 1, + "62788": 2, + "62789": 1, + "62790": 2, + "62793": 1, + "62794": 1, + "62796": 2, + "62797": 2, + "62798": 1, + "62800": 1, + "62802": 1, + "62803": 2, + "62804": 1, + "62806": 1, + "62809": 5, + "62810": 3, + "62811": 1, + "62814": 1, + "62817": 3, + "62828": 1, + "62839": 1, + "62840": 1, + "62841": 2, + "62845": 1, + "62850": 1, + "62855": 1, + "62859": 1, + "62860": 1, + "62863": 1, + "62878": 1, + "62893": 1, + "62895": 1, + "62910": 1, + "62911": 1, + "62912": 1, + "62914": 3, + "62915": 2, + "62917": 1, + "62918": 1, + "62920": 1, + "62923": 1, + "62924": 1, + "62928": 1, + "62936": 1, + "62937": 1, + "62940": 1, + "62941": 1, + "62943": 1, + "62948": 1, + "62950": 1, + "62951": 1, + "62953": 1, + "62954": 2, + "62955": 2, + "62956": 1, + "62958": 1, + "62960": 3, + "62961": 2, + "62962": 2, + "62963": 3, + "62968": 1, + "62973": 3, + "62975": 1, + "62976": 1, + "62977": 1, + "62978": 1, + "62983": 1, + "62984": 1, + "62985": 1, + "62990": 1, + "62992": 4, + "62993": 1, + "62997": 1, + "62999": 1, + "63003": 2, + "63009": 1, + "63011": 2, + "63022": 1, + "63029": 1, + "63035": 1, + "63045": 1, + "63051": 1, + "63059": 1, + "63109": 2, + "63110": 1, + "63115": 1, + "63116": 2, + "63117": 1, + "63118": 2, + "63119": 1, + "63121": 1, + "63126": 1, + "63130": 1, + "63134": 1, + "63145": 1, + "63147": 1, + "63150": 1, + "63157": 1, + "63161": 1, + "63163": 1, + "63166": 1, + "63167": 1, + "63169": 1, + "63170": 1, + "63173": 1, + "63174": 1, + "63178": 1, + "63179": 2, + "63187": 2, + "63188": 1, + "63190": 1, + "63191": 1, + "63193": 1, + "63194": 1, + "63195": 1, + "63198": 2, + "63201": 1, + "63206": 1, + "63208": 1, + "63211": 1, + "63226": 1, + "63228": 1, + "63232": 1, + "63263": 2, + "63276": 1, + "63278": 1, + "63281": 1, + "63367": 1, + "63369": 1, + "63370": 1, + "63375": 1, + "63378": 1, + "63379": 1, + "63406": 2, + "63408": 1, + "63427": 1, + "63429": 1, + "63431": 1, + "63457": 1, + "63458": 1, + "63461": 1, + "63462": 1, + "63463": 2, + "63464": 1, + "63467": 1, + "63468": 1, + "63470": 1, + "63491": 1, + "63494": 1, + "63500": 1, + "63509": 1, + "63511": 1, + "63522": 1, + "63523": 1, + "63524": 1, + "63539": 2, + "63543": 1, + "63544": 1, + "63545": 2, + "63547": 2, + "63548": 1, + "63556": 1, + "63559": 1, + "63560": 1, + "63573": 2, + "63580": 1, + "63615": 1, + "63616": 1, + "63617": 1, + "63629": 3, + "63631": 2, + "63635": 1, + "63652": 2, + "63653": 1, + "63662": 2, + "63665": 1, + "63668": 1, + "63669": 1, + "63674": 2, + "63678": 1, + "63679": 1, + "63680": 1, + "63681": 2, + "63684": 2, + "63685": 1, + "63689": 1, + "63695": 1, + "63697": 4, + "63698": 1, + "63699": 1, + "63700": 1, + "63703": 2, + "63705": 1, + "63708": 3, + "63709": 1, + "63720": 1, + "63738": 1, + "63766": 1, + "63780": 1, + "63782": 1, + "63801": 3, + "63823": 2, + "63827": 1, + "63832": 1, + "63836": 2, + "63838": 3, + "63841": 4, + "63842": 1, + "63852": 1, + "63857": 1, + "63863": 3, + "63864": 1, + "63865": 3, + "63868": 1, + "63870": 1, + "63877": 1, + "63878": 1, + "63881": 2, + "63883": 1, + "63884": 1, + "63885": 1, + "63887": 1, + "63888": 1, + "63890": 2, + "63892": 1, + "63893": 1, + "63894": 1, + "63897": 1, + "63899": 1, + "63901": 1, + "63902": 1, + "63914": 1, + "63916": 1, + "63917": 1, + "63922": 1, + "63937": 1, + "63980": 1, + "63982": 1, + "63984": 1, + "64000": 3, + "64091": 1, + "64094": 1, + "64095": 2, + "64096": 1, + "64097": 1, + "64105": 1, + "64107": 1, + "64109": 1, + "64152": 2, + "64159": 1, + "64190": 1, + "64227": 1, + "64228": 1, + "64229": 1, + "64240": 2, + "64241": 2, + "64242": 1, + "64243": 1, + "64245": 2, + "64250": 1, + "64273": 1, + "64276": 1, + "64278": 1, + "64288": 1, + "64291": 1, + "64292": 1, + "64306": 1, + "64310": 1, + "64311": 1, + "64312": 1, + "64313": 1, + "64329": 1, + "64330": 1, + "64335": 1, + "64338": 1, + "64344": 1, + "64345": 2, + "64346": 3, + "64347": 1, + "64364": 1, + "64375": 1, + "64379": 1, + "64380": 1, + "64391": 1, + "64392": 1, + "64393": 3, + "64394": 1, + "64396": 1, + "64401": 1, + "64419": 1, + "64423": 1, + "64424": 1, + "64425": 1, + "64427": 1, + "64430": 1, + "64433": 1, + "64438": 1, + "64446": 2, + "64447": 1, + "64449": 1, + "64451": 1, + "64464": 1, + "64465": 1, + "64466": 1, + "64468": 1, + "64472": 3, + "64473": 1, + "64475": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333832266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888228cb524e2b23" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "28cb524e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_1.html b/autobahn/client/tungstenite_case_13_1_1.html new file mode 100644 index 0000000..228a1c3 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_1.html @@ -0,0 +1,324 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.1 : Pass - 172 ms @ 2025-09-11T20:11:24.498Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=392&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: fiN7dHWsByNpXdQvdQ49ng==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: jvyk7ACwlRdBSpxj/ASSeq+HPvI=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
107557550
1166726
1237444
131031339
1424336
15460
16232
18118
19357
20120
21121
22122
24248
2571257
Total100210938
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
67554530
766462
837296
9103927
1024240
11444
12224
14114
15345
16116
17117
18118
20240
2521252
Total10026929
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333932266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882f6a464b3f54c
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6636613436346233
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_1.json b/autobahn/client/tungstenite_case_13_1_1.json new file mode 100644 index 0000000..d44e44e --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_1.json @@ -0,0 +1,171 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 392, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 172, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=392&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: fiN7dHWsByNpXdQvdQ49ng==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: jvyk7ACwlRdBSpxj/ASSeq+HPvI=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 755, + "11": 66, + "12": 37, + "13": 103, + "14": 24, + "15": 4, + "16": 2, + "18": 1, + "19": 3, + "20": 1, + "21": 1, + "22": 1, + "24": 2, + "257": 1 + }, + "started": "2025-09-11T20:11:24.498Z", + "trafficStats": { + "incomingCompressionRatio": 0.2920625, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 4673, + "incomingOctetsWireLevel": 10673, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 1.2839717526214423, + "outgoingCompressionRatio": 0.2920625, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 4673, + "outgoingOctetsWireLevel": 6673, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.4279905842071474, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 755, + "7": 66, + "8": 37, + "9": 103, + "10": 24, + "11": 4, + "12": 2, + "14": 1, + "15": 3, + "16": 1, + "17": 1, + "18": 1, + "20": 2, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333932266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f6a464b3f54c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f6a464b3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_10.html b/autobahn/client/tungstenite_case_13_1_10.html new file mode 100644 index 0000000..33ca551 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_10.html @@ -0,0 +1,586 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.10 : Pass - 2721 ms @ 2025-09-11T20:11:29.157Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=401&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Xe78d3yjcSzWGMHroKT5NQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1ve86fzcaYv7zas6ruCN/BCBH44=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668354
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343031266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88824efc0f0f4d14
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3465666330663066
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_10.json b/autobahn/client/tungstenite_case_13_1_10.json new file mode 100644 index 0000000..1ae74b9 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_10.json @@ -0,0 +1,433 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 401, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 2721, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=401&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Xe78d3yjcSzWGMHroKT5NQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1ve86fzcaYv7zas6ruCN/BCBH44=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:11:29.157Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343031266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824efc0f0f4d14" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4efc0f0f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_11.html b/autobahn/client/tungstenite_case_13_1_11.html new file mode 100644 index 0000000..8e311bb --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_11.html @@ -0,0 +1,662 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.11 : Pass - 316 ms @ 2025-09-11T20:11:31.880Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=402&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1rSi7cVata/ccPPO2sjxfg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3JPTY/BCDeDEsH8qLgkXKZWvQYE=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
30551525
30661836
3072614
30851540
30961854
310113410
311103110
3123936
3131313
31451570
3151315
3163948
3171317
31851590
31972233
32041280
32161926
322123864
32341292
324123888
325113575
326103260
327134251
328103280
329185922
330165280
331154965
332103320
333216993
334217014
335196365
336134368
337165392
33872366
33972373
340124080
341113751
342103420
34351715
34472408
34541380
34651730
34751735
34831044
3491349
35051750
35151755
35262112
35393177
35493186
35593195
35682848
357103570
35882864
359145026
36093240
361103610
362124344
36393267
36482912
365124380
36682928
367103670
36841472
36962214
37062220
3712742
3722744
373114103
37472618
3752750
376114136
37772639
37883024
37931137
38072660
38183048
38262292
383103830
38462304
38541540
3862772
38772709
3882776
38931167
39031170
39141564
39231176
39331179
39451970
3952790
39641584
39731191
39841592
39931197
40031200
40162406
40241608
40331209
4041404
4051405
40641624
40731221
40831224
4091409
41041640
41183288
41231236
4132826
41472898
41562490
4162832
4171417
4181418
41941676
420125040
42152105
42231266
42331269
4242848
4252850
42672982
42741708
42831284
42931287
43052150
4312862
43331299
43431302
43531305
4361436
4371437
43831314
4401440
4411441
4452890
4461446
44731341
4491449
4511451
45231356
4531453
45431362
45531365
4561456
45794113
45883664
4592918
46073220
461104610
46294158
4632926
46473248
465136045
46662796
46783736
46852340
46983752
47094230
47162826
47283776
4732946
47441896
4751475
4762952
4772954
4781478
4791479
4802960
4811481
4821482
48331449
4841484
4861486
4881488
4912982
4921492
49331479
4941494
4961496
4971497
Total1002377539
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
435215
446264
45290
465230
476282
4811528
4910490
503150
51151
525260
53153
543162
55155
565280
577399
584232
596354
6012720
614244
6212744
6311693
6410640
6513845
6610660
67181206
68161088
69151035
7010700
71211491
72211512
73191387
7413962
75161200
767532
777539
7812936
7911869
8010800
815405
827574
834332
845420
855425
863258
87187
885440
895445
906540
919819
929828
939837
948752
9510950
968768
97141358
989882
9910990
100121200
1019909
1028816
103121236
1048832
105101050
1064424
1076642
1086648
1092218
1102220
111111221
1127784
1132226
114111254
1157805
1168928
1173351
1187826
1198952
1206720
121101210
1226732
1234492
1242248
1257875
1262252
1273381
1303390
1314524
1323396
1333399
1345670
1352270
1364544
1373411
1384552
1393417
1403420
1416846
1424568
1433429
1441144
1451145
1464584
1473441
1483444
1491149
1504600
15181208
1523456
1532306
15471078
1556930
1562312
1571157
1581158
1594636
160121920
1615805
1623486
1633489
1642328
1652330
16671162
1674668
1683504
1693507
1705850
1712342
1733519
1743522
1753525
1761176
1771177
1783534
1801180
1811181
1852370
1861186
1873561
1891189
1911191
1923576
1931193
1943582
1953585
1961196
19791773
19881584
1992398
20071400
201102010
20291818
2032406
20471428
205132665
20661236
20781656
20851040
20981672
21091890
21161266
21281696
2132426
2144856
2151215
2162432
2172434
2181218
2191219
2202440
2211221
2221222
2233669
2241224
2261226
2281228
2312462
2321232
2333699
2341234
2361236
2371237
2521252
2601000260000
Total2002376202
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343032266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888278c133217b29
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3738633133333231
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_11.json b/autobahn/client/tungstenite_case_13_1_11.json new file mode 100644 index 0000000..3f872e1 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_11.json @@ -0,0 +1,509 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 402, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 316, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=402&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1rSi7cVata/ccPPO2sjxfg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3JPTY/BCDeDEsH8qLgkXKZWvQYE=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "305": 5, + "306": 6, + "307": 2, + "308": 5, + "309": 6, + "310": 11, + "311": 10, + "312": 3, + "313": 1, + "314": 5, + "315": 1, + "316": 3, + "317": 1, + "318": 5, + "319": 7, + "320": 4, + "321": 6, + "322": 12, + "323": 4, + "324": 12, + "325": 11, + "326": 10, + "327": 13, + "328": 10, + "329": 18, + "330": 16, + "331": 15, + "332": 10, + "333": 21, + "334": 21, + "335": 19, + "336": 13, + "337": 16, + "338": 7, + "339": 7, + "340": 12, + "341": 11, + "342": 10, + "343": 5, + "344": 7, + "345": 4, + "346": 5, + "347": 5, + "348": 3, + "349": 1, + "350": 5, + "351": 5, + "352": 6, + "353": 9, + "354": 9, + "355": 9, + "356": 8, + "357": 10, + "358": 8, + "359": 14, + "360": 9, + "361": 10, + "362": 12, + "363": 9, + "364": 8, + "365": 12, + "366": 8, + "367": 10, + "368": 4, + "369": 6, + "370": 6, + "371": 2, + "372": 2, + "373": 11, + "374": 7, + "375": 2, + "376": 11, + "377": 7, + "378": 8, + "379": 3, + "380": 7, + "381": 8, + "382": 6, + "383": 10, + "384": 6, + "385": 4, + "386": 2, + "387": 7, + "388": 2, + "389": 3, + "390": 3, + "391": 4, + "392": 3, + "393": 3, + "394": 5, + "395": 2, + "396": 4, + "397": 3, + "398": 4, + "399": 3, + "400": 3, + "401": 6, + "402": 4, + "403": 3, + "404": 1, + "405": 1, + "406": 4, + "407": 3, + "408": 3, + "409": 1, + "410": 4, + "411": 8, + "412": 3, + "413": 2, + "414": 7, + "415": 6, + "416": 2, + "417": 1, + "418": 1, + "419": 4, + "420": 12, + "421": 5, + "422": 3, + "423": 3, + "424": 2, + "425": 2, + "426": 7, + "427": 4, + "428": 3, + "429": 3, + "430": 5, + "431": 2, + "433": 3, + "434": 3, + "435": 3, + "436": 1, + "437": 1, + "438": 3, + "440": 1, + "441": 1, + "445": 2, + "446": 1, + "447": 3, + "449": 1, + "451": 1, + "452": 3, + "453": 1, + "454": 3, + "455": 3, + "456": 1, + "457": 9, + "458": 8, + "459": 2, + "460": 7, + "461": 10, + "462": 9, + "463": 2, + "464": 7, + "465": 13, + "466": 6, + "467": 8, + "468": 5, + "469": 8, + "470": 9, + "471": 6, + "472": 8, + "473": 2, + "474": 4, + "475": 1, + "476": 2, + "477": 2, + "478": 1, + "479": 1, + "480": 2, + "481": 1, + "482": 1, + "483": 3, + "484": 1, + "486": 1, + "488": 1, + "491": 2, + "492": 1, + "493": 3, + "494": 1, + "496": 1, + "497": 1 + }, + "started": "2025-09-11T20:11:31.880Z", + "trafficStats": { + "incomingCompressionRatio": 0.045077392578125, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 369274, + "incomingOctetsWireLevel": 377274, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.02166413015809399, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 375946, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.018067884551850388, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "43": 5, + "44": 6, + "45": 2, + "46": 5, + "47": 6, + "48": 11, + "49": 10, + "50": 3, + "51": 1, + "52": 5, + "53": 1, + "54": 3, + "55": 1, + "56": 5, + "57": 7, + "58": 4, + "59": 6, + "60": 12, + "61": 4, + "62": 12, + "63": 11, + "64": 10, + "65": 13, + "66": 10, + "67": 18, + "68": 16, + "69": 15, + "70": 10, + "71": 21, + "72": 21, + "73": 19, + "74": 13, + "75": 16, + "76": 7, + "77": 7, + "78": 12, + "79": 11, + "80": 10, + "81": 5, + "82": 7, + "83": 4, + "84": 5, + "85": 5, + "86": 3, + "87": 1, + "88": 5, + "89": 5, + "90": 6, + "91": 9, + "92": 9, + "93": 9, + "94": 8, + "95": 10, + "96": 8, + "97": 14, + "98": 9, + "99": 10, + "100": 12, + "101": 9, + "102": 8, + "103": 12, + "104": 8, + "105": 10, + "106": 4, + "107": 6, + "108": 6, + "109": 2, + "110": 2, + "111": 11, + "112": 7, + "113": 2, + "114": 11, + "115": 7, + "116": 8, + "117": 3, + "118": 7, + "119": 8, + "120": 6, + "121": 10, + "122": 6, + "123": 4, + "124": 2, + "125": 7, + "126": 2, + "127": 3, + "130": 3, + "131": 4, + "132": 3, + "133": 3, + "134": 5, + "135": 2, + "136": 4, + "137": 3, + "138": 4, + "139": 3, + "140": 3, + "141": 6, + "142": 4, + "143": 3, + "144": 1, + "145": 1, + "146": 4, + "147": 3, + "148": 3, + "149": 1, + "150": 4, + "151": 8, + "152": 3, + "153": 2, + "154": 7, + "155": 6, + "156": 2, + "157": 1, + "158": 1, + "159": 4, + "160": 12, + "161": 5, + "162": 3, + "163": 3, + "164": 2, + "165": 2, + "166": 7, + "167": 4, + "168": 3, + "169": 3, + "170": 5, + "171": 2, + "173": 3, + "174": 3, + "175": 3, + "176": 1, + "177": 1, + "178": 3, + "180": 1, + "181": 1, + "185": 2, + "186": 1, + "187": 3, + "189": 1, + "191": 1, + "192": 3, + "193": 1, + "194": 3, + "195": 3, + "196": 1, + "197": 9, + "198": 8, + "199": 2, + "200": 7, + "201": 10, + "202": 9, + "203": 2, + "204": 7, + "205": 13, + "206": 6, + "207": 8, + "208": 5, + "209": 8, + "210": 9, + "211": 6, + "212": 8, + "213": 2, + "214": 4, + "215": 1, + "216": 2, + "217": 2, + "218": 1, + "219": 1, + "220": 2, + "221": 1, + "222": 1, + "223": 3, + "224": 1, + "226": 1, + "228": 1, + "231": 2, + "232": 1, + "233": 3, + "234": 1, + "236": 1, + "237": 1, + "252": 1, + "260": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343032266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888278c133217b29" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "78c13321" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_12.html b/autobahn/client/tungstenite_case_13_1_12.html new file mode 100644 index 0000000..812a52c --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_12.html @@ -0,0 +1,818 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.12 : Pass - 514 ms @ 2025-09-11T20:11:32.197Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=403&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: gYsSt4bPmK1IjHASNJ8lLA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4KsIJ0faE8wjypiHiLI8XylrCJ0=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
60521210
60631818
6071607
60821216
6091609
6101610
6111611
6121612
6131613
61421228
61531845
61674312
61742468
61863708
619106190
62074340
62153105
62231866
623106230
62453120
6251625
62642504
62774389
62895652
62985032
630116930
63195679
632106320
633159495
63495706
635159525
63674452
63763822
63885104
63985112
64074480
64131923
64253210
64342572
64474508
64553225
64642584
64753235
64853240
64974543
65042600
65121302
6521652
65363918
65431962
65521310
65621312
65742628
65863948
65953295
66085280
66163966
66274634
66321326
66474648
66595985
666117326
667106670
668117348
66985352
67074690
67185368
67274704
67342692
67485392
67564050
67642704
67753385
67842712
67921358
68021360
68142724
6821682
68342732
68442736
68542740
68621372
6871687
68842752
68942756
6901690
69121382
69242768
69321386
69432082
69532085
6961696
69732091
69832094
69953495
70042800
70132103
70242808
70342812
70432112
70521410
70632118
70721414
70864248
70932127
71085680
71121422
7121712
7131713
71432142
71532145
7161716
7171717
71821436
71932157
72021440
72121442
72242888
72321446
72432172
72521450
72653630
72721454
72821456
72953645
73021460
73121462
7321732
7331733
73432202
73632208
7371737
73842952
73921478
74053700
74121482
74332229
74432232
74553725
74732241
74832244
74921498
75021500
7511751
7521752
75375271
7541754
7551755
7561756
7571757
7581758
75943036
76043040
76132283
76253810
76332289
76421528
76621532
76732301
76843072
7691769
7701770
77132313
7731773
7741774
77532325
7761776
77721554
7781778
77932337
7801780
7811781
7821782
7841784
7871787
79021580
79121582
79232376
7931793
79443176
79521590
79621592
7981798
79943196
80154005
80221604
8041804
80521610
80621612
8071807
8081808
80932427
81075670
81164866
81221624
81364878
81443256
81554075
81632448
81721634
81821636
81921638
82043280
82132463
82243288
82332469
82421648
82532475
82754135
82821656
82964974
83154155
83243328
83343332
83443336
83543340
83621672
8371837
83886704
83921678
84021680
84143364
84243368
84321686
84454220
84521690
84675922
84732541
84865088
84921698
8501850
85121702
85221704
8531853
85454270
855108550
85654280
85743428
85854290
85954295
8601860
86154305
86232586
86332589
86443456
86543460
86632598
86776069
86832604
86943476
87065220
87165226
87276104
87332619
87421748
8751875
8761876
87732631
87832634
87921758
88121762
8821882
8831883
88521770
88621772
88821776
89021780
8911891
89221784
8941894
8971897
8981898
9031903
9041904
9081908
9101910
91143644
9121912
9141914
Total1002729547
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
428
5315
616
717
818
10110
13113
16232
17234
18354
19119
20480
21242
22244
24124
254100
275135
28256
30130
31262
32264
33133
34134
353105
367252
376222
38276
396234
404160
415205
423126
43286
44288
45290
464184
473141
484192
493147
502100
513153
535265
542108
556330
575285
584232
594236
604240
614244
622124
63163
648512
652130
662132
674268
684272
692138
705350
712142
727504
733219
746444
752150
76176
772154
782156
79179
805400
8110810
825410
834332
845420
855425
86186
877609
886528
894356
906540
915455
924368
938744
944376
955475
968768
979873
98141372
997693
1008800
101111111
1028816
1038824
1046624
105121260
1065530
1073321
1085540
1098872
1109990
111101110
112131456
11391017
114121368
115151725
116111276
117161872
11891062
1196714
12091080
1218968
1227854
1234492
1246744
1254500
1267882
1275635
1304520
1316786
1326792
1337931
1344536
1352270
1362272
1376822
1384552
1396834
1403420
1414564
1427994
1435715
14481152
1456870
14671022
1472294
14871036
14991341
150111650
151101510
152111672
15381224
15471078
15581240
15671092
1574628
15881264
1596954
1604640
1615805
1624648
1632326
1642328
1654660
1661166
1674668
1684672
1694676
1702340
1711171
1724688
1734692
1741174
1752350
1764704
1772354
1783534
1793537
1801180
1813543
1823546
1835915
1844736
1853555
1864744
1874748
1883564
1892378
1903570
1912382
19261152
1933579
19481552
1952390
1961196
1971197
1983594
1993597
2001200
2011201
2022404
2033609
2042408
2052410
2064824
2072414
2083624
2092418
21051050
2112422
2122424
21351065
2142428
2152430
2161216
2171217
2183654
2203660
2211221
2224888
2232446
22451120
2252450
2273681
2283684
22951145
2313693
2323696
2332466
2342468
2351235
2361236
23771659
2381238
2391239
2401240
2411241
2421242
2434972
2444976
2453735
24651230
2473741
2482496
2502500
2513753
25251260
2531253
2541254
2553765
2571257
2581258
2593777
2602331606060
Total3333733754
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02331
11000
81
Total3332
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343033266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882910b02e892e3
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3931306230326538
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_12.json b/autobahn/client/tungstenite_case_13_1_12.json new file mode 100644 index 0000000..a761a4d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_12.json @@ -0,0 +1,665 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 403, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 514, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=403&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: gYsSt4bPmK1IjHASNJ8lLA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4KsIJ0faE8wjypiHiLI8XylrCJ0=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "605": 2, + "606": 3, + "607": 1, + "608": 2, + "609": 1, + "610": 1, + "611": 1, + "612": 1, + "613": 1, + "614": 2, + "615": 3, + "616": 7, + "617": 4, + "618": 6, + "619": 10, + "620": 7, + "621": 5, + "622": 3, + "623": 10, + "624": 5, + "625": 1, + "626": 4, + "627": 7, + "628": 9, + "629": 8, + "630": 11, + "631": 9, + "632": 10, + "633": 15, + "634": 9, + "635": 15, + "636": 7, + "637": 6, + "638": 8, + "639": 8, + "640": 7, + "641": 3, + "642": 5, + "643": 4, + "644": 7, + "645": 5, + "646": 4, + "647": 5, + "648": 5, + "649": 7, + "650": 4, + "651": 2, + "652": 1, + "653": 6, + "654": 3, + "655": 2, + "656": 2, + "657": 4, + "658": 6, + "659": 5, + "660": 8, + "661": 6, + "662": 7, + "663": 2, + "664": 7, + "665": 9, + "666": 11, + "667": 10, + "668": 11, + "669": 8, + "670": 7, + "671": 8, + "672": 7, + "673": 4, + "674": 8, + "675": 6, + "676": 4, + "677": 5, + "678": 4, + "679": 2, + "680": 2, + "681": 4, + "682": 1, + "683": 4, + "684": 4, + "685": 4, + "686": 2, + "687": 1, + "688": 4, + "689": 4, + "690": 1, + "691": 2, + "692": 4, + "693": 2, + "694": 3, + "695": 3, + "696": 1, + "697": 3, + "698": 3, + "699": 5, + "700": 4, + "701": 3, + "702": 4, + "703": 4, + "704": 3, + "705": 2, + "706": 3, + "707": 2, + "708": 6, + "709": 3, + "710": 8, + "711": 2, + "712": 1, + "713": 1, + "714": 3, + "715": 3, + "716": 1, + "717": 1, + "718": 2, + "719": 3, + "720": 2, + "721": 2, + "722": 4, + "723": 2, + "724": 3, + "725": 2, + "726": 5, + "727": 2, + "728": 2, + "729": 5, + "730": 2, + "731": 2, + "732": 1, + "733": 1, + "734": 3, + "736": 3, + "737": 1, + "738": 4, + "739": 2, + "740": 5, + "741": 2, + "743": 3, + "744": 3, + "745": 5, + "747": 3, + "748": 3, + "749": 2, + "750": 2, + "751": 1, + "752": 1, + "753": 7, + "754": 1, + "755": 1, + "756": 1, + "757": 1, + "758": 1, + "759": 4, + "760": 4, + "761": 3, + "762": 5, + "763": 3, + "764": 2, + "766": 2, + "767": 3, + "768": 4, + "769": 1, + "770": 1, + "771": 3, + "773": 1, + "774": 1, + "775": 3, + "776": 1, + "777": 2, + "778": 1, + "779": 3, + "780": 1, + "781": 1, + "782": 1, + "784": 1, + "787": 1, + "790": 2, + "791": 2, + "792": 3, + "793": 1, + "794": 4, + "795": 2, + "796": 2, + "798": 1, + "799": 4, + "801": 5, + "802": 2, + "804": 1, + "805": 2, + "806": 2, + "807": 1, + "808": 1, + "809": 3, + "810": 7, + "811": 6, + "812": 2, + "813": 6, + "814": 4, + "815": 5, + "816": 3, + "817": 2, + "818": 2, + "819": 2, + "820": 4, + "821": 3, + "822": 4, + "823": 3, + "824": 2, + "825": 3, + "827": 5, + "828": 2, + "829": 6, + "831": 5, + "832": 4, + "833": 4, + "834": 4, + "835": 4, + "836": 2, + "837": 1, + "838": 8, + "839": 2, + "840": 2, + "841": 4, + "842": 4, + "843": 2, + "844": 5, + "845": 2, + "846": 7, + "847": 3, + "848": 6, + "849": 2, + "850": 1, + "851": 2, + "852": 2, + "853": 1, + "854": 5, + "855": 10, + "856": 5, + "857": 4, + "858": 5, + "859": 5, + "860": 1, + "861": 5, + "862": 3, + "863": 3, + "864": 4, + "865": 4, + "866": 3, + "867": 7, + "868": 3, + "869": 4, + "870": 6, + "871": 6, + "872": 7, + "873": 3, + "874": 2, + "875": 1, + "876": 1, + "877": 3, + "878": 3, + "879": 2, + "881": 2, + "882": 1, + "883": 1, + "885": 2, + "886": 2, + "888": 2, + "890": 2, + "891": 1, + "892": 2, + "894": 1, + "897": 1, + "898": 1, + "903": 1, + "904": 1, + "908": 1, + "910": 1, + "911": 4, + "912": 1, + "914": 1 + }, + "started": "2025-09-11T20:11:32.197Z", + "trafficStats": { + "incomingCompressionRatio": 0.0440235595703125, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 721282, + "incomingOctetsWireLevel": 729282, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.011091362324305888, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 733498, + "outgoingWebSocketFrames": 3331, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016936510269215093, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 2331, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 2, + "5": 3, + "6": 1, + "7": 1, + "8": 1, + "10": 1, + "13": 1, + "16": 2, + "17": 2, + "18": 3, + "19": 1, + "20": 4, + "21": 2, + "22": 2, + "24": 1, + "25": 4, + "27": 5, + "28": 2, + "30": 1, + "31": 2, + "32": 2, + "33": 1, + "34": 1, + "35": 3, + "36": 7, + "37": 6, + "38": 2, + "39": 6, + "40": 4, + "41": 5, + "42": 3, + "43": 2, + "44": 2, + "45": 2, + "46": 4, + "47": 3, + "48": 4, + "49": 3, + "50": 2, + "51": 3, + "53": 5, + "54": 2, + "55": 6, + "57": 5, + "58": 4, + "59": 4, + "60": 4, + "61": 4, + "62": 2, + "63": 1, + "64": 8, + "65": 2, + "66": 2, + "67": 4, + "68": 4, + "69": 2, + "70": 5, + "71": 2, + "72": 7, + "73": 3, + "74": 6, + "75": 2, + "76": 1, + "77": 2, + "78": 2, + "79": 1, + "80": 5, + "81": 10, + "82": 5, + "83": 4, + "84": 5, + "85": 5, + "86": 1, + "87": 7, + "88": 6, + "89": 4, + "90": 6, + "91": 5, + "92": 4, + "93": 8, + "94": 4, + "95": 5, + "96": 8, + "97": 9, + "98": 14, + "99": 7, + "100": 8, + "101": 11, + "102": 8, + "103": 8, + "104": 6, + "105": 12, + "106": 5, + "107": 3, + "108": 5, + "109": 8, + "110": 9, + "111": 10, + "112": 13, + "113": 9, + "114": 12, + "115": 15, + "116": 11, + "117": 16, + "118": 9, + "119": 6, + "120": 9, + "121": 8, + "122": 7, + "123": 4, + "124": 6, + "125": 4, + "126": 7, + "127": 5, + "130": 4, + "131": 6, + "132": 6, + "133": 7, + "134": 4, + "135": 2, + "136": 2, + "137": 6, + "138": 4, + "139": 6, + "140": 3, + "141": 4, + "142": 7, + "143": 5, + "144": 8, + "145": 6, + "146": 7, + "147": 2, + "148": 7, + "149": 9, + "150": 11, + "151": 10, + "152": 11, + "153": 8, + "154": 7, + "155": 8, + "156": 7, + "157": 4, + "158": 8, + "159": 6, + "160": 4, + "161": 5, + "162": 4, + "163": 2, + "164": 2, + "165": 4, + "166": 1, + "167": 4, + "168": 4, + "169": 4, + "170": 2, + "171": 1, + "172": 4, + "173": 4, + "174": 1, + "175": 2, + "176": 4, + "177": 2, + "178": 3, + "179": 3, + "180": 1, + "181": 3, + "182": 3, + "183": 5, + "184": 4, + "185": 3, + "186": 4, + "187": 4, + "188": 3, + "189": 2, + "190": 3, + "191": 2, + "192": 6, + "193": 3, + "194": 8, + "195": 2, + "196": 1, + "197": 1, + "198": 3, + "199": 3, + "200": 1, + "201": 1, + "202": 2, + "203": 3, + "204": 2, + "205": 2, + "206": 4, + "207": 2, + "208": 3, + "209": 2, + "210": 5, + "211": 2, + "212": 2, + "213": 5, + "214": 2, + "215": 2, + "216": 1, + "217": 1, + "218": 3, + "220": 3, + "221": 1, + "222": 4, + "223": 2, + "224": 5, + "225": 2, + "227": 3, + "228": 3, + "229": 5, + "231": 3, + "232": 3, + "233": 2, + "234": 2, + "235": 1, + "236": 1, + "237": 7, + "238": 1, + "239": 1, + "240": 1, + "241": 1, + "242": 1, + "243": 4, + "244": 4, + "245": 3, + "246": 5, + "247": 3, + "248": 2, + "250": 2, + "251": 3, + "252": 5, + "253": 1, + "254": 1, + "255": 3, + "257": 1, + "258": 1, + "259": 3, + "260": 2331 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343033266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882910b02e892e3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "910b02e8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_13.html b/autobahn/client/tungstenite_case_13_1_13.html new file mode 100644 index 0000000..b4fe033 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_13.html @@ -0,0 +1,900 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.13 : Pass - 919 ms @ 2025-09-11T20:11:32.712Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=404&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: AUrGfd5IZlY3u0QvrOHubg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BWEfEsTtp978wFYpeqi7P5gTEiI=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
124011240
124322486
124411244
124511245
124611246
124711247
124811248
124944996
125011250
125222504
125422508
125522510
125611256
125711257
125833774
125911259
126045040
126111261
126233786
126311263
126411264
126533795
126656330
126722534
126833804
126922538
127045080
127145084
127222544
127378911
127456370
127645104
1277810216
127845112
1279911511
128033840
1281911529
128267692
128367698
12841114124
1285810280
1286911574
1287911583
128845152
128945156
1290810320
129156455
129256460
129356465
129422588
129545180
129611296
129733891
129856490
129945196
130033900
130145204
130256510
130356515
130433912
130567830
130667836
130745228
130845232
130911309
131011310
131145244
131222624
131333939
131422628
131533945
131645264
131722634
131811318
132022640
132122642
132211322
132345292
132533975
132611326
132711327
132822656
132922658
133145324
133222664
133311333
133411334
133522670
133622672
133711337
133822676
134034020
134111341
134322686
134434032
134522690
134611346
134722694
134822696
134945396
135022700
135168106
135211352
135311353
135556775
135645424
135722714
135956795
136045440
136211362
136334089
136434092
136522730
136611366
136722734
136811368
137022740
137145484
137211372
137345492
137411374
137622752
137722754
137834134
138111381
138222764
138311383
138411384
138534155
138634158
138711387
138834164
138934167
139011390
139111391
139322786
139534185
139622792
139711397
139822796
139922798
140011400
140122802
140211402
140511405
140622812
140711407
140811408
140911409
141022820
141322826
141411414
141522830
141611416
141768502
141822836
141911419
142034260
142145684
142211422
142311423
142411424
142545700
142622852
142722854
142811428
142922858
143011430
143145724
143322866
143522870
143645744
143811438
143911439
144034320
144122882
144345772
144411444
144522890
144622892
144811448
145045800
145122902
145211452
145322906
145411454
145522910
145622912
145722914
145834374
145922918
146022920
146122922
146311463
146422928
146511465
146611466
146722934
146811468
146934407
147022940
147122942
147222944
147345892
147445896
147568850
147634428
147722954
147822956
147911479
148022960
148134443
148234446
148322966
148422968
148511485
148611486
148734461
148845952
148968934
149034470
149122982
149245968
149334479
149422988
149511495
149634488
149734491
149822996
149934497
150057500
150223004
150434512
150523010
150623012
150723014
150823016
150934527
151023020
151111511
151234536
151323026
151411514
151523030
151757585
151823036
151923038
152011520
152146084
152246088
152334569
152446096
152669156
152823056
152911529
153011530
153234596
153357665
153523070
153634608
153711537
153846152
153946156
154057700
154157705
1542913878
154357715
154469264
1545710815
154669276
154734641
154857740
154911549
155034650
1551710857
155223104
155323106
155434662
155569330
155657780
155769342
155834674
155934677
156069360
156157805
1562812496
1563710941
15641117204
1565710955
1566710962
156723134
156869408
156957845
157057850
157157855
157223144
157334719
157457870
157557875
157634728
157734731
157811578
157911579
158023160
158123162
158211582
158434752
158523170
158634758
158723174
158911589
159023180
159123182
159223184
159323186
159423188
159523190
159611596
159711597
160111601
160811608
161111611
161223224
161523230
161711617
161811618
162111621
162246488
162511625
162723254
162823256
162911629
163069780
163134893
163211632
163323266
163411634
163623272
163811638
164023280
164123282
164311643
164534935
164734941
164823296
165069900
165111651
165223304
165423308
165523310
165623312
165723314
165811658
165923318
166123322
166211662
166323326
166423328
166511665
166823336
Total10021439130
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21020
31133
41560
5840
61060
7642
8540
91199
10330
11555
12896
1310130
148112
1510150
168128
178136
189162
1911209
2014280
2111231
2215330
238184
248192
256150
268208
278216
287196
298232
306180
315155
326192
335165
345170
355175
36272
375185
38276
395195
40280
41141
425210
434172
443132
456270
46292
47294
483144
494196
504200
513153
524208
532106
544216
552110
572114
583174
593177
60160
612122
622124
634252
642128
656390
662132
67167
696414
706420
712142
737511
744296
75175
762152
773231
783234
793237
805400
812162
82182
83183
842168
856510
863258
875435
887616
893267
903270
914364
924368
942188
95195
963288
97197
983294
995495
1003300
1012202
1023306
1036618
1041104
1054420
1062212
1072214
1086648
1094436
1104440
1111111
1124448
1134452
1143342
1154460
1162232
1172234
1193357
1203360
1213363
1223366
1232246
1242248
1262252
1272254
1301130
1312262
1321132
1336798
1342268
1351135
1363408
1374548
1381138
1391139
1401140
1414564
1422284
1432286
1441144
1452290
1461146
1474588
1492298
1512302
1524608
1541154
1551155
1563468
1572314
1594636
1601160
1612322
1622324
1641164
1664664
1672334
1681168
1692338
1701170
1712342
1722344
1732346
1743522
1752350
1762352
1772354
1791179
1802360
1811181
1821182
1832366
1841184
1853555
1862372
1872374
1882376
1894756
1904760
19161146
1923576
1932386
1942388
1951195
1962392
1973591
1983594
1992398
2002400
2011201
2021202
2033609
2044816
20561230
2063618
2072414
2084832
2093627
2102420
2111211
2124848
2133639
2142428
21551075
21661296
2171217
2183654
2191219
2204880
22161326
2223666
2232446
2244896
2253675
2264904
2273681
2284912
2293687
2304920
2313693
2324928
23361398
23451170
2353705
2362472
23771659
23892142
23951195
24071680
2412482
242102420
2434972
2444976
24581960
24661476
24871736
249133237
25041000
251112761
25271764
253102530
254102540
255102550
256164096
257133341
258184644
259143626
26051161330160
Total61181454489
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05116
11000
81
Total6117
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343034266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882e71c6777e4f4
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6537316336373737
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_13.json b/autobahn/client/tungstenite_case_13_1_13.json new file mode 100644 index 0000000..5aace93 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_13.json @@ -0,0 +1,747 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 404, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 919, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=404&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: AUrGfd5IZlY3u0QvrOHubg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BWEfEsTtp978wFYpeqi7P5gTEiI=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1240": 1, + "1243": 2, + "1244": 1, + "1245": 1, + "1246": 1, + "1247": 1, + "1248": 1, + "1249": 4, + "1250": 1, + "1252": 2, + "1254": 2, + "1255": 2, + "1256": 1, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 4, + "1261": 1, + "1262": 3, + "1263": 1, + "1264": 1, + "1265": 3, + "1266": 5, + "1267": 2, + "1268": 3, + "1269": 2, + "1270": 4, + "1271": 4, + "1272": 2, + "1273": 7, + "1274": 5, + "1276": 4, + "1277": 8, + "1278": 4, + "1279": 9, + "1280": 3, + "1281": 9, + "1282": 6, + "1283": 6, + "1284": 11, + "1285": 8, + "1286": 9, + "1287": 9, + "1288": 4, + "1289": 4, + "1290": 8, + "1291": 5, + "1292": 5, + "1293": 5, + "1294": 2, + "1295": 4, + "1296": 1, + "1297": 3, + "1298": 5, + "1299": 4, + "1300": 3, + "1301": 4, + "1302": 5, + "1303": 5, + "1304": 3, + "1305": 6, + "1306": 6, + "1307": 4, + "1308": 4, + "1309": 1, + "1310": 1, + "1311": 4, + "1312": 2, + "1313": 3, + "1314": 2, + "1315": 3, + "1316": 4, + "1317": 2, + "1318": 1, + "1320": 2, + "1321": 2, + "1322": 1, + "1323": 4, + "1325": 3, + "1326": 1, + "1327": 1, + "1328": 2, + "1329": 2, + "1331": 4, + "1332": 2, + "1333": 1, + "1334": 1, + "1335": 2, + "1336": 2, + "1337": 1, + "1338": 2, + "1340": 3, + "1341": 1, + "1343": 2, + "1344": 3, + "1345": 2, + "1346": 1, + "1347": 2, + "1348": 2, + "1349": 4, + "1350": 2, + "1351": 6, + "1352": 1, + "1353": 1, + "1355": 5, + "1356": 4, + "1357": 2, + "1359": 5, + "1360": 4, + "1362": 1, + "1363": 3, + "1364": 3, + "1365": 2, + "1366": 1, + "1367": 2, + "1368": 1, + "1370": 2, + "1371": 4, + "1372": 1, + "1373": 4, + "1374": 1, + "1376": 2, + "1377": 2, + "1378": 3, + "1381": 1, + "1382": 2, + "1383": 1, + "1384": 1, + "1385": 3, + "1386": 3, + "1387": 1, + "1388": 3, + "1389": 3, + "1390": 1, + "1391": 1, + "1393": 2, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 2, + "1400": 1, + "1401": 2, + "1402": 1, + "1405": 1, + "1406": 2, + "1407": 1, + "1408": 1, + "1409": 1, + "1410": 2, + "1413": 2, + "1414": 1, + "1415": 2, + "1416": 1, + "1417": 6, + "1418": 2, + "1419": 1, + "1420": 3, + "1421": 4, + "1422": 1, + "1423": 1, + "1424": 1, + "1425": 4, + "1426": 2, + "1427": 2, + "1428": 1, + "1429": 2, + "1430": 1, + "1431": 4, + "1433": 2, + "1435": 2, + "1436": 4, + "1438": 1, + "1439": 1, + "1440": 3, + "1441": 2, + "1443": 4, + "1444": 1, + "1445": 2, + "1446": 2, + "1448": 1, + "1450": 4, + "1451": 2, + "1452": 1, + "1453": 2, + "1454": 1, + "1455": 2, + "1456": 2, + "1457": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 2, + "1463": 1, + "1464": 2, + "1465": 1, + "1466": 1, + "1467": 2, + "1468": 1, + "1469": 3, + "1470": 2, + "1471": 2, + "1472": 2, + "1473": 4, + "1474": 4, + "1475": 6, + "1476": 3, + "1477": 2, + "1478": 2, + "1479": 1, + "1480": 2, + "1481": 3, + "1482": 3, + "1483": 2, + "1484": 2, + "1485": 1, + "1486": 1, + "1487": 3, + "1488": 4, + "1489": 6, + "1490": 3, + "1491": 2, + "1492": 4, + "1493": 3, + "1494": 2, + "1495": 1, + "1496": 3, + "1497": 3, + "1498": 2, + "1499": 3, + "1500": 5, + "1502": 2, + "1504": 3, + "1505": 2, + "1506": 2, + "1507": 2, + "1508": 2, + "1509": 3, + "1510": 2, + "1511": 1, + "1512": 3, + "1513": 2, + "1514": 1, + "1515": 2, + "1517": 5, + "1518": 2, + "1519": 2, + "1520": 1, + "1521": 4, + "1522": 4, + "1523": 3, + "1524": 4, + "1526": 6, + "1528": 2, + "1529": 1, + "1530": 1, + "1532": 3, + "1533": 5, + "1535": 2, + "1536": 3, + "1537": 1, + "1538": 4, + "1539": 4, + "1540": 5, + "1541": 5, + "1542": 9, + "1543": 5, + "1544": 6, + "1545": 7, + "1546": 6, + "1547": 3, + "1548": 5, + "1549": 1, + "1550": 3, + "1551": 7, + "1552": 2, + "1553": 2, + "1554": 3, + "1555": 6, + "1556": 5, + "1557": 6, + "1558": 3, + "1559": 3, + "1560": 6, + "1561": 5, + "1562": 8, + "1563": 7, + "1564": 11, + "1565": 7, + "1566": 7, + "1567": 2, + "1568": 6, + "1569": 5, + "1570": 5, + "1571": 5, + "1572": 2, + "1573": 3, + "1574": 5, + "1575": 5, + "1576": 3, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 2, + "1582": 1, + "1584": 3, + "1585": 2, + "1586": 3, + "1587": 2, + "1589": 1, + "1590": 2, + "1591": 2, + "1592": 2, + "1593": 2, + "1594": 2, + "1595": 2, + "1596": 1, + "1597": 1, + "1601": 1, + "1608": 1, + "1611": 1, + "1612": 2, + "1615": 2, + "1617": 1, + "1618": 1, + "1621": 1, + "1622": 4, + "1625": 1, + "1627": 2, + "1628": 2, + "1629": 1, + "1630": 6, + "1631": 3, + "1632": 1, + "1633": 2, + "1634": 1, + "1636": 2, + "1638": 1, + "1640": 2, + "1641": 2, + "1643": 1, + "1645": 3, + "1647": 3, + "1648": 2, + "1650": 6, + "1651": 1, + "1652": 2, + "1654": 2, + "1655": 2, + "1656": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1661": 2, + "1662": 1, + "1663": 2, + "1664": 2, + "1665": 1, + "1668": 2 + }, + "started": "2025-09-11T20:11:32.712Z", + "trafficStats": { + "incomingCompressionRatio": 0.043666534423828125, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1430865, + "incomingOctetsWireLevel": 1438865, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0055910236115915895, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1454233, + "outgoingWebSocketFrames": 6116, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016331379969459034, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 5116, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 10, + "3": 11, + "4": 15, + "5": 8, + "6": 10, + "7": 6, + "8": 5, + "9": 11, + "10": 3, + "11": 5, + "12": 8, + "13": 10, + "14": 8, + "15": 10, + "16": 8, + "17": 8, + "18": 9, + "19": 11, + "20": 14, + "21": 11, + "22": 15, + "23": 8, + "24": 8, + "25": 6, + "26": 8, + "27": 8, + "28": 7, + "29": 8, + "30": 6, + "31": 5, + "32": 6, + "33": 5, + "34": 5, + "35": 5, + "36": 2, + "37": 5, + "38": 2, + "39": 5, + "40": 2, + "41": 1, + "42": 5, + "43": 4, + "44": 3, + "45": 6, + "46": 2, + "47": 2, + "48": 3, + "49": 4, + "50": 4, + "51": 3, + "52": 4, + "53": 2, + "54": 4, + "55": 2, + "57": 2, + "58": 3, + "59": 3, + "60": 1, + "61": 2, + "62": 2, + "63": 4, + "64": 2, + "65": 6, + "66": 2, + "67": 1, + "69": 6, + "70": 6, + "71": 2, + "73": 7, + "74": 4, + "75": 1, + "76": 2, + "77": 3, + "78": 3, + "79": 3, + "80": 5, + "81": 2, + "82": 1, + "83": 1, + "84": 2, + "85": 6, + "86": 3, + "87": 5, + "88": 7, + "89": 3, + "90": 3, + "91": 4, + "92": 4, + "94": 2, + "95": 1, + "96": 3, + "97": 1, + "98": 3, + "99": 5, + "100": 3, + "101": 2, + "102": 3, + "103": 6, + "104": 1, + "105": 4, + "106": 2, + "107": 2, + "108": 6, + "109": 4, + "110": 4, + "111": 1, + "112": 4, + "113": 4, + "114": 3, + "115": 4, + "116": 2, + "117": 2, + "119": 3, + "120": 3, + "121": 3, + "122": 3, + "123": 2, + "124": 2, + "126": 2, + "127": 2, + "130": 1, + "131": 2, + "132": 1, + "133": 6, + "134": 2, + "135": 1, + "136": 3, + "137": 4, + "138": 1, + "139": 1, + "140": 1, + "141": 4, + "142": 2, + "143": 2, + "144": 1, + "145": 2, + "146": 1, + "147": 4, + "149": 2, + "151": 2, + "152": 4, + "154": 1, + "155": 1, + "156": 3, + "157": 2, + "159": 4, + "160": 1, + "161": 2, + "162": 2, + "164": 1, + "166": 4, + "167": 2, + "168": 1, + "169": 2, + "170": 1, + "171": 2, + "172": 2, + "173": 2, + "174": 3, + "175": 2, + "176": 2, + "177": 2, + "179": 1, + "180": 2, + "181": 1, + "182": 1, + "183": 2, + "184": 1, + "185": 3, + "186": 2, + "187": 2, + "188": 2, + "189": 4, + "190": 4, + "191": 6, + "192": 3, + "193": 2, + "194": 2, + "195": 1, + "196": 2, + "197": 3, + "198": 3, + "199": 2, + "200": 2, + "201": 1, + "202": 1, + "203": 3, + "204": 4, + "205": 6, + "206": 3, + "207": 2, + "208": 4, + "209": 3, + "210": 2, + "211": 1, + "212": 4, + "213": 3, + "214": 2, + "215": 5, + "216": 6, + "217": 1, + "218": 3, + "219": 1, + "220": 4, + "221": 6, + "222": 3, + "223": 2, + "224": 4, + "225": 3, + "226": 4, + "227": 3, + "228": 4, + "229": 3, + "230": 4, + "231": 3, + "232": 4, + "233": 6, + "234": 5, + "235": 3, + "236": 2, + "237": 7, + "238": 9, + "239": 5, + "240": 7, + "241": 2, + "242": 10, + "243": 4, + "244": 4, + "245": 8, + "246": 6, + "248": 7, + "249": 13, + "250": 4, + "251": 11, + "252": 7, + "253": 10, + "254": 10, + "255": 10, + "256": 16, + "257": 13, + "258": 18, + "259": 14, + "260": 5116 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343034266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e71c6777e4f4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e71c6777" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_14.html b/autobahn/client/tungstenite_case_13_1_14.html new file mode 100644 index 0000000..adb3d64 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_14.html @@ -0,0 +1,540 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.14 : Pass - 1819 ms @ 2025-09-11T20:11:33.633Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=405&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: QrS12VPfkUCRGyyV+B/drA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VsMDGiRL0tyAV65DkGVDtr2fnXw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
280525610
280612806
280725614
2808514040
2809411236
2810616860
2811514055
2812616872
28131233756
28141747838
28152261930
28162673216
28172878876
28181747906
28193598665
28201953580
28213187451
28222056440
28232364929
28241748008
28252159325
28262776302
28272570675
28282262216
28292673554
28302056600
28313496254
28322056640
28331439662
2834822672
2835925515
28361748212
28371645392
28381748246
28391645424
28401028400
2841925569
2842514210
284338529
284412844
284538535
2846411384
284725694
285025700
285112851
285312853
285412854
285525710
285712857
285812858
285925718
286138583
2863411452
286412864
2866411464
286738601
286825736
287025740
287112871
287212872
287312873
287412874
287612876
288212882
288312883
288625772
288712887
288812888
288912889
289025780
289112891
289225784
289612896
289912899
290112901
290338709
290425808
290525810
2906514530
2907823256
2908514540
2909720363
2910411640
2911823288
291225824
291338739
291438742
2915514575
29161029160
29171132087
29181646688
29191029190
29201132120
2921617526
29221955518
29231235076
2924617544
2925926325
29261235112
29271235124
29281235136
2929926361
2930720510
2931926379
2932720524
2933617598
2934411736
2935411740
293625872
293738811
293812938
2939617634
29401132340
2941823528
29421338246
29431029430
2944926496
2945514725
294625892
294738841
296112961
Total10022860358
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21734
32163
428112
525125
622132
726182
820160
934306
1020200
1114154
12896
139117
1417238
1516240
1617272
1716272
1810180
199171
205100
21363
22122
23369
24496
25250
28256
29129
31131
32132
33266
35135
36136
37274
393117
414164
42142
444176
453135
46292
48296
49149
50150
51151
52152
54154
60160
61161
642128
65165
66166
67167
682136
69169
702140
74174
77177
79179
813243
822164
832166
845420
858680
865430
877609
884352
898712
902180
913273
923276
935465
9410940
95111045
96161536
9710970
98111078
996594
100191900
101121212
1026612
1039927
104121248
105121260
106121272
1079963
1087756
1099981
1107770
1116666
1124448
1134452
1142228
1153345
1161116
1176702
118111298
1198952
120131560
121101210
12291098
1235615
1242248
1253375
1411141
2412482
2421242
2432486
24451220
2454980
24661476
24751235
24861488
249122988
250174250
251225522
252276804
253287084
254174318
255358925
256194864
257317967
258205160
259235957
260107192786940
Total117212897789
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
010719
11000
81
Total11720
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343035266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88824152073942ba
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3431353230373339
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_14.json b/autobahn/client/tungstenite_case_13_1_14.json new file mode 100644 index 0000000..52cfdd3 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_14.json @@ -0,0 +1,387 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 405, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 1819, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=405&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: QrS12VPfkUCRGyyV+B/drA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VsMDGiRL0tyAV65DkGVDtr2fnXw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2805": 2, + "2806": 1, + "2807": 2, + "2808": 5, + "2809": 4, + "2810": 6, + "2811": 5, + "2812": 6, + "2813": 12, + "2814": 17, + "2815": 22, + "2816": 26, + "2817": 28, + "2818": 17, + "2819": 35, + "2820": 19, + "2821": 31, + "2822": 20, + "2823": 23, + "2824": 17, + "2825": 21, + "2826": 27, + "2827": 25, + "2828": 22, + "2829": 26, + "2830": 20, + "2831": 34, + "2832": 20, + "2833": 14, + "2834": 8, + "2835": 9, + "2836": 17, + "2837": 16, + "2838": 17, + "2839": 16, + "2840": 10, + "2841": 9, + "2842": 5, + "2843": 3, + "2844": 1, + "2845": 3, + "2846": 4, + "2847": 2, + "2850": 2, + "2851": 1, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 1, + "2858": 1, + "2859": 2, + "2861": 3, + "2863": 4, + "2864": 1, + "2866": 4, + "2867": 3, + "2868": 2, + "2870": 2, + "2871": 1, + "2872": 1, + "2873": 1, + "2874": 1, + "2876": 1, + "2882": 1, + "2883": 1, + "2886": 2, + "2887": 1, + "2888": 1, + "2889": 1, + "2890": 2, + "2891": 1, + "2892": 2, + "2896": 1, + "2899": 1, + "2901": 1, + "2903": 3, + "2904": 2, + "2905": 2, + "2906": 5, + "2907": 8, + "2908": 5, + "2909": 7, + "2910": 4, + "2911": 8, + "2912": 2, + "2913": 3, + "2914": 3, + "2915": 5, + "2916": 10, + "2917": 11, + "2918": 16, + "2919": 10, + "2920": 11, + "2921": 6, + "2922": 19, + "2923": 12, + "2924": 6, + "2925": 9, + "2926": 12, + "2927": 12, + "2928": 12, + "2929": 9, + "2930": 7, + "2931": 9, + "2932": 7, + "2933": 6, + "2934": 4, + "2935": 4, + "2936": 2, + "2937": 3, + "2938": 1, + "2939": 6, + "2940": 11, + "2941": 8, + "2942": 13, + "2943": 10, + "2944": 9, + "2945": 5, + "2946": 2, + "2947": 3, + "2961": 1 + }, + "started": "2025-09-11T20:11:33.633Z", + "trafficStats": { + "incomingCompressionRatio": 0.04351948547363281, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2852093, + "incomingOctetsWireLevel": 2860093, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0028049576223496218, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2897533, + "outgoingWebSocketFrames": 11719, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015932159294945854, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 10719, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 17, + "3": 21, + "4": 28, + "5": 25, + "6": 22, + "7": 26, + "8": 20, + "9": 34, + "10": 20, + "11": 14, + "12": 8, + "13": 9, + "14": 17, + "15": 16, + "16": 17, + "17": 16, + "18": 10, + "19": 9, + "20": 5, + "21": 3, + "22": 1, + "23": 3, + "24": 4, + "25": 2, + "28": 2, + "29": 1, + "31": 1, + "32": 1, + "33": 2, + "35": 1, + "36": 1, + "37": 2, + "39": 3, + "41": 4, + "42": 1, + "44": 4, + "45": 3, + "46": 2, + "48": 2, + "49": 1, + "50": 1, + "51": 1, + "52": 1, + "54": 1, + "60": 1, + "61": 1, + "64": 2, + "65": 1, + "66": 1, + "67": 1, + "68": 2, + "69": 1, + "70": 2, + "74": 1, + "77": 1, + "79": 1, + "81": 3, + "82": 2, + "83": 2, + "84": 5, + "85": 8, + "86": 5, + "87": 7, + "88": 4, + "89": 8, + "90": 2, + "91": 3, + "92": 3, + "93": 5, + "94": 10, + "95": 11, + "96": 16, + "97": 10, + "98": 11, + "99": 6, + "100": 19, + "101": 12, + "102": 6, + "103": 9, + "104": 12, + "105": 12, + "106": 12, + "107": 9, + "108": 7, + "109": 9, + "110": 7, + "111": 6, + "112": 4, + "113": 4, + "114": 2, + "115": 3, + "116": 1, + "117": 6, + "118": 11, + "119": 8, + "120": 13, + "121": 10, + "122": 9, + "123": 5, + "124": 2, + "125": 3, + "141": 1, + "241": 2, + "242": 1, + "243": 2, + "244": 5, + "245": 4, + "246": 6, + "247": 5, + "248": 6, + "249": 12, + "250": 17, + "251": 22, + "252": 27, + "253": 28, + "254": 17, + "255": 35, + "256": 19, + "257": 31, + "258": 20, + "259": 23, + "260": 10719 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343035266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824152073942ba" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "41520739" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_15.html b/autobahn/client/tungstenite_case_13_1_15.html new file mode 100644 index 0000000..41c9a66 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_15.html @@ -0,0 +1,587 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.15 : Pass - 3503 ms @ 2025-09-11T20:11:35.461Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=406&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 8huWaf5r7TTkyWYWdgF1pA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: SM0iN7BSclZvJrliw693qpcQ4hw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
326
4416
515
6212
7214
818
9218
10110
11333
12112
13339
14684
15230
16232
17234
23123
30130
31262
33133
34134
36136
37274
393117
40140
41141
42284
433129
449396
455225
463138
4710470
4810480
4915735
50201000
5114714
5216832
5314742
54211134
55261430
5617952
5711627
58251450
59211239
60241440
6116976
62251550
63241512
64241536
6512780
66171122
67191273
6813884
699621
70251750
71251775
72161152
7312876
7411814
758600
7610760
77131001
784312
796474
803240
81181
822164
832166
845420
853255
863258
875435
884352
89121068
9010900
917637
92111012
939837
942188
953285
972194
983294
99199
1121112
1131113
1141114
1163348
1172234
1191119
1271127
1302260
1992398
2001200
2011201
2021202
2032406
20451020
20571435
20651030
2074828
2081208
20961254
21081680
21161266
2124848
213112343
21481712
21571505
21661296
21761302
2184872
2194876
22051100
22151105
22271554
223173791
224163584
225143150
226132938
22761362
22861368
229102290
230163680
231133003
23292088
23361398
23461404
23561410
2362472
2374948
23851190
2394956
24061440
2413723
2432486
2442488
2462492
2481248
2491249
2513753
2521252
2533759
2542508
2561256
2582516
2591259
260217025642520
Total227045753762
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
021702
11000
81
Total22703
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343036266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882287442092b9c
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3238373434323039
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_15.json b/autobahn/client/tungstenite_case_13_1_15.json new file mode 100644 index 0000000..d878abf --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_15.json @@ -0,0 +1,434 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 406, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 3503, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=406&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 8huWaf5r7TTkyWYWdgF1pA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: SM0iN7BSclZvJrliw693qpcQ4hw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:11:35.461Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5753506, + "outgoingWebSocketFrames": 22702, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01578503761764009, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 21702, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 2, + "4": 4, + "5": 1, + "6": 2, + "7": 2, + "8": 1, + "9": 2, + "10": 1, + "11": 3, + "12": 1, + "13": 3, + "14": 6, + "15": 2, + "16": 2, + "17": 2, + "23": 1, + "30": 1, + "31": 2, + "33": 1, + "34": 1, + "36": 1, + "37": 2, + "39": 3, + "40": 1, + "41": 1, + "42": 2, + "43": 3, + "44": 9, + "45": 5, + "46": 3, + "47": 10, + "48": 10, + "49": 15, + "50": 20, + "51": 14, + "52": 16, + "53": 14, + "54": 21, + "55": 26, + "56": 17, + "57": 11, + "58": 25, + "59": 21, + "60": 24, + "61": 16, + "62": 25, + "63": 24, + "64": 24, + "65": 12, + "66": 17, + "67": 19, + "68": 13, + "69": 9, + "70": 25, + "71": 25, + "72": 16, + "73": 12, + "74": 11, + "75": 8, + "76": 10, + "77": 13, + "78": 4, + "79": 6, + "80": 3, + "81": 1, + "82": 2, + "83": 2, + "84": 5, + "85": 3, + "86": 3, + "87": 5, + "88": 4, + "89": 12, + "90": 10, + "91": 7, + "92": 11, + "93": 9, + "94": 2, + "95": 3, + "97": 2, + "98": 3, + "99": 1, + "112": 1, + "113": 1, + "114": 1, + "116": 3, + "117": 2, + "119": 1, + "127": 1, + "130": 2, + "199": 2, + "200": 1, + "201": 1, + "202": 1, + "203": 2, + "204": 5, + "205": 7, + "206": 5, + "207": 4, + "208": 1, + "209": 6, + "210": 8, + "211": 6, + "212": 4, + "213": 11, + "214": 8, + "215": 7, + "216": 6, + "217": 6, + "218": 4, + "219": 4, + "220": 5, + "221": 5, + "222": 7, + "223": 17, + "224": 16, + "225": 14, + "226": 13, + "227": 6, + "228": 6, + "229": 10, + "230": 16, + "231": 13, + "232": 9, + "233": 6, + "234": 6, + "235": 6, + "236": 2, + "237": 4, + "238": 5, + "239": 4, + "240": 6, + "241": 3, + "243": 2, + "244": 2, + "246": 2, + "248": 1, + "249": 1, + "251": 3, + "252": 1, + "253": 3, + "254": 2, + "256": 1, + "258": 2, + "259": 1, + "260": 21702 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343036266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882287442092b9c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "28744209" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_16.html b/autobahn/client/tungstenite_case_13_1_16.html new file mode 100644 index 0000000..5f22ace --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_16.html @@ -0,0 +1,588 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.16 : Pass - 2624 ms @ 2025-09-11T20:11:38.967Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=407&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: cTe1PSyBtgVj0sh5+goyAQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ppSmTbroM8SXaSn7G8ZyFm56qDQ=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
4552910
4561456
4571457
4581458
4592918
46052300
46173227
46252310
46341852
4641464
46562790
46683728
46762802
46841872
469115159
47083760
47173297
47262832
47362838
47441896
47541900
47652380
47752385
47873346
479178143
480167680
481146734
482136266
48362898
48462904
485104850
486167776
487136331
48894392
48962934
49062940
49162946
4922984
49341972
49452470
49541980
49662976
49731491
4992998
50021000
50221004
5041504
5051505
50731521
50931527
51021020
5121512
51421028
5151515
51721034
51831554
5191519
52021040
52121042
5221522
52321046
5241524
52531575
5261526
52731581
52863168
52921058
53021060
53121062
5371537
5441544
54521090
5471547
5481548
5501550
55121102
55331659
5541554
5551555
55621112
55731671
55895022
55952795
56031680
561105610
562105620
563158445
5642011280
565147910
566169056
567147938
5682111928
5692614794
570179690
571116281
5722514300
5732112033
5742413776
575169200
5762514400
5772413848
5782413872
579126948
580179860
5811911039
582137566
58395247
5842514600
5852514625
586169376
587127044
588116468
58984712
590105900
591137683
59242368
59363558
59431782
5951595
59621192
59721194
59852990
59931797
60031800
60153005
60242408
603127236
604106040
60574235
606116666
60795463
60821216
60931827
61121222
61231836
6131613
6261626
6271627
6281628
63031890
63121262
6331633
6411641
64221284
102850005140000
Total60025688354
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05000
11000
81
Total6001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343037266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88823deedaea3e06
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3364656564616561
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_16.json b/autobahn/client/tungstenite_case_13_1_16.json new file mode 100644 index 0000000..451925f --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_16.json @@ -0,0 +1,435 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 407, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 2624, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=407&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: cTe1PSyBtgVj0sh5+goyAQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ppSmTbroM8SXaSn7G8ZyFm56qDQ=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:11:38.967Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5688098, + "outgoingWebSocketFrames": 6000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0042372148222011696, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 5000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "455": 2, + "456": 1, + "457": 1, + "458": 1, + "459": 2, + "460": 5, + "461": 7, + "462": 5, + "463": 4, + "464": 1, + "465": 6, + "466": 8, + "467": 6, + "468": 4, + "469": 11, + "470": 8, + "471": 7, + "472": 6, + "473": 6, + "474": 4, + "475": 4, + "476": 5, + "477": 5, + "478": 7, + "479": 17, + "480": 16, + "481": 14, + "482": 13, + "483": 6, + "484": 6, + "485": 10, + "486": 16, + "487": 13, + "488": 9, + "489": 6, + "490": 6, + "491": 6, + "492": 2, + "493": 4, + "494": 5, + "495": 4, + "496": 6, + "497": 3, + "499": 2, + "500": 2, + "502": 2, + "504": 1, + "505": 1, + "507": 3, + "509": 3, + "510": 2, + "512": 1, + "514": 2, + "515": 1, + "517": 2, + "518": 3, + "519": 1, + "520": 2, + "521": 2, + "522": 1, + "523": 2, + "524": 1, + "525": 3, + "526": 1, + "527": 3, + "528": 6, + "529": 2, + "530": 2, + "531": 2, + "537": 1, + "544": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "551": 2, + "553": 3, + "554": 1, + "555": 1, + "556": 2, + "557": 3, + "558": 9, + "559": 5, + "560": 3, + "561": 10, + "562": 10, + "563": 15, + "564": 20, + "565": 14, + "566": 16, + "567": 14, + "568": 21, + "569": 26, + "570": 17, + "571": 11, + "572": 25, + "573": 21, + "574": 24, + "575": 16, + "576": 25, + "577": 24, + "578": 24, + "579": 12, + "580": 17, + "581": 19, + "582": 13, + "583": 9, + "584": 25, + "585": 25, + "586": 16, + "587": 12, + "588": 11, + "589": 8, + "590": 10, + "591": 13, + "592": 4, + "593": 6, + "594": 3, + "595": 1, + "596": 2, + "597": 2, + "598": 5, + "599": 3, + "600": 3, + "601": 5, + "602": 4, + "603": 12, + "604": 10, + "605": 7, + "606": 11, + "607": 9, + "608": 2, + "609": 3, + "611": 2, + "612": 3, + "613": 1, + "626": 1, + "627": 1, + "628": 1, + "630": 3, + "631": 2, + "633": 1, + "641": 1, + "642": 2, + "1028": 5000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343037266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823deedaea3e06" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3deedaea" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_17.html b/autobahn/client/tungstenite_case_13_1_17.html new file mode 100644 index 0000000..6023296 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_17.html @@ -0,0 +1,588 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.17 : Pass - 2958 ms @ 2025-09-11T20:11:41.593Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=408&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: oI26KBz8DbAklI3svvdugg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: J3l9HVurM/3w+AmQWLUHdULTXkw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
147922958
148011480
148111481
148211482
148322966
148457420
1485710395
148657430
148745948
148811488
148968934
1490811920
149168946
149245968
14931116423
1494811952
1495710465
149668976
149768982
149845992
149945996
150057500
150157505
1502710514
15031725551
15041624064
15051421070
15061319578
150769042
150869048
15091015090
15101624160
15111319643
1512913608
151369078
151469084
151569090
151623032
151746068
151857590
151946076
152069120
152134563
152323046
152423048
152623052
152811528
152911529
153134593
153334599
153423068
153611536
153823076
153911539
154123082
154234626
154311543
154423088
154523090
154611546
154723094
154811548
154934647
155011550
155134653
155269312
155323106
155423108
155523110
156111561
156811568
156923138
157111571
157211572
157411574
157523150
157734731
157811578
157911579
158023160
158134743
1582914238
158357915
158434752
15851015850
15861015860
15871523805
15882031760
15891422246
15901625440
15911422274
15922133432
15932641418
15941727098
15951117545
15962539900
15972133537
15982438352
15991625584
16002540000
16012438424
16022438448
16031219236
16041727268
16051930495
16061320878
1607914463
16082540200
16092540225
16101625760
16111219332
16121117732
1613812904
16141016140
16151320995
161646464
161769702
161834854
161911619
162023240
162123242
162258110
162334869
162434872
162558125
162646504
16271219524
16281016280
1629711403
16301117930
1631914679
163223264
163334899
163523270
163634908
163711637
165011650
165111651
165211652
165434962
165523310
165711657
166511665
166623332
410010004100000
Total20025672354
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343038266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822fc475222c2c
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3266633437353232
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_17.json b/autobahn/client/tungstenite_case_13_1_17.json new file mode 100644 index 0000000..d15b3e0 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_17.json @@ -0,0 +1,435 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 408, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 2958, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=408&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: oI26KBz8DbAklI3svvdugg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: J3l9HVurM/3w+AmQWLUHdULTXkw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:11:41.593Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5672098, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014124049407337233, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "1479": 2, + "1480": 1, + "1481": 1, + "1482": 1, + "1483": 2, + "1484": 5, + "1485": 7, + "1486": 5, + "1487": 4, + "1488": 1, + "1489": 6, + "1490": 8, + "1491": 6, + "1492": 4, + "1493": 11, + "1494": 8, + "1495": 7, + "1496": 6, + "1497": 6, + "1498": 4, + "1499": 4, + "1500": 5, + "1501": 5, + "1502": 7, + "1503": 17, + "1504": 16, + "1505": 14, + "1506": 13, + "1507": 6, + "1508": 6, + "1509": 10, + "1510": 16, + "1511": 13, + "1512": 9, + "1513": 6, + "1514": 6, + "1515": 6, + "1516": 2, + "1517": 4, + "1518": 5, + "1519": 4, + "1520": 6, + "1521": 3, + "1523": 2, + "1524": 2, + "1526": 2, + "1528": 1, + "1529": 1, + "1531": 3, + "1533": 3, + "1534": 2, + "1536": 1, + "1538": 2, + "1539": 1, + "1541": 2, + "1542": 3, + "1543": 1, + "1544": 2, + "1545": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 3, + "1550": 1, + "1551": 3, + "1552": 6, + "1553": 2, + "1554": 2, + "1555": 2, + "1561": 1, + "1568": 1, + "1569": 2, + "1571": 1, + "1572": 1, + "1574": 1, + "1575": 2, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 3, + "1582": 9, + "1583": 5, + "1584": 3, + "1585": 10, + "1586": 10, + "1587": 15, + "1588": 20, + "1589": 14, + "1590": 16, + "1591": 14, + "1592": 21, + "1593": 26, + "1594": 17, + "1595": 11, + "1596": 25, + "1597": 21, + "1598": 24, + "1599": 16, + "1600": 25, + "1601": 24, + "1602": 24, + "1603": 12, + "1604": 17, + "1605": 19, + "1606": 13, + "1607": 9, + "1608": 25, + "1609": 25, + "1610": 16, + "1611": 12, + "1612": 11, + "1613": 8, + "1614": 10, + "1615": 13, + "1616": 4, + "1617": 6, + "1618": 3, + "1619": 1, + "1620": 2, + "1621": 2, + "1622": 5, + "1623": 3, + "1624": 3, + "1625": 5, + "1626": 4, + "1627": 12, + "1628": 10, + "1629": 7, + "1630": 11, + "1631": 9, + "1632": 2, + "1633": 3, + "1635": 2, + "1636": 3, + "1637": 1, + "1650": 1, + "1651": 1, + "1652": 1, + "1654": 3, + "1655": 2, + "1657": 1, + "1665": 1, + "1666": 2, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343038266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822fc475222c2c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2fc47522" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_18.html b/autobahn/client/tungstenite_case_13_1_18.html new file mode 100644 index 0000000..47293a0 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_18.html @@ -0,0 +1,586 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.18 : Pass - 3629 ms @ 2025-09-11T20:11:44.553Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=409&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 3tqdYc4JyTQtPGlHzC8xnQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ap1zv3kd3iRlvuVJz1K6LjZb9Qo=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668354
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343039266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882db08dfc3d8e0
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6462303864666333
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_18.json b/autobahn/client/tungstenite_case_13_1_18.json new file mode 100644 index 0000000..ddbf426 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_18.json @@ -0,0 +1,433 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 409, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 3629, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=409&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 3tqdYc4JyTQtPGlHzC8xnQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ap1zv3kd3iRlvuVJz1K6LjZb9Qo=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:11:44.553Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343039266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882db08dfc3d8e0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "db08dfc3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_2.html b/autobahn/client/tungstenite_case_13_1_2.html new file mode 100644 index 0000000..2202e6d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_2.html @@ -0,0 +1,328 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.2 : Pass - 171 ms @ 2025-09-11T20:11:24.671Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=393&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: lIuOGFazZlWeEhZXCQOviA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: tno8vdu7Ly9wpYcz8U5toQMeZ3Q=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
114414851
1210120
131431859
141742436
1536540
16681088
17781326
1828504
1916304
23123
28128
36136
41141
42142
55155
2571257
Total100213518
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
74413087
81080
91431287
101741740
1136396
1268816
13781014
1428392
1516240
19119
24124
32132
37137
38138
51151
2521252
Total10029509
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333933266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882a0f2c858a31a
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6130663263383538
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_2.json b/autobahn/client/tungstenite_case_13_1_2.json new file mode 100644 index 0000000..585ca3c --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_2.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 393, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 171, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=393&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: lIuOGFazZlWeEhZXCQOviA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: tno8vdu7Ly9wpYcz8U5toQMeZ3Q=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 441, + "12": 10, + "13": 143, + "14": 174, + "15": 36, + "16": 68, + "17": 78, + "18": 28, + "19": 16, + "23": 1, + "28": 1, + "36": 1, + "41": 1, + "42": 1, + "55": 1, + "257": 1 + }, + "started": "2025-09-11T20:11:24.671Z", + "trafficStats": { + "incomingCompressionRatio": 0.113328125, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 7253, + "incomingOctetsWireLevel": 13253, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.8272438990762443, + "outgoingCompressionRatio": 0.113328125, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 7253, + "outgoingOctetsWireLevel": 9253, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.2757479663587481, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 441, + "8": 10, + "9": 143, + "10": 174, + "11": 36, + "12": 68, + "13": 78, + "14": 28, + "15": 16, + "19": 1, + "24": 1, + "32": 1, + "37": 1, + "38": 1, + "51": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333933266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a0f2c858a31a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a0f2c858" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_3.html b/autobahn/client/tungstenite_case_13_1_3.html new file mode 100644 index 0000000..66d8799 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_3.html @@ -0,0 +1,358 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.3 : Pass - 141 ms @ 2025-09-11T20:11:24.844Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=394&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: yGwV/7t1qreKzb8QOHFNRQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: qAyevjHf1OiX6zzb04chcUSN808=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1742714
18701260
1942798
201382760
211052205
22992178
231252875
24721728
25761900
26541404
27531431
28381064
2929841
3022660
3110310
324128
335165
34134
35270
36136
37274
38138
40140
41141
43143
45290
47147
65165
70170
1511151
2571257
Total100223485
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1342546
1470980
1542630
161382208
171051785
18991782
191252375
20721440
21761596
22541188
23531219
2438912
2529725
2622572
2710270
284112
295145
30130
31262
32132
33266
34134
36136
37137
39139
41282
43143
61161
66166
1471147
2521252
Total100219476
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333934266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888277b599ea745d
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3737623539396561
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_3.json b/autobahn/client/tungstenite_case_13_1_3.json new file mode 100644 index 0000000..b8cf0a9 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_3.json @@ -0,0 +1,205 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 394, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 141, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=394&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: yGwV/7t1qreKzb8QOHFNRQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: qAyevjHf1OiX6zzb04chcUSN808=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "17": 42, + "18": 70, + "19": 42, + "20": 138, + "21": 105, + "22": 99, + "23": 125, + "24": 72, + "25": 76, + "26": 54, + "27": 53, + "28": 38, + "29": 29, + "30": 22, + "31": 10, + "32": 4, + "33": 5, + "34": 1, + "35": 2, + "36": 1, + "37": 2, + "38": 1, + "40": 1, + "41": 1, + "43": 1, + "45": 2, + "47": 1, + "65": 1, + "70": 1, + "151": 1, + "257": 1 + }, + "started": "2025-09-11T20:11:24.844Z", + "trafficStats": { + "incomingCompressionRatio": 0.0672578125, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 17218, + "incomingOctetsWireLevel": 23220, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.3485886862585666, + "outgoingCompressionRatio": 0.0672578125, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 17218, + "outgoingOctetsWireLevel": 19220, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11627366709257754, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 42, + "14": 70, + "15": 42, + "16": 138, + "17": 105, + "18": 99, + "19": 125, + "20": 72, + "21": 76, + "22": 54, + "23": 53, + "24": 38, + "25": 29, + "26": 22, + "27": 10, + "28": 4, + "29": 5, + "30": 1, + "31": 2, + "32": 1, + "33": 2, + "34": 1, + "36": 1, + "37": 1, + "39": 1, + "41": 2, + "43": 1, + "61": 1, + "66": 1, + "147": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333934266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888277b599ea745d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "77b599ea" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_4.html b/autobahn/client/tungstenite_case_13_1_4.html new file mode 100644 index 0000000..6df2e9e --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_4.html @@ -0,0 +1,426 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.4 : Pass - 181 ms @ 2025-09-11T20:11:24.986Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=395&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /oSAN2cuWuoM308xVfKEiw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2SWYFk2hgNzKY17//6t9UtneqMI=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
43143
44144
454180
485240
49149
504200
519459
52221144
53331749
54321728
55392145
56683808
57482736
58633654
59603540
60674020
61664026
62271674
63493087
64291856
65181170
66161056
67312077
68181224
69161104
708560
71191349
72211512
73161168
74292146
75181350
76282128
77312387
7810780
7911869
80181440
8110810
828656
834332
843252
86186
872174
883264
903270
91191
92192
933279
952190
962192
984392
1001100
1011101
1032206
1041104
1051105
1081108
1092218
1101110
1111111
1121112
1132226
1141114
1181118
1741174
2571257
Total100264954
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
39139
40140
414164
445220
45145
464184
479423
48221056
49331617
50321600
51391989
52683536
53482544
54633402
55603300
56673752
57663762
58271566
59492891
60291740
61181098
6216992
63311953
64181152
65161040
668528
67191273
68211428
69161104
70292030
71181278
72282016
73312263
7410740
7511825
76181368
7710770
788624
794316
803240
82182
832166
843252
863258
87187
88188
893267
912182
922184
944376
96196
97197
992198
1001100
1011101
1041104
1052210
1061106
1071107
1081108
1092218
1101110
1141114
1701170
2521252
Total100260945
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333935266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882edc3249dee2b
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6564633332343964
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_4.json b/autobahn/client/tungstenite_case_13_1_4.json new file mode 100644 index 0000000..b6ad76c --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_4.json @@ -0,0 +1,273 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 395, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 181, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=395&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /oSAN2cuWuoM308xVfKEiw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2SWYFk2hgNzKY17//6t9UtneqMI=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "43": 1, + "44": 1, + "45": 4, + "48": 5, + "49": 1, + "50": 4, + "51": 9, + "52": 22, + "53": 33, + "54": 32, + "55": 39, + "56": 68, + "57": 48, + "58": 63, + "59": 60, + "60": 67, + "61": 66, + "62": 27, + "63": 49, + "64": 29, + "65": 18, + "66": 16, + "67": 31, + "68": 18, + "69": 16, + "70": 8, + "71": 19, + "72": 21, + "73": 16, + "74": 29, + "75": 18, + "76": 28, + "77": 31, + "78": 10, + "79": 11, + "80": 18, + "81": 10, + "82": 8, + "83": 4, + "84": 3, + "86": 1, + "87": 2, + "88": 3, + "90": 3, + "91": 1, + "92": 1, + "93": 3, + "95": 2, + "96": 2, + "98": 4, + "100": 1, + "101": 1, + "103": 2, + "104": 1, + "105": 1, + "108": 1, + "109": 2, + "110": 1, + "111": 1, + "112": 1, + "113": 2, + "114": 1, + "118": 1, + "174": 1, + "257": 1 + }, + "started": "2025-09-11T20:11:24.986Z", + "trafficStats": { + "incomingCompressionRatio": 0.0573115234375, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 58687, + "incomingOctetsWireLevel": 64689, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.1022713718540733, + "outgoingCompressionRatio": 0.0573115234375, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 58687, + "outgoingOctetsWireLevel": 60689, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.034113176683081434, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "39": 1, + "40": 1, + "41": 4, + "44": 5, + "45": 1, + "46": 4, + "47": 9, + "48": 22, + "49": 33, + "50": 32, + "51": 39, + "52": 68, + "53": 48, + "54": 63, + "55": 60, + "56": 67, + "57": 66, + "58": 27, + "59": 49, + "60": 29, + "61": 18, + "62": 16, + "63": 31, + "64": 18, + "65": 16, + "66": 8, + "67": 19, + "68": 21, + "69": 16, + "70": 29, + "71": 18, + "72": 28, + "73": 31, + "74": 10, + "75": 11, + "76": 18, + "77": 10, + "78": 8, + "79": 4, + "80": 3, + "82": 1, + "83": 2, + "84": 3, + "86": 3, + "87": 1, + "88": 1, + "89": 3, + "91": 2, + "92": 2, + "94": 4, + "96": 1, + "97": 1, + "99": 2, + "100": 1, + "101": 1, + "104": 1, + "105": 2, + "106": 1, + "107": 1, + "108": 1, + "109": 2, + "110": 1, + "114": 1, + "170": 1, + "252": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333935266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882edc3249dee2b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "edc3249d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_5.html b/autobahn/client/tungstenite_case_13_1_5.html new file mode 100644 index 0000000..1a29472 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_5.html @@ -0,0 +1,538 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.5 : Pass - 246 ms @ 2025-09-11T20:11:25.169Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=396&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 6OkXzDILRmn2UKLS7tq8UA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: n2BFelhxen006aqCjfWv8vw5NcQ=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1521152
1532306
1542308
1554620
1573471
1582316
1592318
1603480
1611161
1622324
1631163
1646984
1655825
1661166
16771169
16871176
169101690
170132210
171101710
172132236
173142422
174193306
175203500
176162816
177284956
178203560
179244296
180234140
181234163
182234186
183285124
184203680
185193515
186173162
187122244
188224136
189264914
190122280
191132483
192152880
193112123
194112134
195163120
196112156
19791773
19871386
199101990
2003600
20191809
202112222
20351015
2044816
205102050
206102060
2074828
20871456
2091209
2103630
21151055
21251060
21351065
214102140
215112365
216102160
217122604
218102180
21971533
2204880
22191989
222112442
223102230
224173808
22561350
226122712
227143178
22871596
229132977
230112530
23192079
232112552
233153495
234122808
235163760
23671652
23761422
2383714
2392478
2401240
2442488
24651230
2472494
2484992
2492498
25041000
2511251
25241008
2531253
2552510
2563768
25751285
2581258
2591259
26041040
2612522
2623786
2631263
26461584
2653795
26661596
26751335
26851340
26992421
27051350
27141084
2721272
2733819
2741274
2761276
2851285
2891289
3101310
Total1002202922
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1481148
1492298
1502300
1514604
1533459
1542308
1552310
1563468
1571157
1582316
1591159
1606960
1615805
1621162
16371141
16471148
165101650
166132158
167101670
168132184
169142366
170193230
171203420
172162752
173284844
174203480
175244200
176234048
177234071
178234094
179285012
180203600
181193439
182173094
183122196
184224048
185264810
186122232
187132431
188152820
189112079
190112090
191163056
192112112
19391737
19471358
195101950
1963588
19791773
198112178
1995995
2004800
201102010
202102020
2034812
20471428
2051205
2063618
20751035
20851040
20951045
210102100
211112321
212102120
213122556
214102140
21571505
2164864
21791953
218112398
219102190
220173740
22161326
222122664
223143122
22471568
225132925
226112486
22792043
228112508
229153435
230122760
231163696
23271624
23361398
2343702
2352470
2361236
2402480
24251210
2432486
2444976
2452490
2464984
2471247
2484992
2491249
2512502
25241008
25341012
2541254
2551255
25641024
2572514
2583774
2591259
26061560
2613783
26261572
26351315
26451320
26592385
26651330
26741068
2681268
2693807
2701270
2721272
2811281
2851285
3061306
Total1002198913
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333936266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88821baeb6a11846
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3162616562366131
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_5.json b/autobahn/client/tungstenite_case_13_1_5.json new file mode 100644 index 0000000..bdae2ce --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_5.json @@ -0,0 +1,385 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 396, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 246, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=396&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 6OkXzDILRmn2UKLS7tq8UA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: n2BFelhxen006aqCjfWv8vw5NcQ=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "152": 1, + "153": 2, + "154": 2, + "155": 4, + "157": 3, + "158": 2, + "159": 2, + "160": 3, + "161": 1, + "162": 2, + "163": 1, + "164": 6, + "165": 5, + "166": 1, + "167": 7, + "168": 7, + "169": 10, + "170": 13, + "171": 10, + "172": 13, + "173": 14, + "174": 19, + "175": 20, + "176": 16, + "177": 28, + "178": 20, + "179": 24, + "180": 23, + "181": 23, + "182": 23, + "183": 28, + "184": 20, + "185": 19, + "186": 17, + "187": 12, + "188": 22, + "189": 26, + "190": 12, + "191": 13, + "192": 15, + "193": 11, + "194": 11, + "195": 16, + "196": 11, + "197": 9, + "198": 7, + "199": 10, + "200": 3, + "201": 9, + "202": 11, + "203": 5, + "204": 4, + "205": 10, + "206": 10, + "207": 4, + "208": 7, + "209": 1, + "210": 3, + "211": 5, + "212": 5, + "213": 5, + "214": 10, + "215": 11, + "216": 10, + "217": 12, + "218": 10, + "219": 7, + "220": 4, + "221": 9, + "222": 11, + "223": 10, + "224": 17, + "225": 6, + "226": 12, + "227": 14, + "228": 7, + "229": 13, + "230": 11, + "231": 9, + "232": 11, + "233": 15, + "234": 12, + "235": 16, + "236": 7, + "237": 6, + "238": 3, + "239": 2, + "240": 1, + "244": 2, + "246": 5, + "247": 2, + "248": 4, + "249": 2, + "250": 4, + "251": 1, + "252": 4, + "253": 1, + "255": 2, + "256": 3, + "257": 5, + "258": 1, + "259": 1, + "260": 4, + "261": 2, + "262": 3, + "263": 1, + "264": 6, + "265": 3, + "266": 6, + "267": 5, + "268": 5, + "269": 9, + "270": 5, + "271": 4, + "272": 1, + "273": 3, + "274": 1, + "276": 1, + "285": 1, + "289": 1, + "310": 1 + }, + "started": "2025-09-11T20:11:25.169Z", + "trafficStats": { + "incomingCompressionRatio": 0.047523681640625, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 194657, + "incomingOctetsWireLevel": 202657, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.04109793123288656, + "outgoingCompressionRatio": 0.047523681640625, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 194657, + "outgoingOctetsWireLevel": 198657, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.02054896561644328, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "148": 1, + "149": 2, + "150": 2, + "151": 4, + "153": 3, + "154": 2, + "155": 2, + "156": 3, + "157": 1, + "158": 2, + "159": 1, + "160": 6, + "161": 5, + "162": 1, + "163": 7, + "164": 7, + "165": 10, + "166": 13, + "167": 10, + "168": 13, + "169": 14, + "170": 19, + "171": 20, + "172": 16, + "173": 28, + "174": 20, + "175": 24, + "176": 23, + "177": 23, + "178": 23, + "179": 28, + "180": 20, + "181": 19, + "182": 17, + "183": 12, + "184": 22, + "185": 26, + "186": 12, + "187": 13, + "188": 15, + "189": 11, + "190": 11, + "191": 16, + "192": 11, + "193": 9, + "194": 7, + "195": 10, + "196": 3, + "197": 9, + "198": 11, + "199": 5, + "200": 4, + "201": 10, + "202": 10, + "203": 4, + "204": 7, + "205": 1, + "206": 3, + "207": 5, + "208": 5, + "209": 5, + "210": 10, + "211": 11, + "212": 10, + "213": 12, + "214": 10, + "215": 7, + "216": 4, + "217": 9, + "218": 11, + "219": 10, + "220": 17, + "221": 6, + "222": 12, + "223": 14, + "224": 7, + "225": 13, + "226": 11, + "227": 9, + "228": 11, + "229": 15, + "230": 12, + "231": 16, + "232": 7, + "233": 6, + "234": 3, + "235": 2, + "236": 1, + "240": 2, + "242": 5, + "243": 2, + "244": 4, + "245": 2, + "246": 4, + "247": 1, + "248": 4, + "249": 1, + "251": 2, + "252": 4, + "253": 4, + "254": 1, + "255": 1, + "256": 4, + "257": 2, + "258": 3, + "259": 1, + "260": 6, + "261": 3, + "262": 6, + "263": 5, + "264": 5, + "265": 9, + "266": 5, + "267": 4, + "268": 1, + "269": 3, + "270": 1, + "272": 1, + "281": 1, + "285": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333936266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821baeb6a11846" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1baeb6a1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_6.html b/autobahn/client/tungstenite_case_13_1_6.html new file mode 100644 index 0000000..20b1e65 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_6.html @@ -0,0 +1,660 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.6 : Pass - 309 ms @ 2025-09-11T20:11:25.416Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=397&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pD9NXgNz9T5cVXSwH/8CLA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rCjFfJz7hs//jiu88YI6Itd6w+Q=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
30551525
30661836
3072614
30851540
30961854
310113410
311103110
3123936
3131313
31451570
3151315
3163948
3171317
31851590
31972233
32041280
32161926
322123864
32341292
324123888
325113575
326103260
327134251
328103280
329185922
330165280
331154965
332103320
333216993
334217014
335196365
336134368
337165392
33872366
33972373
340124080
341113751
342103420
34351715
34472408
34541380
34651730
34751735
34831044
3491349
35051750
35151755
35262112
35393177
35493186
35593195
35682848
357103570
35882864
359145026
36093240
361103610
362124344
36393267
36482912
365124380
36682928
367103670
36841472
36962214
37062220
3712742
3722744
373114103
37472618
3752750
376114136
37772639
37883024
37931137
38072660
38183048
38262292
383103830
38462304
38541540
3862772
38772709
3882776
38931167
39031170
39141564
39231176
39331179
39451970
3952790
39641584
39731191
39841592
39931197
40031200
40162406
40241608
40331209
4041404
4051405
40641624
40731221
40831224
4091409
41041640
41183288
41231236
4132826
41472898
41562490
4162832
4171417
4181418
41941676
420125040
42152105
42231266
42331269
4242848
4252850
42672982
42741708
42831284
42931287
43052150
4312862
43331299
43431302
43531305
4361436
4371437
43831314
4401440
4411441
4452890
4461446
44731341
4491449
4511451
45231356
4531453
45431362
45531365
4561456
45794113
45883664
4592918
46073220
461104610
46294158
4632926
46473248
465136045
46662796
46783736
46852340
46983752
47094230
47162826
47283776
4732946
47441896
4751475
4762952
4772954
4781478
4791479
4802960
4811481
4821482
48331449
4841484
4861486
4881488
4912982
4921492
49331479
4941494
4961496
4971497
Total1002377539
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
30151505
30261812
3032606
30451520
30561830
306113366
307103070
3083924
3091309
31051550
3111311
3123936
3131313
31451570
31572205
31641264
31761902
318123816
31941276
320123840
321113531
322103220
323134199
324103240
325185850
326165216
327154905
328103280
329216909
330216930
331196289
332134316
333165328
33472338
33572345
336124032
337113707
338103380
33951695
34072380
34141364
34251710
34351715
34431032
3451345
34651730
34751735
34862088
34993141
35093150
35193159
35282816
353103530
35482832
355144970
35693204
357103570
358124296
35993231
36082880
361124332
36282896
363103630
36441456
36562190
36662196
3672734
3682736
369114059
37072590
3712742
372114092
37372611
37482992
37531125
37672632
37783016
37862268
379103790
38062280
38141524
3822764
38372681
3842768
38531155
38631158
38741548
38831164
38931167
39051950
3912782
39241568
39331179
39441576
39531185
39631188
39762382
39841592
39931197
4001400
4011401
40241608
40331209
40431212
4051405
40641624
40783256
40831224
4092818
41072870
41162466
4122824
4131413
4141414
41541660
416124992
41752085
41831254
41931257
4202840
4212842
42272954
42341692
42431272
42531275
42652130
4272854
42931287
43031290
43131293
4321432
4331433
43431302
4361436
4371437
4412882
4421442
44331329
4451445
4471447
44831344
4491449
45031350
45131353
4521452
45394077
45483632
4552910
45673192
457104570
45894122
4592918
46073220
461135993
46262772
46383704
46452320
46583720
46694194
46762802
46883744
4692938
47041880
4711471
4722944
4732946
4741474
4751475
4762952
4771477
4781478
47931437
4801480
4821482
4841484
4872974
4881488
48931467
4901490
4921492
4931493
Total1002373530
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333937266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882ecce84a6ef26
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6563636538346136
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_6.json b/autobahn/client/tungstenite_case_13_1_6.json new file mode 100644 index 0000000..f6be033 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_6.json @@ -0,0 +1,507 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 397, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 309, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=397&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pD9NXgNz9T5cVXSwH/8CLA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rCjFfJz7hs//jiu88YI6Itd6w+Q=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "305": 5, + "306": 6, + "307": 2, + "308": 5, + "309": 6, + "310": 11, + "311": 10, + "312": 3, + "313": 1, + "314": 5, + "315": 1, + "316": 3, + "317": 1, + "318": 5, + "319": 7, + "320": 4, + "321": 6, + "322": 12, + "323": 4, + "324": 12, + "325": 11, + "326": 10, + "327": 13, + "328": 10, + "329": 18, + "330": 16, + "331": 15, + "332": 10, + "333": 21, + "334": 21, + "335": 19, + "336": 13, + "337": 16, + "338": 7, + "339": 7, + "340": 12, + "341": 11, + "342": 10, + "343": 5, + "344": 7, + "345": 4, + "346": 5, + "347": 5, + "348": 3, + "349": 1, + "350": 5, + "351": 5, + "352": 6, + "353": 9, + "354": 9, + "355": 9, + "356": 8, + "357": 10, + "358": 8, + "359": 14, + "360": 9, + "361": 10, + "362": 12, + "363": 9, + "364": 8, + "365": 12, + "366": 8, + "367": 10, + "368": 4, + "369": 6, + "370": 6, + "371": 2, + "372": 2, + "373": 11, + "374": 7, + "375": 2, + "376": 11, + "377": 7, + "378": 8, + "379": 3, + "380": 7, + "381": 8, + "382": 6, + "383": 10, + "384": 6, + "385": 4, + "386": 2, + "387": 7, + "388": 2, + "389": 3, + "390": 3, + "391": 4, + "392": 3, + "393": 3, + "394": 5, + "395": 2, + "396": 4, + "397": 3, + "398": 4, + "399": 3, + "400": 3, + "401": 6, + "402": 4, + "403": 3, + "404": 1, + "405": 1, + "406": 4, + "407": 3, + "408": 3, + "409": 1, + "410": 4, + "411": 8, + "412": 3, + "413": 2, + "414": 7, + "415": 6, + "416": 2, + "417": 1, + "418": 1, + "419": 4, + "420": 12, + "421": 5, + "422": 3, + "423": 3, + "424": 2, + "425": 2, + "426": 7, + "427": 4, + "428": 3, + "429": 3, + "430": 5, + "431": 2, + "433": 3, + "434": 3, + "435": 3, + "436": 1, + "437": 1, + "438": 3, + "440": 1, + "441": 1, + "445": 2, + "446": 1, + "447": 3, + "449": 1, + "451": 1, + "452": 3, + "453": 1, + "454": 3, + "455": 3, + "456": 1, + "457": 9, + "458": 8, + "459": 2, + "460": 7, + "461": 10, + "462": 9, + "463": 2, + "464": 7, + "465": 13, + "466": 6, + "467": 8, + "468": 5, + "469": 8, + "470": 9, + "471": 6, + "472": 8, + "473": 2, + "474": 4, + "475": 1, + "476": 2, + "477": 2, + "478": 1, + "479": 1, + "480": 2, + "481": 1, + "482": 1, + "483": 3, + "484": 1, + "486": 1, + "488": 1, + "491": 2, + "492": 1, + "493": 3, + "494": 1, + "496": 1, + "497": 1 + }, + "started": "2025-09-11T20:11:25.416Z", + "trafficStats": { + "incomingCompressionRatio": 0.045077392578125, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 369274, + "incomingOctetsWireLevel": 377274, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.02166413015809399, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 373274, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.010832065079046995, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "301": 5, + "302": 6, + "303": 2, + "304": 5, + "305": 6, + "306": 11, + "307": 10, + "308": 3, + "309": 1, + "310": 5, + "311": 1, + "312": 3, + "313": 1, + "314": 5, + "315": 7, + "316": 4, + "317": 6, + "318": 12, + "319": 4, + "320": 12, + "321": 11, + "322": 10, + "323": 13, + "324": 10, + "325": 18, + "326": 16, + "327": 15, + "328": 10, + "329": 21, + "330": 21, + "331": 19, + "332": 13, + "333": 16, + "334": 7, + "335": 7, + "336": 12, + "337": 11, + "338": 10, + "339": 5, + "340": 7, + "341": 4, + "342": 5, + "343": 5, + "344": 3, + "345": 1, + "346": 5, + "347": 5, + "348": 6, + "349": 9, + "350": 9, + "351": 9, + "352": 8, + "353": 10, + "354": 8, + "355": 14, + "356": 9, + "357": 10, + "358": 12, + "359": 9, + "360": 8, + "361": 12, + "362": 8, + "363": 10, + "364": 4, + "365": 6, + "366": 6, + "367": 2, + "368": 2, + "369": 11, + "370": 7, + "371": 2, + "372": 11, + "373": 7, + "374": 8, + "375": 3, + "376": 7, + "377": 8, + "378": 6, + "379": 10, + "380": 6, + "381": 4, + "382": 2, + "383": 7, + "384": 2, + "385": 3, + "386": 3, + "387": 4, + "388": 3, + "389": 3, + "390": 5, + "391": 2, + "392": 4, + "393": 3, + "394": 4, + "395": 3, + "396": 3, + "397": 6, + "398": 4, + "399": 3, + "400": 1, + "401": 1, + "402": 4, + "403": 3, + "404": 3, + "405": 1, + "406": 4, + "407": 8, + "408": 3, + "409": 2, + "410": 7, + "411": 6, + "412": 2, + "413": 1, + "414": 1, + "415": 4, + "416": 12, + "417": 5, + "418": 3, + "419": 3, + "420": 2, + "421": 2, + "422": 7, + "423": 4, + "424": 3, + "425": 3, + "426": 5, + "427": 2, + "429": 3, + "430": 3, + "431": 3, + "432": 1, + "433": 1, + "434": 3, + "436": 1, + "437": 1, + "441": 2, + "442": 1, + "443": 3, + "445": 1, + "447": 1, + "448": 3, + "449": 1, + "450": 3, + "451": 3, + "452": 1, + "453": 9, + "454": 8, + "455": 2, + "456": 7, + "457": 10, + "458": 9, + "459": 2, + "460": 7, + "461": 13, + "462": 6, + "463": 8, + "464": 5, + "465": 8, + "466": 9, + "467": 6, + "468": 8, + "469": 2, + "470": 4, + "471": 1, + "472": 2, + "473": 2, + "474": 1, + "475": 1, + "476": 2, + "477": 1, + "478": 1, + "479": 3, + "480": 1, + "482": 1, + "484": 1, + "487": 2, + "488": 1, + "489": 3, + "490": 1, + "492": 1, + "493": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333937266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ecce84a6ef26" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ecce84a6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_7.html b/autobahn/client/tungstenite_case_13_1_7.html new file mode 100644 index 0000000..8ccc525 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_7.html @@ -0,0 +1,856 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.7 : Pass - 745 ms @ 2025-09-11T20:11:25.727Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=398&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: SFAVXFvIgo+r/AaxNyJ47Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5ifgrlfncThpvIGGxHPhX2fvMww=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
60521210
60631818
6071607
60821216
6091609
6101610
6111611
6121612
6131613
61421228
61531845
61674312
61742468
61863708
619106190
62074340
62153105
62231866
623106230
62453120
6251625
62642504
62774389
62895652
62985032
630116930
63195679
632106320
633159495
63495706
635159525
63674452
63763822
63885104
63985112
64074480
64131923
64253210
64342572
64474508
64553225
64642584
64753235
64853240
64974543
65042600
65121302
6521652
65363918
65431962
65521310
65621312
65742628
65863948
65953295
66085280
66163966
66274634
66321326
66474648
66595985
666117326
667106670
668117348
66985352
67074690
67185368
67274704
67342692
67485392
67564050
67642704
67753385
67842712
67921358
68021360
68142724
6821682
68342732
68442736
68542740
68621372
6871687
68842752
68942756
6901690
69121382
69242768
69321386
69432082
69532085
6961696
69732091
69832094
69953495
70042800
70132103
70242808
70342812
70432112
70521410
70632118
70721414
70864248
70932127
71085680
71121422
7121712
7131713
71432142
71532145
7161716
7171717
71821436
71932157
72021440
72121442
72242888
72321446
72432172
72521450
72653630
72721454
72821456
72953645
73021460
73121462
7321732
7331733
73432202
73632208
7371737
73842952
73921478
74053700
74121482
74332229
74432232
74553725
74732241
74832244
74921498
75021500
7511751
7521752
75375271
7541754
7551755
7561756
7571757
7581758
75943036
76043040
76132283
76253810
76332289
76421528
76621532
76732301
76843072
7691769
7701770
77132313
7731773
7741774
77532325
7761776
77721554
7781778
77932337
7801780
7811781
7821782
7841784
7871787
79021580
79121582
79232376
7931793
79443176
79521590
79621592
7981798
79943196
80154005
80221604
8041804
80521610
80621612
8071807
8081808
80932427
81075670
81164866
81221624
81364878
81443256
81554075
81632448
81721634
81821636
81921638
82043280
82132463
82243288
82332469
82421648
82532475
82754135
82821656
82964974
83154155
83243328
83343332
83443336
83543340
83621672
8371837
83886704
83921678
84021680
84143364
84243368
84321686
84454220
84521690
84675922
84732541
84865088
84921698
8501850
85121702
85221704
8531853
85454270
855108550
85654280
85743428
85854290
85954295
8601860
86154305
86232586
86332589
86443456
86543460
86632598
86776069
86832604
86943476
87065220
87165226
87276104
87332619
87421748
8751875
8761876
87732631
87832634
87921758
88121762
8821882
8831883
88521770
88621772
88821776
89021780
8911891
89221784
8941894
8971897
8981898
9031903
9041904
9081908
9101910
91143644
9121912
9141914
Total1002729547
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
60121202
60231806
6031603
60421208
6051605
6061606
6071607
6081608
6091609
61021220
61131833
61274284
61342452
61463684
615106150
61674312
61753085
61831854
619106190
62053100
6211621
62242488
62374361
62495616
62585000
626116886
62795643
628106280
629159435
63095670
631159465
63274424
63363798
63485072
63585080
63674452
63731911
63853190
63942556
64074480
64153205
64242568
64353215
64453220
64574515
64642584
64721294
6481648
64963894
65031950
65121302
65221304
65342612
65463924
65553275
65685248
65763942
65874606
65921318
66074620
66195949
662117282
663106630
664117304
66585320
66674662
66785336
66874676
66942676
67085360
67164026
67242688
67353365
67442696
67521350
67621352
67742708
6781678
67942716
68042720
68142724
68221364
6831683
68442736
68542740
6861686
68721374
68842752
68921378
69032070
69132073
6921692
69332079
69432082
69553475
69642784
69732091
69842792
69942796
70032100
70121402
70232106
70321406
70464224
70532115
70685648
70721414
7081708
7091709
71032130
71132133
7121712
7131713
71421428
71532145
71621432
71721434
71842872
71921438
72032160
72121442
72253610
72321446
72421448
72553625
72621452
72721454
7281728
7291729
73032190
73232196
7331733
73442936
73521470
73653680
73721474
73932217
74032220
74153705
74332229
74432232
74521490
74621492
7471747
7481748
74975243
7501750
7511751
7521752
7531753
7541754
75543020
75643024
75732271
75853790
75932277
76021520
76221524
76332289
76443056
7651765
7661766
76732301
7691769
7701770
77132313
7721772
77321546
7741774
77532325
7761776
7771777
7781778
7801780
7831783
78621572
78721574
78832364
7891789
79043160
79121582
79221584
7941794
79543180
79753985
79821596
8001800
80121602
80221604
8031803
8041804
80532415
80675642
80764842
80821616
80964854
81043240
81154055
81232436
81321626
81421628
81521630
81643264
81732451
81843272
81932457
82021640
82132463
82354115
82421648
82564950
82754135
82843312
82943316
83043320
83143324
83221664
8331833
83486672
83521670
83621672
83743348
83843352
83921678
84054200
84121682
84275894
84332529
84465064
84521690
8461846
84721694
84821696
8491849
85054250
851108510
85254260
85343412
85454270
85554275
8561856
85754285
85832574
85932577
86043440
86143444
86232586
86376041
86432592
86543460
86665196
86765202
86876076
86932607
87021740
8711871
8721872
87332619
87432622
87521750
87721754
8781878
8791879
88121762
88221764
88421768
88621772
8871887
88821776
8901890
8931893
8941894
8991899
9001900
9041904
9061906
90743628
9081908
9101910
Total1002725538
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333938266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88821098a1fa1370
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3130393861316661
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_7.json b/autobahn/client/tungstenite_case_13_1_7.json new file mode 100644 index 0000000..40a591e --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_7.json @@ -0,0 +1,703 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 398, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 745, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=398&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: SFAVXFvIgo+r/AaxNyJ47Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5ifgrlfncThpvIGGxHPhX2fvMww=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "605": 2, + "606": 3, + "607": 1, + "608": 2, + "609": 1, + "610": 1, + "611": 1, + "612": 1, + "613": 1, + "614": 2, + "615": 3, + "616": 7, + "617": 4, + "618": 6, + "619": 10, + "620": 7, + "621": 5, + "622": 3, + "623": 10, + "624": 5, + "625": 1, + "626": 4, + "627": 7, + "628": 9, + "629": 8, + "630": 11, + "631": 9, + "632": 10, + "633": 15, + "634": 9, + "635": 15, + "636": 7, + "637": 6, + "638": 8, + "639": 8, + "640": 7, + "641": 3, + "642": 5, + "643": 4, + "644": 7, + "645": 5, + "646": 4, + "647": 5, + "648": 5, + "649": 7, + "650": 4, + "651": 2, + "652": 1, + "653": 6, + "654": 3, + "655": 2, + "656": 2, + "657": 4, + "658": 6, + "659": 5, + "660": 8, + "661": 6, + "662": 7, + "663": 2, + "664": 7, + "665": 9, + "666": 11, + "667": 10, + "668": 11, + "669": 8, + "670": 7, + "671": 8, + "672": 7, + "673": 4, + "674": 8, + "675": 6, + "676": 4, + "677": 5, + "678": 4, + "679": 2, + "680": 2, + "681": 4, + "682": 1, + "683": 4, + "684": 4, + "685": 4, + "686": 2, + "687": 1, + "688": 4, + "689": 4, + "690": 1, + "691": 2, + "692": 4, + "693": 2, + "694": 3, + "695": 3, + "696": 1, + "697": 3, + "698": 3, + "699": 5, + "700": 4, + "701": 3, + "702": 4, + "703": 4, + "704": 3, + "705": 2, + "706": 3, + "707": 2, + "708": 6, + "709": 3, + "710": 8, + "711": 2, + "712": 1, + "713": 1, + "714": 3, + "715": 3, + "716": 1, + "717": 1, + "718": 2, + "719": 3, + "720": 2, + "721": 2, + "722": 4, + "723": 2, + "724": 3, + "725": 2, + "726": 5, + "727": 2, + "728": 2, + "729": 5, + "730": 2, + "731": 2, + "732": 1, + "733": 1, + "734": 3, + "736": 3, + "737": 1, + "738": 4, + "739": 2, + "740": 5, + "741": 2, + "743": 3, + "744": 3, + "745": 5, + "747": 3, + "748": 3, + "749": 2, + "750": 2, + "751": 1, + "752": 1, + "753": 7, + "754": 1, + "755": 1, + "756": 1, + "757": 1, + "758": 1, + "759": 4, + "760": 4, + "761": 3, + "762": 5, + "763": 3, + "764": 2, + "766": 2, + "767": 3, + "768": 4, + "769": 1, + "770": 1, + "771": 3, + "773": 1, + "774": 1, + "775": 3, + "776": 1, + "777": 2, + "778": 1, + "779": 3, + "780": 1, + "781": 1, + "782": 1, + "784": 1, + "787": 1, + "790": 2, + "791": 2, + "792": 3, + "793": 1, + "794": 4, + "795": 2, + "796": 2, + "798": 1, + "799": 4, + "801": 5, + "802": 2, + "804": 1, + "805": 2, + "806": 2, + "807": 1, + "808": 1, + "809": 3, + "810": 7, + "811": 6, + "812": 2, + "813": 6, + "814": 4, + "815": 5, + "816": 3, + "817": 2, + "818": 2, + "819": 2, + "820": 4, + "821": 3, + "822": 4, + "823": 3, + "824": 2, + "825": 3, + "827": 5, + "828": 2, + "829": 6, + "831": 5, + "832": 4, + "833": 4, + "834": 4, + "835": 4, + "836": 2, + "837": 1, + "838": 8, + "839": 2, + "840": 2, + "841": 4, + "842": 4, + "843": 2, + "844": 5, + "845": 2, + "846": 7, + "847": 3, + "848": 6, + "849": 2, + "850": 1, + "851": 2, + "852": 2, + "853": 1, + "854": 5, + "855": 10, + "856": 5, + "857": 4, + "858": 5, + "859": 5, + "860": 1, + "861": 5, + "862": 3, + "863": 3, + "864": 4, + "865": 4, + "866": 3, + "867": 7, + "868": 3, + "869": 4, + "870": 6, + "871": 6, + "872": 7, + "873": 3, + "874": 2, + "875": 1, + "876": 1, + "877": 3, + "878": 3, + "879": 2, + "881": 2, + "882": 1, + "883": 1, + "885": 2, + "886": 2, + "888": 2, + "890": 2, + "891": 1, + "892": 2, + "894": 1, + "897": 1, + "898": 1, + "903": 1, + "904": 1, + "908": 1, + "910": 1, + "911": 4, + "912": 1, + "914": 1 + }, + "started": "2025-09-11T20:11:25.727Z", + "trafficStats": { + "incomingCompressionRatio": 0.0440235595703125, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 721282, + "incomingOctetsWireLevel": 729282, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.011091362324305888, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 725282, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.005545681162152944, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "601": 2, + "602": 3, + "603": 1, + "604": 2, + "605": 1, + "606": 1, + "607": 1, + "608": 1, + "609": 1, + "610": 2, + "611": 3, + "612": 7, + "613": 4, + "614": 6, + "615": 10, + "616": 7, + "617": 5, + "618": 3, + "619": 10, + "620": 5, + "621": 1, + "622": 4, + "623": 7, + "624": 9, + "625": 8, + "626": 11, + "627": 9, + "628": 10, + "629": 15, + "630": 9, + "631": 15, + "632": 7, + "633": 6, + "634": 8, + "635": 8, + "636": 7, + "637": 3, + "638": 5, + "639": 4, + "640": 7, + "641": 5, + "642": 4, + "643": 5, + "644": 5, + "645": 7, + "646": 4, + "647": 2, + "648": 1, + "649": 6, + "650": 3, + "651": 2, + "652": 2, + "653": 4, + "654": 6, + "655": 5, + "656": 8, + "657": 6, + "658": 7, + "659": 2, + "660": 7, + "661": 9, + "662": 11, + "663": 10, + "664": 11, + "665": 8, + "666": 7, + "667": 8, + "668": 7, + "669": 4, + "670": 8, + "671": 6, + "672": 4, + "673": 5, + "674": 4, + "675": 2, + "676": 2, + "677": 4, + "678": 1, + "679": 4, + "680": 4, + "681": 4, + "682": 2, + "683": 1, + "684": 4, + "685": 4, + "686": 1, + "687": 2, + "688": 4, + "689": 2, + "690": 3, + "691": 3, + "692": 1, + "693": 3, + "694": 3, + "695": 5, + "696": 4, + "697": 3, + "698": 4, + "699": 4, + "700": 3, + "701": 2, + "702": 3, + "703": 2, + "704": 6, + "705": 3, + "706": 8, + "707": 2, + "708": 1, + "709": 1, + "710": 3, + "711": 3, + "712": 1, + "713": 1, + "714": 2, + "715": 3, + "716": 2, + "717": 2, + "718": 4, + "719": 2, + "720": 3, + "721": 2, + "722": 5, + "723": 2, + "724": 2, + "725": 5, + "726": 2, + "727": 2, + "728": 1, + "729": 1, + "730": 3, + "732": 3, + "733": 1, + "734": 4, + "735": 2, + "736": 5, + "737": 2, + "739": 3, + "740": 3, + "741": 5, + "743": 3, + "744": 3, + "745": 2, + "746": 2, + "747": 1, + "748": 1, + "749": 7, + "750": 1, + "751": 1, + "752": 1, + "753": 1, + "754": 1, + "755": 4, + "756": 4, + "757": 3, + "758": 5, + "759": 3, + "760": 2, + "762": 2, + "763": 3, + "764": 4, + "765": 1, + "766": 1, + "767": 3, + "769": 1, + "770": 1, + "771": 3, + "772": 1, + "773": 2, + "774": 1, + "775": 3, + "776": 1, + "777": 1, + "778": 1, + "780": 1, + "783": 1, + "786": 2, + "787": 2, + "788": 3, + "789": 1, + "790": 4, + "791": 2, + "792": 2, + "794": 1, + "795": 4, + "797": 5, + "798": 2, + "800": 1, + "801": 2, + "802": 2, + "803": 1, + "804": 1, + "805": 3, + "806": 7, + "807": 6, + "808": 2, + "809": 6, + "810": 4, + "811": 5, + "812": 3, + "813": 2, + "814": 2, + "815": 2, + "816": 4, + "817": 3, + "818": 4, + "819": 3, + "820": 2, + "821": 3, + "823": 5, + "824": 2, + "825": 6, + "827": 5, + "828": 4, + "829": 4, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 8, + "835": 2, + "836": 2, + "837": 4, + "838": 4, + "839": 2, + "840": 5, + "841": 2, + "842": 7, + "843": 3, + "844": 6, + "845": 2, + "846": 1, + "847": 2, + "848": 2, + "849": 1, + "850": 5, + "851": 10, + "852": 5, + "853": 4, + "854": 5, + "855": 5, + "856": 1, + "857": 5, + "858": 3, + "859": 3, + "860": 4, + "861": 4, + "862": 3, + "863": 7, + "864": 3, + "865": 4, + "866": 6, + "867": 6, + "868": 7, + "869": 3, + "870": 2, + "871": 1, + "872": 1, + "873": 3, + "874": 3, + "875": 2, + "877": 2, + "878": 1, + "879": 1, + "881": 2, + "882": 2, + "884": 2, + "886": 2, + "887": 1, + "888": 2, + "890": 1, + "893": 1, + "894": 1, + "899": 1, + "900": 1, + "904": 1, + "906": 1, + "907": 4, + "908": 1, + "910": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333938266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821098a1fa1370" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1098a1fa" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_8.html b/autobahn/client/tungstenite_case_13_1_8.html new file mode 100644 index 0000000..8ccab0b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_8.html @@ -0,0 +1,1018 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.8 : Pass - 1210 ms @ 2025-09-11T20:11:26.474Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=399&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: leAFoIgcoxF5OHo1hiubfg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UdbbEHK5w6Y3sdzQOUVyXxWFvcU=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
124011240
124322486
124411244
124511245
124611246
124711247
124811248
124944996
125011250
125222504
125422508
125522510
125611256
125711257
125833774
125911259
126045040
126111261
126233786
126311263
126411264
126533795
126656330
126722534
126833804
126922538
127045080
127145084
127222544
127378911
127456370
127645104
1277810216
127845112
1279911511
128033840
1281911529
128267692
128367698
12841114124
1285810280
1286911574
1287911583
128845152
128945156
1290810320
129156455
129256460
129356465
129422588
129545180
129611296
129733891
129856490
129945196
130033900
130145204
130256510
130356515
130433912
130567830
130667836
130745228
130845232
130911309
131011310
131145244
131222624
131333939
131422628
131533945
131645264
131722634
131811318
132022640
132122642
132211322
132345292
132533975
132611326
132711327
132822656
132922658
133145324
133222664
133311333
133411334
133522670
133622672
133711337
133822676
134034020
134111341
134322686
134434032
134522690
134611346
134722694
134822696
134945396
135022700
135168106
135211352
135311353
135556775
135645424
135722714
135956795
136045440
136211362
136334089
136434092
136522730
136611366
136722734
136811368
137022740
137145484
137211372
137345492
137411374
137622752
137722754
137834134
138111381
138222764
138311383
138411384
138534155
138634158
138711387
138834164
138934167
139011390
139111391
139322786
139534185
139622792
139711397
139822796
139922798
140011400
140122802
140211402
140511405
140622812
140711407
140811408
140911409
141022820
141322826
141411414
141522830
141611416
141768502
141822836
141911419
142034260
142145684
142211422
142311423
142411424
142545700
142622852
142722854
142811428
142922858
143011430
143145724
143322866
143522870
143645744
143811438
143911439
144034320
144122882
144345772
144411444
144522890
144622892
144811448
145045800
145122902
145211452
145322906
145411454
145522910
145622912
145722914
145834374
145922918
146022920
146122922
146311463
146422928
146511465
146611466
146722934
146811468
146934407
147022940
147122942
147222944
147345892
147445896
147568850
147634428
147722954
147822956
147911479
148022960
148134443
148234446
148322966
148422968
148511485
148611486
148734461
148845952
148968934
149034470
149122982
149245968
149334479
149422988
149511495
149634488
149734491
149822996
149934497
150057500
150223004
150434512
150523010
150623012
150723014
150823016
150934527
151023020
151111511
151234536
151323026
151411514
151523030
151757585
151823036
151923038
152011520
152146084
152246088
152334569
152446096
152669156
152823056
152911529
153011530
153234596
153357665
153523070
153634608
153711537
153846152
153946156
154057700
154157705
1542913878
154357715
154469264
1545710815
154669276
154734641
154857740
154911549
155034650
1551710857
155223104
155323106
155434662
155569330
155657780
155769342
155834674
155934677
156069360
156157805
1562812496
1563710941
15641117204
1565710955
1566710962
156723134
156869408
156957845
157057850
157157855
157223144
157334719
157457870
157557875
157634728
157734731
157811578
157911579
158023160
158123162
158211582
158434752
158523170
158634758
158723174
158911589
159023180
159123182
159223184
159323186
159423188
159523190
159611596
159711597
160111601
160811608
161111611
161223224
161523230
161711617
161811618
162111621
162246488
162511625
162723254
162823256
162911629
163069780
163134893
163211632
163323266
163411634
163623272
163811638
164023280
164123282
164311643
164534935
164734941
164823296
165069900
165111651
165223304
165423308
165523310
165623312
165723314
165811658
165923318
166123322
166211662
166323326
166423328
166511665
166823336
Total10021439130
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
123611236
123922478
124011240
124111241
124211242
124311243
124411244
124544980
124611246
124822496
125022500
125122502
125211252
125311253
125433762
125511255
125645024
125711257
125833774
125911259
126011260
126133783
126256310
126322526
126433792
126522530
126645064
126745068
126822536
126978883
127056350
127245088
1273810184
127445096
1275911475
127633828
1277911493
127867668
127967674
12801114080
1281810248
1282911538
1283911547
128445136
128545140
1286810288
128756435
128856440
128956445
129022580
129145164
129211292
129333879
129456470
129545180
129633888
129745188
129856490
129956495
130033900
130167806
130267812
130345212
130445216
130511305
130611306
130745228
130822616
130933927
131022620
131133933
131245248
131322626
131411314
131622632
131722634
131811318
131945276
132133963
132211322
132311323
132422648
132522650
132745308
132822656
132911329
133011330
133122662
133222664
133311333
133422668
133634008
133711337
133922678
134034020
134122682
134211342
134322686
134422688
134545380
134622692
134768082
134811348
134911349
135156755
135245408
135322706
135556775
135645424
135811358
135934077
136034080
136122722
136211362
136322726
136411364
136622732
136745468
136811368
136945476
137011370
137222744
137322746
137434122
137711377
137822756
137911379
138011380
138134143
138234146
138311383
138434152
138534155
138611386
138711387
138922778
139134173
139222784
139311393
139422788
139522790
139611396
139722794
139811398
140111401
140222804
140311403
140411404
140511405
140622812
140922818
141011410
141122822
141211412
141368478
141422828
141511415
141634248
141745668
141811418
141911419
142011420
142145684
142222844
142322846
142411424
142522850
142611426
142745708
142922858
143122862
143245728
143411434
143511435
143634308
143722874
143945756
144011440
144122882
144222884
144411444
144645784
144722894
144811448
144922898
145011450
145122902
145222904
145322906
145434362
145522910
145622912
145722914
145911459
146022920
146111461
146211462
146322926
146411464
146534395
146622932
146722934
146822936
146945876
147045880
147168826
147234416
147322946
147422948
147511475
147622952
147734431
147834434
147922958
148022960
148111481
148211482
148334449
148445936
148568910
148634458
148722974
148845952
148934467
149022980
149111491
149234476
149334479
149422988
149534485
149657480
149822996
150034500
150123002
150223004
150323006
150423008
150534515
150623012
150711507
150834524
150923018
151011510
151123022
151357565
151423028
151523030
151611516
151746068
151846072
151934557
152046080
152269132
152423048
152511525
152611526
152834584
152957645
153123062
153234596
153311533
153446136
153546140
153657680
153757685
1538913842
153957695
154069240
1541710787
154269252
154334629
154457720
154511545
154634638
1547710829
154823096
154923098
155034650
155169306
155257760
155369318
155434662
155534665
155669336
155757785
1558812464
1559710913
15601117160
1561710927
1562710934
156323126
156469384
156557825
156657830
156757835
156823136
156934707
157057850
157157855
157234716
157334719
157411574
157511575
157623152
157723154
157811578
158034740
158123162
158234746
158323166
158511585
158623172
158723174
158823176
158923178
159023180
159123182
159211592
159311593
159711597
160411604
160711607
160823216
161123222
161311613
161411614
161711617
161846472
162111621
162323246
162423248
162511625
162669756
162734881
162811628
162923258
163011630
163223264
163411634
163623272
163723274
163911639
164134923
164334929
164423288
164669876
164711647
164823296
165023300
165123302
165223304
165323306
165411654
165523310
165723314
165811658
165923318
166023320
166111661
166423328
Total10021435121
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333939266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828df93fa38e11
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3864663933666133
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_8.json b/autobahn/client/tungstenite_case_13_1_8.json new file mode 100644 index 0000000..d905995 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_8.json @@ -0,0 +1,865 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 399, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 1210, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=399&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: leAFoIgcoxF5OHo1hiubfg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UdbbEHK5w6Y3sdzQOUVyXxWFvcU=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1240": 1, + "1243": 2, + "1244": 1, + "1245": 1, + "1246": 1, + "1247": 1, + "1248": 1, + "1249": 4, + "1250": 1, + "1252": 2, + "1254": 2, + "1255": 2, + "1256": 1, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 4, + "1261": 1, + "1262": 3, + "1263": 1, + "1264": 1, + "1265": 3, + "1266": 5, + "1267": 2, + "1268": 3, + "1269": 2, + "1270": 4, + "1271": 4, + "1272": 2, + "1273": 7, + "1274": 5, + "1276": 4, + "1277": 8, + "1278": 4, + "1279": 9, + "1280": 3, + "1281": 9, + "1282": 6, + "1283": 6, + "1284": 11, + "1285": 8, + "1286": 9, + "1287": 9, + "1288": 4, + "1289": 4, + "1290": 8, + "1291": 5, + "1292": 5, + "1293": 5, + "1294": 2, + "1295": 4, + "1296": 1, + "1297": 3, + "1298": 5, + "1299": 4, + "1300": 3, + "1301": 4, + "1302": 5, + "1303": 5, + "1304": 3, + "1305": 6, + "1306": 6, + "1307": 4, + "1308": 4, + "1309": 1, + "1310": 1, + "1311": 4, + "1312": 2, + "1313": 3, + "1314": 2, + "1315": 3, + "1316": 4, + "1317": 2, + "1318": 1, + "1320": 2, + "1321": 2, + "1322": 1, + "1323": 4, + "1325": 3, + "1326": 1, + "1327": 1, + "1328": 2, + "1329": 2, + "1331": 4, + "1332": 2, + "1333": 1, + "1334": 1, + "1335": 2, + "1336": 2, + "1337": 1, + "1338": 2, + "1340": 3, + "1341": 1, + "1343": 2, + "1344": 3, + "1345": 2, + "1346": 1, + "1347": 2, + "1348": 2, + "1349": 4, + "1350": 2, + "1351": 6, + "1352": 1, + "1353": 1, + "1355": 5, + "1356": 4, + "1357": 2, + "1359": 5, + "1360": 4, + "1362": 1, + "1363": 3, + "1364": 3, + "1365": 2, + "1366": 1, + "1367": 2, + "1368": 1, + "1370": 2, + "1371": 4, + "1372": 1, + "1373": 4, + "1374": 1, + "1376": 2, + "1377": 2, + "1378": 3, + "1381": 1, + "1382": 2, + "1383": 1, + "1384": 1, + "1385": 3, + "1386": 3, + "1387": 1, + "1388": 3, + "1389": 3, + "1390": 1, + "1391": 1, + "1393": 2, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 2, + "1400": 1, + "1401": 2, + "1402": 1, + "1405": 1, + "1406": 2, + "1407": 1, + "1408": 1, + "1409": 1, + "1410": 2, + "1413": 2, + "1414": 1, + "1415": 2, + "1416": 1, + "1417": 6, + "1418": 2, + "1419": 1, + "1420": 3, + "1421": 4, + "1422": 1, + "1423": 1, + "1424": 1, + "1425": 4, + "1426": 2, + "1427": 2, + "1428": 1, + "1429": 2, + "1430": 1, + "1431": 4, + "1433": 2, + "1435": 2, + "1436": 4, + "1438": 1, + "1439": 1, + "1440": 3, + "1441": 2, + "1443": 4, + "1444": 1, + "1445": 2, + "1446": 2, + "1448": 1, + "1450": 4, + "1451": 2, + "1452": 1, + "1453": 2, + "1454": 1, + "1455": 2, + "1456": 2, + "1457": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 2, + "1463": 1, + "1464": 2, + "1465": 1, + "1466": 1, + "1467": 2, + "1468": 1, + "1469": 3, + "1470": 2, + "1471": 2, + "1472": 2, + "1473": 4, + "1474": 4, + "1475": 6, + "1476": 3, + "1477": 2, + "1478": 2, + "1479": 1, + "1480": 2, + "1481": 3, + "1482": 3, + "1483": 2, + "1484": 2, + "1485": 1, + "1486": 1, + "1487": 3, + "1488": 4, + "1489": 6, + "1490": 3, + "1491": 2, + "1492": 4, + "1493": 3, + "1494": 2, + "1495": 1, + "1496": 3, + "1497": 3, + "1498": 2, + "1499": 3, + "1500": 5, + "1502": 2, + "1504": 3, + "1505": 2, + "1506": 2, + "1507": 2, + "1508": 2, + "1509": 3, + "1510": 2, + "1511": 1, + "1512": 3, + "1513": 2, + "1514": 1, + "1515": 2, + "1517": 5, + "1518": 2, + "1519": 2, + "1520": 1, + "1521": 4, + "1522": 4, + "1523": 3, + "1524": 4, + "1526": 6, + "1528": 2, + "1529": 1, + "1530": 1, + "1532": 3, + "1533": 5, + "1535": 2, + "1536": 3, + "1537": 1, + "1538": 4, + "1539": 4, + "1540": 5, + "1541": 5, + "1542": 9, + "1543": 5, + "1544": 6, + "1545": 7, + "1546": 6, + "1547": 3, + "1548": 5, + "1549": 1, + "1550": 3, + "1551": 7, + "1552": 2, + "1553": 2, + "1554": 3, + "1555": 6, + "1556": 5, + "1557": 6, + "1558": 3, + "1559": 3, + "1560": 6, + "1561": 5, + "1562": 8, + "1563": 7, + "1564": 11, + "1565": 7, + "1566": 7, + "1567": 2, + "1568": 6, + "1569": 5, + "1570": 5, + "1571": 5, + "1572": 2, + "1573": 3, + "1574": 5, + "1575": 5, + "1576": 3, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 2, + "1582": 1, + "1584": 3, + "1585": 2, + "1586": 3, + "1587": 2, + "1589": 1, + "1590": 2, + "1591": 2, + "1592": 2, + "1593": 2, + "1594": 2, + "1595": 2, + "1596": 1, + "1597": 1, + "1601": 1, + "1608": 1, + "1611": 1, + "1612": 2, + "1615": 2, + "1617": 1, + "1618": 1, + "1621": 1, + "1622": 4, + "1625": 1, + "1627": 2, + "1628": 2, + "1629": 1, + "1630": 6, + "1631": 3, + "1632": 1, + "1633": 2, + "1634": 1, + "1636": 2, + "1638": 1, + "1640": 2, + "1641": 2, + "1643": 1, + "1645": 3, + "1647": 3, + "1648": 2, + "1650": 6, + "1651": 1, + "1652": 2, + "1654": 2, + "1655": 2, + "1656": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1661": 2, + "1662": 1, + "1663": 2, + "1664": 2, + "1665": 1, + "1668": 2 + }, + "started": "2025-09-11T20:11:26.474Z", + "trafficStats": { + "incomingCompressionRatio": 0.043666534423828125, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1430865, + "incomingOctetsWireLevel": 1438865, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0055910236115915895, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1434865, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0027955118057957948, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "1236": 1, + "1239": 2, + "1240": 1, + "1241": 1, + "1242": 1, + "1243": 1, + "1244": 1, + "1245": 4, + "1246": 1, + "1248": 2, + "1250": 2, + "1251": 2, + "1252": 1, + "1253": 1, + "1254": 3, + "1255": 1, + "1256": 4, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 1, + "1261": 3, + "1262": 5, + "1263": 2, + "1264": 3, + "1265": 2, + "1266": 4, + "1267": 4, + "1268": 2, + "1269": 7, + "1270": 5, + "1272": 4, + "1273": 8, + "1274": 4, + "1275": 9, + "1276": 3, + "1277": 9, + "1278": 6, + "1279": 6, + "1280": 11, + "1281": 8, + "1282": 9, + "1283": 9, + "1284": 4, + "1285": 4, + "1286": 8, + "1287": 5, + "1288": 5, + "1289": 5, + "1290": 2, + "1291": 4, + "1292": 1, + "1293": 3, + "1294": 5, + "1295": 4, + "1296": 3, + "1297": 4, + "1298": 5, + "1299": 5, + "1300": 3, + "1301": 6, + "1302": 6, + "1303": 4, + "1304": 4, + "1305": 1, + "1306": 1, + "1307": 4, + "1308": 2, + "1309": 3, + "1310": 2, + "1311": 3, + "1312": 4, + "1313": 2, + "1314": 1, + "1316": 2, + "1317": 2, + "1318": 1, + "1319": 4, + "1321": 3, + "1322": 1, + "1323": 1, + "1324": 2, + "1325": 2, + "1327": 4, + "1328": 2, + "1329": 1, + "1330": 1, + "1331": 2, + "1332": 2, + "1333": 1, + "1334": 2, + "1336": 3, + "1337": 1, + "1339": 2, + "1340": 3, + "1341": 2, + "1342": 1, + "1343": 2, + "1344": 2, + "1345": 4, + "1346": 2, + "1347": 6, + "1348": 1, + "1349": 1, + "1351": 5, + "1352": 4, + "1353": 2, + "1355": 5, + "1356": 4, + "1358": 1, + "1359": 3, + "1360": 3, + "1361": 2, + "1362": 1, + "1363": 2, + "1364": 1, + "1366": 2, + "1367": 4, + "1368": 1, + "1369": 4, + "1370": 1, + "1372": 2, + "1373": 2, + "1374": 3, + "1377": 1, + "1378": 2, + "1379": 1, + "1380": 1, + "1381": 3, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 3, + "1386": 1, + "1387": 1, + "1389": 2, + "1391": 3, + "1392": 2, + "1393": 1, + "1394": 2, + "1395": 2, + "1396": 1, + "1397": 2, + "1398": 1, + "1401": 1, + "1402": 2, + "1403": 1, + "1404": 1, + "1405": 1, + "1406": 2, + "1409": 2, + "1410": 1, + "1411": 2, + "1412": 1, + "1413": 6, + "1414": 2, + "1415": 1, + "1416": 3, + "1417": 4, + "1418": 1, + "1419": 1, + "1420": 1, + "1421": 4, + "1422": 2, + "1423": 2, + "1424": 1, + "1425": 2, + "1426": 1, + "1427": 4, + "1429": 2, + "1431": 2, + "1432": 4, + "1434": 1, + "1435": 1, + "1436": 3, + "1437": 2, + "1439": 4, + "1440": 1, + "1441": 2, + "1442": 2, + "1444": 1, + "1446": 4, + "1447": 2, + "1448": 1, + "1449": 2, + "1450": 1, + "1451": 2, + "1452": 2, + "1453": 2, + "1454": 3, + "1455": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 2, + "1461": 1, + "1462": 1, + "1463": 2, + "1464": 1, + "1465": 3, + "1466": 2, + "1467": 2, + "1468": 2, + "1469": 4, + "1470": 4, + "1471": 6, + "1472": 3, + "1473": 2, + "1474": 2, + "1475": 1, + "1476": 2, + "1477": 3, + "1478": 3, + "1479": 2, + "1480": 2, + "1481": 1, + "1482": 1, + "1483": 3, + "1484": 4, + "1485": 6, + "1486": 3, + "1487": 2, + "1488": 4, + "1489": 3, + "1490": 2, + "1491": 1, + "1492": 3, + "1493": 3, + "1494": 2, + "1495": 3, + "1496": 5, + "1498": 2, + "1500": 3, + "1501": 2, + "1502": 2, + "1503": 2, + "1504": 2, + "1505": 3, + "1506": 2, + "1507": 1, + "1508": 3, + "1509": 2, + "1510": 1, + "1511": 2, + "1513": 5, + "1514": 2, + "1515": 2, + "1516": 1, + "1517": 4, + "1518": 4, + "1519": 3, + "1520": 4, + "1522": 6, + "1524": 2, + "1525": 1, + "1526": 1, + "1528": 3, + "1529": 5, + "1531": 2, + "1532": 3, + "1533": 1, + "1534": 4, + "1535": 4, + "1536": 5, + "1537": 5, + "1538": 9, + "1539": 5, + "1540": 6, + "1541": 7, + "1542": 6, + "1543": 3, + "1544": 5, + "1545": 1, + "1546": 3, + "1547": 7, + "1548": 2, + "1549": 2, + "1550": 3, + "1551": 6, + "1552": 5, + "1553": 6, + "1554": 3, + "1555": 3, + "1556": 6, + "1557": 5, + "1558": 8, + "1559": 7, + "1560": 11, + "1561": 7, + "1562": 7, + "1563": 2, + "1564": 6, + "1565": 5, + "1566": 5, + "1567": 5, + "1568": 2, + "1569": 3, + "1570": 5, + "1571": 5, + "1572": 3, + "1573": 3, + "1574": 1, + "1575": 1, + "1576": 2, + "1577": 2, + "1578": 1, + "1580": 3, + "1581": 2, + "1582": 3, + "1583": 2, + "1585": 1, + "1586": 2, + "1587": 2, + "1588": 2, + "1589": 2, + "1590": 2, + "1591": 2, + "1592": 1, + "1593": 1, + "1597": 1, + "1604": 1, + "1607": 1, + "1608": 2, + "1611": 2, + "1613": 1, + "1614": 1, + "1617": 1, + "1618": 4, + "1621": 1, + "1623": 2, + "1624": 2, + "1625": 1, + "1626": 6, + "1627": 3, + "1628": 1, + "1629": 2, + "1630": 1, + "1632": 2, + "1634": 1, + "1636": 2, + "1637": 2, + "1639": 1, + "1641": 3, + "1643": 3, + "1644": 2, + "1646": 6, + "1647": 1, + "1648": 2, + "1650": 2, + "1651": 2, + "1652": 2, + "1653": 2, + "1654": 1, + "1655": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1660": 2, + "1661": 1, + "1664": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333939266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828df93fa38e11" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8df93fa3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_1_9.html b/autobahn/client/tungstenite_case_13_1_9.html new file mode 100644 index 0000000..1de1960 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_9.html @@ -0,0 +1,540 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.1.9 : Pass - 1470 ms @ 2025-09-11T20:11:27.686Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=400&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: WF3urMW0my1RDe1FGXGJSQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zyuG4byTycKRgLKC+OFuk2gOjgw=
+Sec-WebSocket-Extensions: permessage-deflate
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
280525610
280612806
280725614
2808514040
2809411236
2810616860
2811514055
2812616872
28131233756
28141747838
28152261930
28162673216
28172878876
28181747906
28193598665
28201953580
28213187451
28222056440
28232364929
28241748008
28252159325
28262776302
28272570675
28282262216
28292673554
28302056600
28313496254
28322056640
28331439662
2834822672
2835925515
28361748212
28371645392
28381748246
28391645424
28401028400
2841925569
2842514210
284338529
284412844
284538535
2846411384
284725694
285025700
285112851
285312853
285412854
285525710
285712857
285812858
285925718
286138583
2863411452
286412864
2866411464
286738601
286825736
287025740
287112871
287212872
287312873
287412874
287612876
288212882
288312883
288625772
288712887
288812888
288912889
289025780
289112891
289225784
289612896
289912899
290112901
290338709
290425808
290525810
2906514530
2907823256
2908514540
2909720363
2910411640
2911823288
291225824
291338739
291438742
2915514575
29161029160
29171132087
29181646688
29191029190
29201132120
2921617526
29221955518
29231235076
2924617544
2925926325
29261235112
29271235124
29281235136
2929926361
2930720510
2931926379
2932720524
2933617598
2934411736
2935411740
293625872
293738811
293812938
2939617634
29401132340
2941823528
29421338246
29431029430
2944926496
2945514725
294625892
294738841
296112961
Total10022860358
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2521252
280125602
280212802
280325606
2804514020
2805411220
2806616836
2807514035
2808616848
28091233708
28101747770
28112261842
28122673112
28132878764
28141747838
28153598525
28161953504
28173187327
28182056360
28192364837
28201747940
28212159241
28222776194
28232570575
28242262128
28252673450
28262056520
28273496118
28282056560
28291439606
2830822640
2831925479
28321748144
28331645328
28341748178
28351645360
28361028360
2837925533
2838514190
283938517
284012840
284138523
2842411368
284325686
284625692
284712847
284912849
285012850
285125702
285312853
285412854
285525710
285738571
2859411436
286012860
2862411448
286338589
286425728
286625732
286712867
286812868
286912869
287012870
287212872
287812878
287912879
288225764
288312883
288412884
288512885
288625772
288712887
288825776
289212892
289512895
289712897
289938697
290025800
290125802
2902514510
2903823224
2904514520
2905720335
2906411624
2907823256
290825816
290938727
291038730
2911514555
29121029120
29131132043
29141646624
29151029150
29161132076
2917617502
29181955442
29191235028
2920617520
2921926289
29221235064
29231235076
29241235088
2925926325
2926720482
2927926343
2928720496
2929617574
2930411720
2931411724
293225864
293338799
293412934
2935617610
29361132296
2937823496
29381338194
29391029390
2940926460
2941514705
294225884
294338829
295712957
Total10022856349
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343030266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882482550a34bcd
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3438323535306133
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_1_9.json b/autobahn/client/tungstenite_case_13_1_9.json new file mode 100644 index 0000000..13ee05c --- /dev/null +++ b/autobahn/client/tungstenite_case_13_1_9.json @@ -0,0 +1,387 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 400, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 0)]", + "droppedByMe": true, + "duration": 1470, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=400&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: WF3urMW0my1RDe1FGXGJSQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zyuG4byTycKRgLKC+OFuk2gOjgw=\r\nSec-WebSocket-Extensions: permessage-deflate\r\n\r\n", + "id": "13.1.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2805": 2, + "2806": 1, + "2807": 2, + "2808": 5, + "2809": 4, + "2810": 6, + "2811": 5, + "2812": 6, + "2813": 12, + "2814": 17, + "2815": 22, + "2816": 26, + "2817": 28, + "2818": 17, + "2819": 35, + "2820": 19, + "2821": 31, + "2822": 20, + "2823": 23, + "2824": 17, + "2825": 21, + "2826": 27, + "2827": 25, + "2828": 22, + "2829": 26, + "2830": 20, + "2831": 34, + "2832": 20, + "2833": 14, + "2834": 8, + "2835": 9, + "2836": 17, + "2837": 16, + "2838": 17, + "2839": 16, + "2840": 10, + "2841": 9, + "2842": 5, + "2843": 3, + "2844": 1, + "2845": 3, + "2846": 4, + "2847": 2, + "2850": 2, + "2851": 1, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 1, + "2858": 1, + "2859": 2, + "2861": 3, + "2863": 4, + "2864": 1, + "2866": 4, + "2867": 3, + "2868": 2, + "2870": 2, + "2871": 1, + "2872": 1, + "2873": 1, + "2874": 1, + "2876": 1, + "2882": 1, + "2883": 1, + "2886": 2, + "2887": 1, + "2888": 1, + "2889": 1, + "2890": 2, + "2891": 1, + "2892": 2, + "2896": 1, + "2899": 1, + "2901": 1, + "2903": 3, + "2904": 2, + "2905": 2, + "2906": 5, + "2907": 8, + "2908": 5, + "2909": 7, + "2910": 4, + "2911": 8, + "2912": 2, + "2913": 3, + "2914": 3, + "2915": 5, + "2916": 10, + "2917": 11, + "2918": 16, + "2919": 10, + "2920": 11, + "2921": 6, + "2922": 19, + "2923": 12, + "2924": 6, + "2925": 9, + "2926": 12, + "2927": 12, + "2928": 12, + "2929": 9, + "2930": 7, + "2931": 9, + "2932": 7, + "2933": 6, + "2934": 4, + "2935": 4, + "2936": 2, + "2937": 3, + "2938": 1, + "2939": 6, + "2940": 11, + "2941": 8, + "2942": 13, + "2943": 10, + "2944": 9, + "2945": 5, + "2946": 2, + "2947": 3, + "2961": 1 + }, + "started": "2025-09-11T20:11:27.686Z", + "trafficStats": { + "incomingCompressionRatio": 0.04351948547363281, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2852093, + "incomingOctetsWireLevel": 2860093, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0028049576223496218, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2856093, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014024788111748109, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 252 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "252": 1, + "2801": 2, + "2802": 1, + "2803": 2, + "2804": 5, + "2805": 4, + "2806": 6, + "2807": 5, + "2808": 6, + "2809": 12, + "2810": 17, + "2811": 22, + "2812": 26, + "2813": 28, + "2814": 17, + "2815": 35, + "2816": 19, + "2817": 31, + "2818": 20, + "2819": 23, + "2820": 17, + "2821": 21, + "2822": 27, + "2823": 25, + "2824": 22, + "2825": 26, + "2826": 20, + "2827": 34, + "2828": 20, + "2829": 14, + "2830": 8, + "2831": 9, + "2832": 17, + "2833": 16, + "2834": 17, + "2835": 16, + "2836": 10, + "2837": 9, + "2838": 5, + "2839": 3, + "2840": 1, + "2841": 3, + "2842": 4, + "2843": 2, + "2846": 2, + "2847": 1, + "2849": 1, + "2850": 1, + "2851": 2, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 3, + "2859": 4, + "2860": 1, + "2862": 4, + "2863": 3, + "2864": 2, + "2866": 2, + "2867": 1, + "2868": 1, + "2869": 1, + "2870": 1, + "2872": 1, + "2878": 1, + "2879": 1, + "2882": 2, + "2883": 1, + "2884": 1, + "2885": 1, + "2886": 2, + "2887": 1, + "2888": 2, + "2892": 1, + "2895": 1, + "2897": 1, + "2899": 3, + "2900": 2, + "2901": 2, + "2902": 5, + "2903": 8, + "2904": 5, + "2905": 7, + "2906": 4, + "2907": 8, + "2908": 2, + "2909": 3, + "2910": 3, + "2911": 5, + "2912": 10, + "2913": 11, + "2914": 16, + "2915": 10, + "2916": 11, + "2917": 6, + "2918": 19, + "2919": 12, + "2920": 6, + "2921": 9, + "2922": 12, + "2923": 12, + "2924": 12, + "2925": 9, + "2926": 7, + "2927": 9, + "2928": 7, + "2929": 6, + "2930": 4, + "2931": 4, + "2932": 2, + "2933": 3, + "2934": 1, + "2935": 6, + "2936": 11, + "2937": 8, + "2938": 13, + "2939": 10, + "2940": 9, + "2941": 5, + "2942": 2, + "2943": 3, + "2957": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343030266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 252, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882482550a34bcd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "482550a3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_1.html b/autobahn/client/tungstenite_case_13_2_1.html new file mode 100644 index 0000000..a455bd2 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_1.html @@ -0,0 +1,320 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.1 : Pass - 174 ms @ 2025-09-11T20:11:48.184Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=410&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ZAfZNC7bdgG/oaDKXvLRdA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NHu1fEeaaP5Bc87mKYTuVsJGlcM=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1610160
176102
181793222
19581102
20521040
211112331
22571254
23962208
2443110344
2571257
Total100222028
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
67554530
766462
837296
9103927
1024240
11444
12224
14114
15345
16116
17117
18118
20240
2801280
Total10026957
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343130266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882b80aefd3bbe2
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6238306165666433
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_1.json b/autobahn/client/tungstenite_case_13_2_1.json new file mode 100644 index 0000000..7e72245 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_1.json @@ -0,0 +1,167 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 410, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 174, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=410&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ZAfZNC7bdgG/oaDKXvLRdA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NHu1fEeaaP5Bc87mKYTuVsJGlcM=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "16": 10, + "17": 6, + "18": 179, + "19": 58, + "20": 52, + "21": 111, + "22": 57, + "23": 96, + "24": 431, + "257": 1 + }, + "started": "2025-09-11T20:11:48.184Z", + "trafficStats": { + "incomingCompressionRatio": 0.9851875, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 15763, + "incomingOctetsWireLevel": 21763, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.38063820338768, + "outgoingCompressionRatio": 0.2920625, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 4673, + "outgoingOctetsWireLevel": 6673, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.4279905842071474, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 755, + "7": 66, + "8": 37, + "9": 103, + "10": 24, + "11": 4, + "12": 2, + "14": 1, + "15": 3, + "16": 1, + "17": 1, + "18": 1, + "20": 2, + "280": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343130266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b80aefd3bbe2" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b80aefd3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_10.html b/autobahn/client/tungstenite_case_13_2_10.html new file mode 100644 index 0000000..bf73049 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_10.html @@ -0,0 +1,607 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.10 : Pass - 2781 ms @ 2025-09-11T20:11:52.283Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=419&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: jtnJF4p4nyL/90XzXhcS/A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2IxEUr8jDkrXtSQBD8x9TsKmzsY=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2801280
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668382
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343139266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882429893274170
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3432393839333237
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_10.json b/autobahn/client/tungstenite_case_13_2_10.json new file mode 100644 index 0000000..f46045f --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_10.json @@ -0,0 +1,454 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 419, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 2781, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=419&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: jtnJF4p4nyL/90XzXhcS/A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2IxEUr8jDkrXtSQBD8x9TsKmzsY=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:11:52.283Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "280": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343139266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882429893274170" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "42989327" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_11.html b/autobahn/client/tungstenite_case_13_2_11.html new file mode 100644 index 0000000..d8de7c8 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_11.html @@ -0,0 +1,662 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.11 : Pass - 550 ms @ 2025-09-11T20:11:55.066Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=420&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: nnRy5NMTzyaiCdTEzH82Hg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NeRG4mGeW+534rkswjOWDhC+OLY=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
4101410
41152055
4132826
41452070
41531245
41652080
4172834
41852090
41972933
42062520
42162526
42293798
42393807
42452120
42572975
426114686
42783416
42831284
429135577
430104300
431125172
43273024
43383464
434104340
43552175
43683488
43783496
43883504
4392878
44073080
441135733
44262652
44373101
444114884
44562670
44641784
44731341
44841792
449104490
45041800
45152255
45262712
45362718
45462724
45562730
45662736
457115027
45831374
45962754
46094140
46173227
4621462
46362778
46441856
46541860
46662796
46752335
46894212
46994221
4701470
47183768
47252360
47341892
47473318
47562850
47652380
47783816
478115258
479115269
48073360
481104810
48273374
48352415
48452420
485104850
48673402
48773409
48852440
48983912
490115390
49152455
49262952
493115423
49473458
49573465
496125952
49783976
498104980
49952495
50073500
501105010
502136526
503157545
50431512
505126060
50642024
50773549
50821016
50963054
51021020
51173577
51263072
51321026
51421028
51552575
51642064
51752585
51884144
519115709
52073640
52152605
522105220
52342092
52431572
52573675
526105260
52742108
52842112
52921058
53021060
53152655
53273724
53342132
53473738
5351535
5361536
53731611
53842152
53921078
5401540
54121082
54221084
54321086
54721094
54821096
5491549
55031650
55163306
55221104
55342212
554126648
55563330
55673892
55763342
55842232
55931677
56042240
56184488
56242248
56331689
56431692
56542260
5661566
56742268
56852840
56973983
57021140
57173997
57242288
57352865
57442296
57531725
57631728
57721154
57831734
57931737
58021160
58131743
58221164
58331749
58421168
58574095
58631758
5871587
58831764
5891589
59021180
59121182
5921592
5931593
5951595
Total1002489861
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
435215
446264
45290
465230
476282
4811528
4910490
503150
51151
525260
53153
543162
55155
565280
577399
584232
596354
6012720
614244
6212744
6311693
6410640
6513845
6610660
67181206
68161088
69151035
7010700
71211491
72211512
73191387
7413962
75161200
767532
777539
7812936
7911869
8010800
815405
827574
834332
845420
855425
863258
87187
885440
895445
906540
919819
929828
939837
948752
9510950
968768
97141358
989882
9910990
100121200
1019909
1028816
103121236
1048832
105101050
1064424
1076642
1086648
1092218
1102220
111111221
1127784
1132226
114111254
1157805
1168928
1173351
1187826
1198952
1206720
121101210
1226732
1234492
1242248
1257875
1262252
1273381
1303390
1314524
1323396
1333399
1345670
1352270
1364544
1373411
1384552
1393417
1403420
1416846
1424568
1433429
1441144
1451145
1464584
1473441
1483444
1491149
1504600
15181208
1523456
1532306
15471078
1556930
1562312
1571157
1581158
1594636
160121920
1615805
1623486
1633489
1642328
1652330
16671162
1674668
1683504
1693507
1705850
1712342
1733519
1743522
1753525
1761176
1771177
1783534
1801180
1811181
1852370
1861186
1873561
1891189
1911191
1923576
1931193
1943582
1953585
1961196
19791773
19881584
1992398
20071400
201102010
20291818
2032406
20471428
205132665
20661236
20781656
20851040
20981672
21091890
21161266
21281696
2132426
2144856
2151215
2162432
2172434
2181218
2191219
2202440
2211221
2221222
2233669
2241224
2261226
2281228
2312462
2321232
2333699
2341234
2361236
2371237
2601000260000
2801280
Total2002376230
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343230266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882179f43501477
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3137396634333530
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_11.json b/autobahn/client/tungstenite_case_13_2_11.json new file mode 100644 index 0000000..e44d91b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_11.json @@ -0,0 +1,509 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 420, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 550, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=420&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: nnRy5NMTzyaiCdTEzH82Hg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NeRG4mGeW+534rkswjOWDhC+OLY=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "410": 1, + "411": 5, + "413": 2, + "414": 5, + "415": 3, + "416": 5, + "417": 2, + "418": 5, + "419": 7, + "420": 6, + "421": 6, + "422": 9, + "423": 9, + "424": 5, + "425": 7, + "426": 11, + "427": 8, + "428": 3, + "429": 13, + "430": 10, + "431": 12, + "432": 7, + "433": 8, + "434": 10, + "435": 5, + "436": 8, + "437": 8, + "438": 8, + "439": 2, + "440": 7, + "441": 13, + "442": 6, + "443": 7, + "444": 11, + "445": 6, + "446": 4, + "447": 3, + "448": 4, + "449": 10, + "450": 4, + "451": 5, + "452": 6, + "453": 6, + "454": 6, + "455": 6, + "456": 6, + "457": 11, + "458": 3, + "459": 6, + "460": 9, + "461": 7, + "462": 1, + "463": 6, + "464": 4, + "465": 4, + "466": 6, + "467": 5, + "468": 9, + "469": 9, + "470": 1, + "471": 8, + "472": 5, + "473": 4, + "474": 7, + "475": 6, + "476": 5, + "477": 8, + "478": 11, + "479": 11, + "480": 7, + "481": 10, + "482": 7, + "483": 5, + "484": 5, + "485": 10, + "486": 7, + "487": 7, + "488": 5, + "489": 8, + "490": 11, + "491": 5, + "492": 6, + "493": 11, + "494": 7, + "495": 7, + "496": 12, + "497": 8, + "498": 10, + "499": 5, + "500": 7, + "501": 10, + "502": 13, + "503": 15, + "504": 3, + "505": 12, + "506": 4, + "507": 7, + "508": 2, + "509": 6, + "510": 2, + "511": 7, + "512": 6, + "513": 2, + "514": 2, + "515": 5, + "516": 4, + "517": 5, + "518": 8, + "519": 11, + "520": 7, + "521": 5, + "522": 10, + "523": 4, + "524": 3, + "525": 7, + "526": 10, + "527": 4, + "528": 4, + "529": 2, + "530": 2, + "531": 5, + "532": 7, + "533": 4, + "534": 7, + "535": 1, + "536": 1, + "537": 3, + "538": 4, + "539": 2, + "540": 1, + "541": 2, + "542": 2, + "543": 2, + "547": 2, + "548": 2, + "549": 1, + "550": 3, + "551": 6, + "552": 2, + "553": 4, + "554": 12, + "555": 6, + "556": 7, + "557": 6, + "558": 4, + "559": 3, + "560": 4, + "561": 8, + "562": 4, + "563": 3, + "564": 3, + "565": 4, + "566": 1, + "567": 4, + "568": 5, + "569": 7, + "570": 2, + "571": 7, + "572": 4, + "573": 5, + "574": 4, + "575": 3, + "576": 3, + "577": 2, + "578": 3, + "579": 3, + "580": 2, + "581": 3, + "582": 2, + "583": 3, + "584": 2, + "585": 7, + "586": 3, + "587": 1, + "588": 3, + "589": 1, + "590": 2, + "591": 2, + "592": 1, + "593": 1, + "595": 1 + }, + "started": "2025-09-11T20:11:55.066Z", + "trafficStats": { + "incomingCompressionRatio": 0.05878857421875, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 481596, + "incomingOctetsWireLevel": 489596, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.016611433649781144, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 375946, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.018067884551850388, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "43": 5, + "44": 6, + "45": 2, + "46": 5, + "47": 6, + "48": 11, + "49": 10, + "50": 3, + "51": 1, + "52": 5, + "53": 1, + "54": 3, + "55": 1, + "56": 5, + "57": 7, + "58": 4, + "59": 6, + "60": 12, + "61": 4, + "62": 12, + "63": 11, + "64": 10, + "65": 13, + "66": 10, + "67": 18, + "68": 16, + "69": 15, + "70": 10, + "71": 21, + "72": 21, + "73": 19, + "74": 13, + "75": 16, + "76": 7, + "77": 7, + "78": 12, + "79": 11, + "80": 10, + "81": 5, + "82": 7, + "83": 4, + "84": 5, + "85": 5, + "86": 3, + "87": 1, + "88": 5, + "89": 5, + "90": 6, + "91": 9, + "92": 9, + "93": 9, + "94": 8, + "95": 10, + "96": 8, + "97": 14, + "98": 9, + "99": 10, + "100": 12, + "101": 9, + "102": 8, + "103": 12, + "104": 8, + "105": 10, + "106": 4, + "107": 6, + "108": 6, + "109": 2, + "110": 2, + "111": 11, + "112": 7, + "113": 2, + "114": 11, + "115": 7, + "116": 8, + "117": 3, + "118": 7, + "119": 8, + "120": 6, + "121": 10, + "122": 6, + "123": 4, + "124": 2, + "125": 7, + "126": 2, + "127": 3, + "130": 3, + "131": 4, + "132": 3, + "133": 3, + "134": 5, + "135": 2, + "136": 4, + "137": 3, + "138": 4, + "139": 3, + "140": 3, + "141": 6, + "142": 4, + "143": 3, + "144": 1, + "145": 1, + "146": 4, + "147": 3, + "148": 3, + "149": 1, + "150": 4, + "151": 8, + "152": 3, + "153": 2, + "154": 7, + "155": 6, + "156": 2, + "157": 1, + "158": 1, + "159": 4, + "160": 12, + "161": 5, + "162": 3, + "163": 3, + "164": 2, + "165": 2, + "166": 7, + "167": 4, + "168": 3, + "169": 3, + "170": 5, + "171": 2, + "173": 3, + "174": 3, + "175": 3, + "176": 1, + "177": 1, + "178": 3, + "180": 1, + "181": 1, + "185": 2, + "186": 1, + "187": 3, + "189": 1, + "191": 1, + "192": 3, + "193": 1, + "194": 3, + "195": 3, + "196": 1, + "197": 9, + "198": 8, + "199": 2, + "200": 7, + "201": 10, + "202": 9, + "203": 2, + "204": 7, + "205": 13, + "206": 6, + "207": 8, + "208": 5, + "209": 8, + "210": 9, + "211": 6, + "212": 8, + "213": 2, + "214": 4, + "215": 1, + "216": 2, + "217": 2, + "218": 1, + "219": 1, + "220": 2, + "221": 1, + "222": 1, + "223": 3, + "224": 1, + "226": 1, + "228": 1, + "231": 2, + "232": 1, + "233": 3, + "234": 1, + "236": 1, + "237": 1, + "260": 1000, + "280": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343230266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882179f43501477" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "179f4350" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_12.html b/autobahn/client/tungstenite_case_13_2_12.html new file mode 100644 index 0000000..a7d4724 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_12.html @@ -0,0 +1,813 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.12 : Pass - 647 ms @ 2025-09-11T20:11:55.618Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=421&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: N8XyJpK74J6GILyQGVJclg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: tJnXcXOrYKLMmnWwvP/2Ey+3QI0=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
7141714
7181718
72021440
72153605
72232166
72342892
72442896
72553625
72642904
72796543
72864368
729118019
730107300
73196579
732139516
73364398
73475138
7351511025
7361410304
737118107
73853690
739118129
74042960
74185928
74253710
74332229
74475208
74542980
74632238
74842992
74921498
75032250
75121502
75243008
75332259
75421508
75521510
75621512
75753785
75821516
75921518
76021520
76175327
76232286
76353815
76443056
76553825
76643064
76764602
76853840
76943076
77075390
77164626
77264632
77396957
77486192
77521550
77632328
77775439
77875446
77975453
78021560
78175467
78275474
78353915
78486272
78521570
78632358
78721574
78832364
78932367
7901790
79175537
79232376
79321586
79421588
7951795
79632388
79753985
79832394
79932397
80032400
80132403
8021802
8031803
80421608
80554025
80654030
8071807
80832424
80932427
81021620
8111811
8121812
8131813
8141814
81543260
81643264
81832454
81943276
8211821
82264932
82321646
82421648
82532475
82632478
82721654
82821656
8291829
83043320
83143324
83221664
8331833
83443336
83521670
83643344
83754185
83843352
83932517
84054200
84165046
84265052
84365058
84486752
84565070
84675922
84721694
84854240
84943396
85032550
85143404
85232556
85332559
85421708
8551855
8561856
85721714
85821716
85921718
86143444
86254310
86454320
86521730
86621732
86743468
86843472
8691869
87076090
87132613
87232616
87365238
8741874
87543500
87621752
87743508
87921758
88054400
8821882
8831883
88465304
88543540
88621772
8871887
8881888
8891889
89032670
89121782
8921892
89321786
89421788
8951895
89632688
8971897
8981898
8991899
90032700
90121802
90221804
90332709
90465424
90532715
90632718
90732721
90921818
9101910
9111911
91221824
91321826
91454570
91532745
91676412
91754585
91865508
91932757
92021840
92132763
92232766
92365538
92465544
92543700
92643704
92754635
92865568
92932787
93054650
93187448
93232796
93343732
93432802
93554675
93665616
93732811
93854690
93943756
94032820
94187528
94254710
94376601
94443776
94532835
94632838
94754735
94876636
94943796
95043800
95143804
95232856
95354765
95421908
95543820
9561956
95765742
95865748
95965754
9601960
96132883
96265772
9631963
96432892
96543860
96643864
96765802
96843872
96943876
9711971
9721972
9731973
9741974
9751975
97621952
97754885
9781978
9801980
98121962
9821982
9831983
9841984
98521970
98632958
9891989
99021980
9911991
9921992
9931993
9941994
99521990
9971997
9991999
100322006
100422008
100811008
101122022
101911019
Total1002841109
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
428
5315
616
717
818
10110
13113
16232
17234
18354
19119
20480
21242
22244
24124
254100
275135
28256
30130
31262
32264
33133
34134
353105
367252
376222
38276
396234
404160
415205
423126
43286
44288
45290
464184
473141
484192
493147
502100
513153
535265
542108
556330
575285
584232
594236
604240
614244
622124
63163
648512
652130
662132
674268
684272
692138
705350
712142
727504
733219
746444
752150
76176
772154
782156
79179
805400
8110810
825410
834332
845420
855425
86186
877609
886528
894356
906540
915455
924368
938744
944376
955475
968768
979873
98141372
997693
1008800
101111111
1028816
1038824
1046624
105121260
1065530
1073321
1085540
1098872
1109990
111101110
112131456
11391017
114121368
115151725
116111276
117161872
11891062
1196714
12091080
1218968
1227854
1234492
1246744
1254500
1267882
1275635
1304520
1316786
1326792
1337931
1344536
1352270
1362272
1376822
1384552
1396834
1403420
1414564
1427994
1435715
14481152
1456870
14671022
1472294
14871036
14991341
150111650
151101510
152111672
15381224
15471078
15581240
15671092
1574628
15881264
1596954
1604640
1615805
1624648
1632326
1642328
1654660
1661166
1674668
1684672
1694676
1702340
1711171
1724688
1734692
1741174
1752350
1764704
1772354
1783534
1793537
1801180
1813543
1823546
1835915
1844736
1853555
1864744
1874748
1883564
1892378
1903570
1912382
19261152
1933579
19481552
1952390
1961196
1971197
1983594
1993597
2001200
2011201
2022404
2033609
2042408
2052410
2064824
2072414
2083624
2092418
21051050
2112422
2122424
21351065
2142428
2152430
2161216
2171217
2183654
2203660
2211221
2224888
2232446
22451120
2252450
2273681
2283684
22951145
2313693
2323696
2332466
2342468
2351235
2361236
23771659
2381238
2391239
2401240
2411241
2421242
2434972
2444976
2453735
24651230
2473741
2482496
2502500
2513753
25241008
2531253
2541254
2553765
2571257
2581258
2593777
2602331606060
2801280
Total3333733782
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02331
11000
81
Total3332
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343231266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882356973a93681
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3335363937336139
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_12.json b/autobahn/client/tungstenite_case_13_2_12.json new file mode 100644 index 0000000..40893ca --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_12.json @@ -0,0 +1,660 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 421, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 647, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=421&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: N8XyJpK74J6GILyQGVJclg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: tJnXcXOrYKLMmnWwvP/2Ey+3QI0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "714": 1, + "718": 1, + "720": 2, + "721": 5, + "722": 3, + "723": 4, + "724": 4, + "725": 5, + "726": 4, + "727": 9, + "728": 6, + "729": 11, + "730": 10, + "731": 9, + "732": 13, + "733": 6, + "734": 7, + "735": 15, + "736": 14, + "737": 11, + "738": 5, + "739": 11, + "740": 4, + "741": 8, + "742": 5, + "743": 3, + "744": 7, + "745": 4, + "746": 3, + "748": 4, + "749": 2, + "750": 3, + "751": 2, + "752": 4, + "753": 3, + "754": 2, + "755": 2, + "756": 2, + "757": 5, + "758": 2, + "759": 2, + "760": 2, + "761": 7, + "762": 3, + "763": 5, + "764": 4, + "765": 5, + "766": 4, + "767": 6, + "768": 5, + "769": 4, + "770": 7, + "771": 6, + "772": 6, + "773": 9, + "774": 8, + "775": 2, + "776": 3, + "777": 7, + "778": 7, + "779": 7, + "780": 2, + "781": 7, + "782": 7, + "783": 5, + "784": 8, + "785": 2, + "786": 3, + "787": 2, + "788": 3, + "789": 3, + "790": 1, + "791": 7, + "792": 3, + "793": 2, + "794": 2, + "795": 1, + "796": 3, + "797": 5, + "798": 3, + "799": 3, + "800": 3, + "801": 3, + "802": 1, + "803": 1, + "804": 2, + "805": 5, + "806": 5, + "807": 1, + "808": 3, + "809": 3, + "810": 2, + "811": 1, + "812": 1, + "813": 1, + "814": 1, + "815": 4, + "816": 4, + "818": 3, + "819": 4, + "821": 1, + "822": 6, + "823": 2, + "824": 2, + "825": 3, + "826": 3, + "827": 2, + "828": 2, + "829": 1, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 4, + "835": 2, + "836": 4, + "837": 5, + "838": 4, + "839": 3, + "840": 5, + "841": 6, + "842": 6, + "843": 6, + "844": 8, + "845": 6, + "846": 7, + "847": 2, + "848": 5, + "849": 4, + "850": 3, + "851": 4, + "852": 3, + "853": 3, + "854": 2, + "855": 1, + "856": 1, + "857": 2, + "858": 2, + "859": 2, + "861": 4, + "862": 5, + "864": 5, + "865": 2, + "866": 2, + "867": 4, + "868": 4, + "869": 1, + "870": 7, + "871": 3, + "872": 3, + "873": 6, + "874": 1, + "875": 4, + "876": 2, + "877": 4, + "879": 2, + "880": 5, + "882": 1, + "883": 1, + "884": 6, + "885": 4, + "886": 2, + "887": 1, + "888": 1, + "889": 1, + "890": 3, + "891": 2, + "892": 1, + "893": 2, + "894": 2, + "895": 1, + "896": 3, + "897": 1, + "898": 1, + "899": 1, + "900": 3, + "901": 2, + "902": 2, + "903": 3, + "904": 6, + "905": 3, + "906": 3, + "907": 3, + "909": 2, + "910": 1, + "911": 1, + "912": 2, + "913": 2, + "914": 5, + "915": 3, + "916": 7, + "917": 5, + "918": 6, + "919": 3, + "920": 2, + "921": 3, + "922": 3, + "923": 6, + "924": 6, + "925": 4, + "926": 4, + "927": 5, + "928": 6, + "929": 3, + "930": 5, + "931": 8, + "932": 3, + "933": 4, + "934": 3, + "935": 5, + "936": 6, + "937": 3, + "938": 5, + "939": 4, + "940": 3, + "941": 8, + "942": 5, + "943": 7, + "944": 4, + "945": 3, + "946": 3, + "947": 5, + "948": 7, + "949": 4, + "950": 4, + "951": 4, + "952": 3, + "953": 5, + "954": 2, + "955": 4, + "956": 1, + "957": 6, + "958": 6, + "959": 6, + "960": 1, + "961": 3, + "962": 6, + "963": 1, + "964": 3, + "965": 4, + "966": 4, + "967": 6, + "968": 4, + "969": 4, + "971": 1, + "972": 1, + "973": 1, + "974": 1, + "975": 1, + "976": 2, + "977": 5, + "978": 1, + "980": 1, + "981": 2, + "982": 1, + "983": 1, + "984": 1, + "985": 2, + "986": 3, + "989": 1, + "990": 2, + "991": 1, + "992": 1, + "993": 1, + "994": 1, + "995": 2, + "997": 1, + "999": 1, + "1003": 2, + "1004": 2, + "1008": 1, + "1011": 2, + "1019": 1 + }, + "started": "2025-09-11T20:11:55.618Z", + "trafficStats": { + "incomingCompressionRatio": 0.050832763671875, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 832844, + "incomingOctetsWireLevel": 840844, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.009605640432061706, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 733498, + "outgoingWebSocketFrames": 3331, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016936510269215093, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "0": 2331, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 2, + "5": 3, + "6": 1, + "7": 1, + "8": 1, + "10": 1, + "13": 1, + "16": 2, + "17": 2, + "18": 3, + "19": 1, + "20": 4, + "21": 2, + "22": 2, + "24": 1, + "25": 4, + "27": 5, + "28": 2, + "30": 1, + "31": 2, + "32": 2, + "33": 1, + "34": 1, + "35": 3, + "36": 7, + "37": 6, + "38": 2, + "39": 6, + "40": 4, + "41": 5, + "42": 3, + "43": 2, + "44": 2, + "45": 2, + "46": 4, + "47": 3, + "48": 4, + "49": 3, + "50": 2, + "51": 3, + "53": 5, + "54": 2, + "55": 6, + "57": 5, + "58": 4, + "59": 4, + "60": 4, + "61": 4, + "62": 2, + "63": 1, + "64": 8, + "65": 2, + "66": 2, + "67": 4, + "68": 4, + "69": 2, + "70": 5, + "71": 2, + "72": 7, + "73": 3, + "74": 6, + "75": 2, + "76": 1, + "77": 2, + "78": 2, + "79": 1, + "80": 5, + "81": 10, + "82": 5, + "83": 4, + "84": 5, + "85": 5, + "86": 1, + "87": 7, + "88": 6, + "89": 4, + "90": 6, + "91": 5, + "92": 4, + "93": 8, + "94": 4, + "95": 5, + "96": 8, + "97": 9, + "98": 14, + "99": 7, + "100": 8, + "101": 11, + "102": 8, + "103": 8, + "104": 6, + "105": 12, + "106": 5, + "107": 3, + "108": 5, + "109": 8, + "110": 9, + "111": 10, + "112": 13, + "113": 9, + "114": 12, + "115": 15, + "116": 11, + "117": 16, + "118": 9, + "119": 6, + "120": 9, + "121": 8, + "122": 7, + "123": 4, + "124": 6, + "125": 4, + "126": 7, + "127": 5, + "130": 4, + "131": 6, + "132": 6, + "133": 7, + "134": 4, + "135": 2, + "136": 2, + "137": 6, + "138": 4, + "139": 6, + "140": 3, + "141": 4, + "142": 7, + "143": 5, + "144": 8, + "145": 6, + "146": 7, + "147": 2, + "148": 7, + "149": 9, + "150": 11, + "151": 10, + "152": 11, + "153": 8, + "154": 7, + "155": 8, + "156": 7, + "157": 4, + "158": 8, + "159": 6, + "160": 4, + "161": 5, + "162": 4, + "163": 2, + "164": 2, + "165": 4, + "166": 1, + "167": 4, + "168": 4, + "169": 4, + "170": 2, + "171": 1, + "172": 4, + "173": 4, + "174": 1, + "175": 2, + "176": 4, + "177": 2, + "178": 3, + "179": 3, + "180": 1, + "181": 3, + "182": 3, + "183": 5, + "184": 4, + "185": 3, + "186": 4, + "187": 4, + "188": 3, + "189": 2, + "190": 3, + "191": 2, + "192": 6, + "193": 3, + "194": 8, + "195": 2, + "196": 1, + "197": 1, + "198": 3, + "199": 3, + "200": 1, + "201": 1, + "202": 2, + "203": 3, + "204": 2, + "205": 2, + "206": 4, + "207": 2, + "208": 3, + "209": 2, + "210": 5, + "211": 2, + "212": 2, + "213": 5, + "214": 2, + "215": 2, + "216": 1, + "217": 1, + "218": 3, + "220": 3, + "221": 1, + "222": 4, + "223": 2, + "224": 5, + "225": 2, + "227": 3, + "228": 3, + "229": 5, + "231": 3, + "232": 3, + "233": 2, + "234": 2, + "235": 1, + "236": 1, + "237": 7, + "238": 1, + "239": 1, + "240": 1, + "241": 1, + "242": 1, + "243": 4, + "244": 4, + "245": 3, + "246": 5, + "247": 3, + "248": 2, + "250": 2, + "251": 3, + "252": 4, + "253": 1, + "254": 1, + "255": 3, + "257": 1, + "258": 1, + "259": 3, + "260": 2331, + "280": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343231266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882356973a93681" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "356973a9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_13.html b/autobahn/client/tungstenite_case_13_2_13.html new file mode 100644 index 0000000..6f9e65a --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_13.html @@ -0,0 +1,910 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.13 : Pass - 1124 ms @ 2025-09-11T20:11:56.267Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=422&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: GW1KiBwlp0SgE0EGbE8T9g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: voat0fb373s1lNUIzA/4b2BTrYM=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
134611346
135022700
135211352
135611356
135711357
135911359
136145444
136311363
136622732
136711367
136811368
136911369
137022740
137122742
137222744
137334119
137434122
137545500
137668256
137734131
137922758
138056900
138156905
138234146
138356915
138468304
138534155
138645544
138711387
138856940
138922778
139045560
139134173
139268352
139356965
139468364
139556975
139622792
139779779
139811398
139968394
140045600
140134203
140357015
140468424
140534215
140645624
140722814
140811408
140945636
141045640
141145644
141234236
141322826
141434242
141534245
141645664
141734251
141834254
141922838
142034260
142134263
142245688
142311423
142457120
142545700
142634278
142722854
142822856
142957145
143145724
143222864
143311433
143445736
143522870
143645744
143734311
1438811504
143934317
144034320
144234326
144311443
144411444
144522890
144668676
144711447
144911449
145211452
145422908
145522910
145622912
145834374
145922918
146022920
146111461
146222924
146322926
146445856
146545860
146622932
146745868
146822936
146945876
147034410
147111471
147234416
147311473
147411474
147522950
147611476
147734431
147822956
147945916
148045920
148145924
148222964
148311483
148434452
148522970
148645944
148722974
148822976
148922978
149022980
149122982
149234476
149345972
149411494
149568970
149668976
149745988
149822996
149911499
150023000
150169006
150269012
150311503
150523010
150634518
150711507
150811508
150923018
151023020
151123022
151211512
151323026
151511515
151611516
151723034
151911519
152223044
152323046
152434572
152557625
152611526
152723054
152823056
152911529
153123062
153323066
153423068
153723074
153811538
153923078
154011540
154123082
154211542
154323086
154446176
154534635
154623092
154746188
154846192
154911549
155057750
155423108
155511555
155634668
155711557
155811558
155911559
156011560
156111561
156211562
156334689
156446256
156511565
156611566
156723134
156811568
156923138
157034710
157123142
157234716
157323146
157423148
157534725
157646304
157723154
157846312
157911579
158023160
158111581
158211582
158311583
158423168
158523170
158723174
158811588
158911589
159046360
159111591
159234776
159323186
159434782
159511595
159657980
159711597
159846392
159934797
160023200
160134803
160223204
160323206
160423208
160523210
160611606
160758035
160834824
160911609
161034830
161111611
161258060
161323226
161411614
161534845
161623232
161746468
161846472
161923238
162034860
162234866
162458120
162534875
162634878
162746508
162811628
162911629
163011630
163134893
163211632
163334899
163411634
163558175
163623272
163734911
163834914
163958195
164023280
164146564
164223284
164323286
164458220
164511645
164634938
164746588
164834944
164946596
165058250
165146604
165234956
1653711571
165434962
165558275
165646624
165734971
165846632
165958295
166058300
166158305
166234986
166311663
166423328
16651118315
166634998
1667711669
1668813344
1669813352
167058350
167123342
167246688
1673610038
1674711718
1675610050
167658380
167735031
167846712
1679610074
168058400
168135043
168211682
168335049
168446736
1685711795
168658430
168723374
168823376
168935067
169023380
169158455
169235076
169423388
170535115
170811708
170911709
171123422
171223424
171411714
171511715
171611716
171711717
171923438
172011720
172311723
172511725
172711727
172811728
172911729
173111731
173435202
173511735
173711737
173835214
174011740
174123482
174246968
174323486
174546980
174635238
174811748
175123502
175223504
175323506
175411754
175611756
175711757
175823516
175935277
176011760
176123522
176211762
176335289
176423528
176547060
176635298
176747068
176811768
176935307
177135313
177235316
177511775
177623552
177747108
177811778
177911779
178111781
178211782
178611786
178711787
Total10021555992
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21020
31133
41560
5840
61060
7642
8540
91199
10330
11555
12896
1310130
148112
1510150
168128
178136
189162
1911209
2014280
2111231
2215330
238184
248192
256150
268208
278216
287196
298232
306180
315155
326192
335165
345170
355175
36272
375185
38276
395195
40280
41141
425210
434172
443132
456270
46292
47294
483144
494196
504200
513153
524208
532106
544216
552110
572114
583174
593177
60160
612122
622124
634252
642128
656390
662132
67167
696414
706420
712142
737511
744296
75175
762152
773231
783234
793237
805400
812162
82182
83183
842168
856510
863258
875435
887616
893267
903270
914364
924368
942188
95195
963288
97197
983294
995495
1003300
1012202
1023306
1036618
1041104
1054420
1062212
1072214
1086648
1094436
1104440
1111111
1124448
1134452
1143342
1154460
1162232
1172234
1193357
1203360
1213363
1223366
1232246
1242248
1262252
1272254
1301130
1312262
1321132
1336798
1342268
1351135
1363408
1374548
1381138
1391139
1401140
1414564
1422284
1432286
1441144
1452290
1461146
1474588
1492298
1512302
1524608
1541154
1551155
1563468
1572314
1594636
1601160
1612322
1622324
1641164
1664664
1672334
1681168
1692338
1701170
1712342
1722344
1732346
1743522
1752350
1762352
1772354
1791179
1802360
1811181
1821182
1832366
1841184
1853555
1862372
1872374
1882376
1894756
1904760
19161146
1923576
1932386
1942388
1951195
1962392
1973591
1983594
1992398
2002400
2011201
2021202
2033609
2044816
20561230
2063618
2072414
2084832
2093627
2102420
2111211
2124848
2133639
2142428
21551075
21661296
2171217
2183654
2191219
2204880
22161326
2223666
2232446
2244896
2253675
2264904
2273681
2284912
2293687
2304920
2313693
2324928
23361398
23451170
2353705
2362472
23771659
23892142
23951195
24071680
2412482
242102420
2434972
2444976
24581960
24661476
24871736
249133237
25041000
251112761
25261512
253102530
254102540
255102550
256164096
257133341
258184644
259143626
26051161330160
2801280
Total61181454517
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05116
11000
81
Total6117
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343232266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888219df1d431a37
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3139646631643433
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_13.json b/autobahn/client/tungstenite_case_13_2_13.json new file mode 100644 index 0000000..b744281 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_13.json @@ -0,0 +1,757 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 422, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 1124, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=422&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: GW1KiBwlp0SgE0EGbE8T9g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: voat0fb373s1lNUIzA/4b2BTrYM=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1346": 1, + "1350": 2, + "1352": 1, + "1356": 1, + "1357": 1, + "1359": 1, + "1361": 4, + "1363": 1, + "1366": 2, + "1367": 1, + "1368": 1, + "1369": 1, + "1370": 2, + "1371": 2, + "1372": 2, + "1373": 3, + "1374": 3, + "1375": 4, + "1376": 6, + "1377": 3, + "1379": 2, + "1380": 5, + "1381": 5, + "1382": 3, + "1383": 5, + "1384": 6, + "1385": 3, + "1386": 4, + "1387": 1, + "1388": 5, + "1389": 2, + "1390": 4, + "1391": 3, + "1392": 6, + "1393": 5, + "1394": 6, + "1395": 5, + "1396": 2, + "1397": 7, + "1398": 1, + "1399": 6, + "1400": 4, + "1401": 3, + "1403": 5, + "1404": 6, + "1405": 3, + "1406": 4, + "1407": 2, + "1408": 1, + "1409": 4, + "1410": 4, + "1411": 4, + "1412": 3, + "1413": 2, + "1414": 3, + "1415": 3, + "1416": 4, + "1417": 3, + "1418": 3, + "1419": 2, + "1420": 3, + "1421": 3, + "1422": 4, + "1423": 1, + "1424": 5, + "1425": 4, + "1426": 3, + "1427": 2, + "1428": 2, + "1429": 5, + "1431": 4, + "1432": 2, + "1433": 1, + "1434": 4, + "1435": 2, + "1436": 4, + "1437": 3, + "1438": 8, + "1439": 3, + "1440": 3, + "1442": 3, + "1443": 1, + "1444": 1, + "1445": 2, + "1446": 6, + "1447": 1, + "1449": 1, + "1452": 1, + "1454": 2, + "1455": 2, + "1456": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 1, + "1462": 2, + "1463": 2, + "1464": 4, + "1465": 4, + "1466": 2, + "1467": 4, + "1468": 2, + "1469": 4, + "1470": 3, + "1471": 1, + "1472": 3, + "1473": 1, + "1474": 1, + "1475": 2, + "1476": 1, + "1477": 3, + "1478": 2, + "1479": 4, + "1480": 4, + "1481": 4, + "1482": 2, + "1483": 1, + "1484": 3, + "1485": 2, + "1486": 4, + "1487": 2, + "1488": 2, + "1489": 2, + "1490": 2, + "1491": 2, + "1492": 3, + "1493": 4, + "1494": 1, + "1495": 6, + "1496": 6, + "1497": 4, + "1498": 2, + "1499": 1, + "1500": 2, + "1501": 6, + "1502": 6, + "1503": 1, + "1505": 2, + "1506": 3, + "1507": 1, + "1508": 1, + "1509": 2, + "1510": 2, + "1511": 2, + "1512": 1, + "1513": 2, + "1515": 1, + "1516": 1, + "1517": 2, + "1519": 1, + "1522": 2, + "1523": 2, + "1524": 3, + "1525": 5, + "1526": 1, + "1527": 2, + "1528": 2, + "1529": 1, + "1531": 2, + "1533": 2, + "1534": 2, + "1537": 2, + "1538": 1, + "1539": 2, + "1540": 1, + "1541": 2, + "1542": 1, + "1543": 2, + "1544": 4, + "1545": 3, + "1546": 2, + "1547": 4, + "1548": 4, + "1549": 1, + "1550": 5, + "1554": 2, + "1555": 1, + "1556": 3, + "1557": 1, + "1558": 1, + "1559": 1, + "1560": 1, + "1561": 1, + "1562": 1, + "1563": 3, + "1564": 4, + "1565": 1, + "1566": 1, + "1567": 2, + "1568": 1, + "1569": 2, + "1570": 3, + "1571": 2, + "1572": 3, + "1573": 2, + "1574": 2, + "1575": 3, + "1576": 4, + "1577": 2, + "1578": 4, + "1579": 1, + "1580": 2, + "1581": 1, + "1582": 1, + "1583": 1, + "1584": 2, + "1585": 2, + "1587": 2, + "1588": 1, + "1589": 1, + "1590": 4, + "1591": 1, + "1592": 3, + "1593": 2, + "1594": 3, + "1595": 1, + "1596": 5, + "1597": 1, + "1598": 4, + "1599": 3, + "1600": 2, + "1601": 3, + "1602": 2, + "1603": 2, + "1604": 2, + "1605": 2, + "1606": 1, + "1607": 5, + "1608": 3, + "1609": 1, + "1610": 3, + "1611": 1, + "1612": 5, + "1613": 2, + "1614": 1, + "1615": 3, + "1616": 2, + "1617": 4, + "1618": 4, + "1619": 2, + "1620": 3, + "1622": 3, + "1624": 5, + "1625": 3, + "1626": 3, + "1627": 4, + "1628": 1, + "1629": 1, + "1630": 1, + "1631": 3, + "1632": 1, + "1633": 3, + "1634": 1, + "1635": 5, + "1636": 2, + "1637": 3, + "1638": 3, + "1639": 5, + "1640": 2, + "1641": 4, + "1642": 2, + "1643": 2, + "1644": 5, + "1645": 1, + "1646": 3, + "1647": 4, + "1648": 3, + "1649": 4, + "1650": 5, + "1651": 4, + "1652": 3, + "1653": 7, + "1654": 3, + "1655": 5, + "1656": 4, + "1657": 3, + "1658": 4, + "1659": 5, + "1660": 5, + "1661": 5, + "1662": 3, + "1663": 1, + "1664": 2, + "1665": 11, + "1666": 3, + "1667": 7, + "1668": 8, + "1669": 8, + "1670": 5, + "1671": 2, + "1672": 4, + "1673": 6, + "1674": 7, + "1675": 6, + "1676": 5, + "1677": 3, + "1678": 4, + "1679": 6, + "1680": 5, + "1681": 3, + "1682": 1, + "1683": 3, + "1684": 4, + "1685": 7, + "1686": 5, + "1687": 2, + "1688": 2, + "1689": 3, + "1690": 2, + "1691": 5, + "1692": 3, + "1694": 2, + "1705": 3, + "1708": 1, + "1709": 1, + "1711": 2, + "1712": 2, + "1714": 1, + "1715": 1, + "1716": 1, + "1717": 1, + "1719": 2, + "1720": 1, + "1723": 1, + "1725": 1, + "1727": 1, + "1728": 1, + "1729": 1, + "1731": 1, + "1734": 3, + "1735": 1, + "1737": 1, + "1738": 3, + "1740": 1, + "1741": 2, + "1742": 4, + "1743": 2, + "1745": 4, + "1746": 3, + "1748": 1, + "1751": 2, + "1752": 2, + "1753": 2, + "1754": 1, + "1756": 1, + "1757": 1, + "1758": 2, + "1759": 3, + "1760": 1, + "1761": 2, + "1762": 1, + "1763": 3, + "1764": 2, + "1765": 4, + "1766": 3, + "1767": 4, + "1768": 1, + "1769": 3, + "1771": 3, + "1772": 3, + "1775": 1, + "1776": 2, + "1777": 4, + "1778": 1, + "1779": 1, + "1781": 1, + "1782": 1, + "1786": 1, + "1787": 1 + }, + "started": "2025-09-11T20:11:56.267Z", + "trafficStats": { + "incomingCompressionRatio": 0.04723287963867188, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1547727, + "incomingOctetsWireLevel": 1555727, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.005168870220652609, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1454233, + "outgoingWebSocketFrames": 6116, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016331379969459034, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "0": 5116, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 10, + "3": 11, + "4": 15, + "5": 8, + "6": 10, + "7": 6, + "8": 5, + "9": 11, + "10": 3, + "11": 5, + "12": 8, + "13": 10, + "14": 8, + "15": 10, + "16": 8, + "17": 8, + "18": 9, + "19": 11, + "20": 14, + "21": 11, + "22": 15, + "23": 8, + "24": 8, + "25": 6, + "26": 8, + "27": 8, + "28": 7, + "29": 8, + "30": 6, + "31": 5, + "32": 6, + "33": 5, + "34": 5, + "35": 5, + "36": 2, + "37": 5, + "38": 2, + "39": 5, + "40": 2, + "41": 1, + "42": 5, + "43": 4, + "44": 3, + "45": 6, + "46": 2, + "47": 2, + "48": 3, + "49": 4, + "50": 4, + "51": 3, + "52": 4, + "53": 2, + "54": 4, + "55": 2, + "57": 2, + "58": 3, + "59": 3, + "60": 1, + "61": 2, + "62": 2, + "63": 4, + "64": 2, + "65": 6, + "66": 2, + "67": 1, + "69": 6, + "70": 6, + "71": 2, + "73": 7, + "74": 4, + "75": 1, + "76": 2, + "77": 3, + "78": 3, + "79": 3, + "80": 5, + "81": 2, + "82": 1, + "83": 1, + "84": 2, + "85": 6, + "86": 3, + "87": 5, + "88": 7, + "89": 3, + "90": 3, + "91": 4, + "92": 4, + "94": 2, + "95": 1, + "96": 3, + "97": 1, + "98": 3, + "99": 5, + "100": 3, + "101": 2, + "102": 3, + "103": 6, + "104": 1, + "105": 4, + "106": 2, + "107": 2, + "108": 6, + "109": 4, + "110": 4, + "111": 1, + "112": 4, + "113": 4, + "114": 3, + "115": 4, + "116": 2, + "117": 2, + "119": 3, + "120": 3, + "121": 3, + "122": 3, + "123": 2, + "124": 2, + "126": 2, + "127": 2, + "130": 1, + "131": 2, + "132": 1, + "133": 6, + "134": 2, + "135": 1, + "136": 3, + "137": 4, + "138": 1, + "139": 1, + "140": 1, + "141": 4, + "142": 2, + "143": 2, + "144": 1, + "145": 2, + "146": 1, + "147": 4, + "149": 2, + "151": 2, + "152": 4, + "154": 1, + "155": 1, + "156": 3, + "157": 2, + "159": 4, + "160": 1, + "161": 2, + "162": 2, + "164": 1, + "166": 4, + "167": 2, + "168": 1, + "169": 2, + "170": 1, + "171": 2, + "172": 2, + "173": 2, + "174": 3, + "175": 2, + "176": 2, + "177": 2, + "179": 1, + "180": 2, + "181": 1, + "182": 1, + "183": 2, + "184": 1, + "185": 3, + "186": 2, + "187": 2, + "188": 2, + "189": 4, + "190": 4, + "191": 6, + "192": 3, + "193": 2, + "194": 2, + "195": 1, + "196": 2, + "197": 3, + "198": 3, + "199": 2, + "200": 2, + "201": 1, + "202": 1, + "203": 3, + "204": 4, + "205": 6, + "206": 3, + "207": 2, + "208": 4, + "209": 3, + "210": 2, + "211": 1, + "212": 4, + "213": 3, + "214": 2, + "215": 5, + "216": 6, + "217": 1, + "218": 3, + "219": 1, + "220": 4, + "221": 6, + "222": 3, + "223": 2, + "224": 4, + "225": 3, + "226": 4, + "227": 3, + "228": 4, + "229": 3, + "230": 4, + "231": 3, + "232": 4, + "233": 6, + "234": 5, + "235": 3, + "236": 2, + "237": 7, + "238": 9, + "239": 5, + "240": 7, + "241": 2, + "242": 10, + "243": 4, + "244": 4, + "245": 8, + "246": 6, + "248": 7, + "249": 13, + "250": 4, + "251": 11, + "252": 6, + "253": 10, + "254": 10, + "255": 10, + "256": 16, + "257": 13, + "258": 18, + "259": 14, + "260": 5116, + "280": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343232266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888219df1d431a37" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "19df1d43" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_14.html b/autobahn/client/tungstenite_case_13_2_14.html new file mode 100644 index 0000000..9019105 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_14.html @@ -0,0 +1,589 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.14 : Pass - 1785 ms @ 2025-09-11T20:11:57.393Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=423&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: BkNw1p8udOy39uZKj8LGHg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: FM95Pa2NeKL9RLziU6pBJfL0kUo=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
290012900
290812908
290912909
291025820
291212912
291425828
291538745
2916411664
291738751
2918514590
291925838
2920514600
2921514605
292238766
2923617538
2924617544
2925617550
2926617556
2927823416
2928617568
2929617574
2930617580
2931823448
2932617592
29331029330
29341235208
29351441090
29362058720
29371441118
29382367574
29392779353
29402264680
29412676466
29421441188
29431852974
29441647104
29451853010
29461955974
29471132417
29481956012
29491750133
2950926550
29511647216
2952720664
29531029530
29541441356
29551235460
29561132516
2957720699
29581647328
2959720713
29601132560
296138883
29621853316
29631132593
2964720748
2965514825
2966926694
29671235604
2968617808
2969514845
297038910
297125942
2972411888
297338919
297425948
2975617850
2976514880
2977514885
297925958
298025960
2982514910
298325966
298425968
298525970
298638958
298738961
298838964
298912989
299012990
299112991
299312993
299425988
299612996
299812998
300113001
300313003
3004412016
300513005
300626012
300739021
301113011
301213012
301513015
301613016
301713017
301826036
301913019
302013020
302213022
302313023
302426048
302526050
302626052
3028412112
302939087
303026060
3031618186
303226064
3033618198
3034927306
3035721245
3036721252
303739111
3038412152
3039412156
3040618240
304139123
3042412168
304313043
3044412176
304539135
304639138
304713047
3048412192
304913049
3050721350
3051618306
305239156
3053515265
3054412216
3055515275
3056618336
3057927513
3058515290
3059824472
30601236720
306139183
30621545930
3063824504
3064618384
30651030650
3066515330
3067927603
3068824544
3069721483
30701442980
3071927639
3072515360
3073824584
3074515370
3075412300
307613076
3077618462
3078515390
307926158
308013080
3081412324
308526170
308613086
308713087
308826176
309026180
309113091
309239276
309326186
309413094
309539285
309613096
Total10022984107
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21734
32163
428112
525125
622132
726182
820160
934306
1020200
1114154
12896
139117
1417238
1516240
1617272
1716272
1810180
199171
205100
21363
22122
23369
24496
25250
28256
29129
31131
32132
33266
35135
36136
37274
393117
414164
42142
444176
453135
46292
48296
49149
50150
51151
52152
54154
60160
61161
642128
65165
66166
67167
682136
69169
702140
74174
77177
79179
813243
822164
832166
845420
858680
865430
877609
884352
898712
902180
913273
923276
935465
9410940
95111045
96161536
9710970
98111078
996594
100191900
101121212
1026612
1039927
104121248
105121260
106121272
1079963
1087756
1099981
1107770
1116666
1124448
1134452
1142228
1153345
1161116
1176702
118111298
1198952
120131560
121101210
12291098
1235615
1242248
1253375
1411141
2412482
2421242
2432486
24451220
2454980
24661476
24751235
24861488
249122988
250174250
251225522
252266552
253287084
254174318
255358925
256194864
257317967
258205160
259235957
260107192786940
2801280
Total117212897817
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
010719
11000
81
Total11720
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343233266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828d1a3d408ef2
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3864316133643430
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_14.json b/autobahn/client/tungstenite_case_13_2_14.json new file mode 100644 index 0000000..d6f46a6 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_14.json @@ -0,0 +1,436 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 423, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 1785, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=423&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: BkNw1p8udOy39uZKj8LGHg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: FM95Pa2NeKL9RLziU6pBJfL0kUo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2900": 1, + "2908": 1, + "2909": 1, + "2910": 2, + "2912": 1, + "2914": 2, + "2915": 3, + "2916": 4, + "2917": 3, + "2918": 5, + "2919": 2, + "2920": 5, + "2921": 5, + "2922": 3, + "2923": 6, + "2924": 6, + "2925": 6, + "2926": 6, + "2927": 8, + "2928": 6, + "2929": 6, + "2930": 6, + "2931": 8, + "2932": 6, + "2933": 10, + "2934": 12, + "2935": 14, + "2936": 20, + "2937": 14, + "2938": 23, + "2939": 27, + "2940": 22, + "2941": 26, + "2942": 14, + "2943": 18, + "2944": 16, + "2945": 18, + "2946": 19, + "2947": 11, + "2948": 19, + "2949": 17, + "2950": 9, + "2951": 16, + "2952": 7, + "2953": 10, + "2954": 14, + "2955": 12, + "2956": 11, + "2957": 7, + "2958": 16, + "2959": 7, + "2960": 11, + "2961": 3, + "2962": 18, + "2963": 11, + "2964": 7, + "2965": 5, + "2966": 9, + "2967": 12, + "2968": 6, + "2969": 5, + "2970": 3, + "2971": 2, + "2972": 4, + "2973": 3, + "2974": 2, + "2975": 6, + "2976": 5, + "2977": 5, + "2979": 2, + "2980": 2, + "2982": 5, + "2983": 2, + "2984": 2, + "2985": 2, + "2986": 3, + "2987": 3, + "2988": 3, + "2989": 1, + "2990": 1, + "2991": 1, + "2993": 1, + "2994": 2, + "2996": 1, + "2998": 1, + "3001": 1, + "3003": 1, + "3004": 4, + "3005": 1, + "3006": 2, + "3007": 3, + "3011": 1, + "3012": 1, + "3015": 1, + "3016": 1, + "3017": 1, + "3018": 2, + "3019": 1, + "3020": 1, + "3022": 1, + "3023": 1, + "3024": 2, + "3025": 2, + "3026": 2, + "3028": 4, + "3029": 3, + "3030": 2, + "3031": 6, + "3032": 2, + "3033": 6, + "3034": 9, + "3035": 7, + "3036": 7, + "3037": 3, + "3038": 4, + "3039": 4, + "3040": 6, + "3041": 3, + "3042": 4, + "3043": 1, + "3044": 4, + "3045": 3, + "3046": 3, + "3047": 1, + "3048": 4, + "3049": 1, + "3050": 7, + "3051": 6, + "3052": 3, + "3053": 5, + "3054": 4, + "3055": 5, + "3056": 6, + "3057": 9, + "3058": 5, + "3059": 8, + "3060": 12, + "3061": 3, + "3062": 15, + "3063": 8, + "3064": 6, + "3065": 10, + "3066": 5, + "3067": 9, + "3068": 8, + "3069": 7, + "3070": 14, + "3071": 9, + "3072": 5, + "3073": 8, + "3074": 5, + "3075": 4, + "3076": 1, + "3077": 6, + "3078": 5, + "3079": 2, + "3080": 1, + "3081": 4, + "3085": 2, + "3086": 1, + "3087": 1, + "3088": 2, + "3090": 2, + "3091": 1, + "3092": 3, + "3093": 2, + "3094": 1, + "3095": 3, + "3096": 1 + }, + "started": "2025-09-11T20:11:57.393Z", + "trafficStats": { + "incomingCompressionRatio": 0.045407745361328126, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2975842, + "incomingOctetsWireLevel": 2983842, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0026883147693997195, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2897533, + "outgoingWebSocketFrames": 11719, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015932159294945854, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "0": 10719, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 17, + "3": 21, + "4": 28, + "5": 25, + "6": 22, + "7": 26, + "8": 20, + "9": 34, + "10": 20, + "11": 14, + "12": 8, + "13": 9, + "14": 17, + "15": 16, + "16": 17, + "17": 16, + "18": 10, + "19": 9, + "20": 5, + "21": 3, + "22": 1, + "23": 3, + "24": 4, + "25": 2, + "28": 2, + "29": 1, + "31": 1, + "32": 1, + "33": 2, + "35": 1, + "36": 1, + "37": 2, + "39": 3, + "41": 4, + "42": 1, + "44": 4, + "45": 3, + "46": 2, + "48": 2, + "49": 1, + "50": 1, + "51": 1, + "52": 1, + "54": 1, + "60": 1, + "61": 1, + "64": 2, + "65": 1, + "66": 1, + "67": 1, + "68": 2, + "69": 1, + "70": 2, + "74": 1, + "77": 1, + "79": 1, + "81": 3, + "82": 2, + "83": 2, + "84": 5, + "85": 8, + "86": 5, + "87": 7, + "88": 4, + "89": 8, + "90": 2, + "91": 3, + "92": 3, + "93": 5, + "94": 10, + "95": 11, + "96": 16, + "97": 10, + "98": 11, + "99": 6, + "100": 19, + "101": 12, + "102": 6, + "103": 9, + "104": 12, + "105": 12, + "106": 12, + "107": 9, + "108": 7, + "109": 9, + "110": 7, + "111": 6, + "112": 4, + "113": 4, + "114": 2, + "115": 3, + "116": 1, + "117": 6, + "118": 11, + "119": 8, + "120": 13, + "121": 10, + "122": 9, + "123": 5, + "124": 2, + "125": 3, + "141": 1, + "241": 2, + "242": 1, + "243": 2, + "244": 5, + "245": 4, + "246": 6, + "247": 5, + "248": 6, + "249": 12, + "250": 17, + "251": 22, + "252": 26, + "253": 28, + "254": 17, + "255": 35, + "256": 19, + "257": 31, + "258": 20, + "259": 23, + "260": 10719, + "280": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343233266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828d1a3d408ef2" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8d1a3d40" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_15.html b/autobahn/client/tungstenite_case_13_2_15.html new file mode 100644 index 0000000..69fab97 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_15.html @@ -0,0 +1,608 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.15 : Pass - 3578 ms @ 2025-09-11T20:11:59.181Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=424&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: f+Hp4Wft7IwSVesk80Ll9A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 02+yqRGnjtZpkaQIIBO2ArVXaZI=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
326
4416
515
6212
7214
818
9218
10110
11333
12112
13339
14684
15230
16232
17234
23123
30130
31262
33133
34134
36136
37274
393117
40140
41141
42284
433129
449396
455225
463138
4710470
4810480
4915735
50201000
5114714
5216832
5314742
54211134
55261430
5617952
5711627
58251450
59211239
60241440
6116976
62251550
63241512
64241536
6512780
66171122
67191273
6813884
699621
70251750
71251775
72161152
7312876
7411814
758600
7610760
77131001
784312
796474
803240
81181
822164
832166
845420
853255
863258
875435
884352
89121068
9010900
917637
92111012
939837
942188
953285
972194
983294
99199
1121112
1131113
1141114
1163348
1172234
1191119
1271127
1302260
1992398
2001200
2011201
2021202
2032406
20451020
20571435
20651030
2074828
2081208
20961254
21081680
21161266
2124848
213112343
21481712
21571505
21661296
21761302
2184872
2194876
22051100
22151105
22271554
223173791
224163584
225143150
226132938
22761362
22861368
229102290
230163680
231133003
23292088
23361398
23461404
23561410
2362472
2374948
23851190
2394956
24061440
2413723
2432486
2442488
2462492
2481248
2491249
2513753
2533759
2542508
2561256
2582516
2591259
260217025642520
2801280
Total227045753790
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
021702
11000
81
Total22703
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343234266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882fbc6c2c7f82e
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6662633663326337
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_15.json b/autobahn/client/tungstenite_case_13_2_15.json new file mode 100644 index 0000000..7874482 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_15.json @@ -0,0 +1,455 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 424, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 3578, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=424&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: f+Hp4Wft7IwSVesk80Ll9A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 02+yqRGnjtZpkaQIIBO2ArVXaZI=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:11:59.181Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5753506, + "outgoingWebSocketFrames": 22702, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01578503761764009, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "0": 21702, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 2, + "4": 4, + "5": 1, + "6": 2, + "7": 2, + "8": 1, + "9": 2, + "10": 1, + "11": 3, + "12": 1, + "13": 3, + "14": 6, + "15": 2, + "16": 2, + "17": 2, + "23": 1, + "30": 1, + "31": 2, + "33": 1, + "34": 1, + "36": 1, + "37": 2, + "39": 3, + "40": 1, + "41": 1, + "42": 2, + "43": 3, + "44": 9, + "45": 5, + "46": 3, + "47": 10, + "48": 10, + "49": 15, + "50": 20, + "51": 14, + "52": 16, + "53": 14, + "54": 21, + "55": 26, + "56": 17, + "57": 11, + "58": 25, + "59": 21, + "60": 24, + "61": 16, + "62": 25, + "63": 24, + "64": 24, + "65": 12, + "66": 17, + "67": 19, + "68": 13, + "69": 9, + "70": 25, + "71": 25, + "72": 16, + "73": 12, + "74": 11, + "75": 8, + "76": 10, + "77": 13, + "78": 4, + "79": 6, + "80": 3, + "81": 1, + "82": 2, + "83": 2, + "84": 5, + "85": 3, + "86": 3, + "87": 5, + "88": 4, + "89": 12, + "90": 10, + "91": 7, + "92": 11, + "93": 9, + "94": 2, + "95": 3, + "97": 2, + "98": 3, + "99": 1, + "112": 1, + "113": 1, + "114": 1, + "116": 3, + "117": 2, + "119": 1, + "127": 1, + "130": 2, + "199": 2, + "200": 1, + "201": 1, + "202": 1, + "203": 2, + "204": 5, + "205": 7, + "206": 5, + "207": 4, + "208": 1, + "209": 6, + "210": 8, + "211": 6, + "212": 4, + "213": 11, + "214": 8, + "215": 7, + "216": 6, + "217": 6, + "218": 4, + "219": 4, + "220": 5, + "221": 5, + "222": 7, + "223": 17, + "224": 16, + "225": 14, + "226": 13, + "227": 6, + "228": 6, + "229": 10, + "230": 16, + "231": 13, + "232": 9, + "233": 6, + "234": 6, + "235": 6, + "236": 2, + "237": 4, + "238": 5, + "239": 4, + "240": 6, + "241": 3, + "243": 2, + "244": 2, + "246": 2, + "248": 1, + "249": 1, + "251": 3, + "253": 3, + "254": 2, + "256": 1, + "258": 2, + "259": 1, + "260": 21702, + "280": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343234266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fbc6c2c7f82e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fbc6c2c7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_16.html b/autobahn/client/tungstenite_case_13_2_16.html new file mode 100644 index 0000000..cf3e083 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_16.html @@ -0,0 +1,609 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.16 : Pass - 3128 ms @ 2025-09-11T20:12:02.760Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=425&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 0wm1PWubDJyYavyYlyfmJg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: t49krrNmzLvaaE3YFdzJWcyEivA=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2801280
4552910
4561456
4571457
4581458
4592918
46052300
46173227
46252310
46341852
4641464
46562790
46683728
46762802
46841872
469115159
47083760
47173297
47262832
47362838
47441896
47541900
47652380
47752385
47873346
479178143
480167680
481146734
482136266
48362898
48462904
485104850
486167776
487136331
48894392
48962934
49062940
49162946
4922984
49341972
49452470
49541980
49662976
49731491
4992998
50021000
50221004
5041504
5051505
50731521
50931527
51021020
5121512
51421028
5151515
51721034
51831554
5191519
52021040
52121042
5221522
52321046
5241524
52531575
5261526
52731581
52863168
52921058
53021060
53121062
5371537
5441544
54521090
5471547
5481548
5501550
55121102
55331659
5541554
5551555
55621112
55731671
55895022
55952795
56031680
561105610
562105620
563158445
5642011280
565147910
566169056
567147938
5682111928
5692614794
570179690
571116281
5722514300
5732112033
5742413776
575169200
5762514400
5772413848
5782413872
579126948
580179860
5811911039
582137566
58395247
5842514600
5852514625
586169376
587127044
588116468
58984712
590105900
591137683
59242368
59363558
59431782
5951595
59621192
59721194
59852990
59931797
60031800
60153005
60242408
603127236
604106040
60574235
606116666
60795463
60821216
60931827
61121222
61231836
6131613
6261626
6271627
6281628
63031890
63121262
6331633
6411641
64221284
102850005140000
Total60025688382
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05000
11000
81
Total6001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343235266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882de32c1aeddda
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6465333263316165
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_16.json b/autobahn/client/tungstenite_case_13_2_16.json new file mode 100644 index 0000000..8ac56d6 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_16.json @@ -0,0 +1,456 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 425, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 3128, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=425&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 0wm1PWubDJyYavyYlyfmJg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: t49krrNmzLvaaE3YFdzJWcyEivA=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:12:02.760Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5688098, + "outgoingWebSocketFrames": 6000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0042372148222011696, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "0": 5000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "280": 1, + "455": 2, + "456": 1, + "457": 1, + "458": 1, + "459": 2, + "460": 5, + "461": 7, + "462": 5, + "463": 4, + "464": 1, + "465": 6, + "466": 8, + "467": 6, + "468": 4, + "469": 11, + "470": 8, + "471": 7, + "472": 6, + "473": 6, + "474": 4, + "475": 4, + "476": 5, + "477": 5, + "478": 7, + "479": 17, + "480": 16, + "481": 14, + "482": 13, + "483": 6, + "484": 6, + "485": 10, + "486": 16, + "487": 13, + "488": 9, + "489": 6, + "490": 6, + "491": 6, + "492": 2, + "493": 4, + "494": 5, + "495": 4, + "496": 6, + "497": 3, + "499": 2, + "500": 2, + "502": 2, + "504": 1, + "505": 1, + "507": 3, + "509": 3, + "510": 2, + "512": 1, + "514": 2, + "515": 1, + "517": 2, + "518": 3, + "519": 1, + "520": 2, + "521": 2, + "522": 1, + "523": 2, + "524": 1, + "525": 3, + "526": 1, + "527": 3, + "528": 6, + "529": 2, + "530": 2, + "531": 2, + "537": 1, + "544": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "551": 2, + "553": 3, + "554": 1, + "555": 1, + "556": 2, + "557": 3, + "558": 9, + "559": 5, + "560": 3, + "561": 10, + "562": 10, + "563": 15, + "564": 20, + "565": 14, + "566": 16, + "567": 14, + "568": 21, + "569": 26, + "570": 17, + "571": 11, + "572": 25, + "573": 21, + "574": 24, + "575": 16, + "576": 25, + "577": 24, + "578": 24, + "579": 12, + "580": 17, + "581": 19, + "582": 13, + "583": 9, + "584": 25, + "585": 25, + "586": 16, + "587": 12, + "588": 11, + "589": 8, + "590": 10, + "591": 13, + "592": 4, + "593": 6, + "594": 3, + "595": 1, + "596": 2, + "597": 2, + "598": 5, + "599": 3, + "600": 3, + "601": 5, + "602": 4, + "603": 12, + "604": 10, + "605": 7, + "606": 11, + "607": 9, + "608": 2, + "609": 3, + "611": 2, + "612": 3, + "613": 1, + "626": 1, + "627": 1, + "628": 1, + "630": 3, + "631": 2, + "633": 1, + "641": 1, + "642": 2, + "1028": 5000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343235266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882de32c1aeddda" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "de32c1ae" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_17.html b/autobahn/client/tungstenite_case_13_2_17.html new file mode 100644 index 0000000..caea395 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_17.html @@ -0,0 +1,609 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.17 : Pass - 3289 ms @ 2025-09-11T20:12:05.890Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=426&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: N98/ckDvPQfjPEYjvHs/uQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: pFo3sdcnObb0OXIxbXUiWvs6RkI=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2801280
147922958
148011480
148111481
148211482
148322966
148457420
1485710395
148657430
148745948
148811488
148968934
1490811920
149168946
149245968
14931116423
1494811952
1495710465
149668976
149768982
149845992
149945996
150057500
150157505
1502710514
15031725551
15041624064
15051421070
15061319578
150769042
150869048
15091015090
15101624160
15111319643
1512913608
151369078
151469084
151569090
151623032
151746068
151857590
151946076
152069120
152134563
152323046
152423048
152623052
152811528
152911529
153134593
153334599
153423068
153611536
153823076
153911539
154123082
154234626
154311543
154423088
154523090
154611546
154723094
154811548
154934647
155011550
155134653
155269312
155323106
155423108
155523110
156111561
156811568
156923138
157111571
157211572
157411574
157523150
157734731
157811578
157911579
158023160
158134743
1582914238
158357915
158434752
15851015850
15861015860
15871523805
15882031760
15891422246
15901625440
15911422274
15922133432
15932641418
15941727098
15951117545
15962539900
15972133537
15982438352
15991625584
16002540000
16012438424
16022438448
16031219236
16041727268
16051930495
16061320878
1607914463
16082540200
16092540225
16101625760
16111219332
16121117732
1613812904
16141016140
16151320995
161646464
161769702
161834854
161911619
162023240
162123242
162258110
162334869
162434872
162558125
162646504
16271219524
16281016280
1629711403
16301117930
1631914679
163223264
163334899
163523270
163634908
163711637
165011650
165111651
165211652
165434962
165523310
165711657
166511665
166623332
410010004100000
Total20025672382
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343236266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888259e895565a00
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3539653839353536
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_17.json b/autobahn/client/tungstenite_case_13_2_17.json new file mode 100644 index 0000000..6d4b805 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_17.json @@ -0,0 +1,456 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 426, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 3289, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=426&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: N98/ckDvPQfjPEYjvHs/uQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: pFo3sdcnObb0OXIxbXUiWvs6RkI=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:12:05.890Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5672098, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014124049407337233, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "280": 1, + "1479": 2, + "1480": 1, + "1481": 1, + "1482": 1, + "1483": 2, + "1484": 5, + "1485": 7, + "1486": 5, + "1487": 4, + "1488": 1, + "1489": 6, + "1490": 8, + "1491": 6, + "1492": 4, + "1493": 11, + "1494": 8, + "1495": 7, + "1496": 6, + "1497": 6, + "1498": 4, + "1499": 4, + "1500": 5, + "1501": 5, + "1502": 7, + "1503": 17, + "1504": 16, + "1505": 14, + "1506": 13, + "1507": 6, + "1508": 6, + "1509": 10, + "1510": 16, + "1511": 13, + "1512": 9, + "1513": 6, + "1514": 6, + "1515": 6, + "1516": 2, + "1517": 4, + "1518": 5, + "1519": 4, + "1520": 6, + "1521": 3, + "1523": 2, + "1524": 2, + "1526": 2, + "1528": 1, + "1529": 1, + "1531": 3, + "1533": 3, + "1534": 2, + "1536": 1, + "1538": 2, + "1539": 1, + "1541": 2, + "1542": 3, + "1543": 1, + "1544": 2, + "1545": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 3, + "1550": 1, + "1551": 3, + "1552": 6, + "1553": 2, + "1554": 2, + "1555": 2, + "1561": 1, + "1568": 1, + "1569": 2, + "1571": 1, + "1572": 1, + "1574": 1, + "1575": 2, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 3, + "1582": 9, + "1583": 5, + "1584": 3, + "1585": 10, + "1586": 10, + "1587": 15, + "1588": 20, + "1589": 14, + "1590": 16, + "1591": 14, + "1592": 21, + "1593": 26, + "1594": 17, + "1595": 11, + "1596": 25, + "1597": 21, + "1598": 24, + "1599": 16, + "1600": 25, + "1601": 24, + "1602": 24, + "1603": 12, + "1604": 17, + "1605": 19, + "1606": 13, + "1607": 9, + "1608": 25, + "1609": 25, + "1610": 16, + "1611": 12, + "1612": 11, + "1613": 8, + "1614": 10, + "1615": 13, + "1616": 4, + "1617": 6, + "1618": 3, + "1619": 1, + "1620": 2, + "1621": 2, + "1622": 5, + "1623": 3, + "1624": 3, + "1625": 5, + "1626": 4, + "1627": 12, + "1628": 10, + "1629": 7, + "1630": 11, + "1631": 9, + "1632": 2, + "1633": 3, + "1635": 2, + "1636": 3, + "1637": 1, + "1650": 1, + "1651": 1, + "1652": 1, + "1654": 3, + "1655": 2, + "1657": 1, + "1665": 1, + "1666": 2, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343236266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888259e895565a00" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "59e89556" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_18.html b/autobahn/client/tungstenite_case_13_2_18.html new file mode 100644 index 0000000..3353f56 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_18.html @@ -0,0 +1,607 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.18 : Pass - 2795 ms @ 2025-09-11T20:12:09.181Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=427&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: o2rdfi50mkuJDNsVVe1Yng==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: v8Jtm21aiOYB38CCf7eGozsnRD8=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2801280
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668382
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343237266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88829648fafa95a0
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3936343866616661
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_18.json b/autobahn/client/tungstenite_case_13_2_18.json new file mode 100644 index 0000000..0174c81 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_18.json @@ -0,0 +1,454 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 427, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 2795, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=427&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: o2rdfi50mkuJDNsVVe1Yng==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: v8Jtm21aiOYB38CCf7eGozsnRD8=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:12:09.181Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "280": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343237266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829648fafa95a0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9648fafa" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_2.html b/autobahn/client/tungstenite_case_13_2_2.html new file mode 100644 index 0000000..d6e2369 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_2.html @@ -0,0 +1,342 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.2 : Pass - 142 ms @ 2025-09-11T20:11:48.360Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=411&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: bZ0q3h2tdVy9Dh2LvnP5Fw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /ckoqzWaFsbO6FxSdiZGOqy+KHQ=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
395195
408320
41311271
42351470
4311473
4415660
4517765
4620920
47221034
48562688
49542646
5016800
51502550
52763952
53834399
54844536
55613355
56402240
57211197
5811638
5916944
6011660
61301830
62895518
63684284
64362304
6514910
6615990
675335
2571257
Total100254149
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
74413087
81080
91431287
101741740
1136396
1268816
13781014
1428392
1516240
19119
24124
32132
37137
38138
51151
2801280
Total10029537
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343131266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882a95643fbaabe
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6139353634336662
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_2.json b/autobahn/client/tungstenite_case_13_2_2.json new file mode 100644 index 0000000..c14acbd --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_2.json @@ -0,0 +1,189 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 411, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 142, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=411&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: bZ0q3h2tdVy9Dh2LvnP5Fw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /ckoqzWaFsbO6FxSdiZGOqy+KHQ=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "39": 5, + "40": 8, + "41": 31, + "42": 35, + "43": 11, + "44": 15, + "45": 17, + "46": 20, + "47": 22, + "48": 56, + "49": 54, + "50": 16, + "51": 50, + "52": 76, + "53": 83, + "54": 84, + "55": 61, + "56": 40, + "57": 21, + "58": 11, + "59": 16, + "60": 11, + "61": 30, + "62": 89, + "63": 68, + "64": 36, + "65": 14, + "66": 15, + "67": 5, + "257": 1 + }, + "started": "2025-09-11T20:11:48.360Z", + "trafficStats": { + "incomingCompressionRatio": 0.7481875, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 47884, + "incomingOctetsWireLevel": 53884, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.12530281513658006, + "outgoingCompressionRatio": 0.113328125, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 7253, + "outgoingOctetsWireLevel": 9253, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.2757479663587481, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 441, + "8": 10, + "9": 143, + "10": 174, + "11": 36, + "12": 68, + "13": 78, + "14": 28, + "15": 16, + "19": 1, + "24": 1, + "32": 1, + "37": 1, + "38": 1, + "51": 1, + "280": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343131266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a95643fbaabe" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a95643fb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_3.html b/autobahn/client/tungstenite_case_13_2_3.html new file mode 100644 index 0000000..b63e270 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_3.html @@ -0,0 +1,361 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.3 : Pass - 160 ms @ 2025-09-11T20:11:48.503Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=412&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: K5yOis/V6MMXgu8KGj6s8Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Jva+hlp2tRX8XYl2uI8FEn/yMPo=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1271127
1282256
130131690
131101310
134212814
135283780
136364896
137699453
1388111178
13911015290
14010214280
1418812408
1429813916
1438211726
144699936
145628990
146304380
147253675
148162368
149121788
1504600
1515755
1524608
1534612
1544616
1552310
1566936
1573471
1584632
1592318
1602320
1612322
1623486
2571257
Total1002141512
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1342546
1470980
1542630
161382208
171051785
18991782
191252375
20721440
21761596
22541188
23531219
2438912
2529725
2622572
2710270
284112
295145
30130
31262
32132
33266
34134
36136
37137
39139
41282
43143
61161
66166
1471147
2801280
Total100219504
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343132266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882917cb6f19294
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3931376362366631
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_3.json b/autobahn/client/tungstenite_case_13_2_3.json new file mode 100644 index 0000000..e8f3023 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_3.json @@ -0,0 +1,208 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 412, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 160, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=412&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: K5yOis/V6MMXgu8KGj6s8Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Jva+hlp2tRX8XYl2uI8FEn/yMPo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "127": 1, + "128": 2, + "130": 13, + "131": 10, + "134": 21, + "135": 28, + "136": 36, + "137": 69, + "138": 81, + "139": 110, + "140": 102, + "141": 88, + "142": 98, + "143": 82, + "144": 69, + "145": 62, + "146": 30, + "147": 25, + "148": 16, + "149": 12, + "150": 4, + "151": 5, + "152": 4, + "153": 4, + "154": 4, + "155": 2, + "156": 6, + "157": 3, + "158": 4, + "159": 2, + "160": 2, + "161": 2, + "162": 3, + "257": 1 + }, + "started": "2025-09-11T20:11:48.503Z", + "trafficStats": { + "incomingCompressionRatio": 0.52069921875, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 133299, + "incomingOctetsWireLevel": 141247, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0596253535285336, + "outgoingCompressionRatio": 0.0672578125, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 17218, + "outgoingOctetsWireLevel": 19220, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11627366709257754, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 42, + "14": 70, + "15": 42, + "16": 138, + "17": 105, + "18": 99, + "19": 125, + "20": 72, + "21": 76, + "22": 54, + "23": 53, + "24": 38, + "25": 29, + "26": 22, + "27": 10, + "28": 4, + "29": 5, + "30": 1, + "31": 2, + "32": 1, + "33": 2, + "34": 1, + "36": 1, + "37": 1, + "39": 1, + "41": 2, + "43": 1, + "61": 1, + "66": 1, + "147": 1, + "280": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343132266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882917cb6f19294" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "917cb6f1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_4.html b/autobahn/client/tungstenite_case_13_2_4.html new file mode 100644 index 0000000..f5f5154 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_4.html @@ -0,0 +1,414 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.4 : Pass - 179 ms @ 2025-09-11T20:11:48.665Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=413&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: WEt5OqB34J44oyfAuX1Mfg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: R/v8FbXr8K3+6pkPPJPoUfGALss=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1601160
1633489
1643492
16671162
167101670
168101680
169142366
170264420
171244104
172417052
173406920
174468004
175457875
176559680
1776210974
178366408
1796010740
180437740
181519231
182295278
183397137
184386992
185285180
186244464
187427854
188336204
189356615
190295510
191142674
192142688
19391737
19481552
195112145
19681568
19771379
19961194
20051000
2024808
2053615
2061206
2074828
2081208
2094836
2101210
2112422
21251060
2133639
2153645
2214884
2234892
2253675
2272454
2571257
Total1002181985
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
39139
40140
414164
445220
45145
464184
479423
48221056
49331617
50321600
51391989
52683536
53482544
54633402
55603300
56673752
57663762
58271566
59492891
60291740
61181098
6216992
63311953
64181152
65161040
668528
67191273
68211428
69161104
70292030
71181278
72282016
73312263
7410740
7511825
76181368
7710770
788624
794316
803240
82182
832166
843252
863258
87187
88188
893267
912182
922184
944376
96196
97197
992198
1001100
1011101
1041104
1052210
1061106
1071107
1081108
1092218
1101110
1141114
1701170
2801280
Total100260973
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343133266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88823138ff1632d0
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3331333866663136
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_4.json b/autobahn/client/tungstenite_case_13_2_4.json new file mode 100644 index 0000000..b6e844a --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_4.json @@ -0,0 +1,261 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 413, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 179, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=413&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: WEt5OqB34J44oyfAuX1Mfg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: R/v8FbXr8K3+6pkPPJPoUfGALss=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "160": 1, + "163": 3, + "164": 3, + "166": 7, + "167": 10, + "168": 10, + "169": 14, + "170": 26, + "171": 24, + "172": 41, + "173": 40, + "174": 46, + "175": 45, + "176": 55, + "177": 62, + "178": 36, + "179": 60, + "180": 43, + "181": 51, + "182": 29, + "183": 39, + "184": 38, + "185": 28, + "186": 24, + "187": 42, + "188": 33, + "189": 35, + "190": 29, + "191": 14, + "192": 14, + "193": 9, + "194": 8, + "195": 11, + "196": 8, + "197": 7, + "199": 6, + "200": 5, + "202": 4, + "205": 3, + "206": 1, + "207": 4, + "208": 1, + "209": 4, + "210": 1, + "211": 2, + "212": 5, + "213": 3, + "215": 3, + "221": 4, + "223": 4, + "225": 3, + "227": 2, + "257": 1 + }, + "started": "2025-09-11T20:11:48.665Z", + "trafficStats": { + "incomingCompressionRatio": 0.1696484375, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 173720, + "incomingOctetsWireLevel": 181720, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.046051116739580934, + "outgoingCompressionRatio": 0.0573115234375, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 58687, + "outgoingOctetsWireLevel": 60689, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.034113176683081434, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "39": 1, + "40": 1, + "41": 4, + "44": 5, + "45": 1, + "46": 4, + "47": 9, + "48": 22, + "49": 33, + "50": 32, + "51": 39, + "52": 68, + "53": 48, + "54": 63, + "55": 60, + "56": 67, + "57": 66, + "58": 27, + "59": 49, + "60": 29, + "61": 18, + "62": 16, + "63": 31, + "64": 18, + "65": 16, + "66": 8, + "67": 19, + "68": 21, + "69": 16, + "70": 29, + "71": 18, + "72": 28, + "73": 31, + "74": 10, + "75": 11, + "76": 18, + "77": 10, + "78": 8, + "79": 4, + "80": 3, + "82": 1, + "83": 2, + "84": 3, + "86": 3, + "87": 1, + "88": 1, + "89": 3, + "91": 2, + "92": 2, + "94": 4, + "96": 1, + "97": 1, + "99": 2, + "100": 1, + "101": 1, + "104": 1, + "105": 2, + "106": 1, + "107": 1, + "108": 1, + "109": 2, + "110": 1, + "114": 1, + "170": 1, + "280": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343133266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823138ff1632d0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3138ff16" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_5.html b/autobahn/client/tungstenite_case_13_2_5.html new file mode 100644 index 0000000..29ab4f3 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_5.html @@ -0,0 +1,536 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.5 : Pass - 232 ms @ 2025-09-11T20:11:48.845Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=414&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: cnEfqxJhKrYhAU48HDgBBw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WJ46SeDIyJh4P3OGJSE6PLXpCEo=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
2641264
2701270
2713813
2722544
27341092
2743822
27551375
276102760
27761662
27871946
27941116
28051400
281164496
282123384
283195377
28461704
285154275
28672002
287185166
288144032
289154335
290144060
291185238
292164672
293144102
294133822
295216195
296164736
297154455
298247152
29992691
300103000
301103010
302123624
303154545
304144256
305144270
306164896
307154605
308123696
309164944
310123720
31141244
312113432
313113443
314123768
315113465
316103160
31761902
318103180
319144466
320123840
32172247
32272254
32341292
32492916
325144550
32692934
327154905
328123936
329196251
330165280
331227282
332154980
333196327
334196346
335134355
336206720
337144718
338155070
339134407
34041360
34172387
34262052
34393087
34451720
34541380
3461346
34751735
34872436
34931047
35031050
35193159
3521352
3532706
35431062
35551775
3562712
3571357
35841432
3592718
3601360
3612722
3621362
36382904
36441456
36531095
3662732
36731101
36841472
36962214
37031110
37151855
37231116
37362238
37441496
3752750
3762752
37731131
37831134
3831383
3841384
3851385
3861386
3881388
3891389
39041560
Total1002316207
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1481148
1492298
1502300
1514604
1533459
1542308
1552310
1563468
1571157
1582316
1591159
1606960
1615805
1621162
16371141
16471148
165101650
166132158
167101670
168132184
169142366
170193230
171203420
172162752
173284844
174203480
175244200
176234048
177234071
178234094
179285012
180203600
181193439
182173094
183122196
184224048
185264810
186122232
187132431
188152820
189112079
190112090
191163056
192112112
19391737
19471358
195101950
1963588
19791773
198112178
1995995
2004800
201102010
202102020
2034812
20471428
2051205
2063618
20751035
20851040
20951045
210102100
211112321
212102120
213122556
214102140
21571505
2164864
21791953
218112398
219102190
220173740
22161326
222122664
223143122
22471568
225132925
226112486
22792043
228112508
229153435
230122760
231163696
23271624
23361398
2343702
2352470
2361236
2402480
24251210
2432486
2444976
2452490
2464984
2471247
2484992
2491249
2512502
2523756
25341012
2541254
2551255
25641024
2572514
2583774
2591259
26061560
2613783
26261572
26351315
26451320
26592385
26651330
26741068
2681268
2693807
2701270
2721272
2801280
2811281
2851285
3061306
Total1002198941
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343134266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882932425bf90cc
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3933323432356266
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_5.json b/autobahn/client/tungstenite_case_13_2_5.json new file mode 100644 index 0000000..c2b30d2 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_5.json @@ -0,0 +1,383 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 414, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 232, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=414&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: cnEfqxJhKrYhAU48HDgBBw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WJ46SeDIyJh4P3OGJSE6PLXpCEo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "264": 1, + "270": 1, + "271": 3, + "272": 2, + "273": 4, + "274": 3, + "275": 5, + "276": 10, + "277": 6, + "278": 7, + "279": 4, + "280": 5, + "281": 16, + "282": 12, + "283": 19, + "284": 6, + "285": 15, + "286": 7, + "287": 18, + "288": 14, + "289": 15, + "290": 14, + "291": 18, + "292": 16, + "293": 14, + "294": 13, + "295": 21, + "296": 16, + "297": 15, + "298": 24, + "299": 9, + "300": 10, + "301": 10, + "302": 12, + "303": 15, + "304": 14, + "305": 14, + "306": 16, + "307": 15, + "308": 12, + "309": 16, + "310": 12, + "311": 4, + "312": 11, + "313": 11, + "314": 12, + "315": 11, + "316": 10, + "317": 6, + "318": 10, + "319": 14, + "320": 12, + "321": 7, + "322": 7, + "323": 4, + "324": 9, + "325": 14, + "326": 9, + "327": 15, + "328": 12, + "329": 19, + "330": 16, + "331": 22, + "332": 15, + "333": 19, + "334": 19, + "335": 13, + "336": 20, + "337": 14, + "338": 15, + "339": 13, + "340": 4, + "341": 7, + "342": 6, + "343": 9, + "344": 5, + "345": 4, + "346": 1, + "347": 5, + "348": 7, + "349": 3, + "350": 3, + "351": 9, + "352": 1, + "353": 2, + "354": 3, + "355": 5, + "356": 2, + "357": 1, + "358": 4, + "359": 2, + "360": 1, + "361": 2, + "362": 1, + "363": 8, + "364": 4, + "365": 3, + "366": 2, + "367": 3, + "368": 4, + "369": 6, + "370": 3, + "371": 5, + "372": 3, + "373": 6, + "374": 4, + "375": 2, + "376": 2, + "377": 3, + "378": 3, + "383": 1, + "384": 1, + "385": 1, + "386": 1, + "388": 1, + "389": 1, + "390": 4 + }, + "started": "2025-09-11T20:11:48.845Z", + "trafficStats": { + "incomingCompressionRatio": 0.07518115234375, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 307942, + "incomingOctetsWireLevel": 315942, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.025978918107955395, + "outgoingCompressionRatio": 0.047523681640625, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 194657, + "outgoingOctetsWireLevel": 198657, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.02054896561644328, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "148": 1, + "149": 2, + "150": 2, + "151": 4, + "153": 3, + "154": 2, + "155": 2, + "156": 3, + "157": 1, + "158": 2, + "159": 1, + "160": 6, + "161": 5, + "162": 1, + "163": 7, + "164": 7, + "165": 10, + "166": 13, + "167": 10, + "168": 13, + "169": 14, + "170": 19, + "171": 20, + "172": 16, + "173": 28, + "174": 20, + "175": 24, + "176": 23, + "177": 23, + "178": 23, + "179": 28, + "180": 20, + "181": 19, + "182": 17, + "183": 12, + "184": 22, + "185": 26, + "186": 12, + "187": 13, + "188": 15, + "189": 11, + "190": 11, + "191": 16, + "192": 11, + "193": 9, + "194": 7, + "195": 10, + "196": 3, + "197": 9, + "198": 11, + "199": 5, + "200": 4, + "201": 10, + "202": 10, + "203": 4, + "204": 7, + "205": 1, + "206": 3, + "207": 5, + "208": 5, + "209": 5, + "210": 10, + "211": 11, + "212": 10, + "213": 12, + "214": 10, + "215": 7, + "216": 4, + "217": 9, + "218": 11, + "219": 10, + "220": 17, + "221": 6, + "222": 12, + "223": 14, + "224": 7, + "225": 13, + "226": 11, + "227": 9, + "228": 11, + "229": 15, + "230": 12, + "231": 16, + "232": 7, + "233": 6, + "234": 3, + "235": 2, + "236": 1, + "240": 2, + "242": 5, + "243": 2, + "244": 4, + "245": 2, + "246": 4, + "247": 1, + "248": 4, + "249": 1, + "251": 2, + "252": 3, + "253": 4, + "254": 1, + "255": 1, + "256": 4, + "257": 2, + "258": 3, + "259": 1, + "260": 6, + "261": 3, + "262": 6, + "263": 5, + "264": 5, + "265": 9, + "266": 5, + "267": 4, + "268": 1, + "269": 3, + "270": 1, + "272": 1, + "280": 1, + "281": 1, + "285": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343134266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882932425bf90cc" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "932425bf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_6.html b/autobahn/client/tungstenite_case_13_2_6.html new file mode 100644 index 0000000..7891d30 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_6.html @@ -0,0 +1,660 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.6 : Pass - 335 ms @ 2025-09-11T20:11:49.079Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=415&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: mHI/xXl1YJ1TKAj657LMHw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 7BU8+GmM43ocZhlS2LRYUmB2Un0=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
4101410
41152055
4132826
41452070
41531245
41652080
4172834
41852090
41972933
42062520
42162526
42293798
42393807
42452120
42572975
426114686
42783416
42831284
429135577
430104300
431125172
43273024
43383464
434104340
43552175
43683488
43783496
43883504
4392878
44073080
441135733
44262652
44373101
444114884
44562670
44641784
44731341
44841792
449104490
45041800
45152255
45262712
45362718
45462724
45562730
45662736
457115027
45831374
45962754
46094140
46173227
4621462
46362778
46441856
46541860
46662796
46752335
46894212
46994221
4701470
47183768
47252360
47341892
47473318
47562850
47652380
47783816
478115258
479115269
48073360
481104810
48273374
48352415
48452420
485104850
48673402
48773409
48852440
48983912
490115390
49152455
49262952
493115423
49473458
49573465
496125952
49783976
498104980
49952495
50073500
501105010
502136526
503157545
50431512
505126060
50642024
50773549
50821016
50963054
51021020
51173577
51263072
51321026
51421028
51552575
51642064
51752585
51884144
519115709
52073640
52152605
522105220
52342092
52431572
52573675
526105260
52742108
52842112
52921058
53021060
53152655
53273724
53342132
53473738
5351535
5361536
53731611
53842152
53921078
5401540
54121082
54221084
54321086
54721094
54821096
5491549
55031650
55163306
55221104
55342212
554126648
55563330
55673892
55763342
55842232
55931677
56042240
56184488
56242248
56331689
56431692
56542260
5661566
56742268
56852840
56973983
57021140
57173997
57242288
57352865
57442296
57531725
57631728
57721154
57831734
57931737
58021160
58131743
58221164
58331749
58421168
58574095
58631758
5871587
58831764
5891589
59021180
59121182
5921592
5931593
5951595
Total1002489861
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2801280
30151505
30261812
3032606
30451520
30561830
306113366
307103070
3083924
3091309
31051550
3111311
3123936
3131313
31451570
31572205
31641264
31761902
318123816
31941276
320123840
321113531
322103220
323134199
324103240
325185850
326165216
327154905
328103280
329216909
330216930
331196289
332134316
333165328
33472338
33572345
336124032
337113707
338103380
33951695
34072380
34141364
34251710
34351715
34431032
3451345
34651730
34751735
34862088
34993141
35093150
35193159
35282816
353103530
35482832
355144970
35693204
357103570
358124296
35993231
36082880
361124332
36282896
363103630
36441456
36562190
36662196
3672734
3682736
369114059
37072590
3712742
372114092
37372611
37482992
37531125
37672632
37783016
37862268
379103790
38062280
38141524
3822764
38372681
3842768
38531155
38631158
38741548
38831164
38931167
39051950
3912782
39241568
39331179
39441576
39531185
39631188
39762382
39841592
39931197
4001400
4011401
40241608
40331209
40431212
4051405
40641624
40783256
40831224
4092818
41072870
41162466
4122824
4131413
4141414
41541660
416124992
41752085
41831254
41931257
4202840
4212842
42272954
42341692
42431272
42531275
42652130
4272854
42931287
43031290
43131293
4321432
4331433
43431302
4361436
4371437
4412882
4421442
44331329
4451445
4471447
44831344
4491449
45031350
45131353
4521452
45394077
45483632
4552910
45673192
457104570
45894122
4592918
46073220
461135993
46262772
46383704
46452320
46583720
46694194
46762802
46883744
4692938
47041880
4711471
4722944
4732946
4741474
4751475
4762952
4771477
4781478
47931437
4801480
4821482
4841484
4872974
4881488
48931467
4901490
4921492
4931493
Total1002373558
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343135266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882641f83f767f7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3634316638336637
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_6.json b/autobahn/client/tungstenite_case_13_2_6.json new file mode 100644 index 0000000..bfed8b7 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_6.json @@ -0,0 +1,507 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 415, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 335, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=415&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: mHI/xXl1YJ1TKAj657LMHw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 7BU8+GmM43ocZhlS2LRYUmB2Un0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "410": 1, + "411": 5, + "413": 2, + "414": 5, + "415": 3, + "416": 5, + "417": 2, + "418": 5, + "419": 7, + "420": 6, + "421": 6, + "422": 9, + "423": 9, + "424": 5, + "425": 7, + "426": 11, + "427": 8, + "428": 3, + "429": 13, + "430": 10, + "431": 12, + "432": 7, + "433": 8, + "434": 10, + "435": 5, + "436": 8, + "437": 8, + "438": 8, + "439": 2, + "440": 7, + "441": 13, + "442": 6, + "443": 7, + "444": 11, + "445": 6, + "446": 4, + "447": 3, + "448": 4, + "449": 10, + "450": 4, + "451": 5, + "452": 6, + "453": 6, + "454": 6, + "455": 6, + "456": 6, + "457": 11, + "458": 3, + "459": 6, + "460": 9, + "461": 7, + "462": 1, + "463": 6, + "464": 4, + "465": 4, + "466": 6, + "467": 5, + "468": 9, + "469": 9, + "470": 1, + "471": 8, + "472": 5, + "473": 4, + "474": 7, + "475": 6, + "476": 5, + "477": 8, + "478": 11, + "479": 11, + "480": 7, + "481": 10, + "482": 7, + "483": 5, + "484": 5, + "485": 10, + "486": 7, + "487": 7, + "488": 5, + "489": 8, + "490": 11, + "491": 5, + "492": 6, + "493": 11, + "494": 7, + "495": 7, + "496": 12, + "497": 8, + "498": 10, + "499": 5, + "500": 7, + "501": 10, + "502": 13, + "503": 15, + "504": 3, + "505": 12, + "506": 4, + "507": 7, + "508": 2, + "509": 6, + "510": 2, + "511": 7, + "512": 6, + "513": 2, + "514": 2, + "515": 5, + "516": 4, + "517": 5, + "518": 8, + "519": 11, + "520": 7, + "521": 5, + "522": 10, + "523": 4, + "524": 3, + "525": 7, + "526": 10, + "527": 4, + "528": 4, + "529": 2, + "530": 2, + "531": 5, + "532": 7, + "533": 4, + "534": 7, + "535": 1, + "536": 1, + "537": 3, + "538": 4, + "539": 2, + "540": 1, + "541": 2, + "542": 2, + "543": 2, + "547": 2, + "548": 2, + "549": 1, + "550": 3, + "551": 6, + "552": 2, + "553": 4, + "554": 12, + "555": 6, + "556": 7, + "557": 6, + "558": 4, + "559": 3, + "560": 4, + "561": 8, + "562": 4, + "563": 3, + "564": 3, + "565": 4, + "566": 1, + "567": 4, + "568": 5, + "569": 7, + "570": 2, + "571": 7, + "572": 4, + "573": 5, + "574": 4, + "575": 3, + "576": 3, + "577": 2, + "578": 3, + "579": 3, + "580": 2, + "581": 3, + "582": 2, + "583": 3, + "584": 2, + "585": 7, + "586": 3, + "587": 1, + "588": 3, + "589": 1, + "590": 2, + "591": 2, + "592": 1, + "593": 1, + "595": 1 + }, + "started": "2025-09-11T20:11:49.079Z", + "trafficStats": { + "incomingCompressionRatio": 0.05878857421875, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 481596, + "incomingOctetsWireLevel": 489596, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.016611433649781144, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 373274, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.010832065079046995, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "280": 1, + "301": 5, + "302": 6, + "303": 2, + "304": 5, + "305": 6, + "306": 11, + "307": 10, + "308": 3, + "309": 1, + "310": 5, + "311": 1, + "312": 3, + "313": 1, + "314": 5, + "315": 7, + "316": 4, + "317": 6, + "318": 12, + "319": 4, + "320": 12, + "321": 11, + "322": 10, + "323": 13, + "324": 10, + "325": 18, + "326": 16, + "327": 15, + "328": 10, + "329": 21, + "330": 21, + "331": 19, + "332": 13, + "333": 16, + "334": 7, + "335": 7, + "336": 12, + "337": 11, + "338": 10, + "339": 5, + "340": 7, + "341": 4, + "342": 5, + "343": 5, + "344": 3, + "345": 1, + "346": 5, + "347": 5, + "348": 6, + "349": 9, + "350": 9, + "351": 9, + "352": 8, + "353": 10, + "354": 8, + "355": 14, + "356": 9, + "357": 10, + "358": 12, + "359": 9, + "360": 8, + "361": 12, + "362": 8, + "363": 10, + "364": 4, + "365": 6, + "366": 6, + "367": 2, + "368": 2, + "369": 11, + "370": 7, + "371": 2, + "372": 11, + "373": 7, + "374": 8, + "375": 3, + "376": 7, + "377": 8, + "378": 6, + "379": 10, + "380": 6, + "381": 4, + "382": 2, + "383": 7, + "384": 2, + "385": 3, + "386": 3, + "387": 4, + "388": 3, + "389": 3, + "390": 5, + "391": 2, + "392": 4, + "393": 3, + "394": 4, + "395": 3, + "396": 3, + "397": 6, + "398": 4, + "399": 3, + "400": 1, + "401": 1, + "402": 4, + "403": 3, + "404": 3, + "405": 1, + "406": 4, + "407": 8, + "408": 3, + "409": 2, + "410": 7, + "411": 6, + "412": 2, + "413": 1, + "414": 1, + "415": 4, + "416": 12, + "417": 5, + "418": 3, + "419": 3, + "420": 2, + "421": 2, + "422": 7, + "423": 4, + "424": 3, + "425": 3, + "426": 5, + "427": 2, + "429": 3, + "430": 3, + "431": 3, + "432": 1, + "433": 1, + "434": 3, + "436": 1, + "437": 1, + "441": 2, + "442": 1, + "443": 3, + "445": 1, + "447": 1, + "448": 3, + "449": 1, + "450": 3, + "451": 3, + "452": 1, + "453": 9, + "454": 8, + "455": 2, + "456": 7, + "457": 10, + "458": 9, + "459": 2, + "460": 7, + "461": 13, + "462": 6, + "463": 8, + "464": 5, + "465": 8, + "466": 9, + "467": 6, + "468": 8, + "469": 2, + "470": 4, + "471": 1, + "472": 2, + "473": 2, + "474": 1, + "475": 1, + "476": 2, + "477": 1, + "478": 1, + "479": 3, + "480": 1, + "482": 1, + "484": 1, + "487": 2, + "488": 1, + "489": 3, + "490": 1, + "492": 1, + "493": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343135266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882641f83f767f7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "641f83f7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_7.html b/autobahn/client/tungstenite_case_13_2_7.html new file mode 100644 index 0000000..7e2f5cc --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_7.html @@ -0,0 +1,850 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.7 : Pass - 520 ms @ 2025-09-11T20:11:49.415Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=416&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: wlotGVBJGCsh/pXnKqRIiw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: H9ovgfywRQERq3MdpAqQC6hByuI=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
7141714
7181718
72021440
72153605
72232166
72342892
72442896
72553625
72642904
72796543
72864368
729118019
730107300
73196579
732139516
73364398
73475138
7351511025
7361410304
737118107
73853690
739118129
74042960
74185928
74253710
74332229
74475208
74542980
74632238
74842992
74921498
75032250
75121502
75243008
75332259
75421508
75521510
75621512
75753785
75821516
75921518
76021520
76175327
76232286
76353815
76443056
76553825
76643064
76764602
76853840
76943076
77075390
77164626
77264632
77396957
77486192
77521550
77632328
77775439
77875446
77975453
78021560
78175467
78275474
78353915
78486272
78521570
78632358
78721574
78832364
78932367
7901790
79175537
79232376
79321586
79421588
7951795
79632388
79753985
79832394
79932397
80032400
80132403
8021802
8031803
80421608
80554025
80654030
8071807
80832424
80932427
81021620
8111811
8121812
8131813
8141814
81543260
81643264
81832454
81943276
8211821
82264932
82321646
82421648
82532475
82632478
82721654
82821656
8291829
83043320
83143324
83221664
8331833
83443336
83521670
83643344
83754185
83843352
83932517
84054200
84165046
84265052
84365058
84486752
84565070
84675922
84721694
84854240
84943396
85032550
85143404
85232556
85332559
85421708
8551855
8561856
85721714
85821716
85921718
86143444
86254310
86454320
86521730
86621732
86743468
86843472
8691869
87076090
87132613
87232616
87365238
8741874
87543500
87621752
87743508
87921758
88054400
8821882
8831883
88465304
88543540
88621772
8871887
8881888
8891889
89032670
89121782
8921892
89321786
89421788
8951895
89632688
8971897
8981898
8991899
90032700
90121802
90221804
90332709
90465424
90532715
90632718
90732721
90921818
9101910
9111911
91221824
91321826
91454570
91532745
91676412
91754585
91865508
91932757
92021840
92132763
92232766
92365538
92465544
92543700
92643704
92754635
92865568
92932787
93054650
93187448
93232796
93343732
93432802
93554675
93665616
93732811
93854690
93943756
94032820
94187528
94254710
94376601
94443776
94532835
94632838
94754735
94876636
94943796
95043800
95143804
95232856
95354765
95421908
95543820
9561956
95765742
95865748
95965754
9601960
96132883
96265772
9631963
96432892
96543860
96643864
96765802
96843872
96943876
9711971
9721972
9731973
9741974
9751975
97621952
97754885
9781978
9801980
98121962
9821982
9831983
9841984
98521970
98632958
9891989
99021980
9911991
9921992
9931993
9941994
99521990
9971997
9991999
100322006
100422008
100811008
101122022
101911019
Total1002841109
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2801280
60121202
60231806
6031603
60421208
6051605
6061606
6071607
6081608
6091609
61021220
61131833
61274284
61342452
61463684
615106150
61674312
61753085
61831854
619106190
62053100
6211621
62242488
62374361
62495616
62585000
626116886
62795643
628106280
629159435
63095670
631159465
63274424
63363798
63485072
63585080
63674452
63731911
63853190
63942556
64074480
64153205
64242568
64353215
64453220
64574515
64642584
64721294
6481648
64963894
65031950
65121302
65221304
65342612
65463924
65553275
65685248
65763942
65874606
65921318
66074620
66195949
662117282
663106630
664117304
66585320
66674662
66785336
66874676
66942676
67085360
67164026
67242688
67353365
67442696
67521350
67621352
67742708
6781678
67942716
68042720
68142724
68221364
6831683
68442736
68542740
6861686
68721374
68842752
68921378
69032070
69132073
6921692
69332079
69432082
69553475
69642784
69732091
69842792
69942796
70032100
70121402
70232106
70321406
70464224
70532115
70685648
70721414
7081708
7091709
71032130
71132133
7121712
7131713
71421428
71532145
71621432
71721434
71842872
71921438
72032160
72121442
72253610
72321446
72421448
72553625
72621452
72721454
7281728
7291729
73032190
73232196
7331733
73442936
73521470
73653680
73721474
73932217
74032220
74153705
74332229
74432232
74521490
74621492
7471747
7481748
74975243
7501750
7511751
7521752
7531753
7541754
75543020
75643024
75732271
75853790
75932277
76021520
76221524
76332289
76443056
7651765
7661766
76732301
7691769
7701770
77132313
7721772
77321546
7741774
77532325
7761776
7771777
7781778
7801780
7831783
78621572
78721574
78832364
7891789
79043160
79121582
79221584
7941794
79543180
79753985
79821596
8001800
80121602
80221604
8031803
8041804
80532415
80675642
80764842
80821616
80964854
81043240
81154055
81232436
81321626
81421628
81521630
81643264
81732451
81843272
81932457
82021640
82132463
82354115
82421648
82564950
82754135
82843312
82943316
83043320
83143324
83221664
8331833
83486672
83521670
83621672
83743348
83843352
83921678
84054200
84121682
84275894
84332529
84465064
84521690
8461846
84721694
84821696
8491849
85054250
851108510
85254260
85343412
85454270
85554275
8561856
85754285
85832574
85932577
86043440
86143444
86232586
86376041
86432592
86543460
86665196
86765202
86876076
86932607
87021740
8711871
8721872
87332619
87432622
87521750
87721754
8781878
8791879
88121762
88221764
88421768
88621772
8871887
88821776
8901890
8931893
8941894
8991899
9001900
9041904
9061906
90743628
9081908
9101910
Total1002725566
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343136266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d2ea049cd102
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6432656130343963
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_7.json b/autobahn/client/tungstenite_case_13_2_7.json new file mode 100644 index 0000000..9668bbd --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_7.json @@ -0,0 +1,697 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 416, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 520, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=416&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: wlotGVBJGCsh/pXnKqRIiw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: H9ovgfywRQERq3MdpAqQC6hByuI=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "714": 1, + "718": 1, + "720": 2, + "721": 5, + "722": 3, + "723": 4, + "724": 4, + "725": 5, + "726": 4, + "727": 9, + "728": 6, + "729": 11, + "730": 10, + "731": 9, + "732": 13, + "733": 6, + "734": 7, + "735": 15, + "736": 14, + "737": 11, + "738": 5, + "739": 11, + "740": 4, + "741": 8, + "742": 5, + "743": 3, + "744": 7, + "745": 4, + "746": 3, + "748": 4, + "749": 2, + "750": 3, + "751": 2, + "752": 4, + "753": 3, + "754": 2, + "755": 2, + "756": 2, + "757": 5, + "758": 2, + "759": 2, + "760": 2, + "761": 7, + "762": 3, + "763": 5, + "764": 4, + "765": 5, + "766": 4, + "767": 6, + "768": 5, + "769": 4, + "770": 7, + "771": 6, + "772": 6, + "773": 9, + "774": 8, + "775": 2, + "776": 3, + "777": 7, + "778": 7, + "779": 7, + "780": 2, + "781": 7, + "782": 7, + "783": 5, + "784": 8, + "785": 2, + "786": 3, + "787": 2, + "788": 3, + "789": 3, + "790": 1, + "791": 7, + "792": 3, + "793": 2, + "794": 2, + "795": 1, + "796": 3, + "797": 5, + "798": 3, + "799": 3, + "800": 3, + "801": 3, + "802": 1, + "803": 1, + "804": 2, + "805": 5, + "806": 5, + "807": 1, + "808": 3, + "809": 3, + "810": 2, + "811": 1, + "812": 1, + "813": 1, + "814": 1, + "815": 4, + "816": 4, + "818": 3, + "819": 4, + "821": 1, + "822": 6, + "823": 2, + "824": 2, + "825": 3, + "826": 3, + "827": 2, + "828": 2, + "829": 1, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 4, + "835": 2, + "836": 4, + "837": 5, + "838": 4, + "839": 3, + "840": 5, + "841": 6, + "842": 6, + "843": 6, + "844": 8, + "845": 6, + "846": 7, + "847": 2, + "848": 5, + "849": 4, + "850": 3, + "851": 4, + "852": 3, + "853": 3, + "854": 2, + "855": 1, + "856": 1, + "857": 2, + "858": 2, + "859": 2, + "861": 4, + "862": 5, + "864": 5, + "865": 2, + "866": 2, + "867": 4, + "868": 4, + "869": 1, + "870": 7, + "871": 3, + "872": 3, + "873": 6, + "874": 1, + "875": 4, + "876": 2, + "877": 4, + "879": 2, + "880": 5, + "882": 1, + "883": 1, + "884": 6, + "885": 4, + "886": 2, + "887": 1, + "888": 1, + "889": 1, + "890": 3, + "891": 2, + "892": 1, + "893": 2, + "894": 2, + "895": 1, + "896": 3, + "897": 1, + "898": 1, + "899": 1, + "900": 3, + "901": 2, + "902": 2, + "903": 3, + "904": 6, + "905": 3, + "906": 3, + "907": 3, + "909": 2, + "910": 1, + "911": 1, + "912": 2, + "913": 2, + "914": 5, + "915": 3, + "916": 7, + "917": 5, + "918": 6, + "919": 3, + "920": 2, + "921": 3, + "922": 3, + "923": 6, + "924": 6, + "925": 4, + "926": 4, + "927": 5, + "928": 6, + "929": 3, + "930": 5, + "931": 8, + "932": 3, + "933": 4, + "934": 3, + "935": 5, + "936": 6, + "937": 3, + "938": 5, + "939": 4, + "940": 3, + "941": 8, + "942": 5, + "943": 7, + "944": 4, + "945": 3, + "946": 3, + "947": 5, + "948": 7, + "949": 4, + "950": 4, + "951": 4, + "952": 3, + "953": 5, + "954": 2, + "955": 4, + "956": 1, + "957": 6, + "958": 6, + "959": 6, + "960": 1, + "961": 3, + "962": 6, + "963": 1, + "964": 3, + "965": 4, + "966": 4, + "967": 6, + "968": 4, + "969": 4, + "971": 1, + "972": 1, + "973": 1, + "974": 1, + "975": 1, + "976": 2, + "977": 5, + "978": 1, + "980": 1, + "981": 2, + "982": 1, + "983": 1, + "984": 1, + "985": 2, + "986": 3, + "989": 1, + "990": 2, + "991": 1, + "992": 1, + "993": 1, + "994": 1, + "995": 2, + "997": 1, + "999": 1, + "1003": 2, + "1004": 2, + "1008": 1, + "1011": 2, + "1019": 1 + }, + "started": "2025-09-11T20:11:49.415Z", + "trafficStats": { + "incomingCompressionRatio": 0.050832763671875, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 832844, + "incomingOctetsWireLevel": 840844, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.009605640432061706, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 725282, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.005545681162152944, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "280": 1, + "601": 2, + "602": 3, + "603": 1, + "604": 2, + "605": 1, + "606": 1, + "607": 1, + "608": 1, + "609": 1, + "610": 2, + "611": 3, + "612": 7, + "613": 4, + "614": 6, + "615": 10, + "616": 7, + "617": 5, + "618": 3, + "619": 10, + "620": 5, + "621": 1, + "622": 4, + "623": 7, + "624": 9, + "625": 8, + "626": 11, + "627": 9, + "628": 10, + "629": 15, + "630": 9, + "631": 15, + "632": 7, + "633": 6, + "634": 8, + "635": 8, + "636": 7, + "637": 3, + "638": 5, + "639": 4, + "640": 7, + "641": 5, + "642": 4, + "643": 5, + "644": 5, + "645": 7, + "646": 4, + "647": 2, + "648": 1, + "649": 6, + "650": 3, + "651": 2, + "652": 2, + "653": 4, + "654": 6, + "655": 5, + "656": 8, + "657": 6, + "658": 7, + "659": 2, + "660": 7, + "661": 9, + "662": 11, + "663": 10, + "664": 11, + "665": 8, + "666": 7, + "667": 8, + "668": 7, + "669": 4, + "670": 8, + "671": 6, + "672": 4, + "673": 5, + "674": 4, + "675": 2, + "676": 2, + "677": 4, + "678": 1, + "679": 4, + "680": 4, + "681": 4, + "682": 2, + "683": 1, + "684": 4, + "685": 4, + "686": 1, + "687": 2, + "688": 4, + "689": 2, + "690": 3, + "691": 3, + "692": 1, + "693": 3, + "694": 3, + "695": 5, + "696": 4, + "697": 3, + "698": 4, + "699": 4, + "700": 3, + "701": 2, + "702": 3, + "703": 2, + "704": 6, + "705": 3, + "706": 8, + "707": 2, + "708": 1, + "709": 1, + "710": 3, + "711": 3, + "712": 1, + "713": 1, + "714": 2, + "715": 3, + "716": 2, + "717": 2, + "718": 4, + "719": 2, + "720": 3, + "721": 2, + "722": 5, + "723": 2, + "724": 2, + "725": 5, + "726": 2, + "727": 2, + "728": 1, + "729": 1, + "730": 3, + "732": 3, + "733": 1, + "734": 4, + "735": 2, + "736": 5, + "737": 2, + "739": 3, + "740": 3, + "741": 5, + "743": 3, + "744": 3, + "745": 2, + "746": 2, + "747": 1, + "748": 1, + "749": 7, + "750": 1, + "751": 1, + "752": 1, + "753": 1, + "754": 1, + "755": 4, + "756": 4, + "757": 3, + "758": 5, + "759": 3, + "760": 2, + "762": 2, + "763": 3, + "764": 4, + "765": 1, + "766": 1, + "767": 3, + "769": 1, + "770": 1, + "771": 3, + "772": 1, + "773": 2, + "774": 1, + "775": 3, + "776": 1, + "777": 1, + "778": 1, + "780": 1, + "783": 1, + "786": 2, + "787": 2, + "788": 3, + "789": 1, + "790": 4, + "791": 2, + "792": 2, + "794": 1, + "795": 4, + "797": 5, + "798": 2, + "800": 1, + "801": 2, + "802": 2, + "803": 1, + "804": 1, + "805": 3, + "806": 7, + "807": 6, + "808": 2, + "809": 6, + "810": 4, + "811": 5, + "812": 3, + "813": 2, + "814": 2, + "815": 2, + "816": 4, + "817": 3, + "818": 4, + "819": 3, + "820": 2, + "821": 3, + "823": 5, + "824": 2, + "825": 6, + "827": 5, + "828": 4, + "829": 4, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 8, + "835": 2, + "836": 2, + "837": 4, + "838": 4, + "839": 2, + "840": 5, + "841": 2, + "842": 7, + "843": 3, + "844": 6, + "845": 2, + "846": 1, + "847": 2, + "848": 2, + "849": 1, + "850": 5, + "851": 10, + "852": 5, + "853": 4, + "854": 5, + "855": 5, + "856": 1, + "857": 5, + "858": 3, + "859": 3, + "860": 4, + "861": 4, + "862": 3, + "863": 7, + "864": 3, + "865": 4, + "866": 6, + "867": 6, + "868": 7, + "869": 3, + "870": 2, + "871": 1, + "872": 1, + "873": 3, + "874": 3, + "875": 2, + "877": 2, + "878": 1, + "879": 1, + "881": 2, + "882": 2, + "884": 2, + "886": 2, + "887": 1, + "888": 2, + "890": 1, + "893": 1, + "894": 1, + "899": 1, + "900": 1, + "904": 1, + "906": 1, + "907": 4, + "908": 1, + "910": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343136266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d2ea049cd102" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d2ea049c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_8.html b/autobahn/client/tungstenite_case_13_2_8.html new file mode 100644 index 0000000..9df3608 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_8.html @@ -0,0 +1,1027 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.8 : Pass - 787 ms @ 2025-09-11T20:11:49.937Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=417&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ZZoqf0g+Unhs5vXA4EieJg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: y7hhMYvVblzUZJjbBXj9V8lV0gw=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
134611346
135022700
135211352
135611356
135711357
135911359
136145444
136311363
136622732
136711367
136811368
136911369
137022740
137122742
137222744
137334119
137434122
137545500
137668256
137734131
137922758
138056900
138156905
138234146
138356915
138468304
138534155
138645544
138711387
138856940
138922778
139045560
139134173
139268352
139356965
139468364
139556975
139622792
139779779
139811398
139968394
140045600
140134203
140357015
140468424
140534215
140645624
140722814
140811408
140945636
141045640
141145644
141234236
141322826
141434242
141534245
141645664
141734251
141834254
141922838
142034260
142134263
142245688
142311423
142457120
142545700
142634278
142722854
142822856
142957145
143145724
143222864
143311433
143445736
143522870
143645744
143734311
1438811504
143934317
144034320
144234326
144311443
144411444
144522890
144668676
144711447
144911449
145211452
145422908
145522910
145622912
145834374
145922918
146022920
146111461
146222924
146322926
146445856
146545860
146622932
146745868
146822936
146945876
147034410
147111471
147234416
147311473
147411474
147522950
147611476
147734431
147822956
147945916
148045920
148145924
148222964
148311483
148434452
148522970
148645944
148722974
148822976
148922978
149022980
149122982
149234476
149345972
149411494
149568970
149668976
149745988
149822996
149911499
150023000
150169006
150269012
150311503
150523010
150634518
150711507
150811508
150923018
151023020
151123022
151211512
151323026
151511515
151611516
151723034
151911519
152223044
152323046
152434572
152557625
152611526
152723054
152823056
152911529
153123062
153323066
153423068
153723074
153811538
153923078
154011540
154123082
154211542
154323086
154446176
154534635
154623092
154746188
154846192
154911549
155057750
155423108
155511555
155634668
155711557
155811558
155911559
156011560
156111561
156211562
156334689
156446256
156511565
156611566
156723134
156811568
156923138
157034710
157123142
157234716
157323146
157423148
157534725
157646304
157723154
157846312
157911579
158023160
158111581
158211582
158311583
158423168
158523170
158723174
158811588
158911589
159046360
159111591
159234776
159323186
159434782
159511595
159657980
159711597
159846392
159934797
160023200
160134803
160223204
160323206
160423208
160523210
160611606
160758035
160834824
160911609
161034830
161111611
161258060
161323226
161411614
161534845
161623232
161746468
161846472
161923238
162034860
162234866
162458120
162534875
162634878
162746508
162811628
162911629
163011630
163134893
163211632
163334899
163411634
163558175
163623272
163734911
163834914
163958195
164023280
164146564
164223284
164323286
164458220
164511645
164634938
164746588
164834944
164946596
165058250
165146604
165234956
1653711571
165434962
165558275
165646624
165734971
165846632
165958295
166058300
166158305
166234986
166311663
166423328
16651118315
166634998
1667711669
1668813344
1669813352
167058350
167123342
167246688
1673610038
1674711718
1675610050
167658380
167735031
167846712
1679610074
168058400
168135043
168211682
168335049
168446736
1685711795
168658430
168723374
168823376
168935067
169023380
169158455
169235076
169423388
170535115
170811708
170911709
171123422
171223424
171411714
171511715
171611716
171711717
171923438
172011720
172311723
172511725
172711727
172811728
172911729
173111731
173435202
173511735
173711737
173835214
174011740
174123482
174246968
174323486
174546980
174635238
174811748
175123502
175223504
175323506
175411754
175611756
175711757
175823516
175935277
176011760
176123522
176211762
176335289
176423528
176547060
176635298
176747068
176811768
176935307
177135313
177235316
177511775
177623552
177747108
177811778
177911779
178111781
178211782
178611786
178711787
Total10021555992
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2801280
123611236
123922478
124011240
124111241
124211242
124311243
124411244
124544980
124611246
124822496
125022500
125122502
125211252
125311253
125433762
125511255
125645024
125711257
125833774
125911259
126011260
126133783
126256310
126322526
126433792
126522530
126645064
126745068
126822536
126978883
127056350
127245088
1273810184
127445096
1275911475
127633828
1277911493
127867668
127967674
12801114080
1281810248
1282911538
1283911547
128445136
128545140
1286810288
128756435
128856440
128956445
129022580
129145164
129211292
129333879
129456470
129545180
129633888
129745188
129856490
129956495
130033900
130167806
130267812
130345212
130445216
130511305
130611306
130745228
130822616
130933927
131022620
131133933
131245248
131322626
131411314
131622632
131722634
131811318
131945276
132133963
132211322
132311323
132422648
132522650
132745308
132822656
132911329
133011330
133122662
133222664
133311333
133422668
133634008
133711337
133922678
134034020
134122682
134211342
134322686
134422688
134545380
134622692
134768082
134811348
134911349
135156755
135245408
135322706
135556775
135645424
135811358
135934077
136034080
136122722
136211362
136322726
136411364
136622732
136745468
136811368
136945476
137011370
137222744
137322746
137434122
137711377
137822756
137911379
138011380
138134143
138234146
138311383
138434152
138534155
138611386
138711387
138922778
139134173
139222784
139311393
139422788
139522790
139611396
139722794
139811398
140111401
140222804
140311403
140411404
140511405
140622812
140922818
141011410
141122822
141211412
141368478
141422828
141511415
141634248
141745668
141811418
141911419
142011420
142145684
142222844
142322846
142411424
142522850
142611426
142745708
142922858
143122862
143245728
143411434
143511435
143634308
143722874
143945756
144011440
144122882
144222884
144411444
144645784
144722894
144811448
144922898
145011450
145122902
145222904
145322906
145434362
145522910
145622912
145722914
145911459
146022920
146111461
146211462
146322926
146411464
146534395
146622932
146722934
146822936
146945876
147045880
147168826
147234416
147322946
147422948
147511475
147622952
147734431
147834434
147922958
148022960
148111481
148211482
148334449
148445936
148568910
148634458
148722974
148845952
148934467
149022980
149111491
149234476
149334479
149422988
149534485
149657480
149822996
150034500
150123002
150223004
150323006
150423008
150534515
150623012
150711507
150834524
150923018
151011510
151123022
151357565
151423028
151523030
151611516
151746068
151846072
151934557
152046080
152269132
152423048
152511525
152611526
152834584
152957645
153123062
153234596
153311533
153446136
153546140
153657680
153757685
1538913842
153957695
154069240
1541710787
154269252
154334629
154457720
154511545
154634638
1547710829
154823096
154923098
155034650
155169306
155257760
155369318
155434662
155534665
155669336
155757785
1558812464
1559710913
15601117160
1561710927
1562710934
156323126
156469384
156557825
156657830
156757835
156823136
156934707
157057850
157157855
157234716
157334719
157411574
157511575
157623152
157723154
157811578
158034740
158123162
158234746
158323166
158511585
158623172
158723174
158823176
158923178
159023180
159123182
159211592
159311593
159711597
160411604
160711607
160823216
161123222
161311613
161411614
161711617
161846472
162111621
162323246
162423248
162511625
162669756
162734881
162811628
162923258
163011630
163223264
163411634
163623272
163723274
163911639
164134923
164334929
164423288
164669876
164711647
164823296
165023300
165123302
165223304
165323306
165411654
165523310
165723314
165811658
165923318
166023320
166111661
166423328
Total10021435149
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343137266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88823cd460473f3c
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3363643436303437
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_8.json b/autobahn/client/tungstenite_case_13_2_8.json new file mode 100644 index 0000000..a566401 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_8.json @@ -0,0 +1,874 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 417, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 787, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=417&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ZZoqf0g+Unhs5vXA4EieJg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: y7hhMYvVblzUZJjbBXj9V8lV0gw=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1346": 1, + "1350": 2, + "1352": 1, + "1356": 1, + "1357": 1, + "1359": 1, + "1361": 4, + "1363": 1, + "1366": 2, + "1367": 1, + "1368": 1, + "1369": 1, + "1370": 2, + "1371": 2, + "1372": 2, + "1373": 3, + "1374": 3, + "1375": 4, + "1376": 6, + "1377": 3, + "1379": 2, + "1380": 5, + "1381": 5, + "1382": 3, + "1383": 5, + "1384": 6, + "1385": 3, + "1386": 4, + "1387": 1, + "1388": 5, + "1389": 2, + "1390": 4, + "1391": 3, + "1392": 6, + "1393": 5, + "1394": 6, + "1395": 5, + "1396": 2, + "1397": 7, + "1398": 1, + "1399": 6, + "1400": 4, + "1401": 3, + "1403": 5, + "1404": 6, + "1405": 3, + "1406": 4, + "1407": 2, + "1408": 1, + "1409": 4, + "1410": 4, + "1411": 4, + "1412": 3, + "1413": 2, + "1414": 3, + "1415": 3, + "1416": 4, + "1417": 3, + "1418": 3, + "1419": 2, + "1420": 3, + "1421": 3, + "1422": 4, + "1423": 1, + "1424": 5, + "1425": 4, + "1426": 3, + "1427": 2, + "1428": 2, + "1429": 5, + "1431": 4, + "1432": 2, + "1433": 1, + "1434": 4, + "1435": 2, + "1436": 4, + "1437": 3, + "1438": 8, + "1439": 3, + "1440": 3, + "1442": 3, + "1443": 1, + "1444": 1, + "1445": 2, + "1446": 6, + "1447": 1, + "1449": 1, + "1452": 1, + "1454": 2, + "1455": 2, + "1456": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 1, + "1462": 2, + "1463": 2, + "1464": 4, + "1465": 4, + "1466": 2, + "1467": 4, + "1468": 2, + "1469": 4, + "1470": 3, + "1471": 1, + "1472": 3, + "1473": 1, + "1474": 1, + "1475": 2, + "1476": 1, + "1477": 3, + "1478": 2, + "1479": 4, + "1480": 4, + "1481": 4, + "1482": 2, + "1483": 1, + "1484": 3, + "1485": 2, + "1486": 4, + "1487": 2, + "1488": 2, + "1489": 2, + "1490": 2, + "1491": 2, + "1492": 3, + "1493": 4, + "1494": 1, + "1495": 6, + "1496": 6, + "1497": 4, + "1498": 2, + "1499": 1, + "1500": 2, + "1501": 6, + "1502": 6, + "1503": 1, + "1505": 2, + "1506": 3, + "1507": 1, + "1508": 1, + "1509": 2, + "1510": 2, + "1511": 2, + "1512": 1, + "1513": 2, + "1515": 1, + "1516": 1, + "1517": 2, + "1519": 1, + "1522": 2, + "1523": 2, + "1524": 3, + "1525": 5, + "1526": 1, + "1527": 2, + "1528": 2, + "1529": 1, + "1531": 2, + "1533": 2, + "1534": 2, + "1537": 2, + "1538": 1, + "1539": 2, + "1540": 1, + "1541": 2, + "1542": 1, + "1543": 2, + "1544": 4, + "1545": 3, + "1546": 2, + "1547": 4, + "1548": 4, + "1549": 1, + "1550": 5, + "1554": 2, + "1555": 1, + "1556": 3, + "1557": 1, + "1558": 1, + "1559": 1, + "1560": 1, + "1561": 1, + "1562": 1, + "1563": 3, + "1564": 4, + "1565": 1, + "1566": 1, + "1567": 2, + "1568": 1, + "1569": 2, + "1570": 3, + "1571": 2, + "1572": 3, + "1573": 2, + "1574": 2, + "1575": 3, + "1576": 4, + "1577": 2, + "1578": 4, + "1579": 1, + "1580": 2, + "1581": 1, + "1582": 1, + "1583": 1, + "1584": 2, + "1585": 2, + "1587": 2, + "1588": 1, + "1589": 1, + "1590": 4, + "1591": 1, + "1592": 3, + "1593": 2, + "1594": 3, + "1595": 1, + "1596": 5, + "1597": 1, + "1598": 4, + "1599": 3, + "1600": 2, + "1601": 3, + "1602": 2, + "1603": 2, + "1604": 2, + "1605": 2, + "1606": 1, + "1607": 5, + "1608": 3, + "1609": 1, + "1610": 3, + "1611": 1, + "1612": 5, + "1613": 2, + "1614": 1, + "1615": 3, + "1616": 2, + "1617": 4, + "1618": 4, + "1619": 2, + "1620": 3, + "1622": 3, + "1624": 5, + "1625": 3, + "1626": 3, + "1627": 4, + "1628": 1, + "1629": 1, + "1630": 1, + "1631": 3, + "1632": 1, + "1633": 3, + "1634": 1, + "1635": 5, + "1636": 2, + "1637": 3, + "1638": 3, + "1639": 5, + "1640": 2, + "1641": 4, + "1642": 2, + "1643": 2, + "1644": 5, + "1645": 1, + "1646": 3, + "1647": 4, + "1648": 3, + "1649": 4, + "1650": 5, + "1651": 4, + "1652": 3, + "1653": 7, + "1654": 3, + "1655": 5, + "1656": 4, + "1657": 3, + "1658": 4, + "1659": 5, + "1660": 5, + "1661": 5, + "1662": 3, + "1663": 1, + "1664": 2, + "1665": 11, + "1666": 3, + "1667": 7, + "1668": 8, + "1669": 8, + "1670": 5, + "1671": 2, + "1672": 4, + "1673": 6, + "1674": 7, + "1675": 6, + "1676": 5, + "1677": 3, + "1678": 4, + "1679": 6, + "1680": 5, + "1681": 3, + "1682": 1, + "1683": 3, + "1684": 4, + "1685": 7, + "1686": 5, + "1687": 2, + "1688": 2, + "1689": 3, + "1690": 2, + "1691": 5, + "1692": 3, + "1694": 2, + "1705": 3, + "1708": 1, + "1709": 1, + "1711": 2, + "1712": 2, + "1714": 1, + "1715": 1, + "1716": 1, + "1717": 1, + "1719": 2, + "1720": 1, + "1723": 1, + "1725": 1, + "1727": 1, + "1728": 1, + "1729": 1, + "1731": 1, + "1734": 3, + "1735": 1, + "1737": 1, + "1738": 3, + "1740": 1, + "1741": 2, + "1742": 4, + "1743": 2, + "1745": 4, + "1746": 3, + "1748": 1, + "1751": 2, + "1752": 2, + "1753": 2, + "1754": 1, + "1756": 1, + "1757": 1, + "1758": 2, + "1759": 3, + "1760": 1, + "1761": 2, + "1762": 1, + "1763": 3, + "1764": 2, + "1765": 4, + "1766": 3, + "1767": 4, + "1768": 1, + "1769": 3, + "1771": 3, + "1772": 3, + "1775": 1, + "1776": 2, + "1777": 4, + "1778": 1, + "1779": 1, + "1781": 1, + "1782": 1, + "1786": 1, + "1787": 1 + }, + "started": "2025-09-11T20:11:49.937Z", + "trafficStats": { + "incomingCompressionRatio": 0.04723287963867188, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1547727, + "incomingOctetsWireLevel": 1555727, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.005168870220652609, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1434865, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0027955118057957948, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "280": 1, + "1236": 1, + "1239": 2, + "1240": 1, + "1241": 1, + "1242": 1, + "1243": 1, + "1244": 1, + "1245": 4, + "1246": 1, + "1248": 2, + "1250": 2, + "1251": 2, + "1252": 1, + "1253": 1, + "1254": 3, + "1255": 1, + "1256": 4, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 1, + "1261": 3, + "1262": 5, + "1263": 2, + "1264": 3, + "1265": 2, + "1266": 4, + "1267": 4, + "1268": 2, + "1269": 7, + "1270": 5, + "1272": 4, + "1273": 8, + "1274": 4, + "1275": 9, + "1276": 3, + "1277": 9, + "1278": 6, + "1279": 6, + "1280": 11, + "1281": 8, + "1282": 9, + "1283": 9, + "1284": 4, + "1285": 4, + "1286": 8, + "1287": 5, + "1288": 5, + "1289": 5, + "1290": 2, + "1291": 4, + "1292": 1, + "1293": 3, + "1294": 5, + "1295": 4, + "1296": 3, + "1297": 4, + "1298": 5, + "1299": 5, + "1300": 3, + "1301": 6, + "1302": 6, + "1303": 4, + "1304": 4, + "1305": 1, + "1306": 1, + "1307": 4, + "1308": 2, + "1309": 3, + "1310": 2, + "1311": 3, + "1312": 4, + "1313": 2, + "1314": 1, + "1316": 2, + "1317": 2, + "1318": 1, + "1319": 4, + "1321": 3, + "1322": 1, + "1323": 1, + "1324": 2, + "1325": 2, + "1327": 4, + "1328": 2, + "1329": 1, + "1330": 1, + "1331": 2, + "1332": 2, + "1333": 1, + "1334": 2, + "1336": 3, + "1337": 1, + "1339": 2, + "1340": 3, + "1341": 2, + "1342": 1, + "1343": 2, + "1344": 2, + "1345": 4, + "1346": 2, + "1347": 6, + "1348": 1, + "1349": 1, + "1351": 5, + "1352": 4, + "1353": 2, + "1355": 5, + "1356": 4, + "1358": 1, + "1359": 3, + "1360": 3, + "1361": 2, + "1362": 1, + "1363": 2, + "1364": 1, + "1366": 2, + "1367": 4, + "1368": 1, + "1369": 4, + "1370": 1, + "1372": 2, + "1373": 2, + "1374": 3, + "1377": 1, + "1378": 2, + "1379": 1, + "1380": 1, + "1381": 3, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 3, + "1386": 1, + "1387": 1, + "1389": 2, + "1391": 3, + "1392": 2, + "1393": 1, + "1394": 2, + "1395": 2, + "1396": 1, + "1397": 2, + "1398": 1, + "1401": 1, + "1402": 2, + "1403": 1, + "1404": 1, + "1405": 1, + "1406": 2, + "1409": 2, + "1410": 1, + "1411": 2, + "1412": 1, + "1413": 6, + "1414": 2, + "1415": 1, + "1416": 3, + "1417": 4, + "1418": 1, + "1419": 1, + "1420": 1, + "1421": 4, + "1422": 2, + "1423": 2, + "1424": 1, + "1425": 2, + "1426": 1, + "1427": 4, + "1429": 2, + "1431": 2, + "1432": 4, + "1434": 1, + "1435": 1, + "1436": 3, + "1437": 2, + "1439": 4, + "1440": 1, + "1441": 2, + "1442": 2, + "1444": 1, + "1446": 4, + "1447": 2, + "1448": 1, + "1449": 2, + "1450": 1, + "1451": 2, + "1452": 2, + "1453": 2, + "1454": 3, + "1455": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 2, + "1461": 1, + "1462": 1, + "1463": 2, + "1464": 1, + "1465": 3, + "1466": 2, + "1467": 2, + "1468": 2, + "1469": 4, + "1470": 4, + "1471": 6, + "1472": 3, + "1473": 2, + "1474": 2, + "1475": 1, + "1476": 2, + "1477": 3, + "1478": 3, + "1479": 2, + "1480": 2, + "1481": 1, + "1482": 1, + "1483": 3, + "1484": 4, + "1485": 6, + "1486": 3, + "1487": 2, + "1488": 4, + "1489": 3, + "1490": 2, + "1491": 1, + "1492": 3, + "1493": 3, + "1494": 2, + "1495": 3, + "1496": 5, + "1498": 2, + "1500": 3, + "1501": 2, + "1502": 2, + "1503": 2, + "1504": 2, + "1505": 3, + "1506": 2, + "1507": 1, + "1508": 3, + "1509": 2, + "1510": 1, + "1511": 2, + "1513": 5, + "1514": 2, + "1515": 2, + "1516": 1, + "1517": 4, + "1518": 4, + "1519": 3, + "1520": 4, + "1522": 6, + "1524": 2, + "1525": 1, + "1526": 1, + "1528": 3, + "1529": 5, + "1531": 2, + "1532": 3, + "1533": 1, + "1534": 4, + "1535": 4, + "1536": 5, + "1537": 5, + "1538": 9, + "1539": 5, + "1540": 6, + "1541": 7, + "1542": 6, + "1543": 3, + "1544": 5, + "1545": 1, + "1546": 3, + "1547": 7, + "1548": 2, + "1549": 2, + "1550": 3, + "1551": 6, + "1552": 5, + "1553": 6, + "1554": 3, + "1555": 3, + "1556": 6, + "1557": 5, + "1558": 8, + "1559": 7, + "1560": 11, + "1561": 7, + "1562": 7, + "1563": 2, + "1564": 6, + "1565": 5, + "1566": 5, + "1567": 5, + "1568": 2, + "1569": 3, + "1570": 5, + "1571": 5, + "1572": 3, + "1573": 3, + "1574": 1, + "1575": 1, + "1576": 2, + "1577": 2, + "1578": 1, + "1580": 3, + "1581": 2, + "1582": 3, + "1583": 2, + "1585": 1, + "1586": 2, + "1587": 2, + "1588": 2, + "1589": 2, + "1590": 2, + "1591": 2, + "1592": 1, + "1593": 1, + "1597": 1, + "1604": 1, + "1607": 1, + "1608": 2, + "1611": 2, + "1613": 1, + "1614": 1, + "1617": 1, + "1618": 4, + "1621": 1, + "1623": 2, + "1624": 2, + "1625": 1, + "1626": 6, + "1627": 3, + "1628": 1, + "1629": 2, + "1630": 1, + "1632": 2, + "1634": 1, + "1636": 2, + "1637": 2, + "1639": 1, + "1641": 3, + "1643": 3, + "1644": 2, + "1646": 6, + "1647": 1, + "1648": 2, + "1650": 2, + "1651": 2, + "1652": 2, + "1653": 2, + "1654": 1, + "1655": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1660": 2, + "1661": 1, + "1664": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343137266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823cd460473f3c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3cd46047" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_2_9.html b/autobahn/client/tungstenite_case_13_2_9.html new file mode 100644 index 0000000..e63ccfa --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_9.html @@ -0,0 +1,588 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.2.9 : Pass - 1557 ms @ 2025-09-11T20:11:50.725Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=418&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: iCq9xxs8tA6tTEywQde6DA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: T7Fkk3A2fhrZzvqvMx9hfKsiYjk=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
290012900
290812908
290912909
291025820
291212912
291425828
291538745
2916411664
291738751
2918514590
291925838
2920514600
2921514605
292238766
2923617538
2924617544
2925617550
2926617556
2927823416
2928617568
2929617574
2930617580
2931823448
2932617592
29331029330
29341235208
29351441090
29362058720
29371441118
29382367574
29392779353
29402264680
29412676466
29421441188
29431852974
29441647104
29451853010
29461955974
29471132417
29481956012
29491750133
2950926550
29511647216
2952720664
29531029530
29541441356
29551235460
29561132516
2957720699
29581647328
2959720713
29601132560
296138883
29621853316
29631132593
2964720748
2965514825
2966926694
29671235604
2968617808
2969514845
297038910
297125942
2972411888
297338919
297425948
2975617850
2976514880
2977514885
297925958
298025960
2982514910
298325966
298425968
298525970
298638958
298738961
298838964
298912989
299012990
299112991
299312993
299425988
299612996
299812998
300113001
300313003
3004412016
300513005
300626012
300739021
301113011
301213012
301513015
301613016
301713017
301826036
301913019
302013020
302213022
302313023
302426048
302526050
302626052
3028412112
302939087
303026060
3031618186
303226064
3033618198
3034927306
3035721245
3036721252
303739111
3038412152
3039412156
3040618240
304139123
3042412168
304313043
3044412176
304539135
304639138
304713047
3048412192
304913049
3050721350
3051618306
305239156
3053515265
3054412216
3055515275
3056618336
3057927513
3058515290
3059824472
30601236720
306139183
30621545930
3063824504
3064618384
30651030650
3066515330
3067927603
3068824544
3069721483
30701442980
3071927639
3072515360
3073824584
3074515370
3075412300
307613076
3077618462
3078515390
307926158
308013080
3081412324
308526170
308613086
308713087
308826176
309026180
309113091
309239276
309326186
309413094
309539285
309613096
Total10022984107
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2801280
280125602
280212802
280325606
2804514020
2805411220
2806616836
2807514035
2808616848
28091233708
28101747770
28112261842
28122673112
28132878764
28141747838
28153598525
28161953504
28173187327
28182056360
28192364837
28201747940
28212159241
28222776194
28232570575
28242262128
28252673450
28262056520
28273496118
28282056560
28291439606
2830822640
2831925479
28321748144
28331645328
28341748178
28351645360
28361028360
2837925533
2838514190
283938517
284012840
284138523
2842411368
284325686
284625692
284712847
284912849
285012850
285125702
285312853
285412854
285525710
285738571
2859411436
286012860
2862411448
286338589
286425728
286625732
286712867
286812868
286912869
287012870
287212872
287812878
287912879
288225764
288312883
288412884
288512885
288625772
288712887
288825776
289212892
289512895
289712897
289938697
290025800
290125802
2902514510
2903823224
2904514520
2905720335
2906411624
2907823256
290825816
290938727
291038730
2911514555
29121029120
29131132043
29141646624
29151029150
29161132076
2917617502
29181955442
29191235028
2920617520
2921926289
29221235064
29231235076
29241235088
2925926325
2926720482
2927926343
2928720496
2929617574
2930411720
2931411724
293225864
293338799
293412934
2935617610
29361132296
2937823496
29381338194
29391029390
2940926460
2941514705
294225884
294338829
295712957
Total10022856377
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343138266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d88feb2edb67
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6438386665623265
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_2_9.json b/autobahn/client/tungstenite_case_13_2_9.json new file mode 100644 index 0000000..01a3ff0 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_2_9.json @@ -0,0 +1,435 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 418, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 0)]", + "droppedByMe": true, + "duration": 1557, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=418&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: iCq9xxs8tA6tTEywQde6DA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: T7Fkk3A2fhrZzvqvMx9hfKsiYjk=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover\r\n\r\n", + "id": "13.2.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2900": 1, + "2908": 1, + "2909": 1, + "2910": 2, + "2912": 1, + "2914": 2, + "2915": 3, + "2916": 4, + "2917": 3, + "2918": 5, + "2919": 2, + "2920": 5, + "2921": 5, + "2922": 3, + "2923": 6, + "2924": 6, + "2925": 6, + "2926": 6, + "2927": 8, + "2928": 6, + "2929": 6, + "2930": 6, + "2931": 8, + "2932": 6, + "2933": 10, + "2934": 12, + "2935": 14, + "2936": 20, + "2937": 14, + "2938": 23, + "2939": 27, + "2940": 22, + "2941": 26, + "2942": 14, + "2943": 18, + "2944": 16, + "2945": 18, + "2946": 19, + "2947": 11, + "2948": 19, + "2949": 17, + "2950": 9, + "2951": 16, + "2952": 7, + "2953": 10, + "2954": 14, + "2955": 12, + "2956": 11, + "2957": 7, + "2958": 16, + "2959": 7, + "2960": 11, + "2961": 3, + "2962": 18, + "2963": 11, + "2964": 7, + "2965": 5, + "2966": 9, + "2967": 12, + "2968": 6, + "2969": 5, + "2970": 3, + "2971": 2, + "2972": 4, + "2973": 3, + "2974": 2, + "2975": 6, + "2976": 5, + "2977": 5, + "2979": 2, + "2980": 2, + "2982": 5, + "2983": 2, + "2984": 2, + "2985": 2, + "2986": 3, + "2987": 3, + "2988": 3, + "2989": 1, + "2990": 1, + "2991": 1, + "2993": 1, + "2994": 2, + "2996": 1, + "2998": 1, + "3001": 1, + "3003": 1, + "3004": 4, + "3005": 1, + "3006": 2, + "3007": 3, + "3011": 1, + "3012": 1, + "3015": 1, + "3016": 1, + "3017": 1, + "3018": 2, + "3019": 1, + "3020": 1, + "3022": 1, + "3023": 1, + "3024": 2, + "3025": 2, + "3026": 2, + "3028": 4, + "3029": 3, + "3030": 2, + "3031": 6, + "3032": 2, + "3033": 6, + "3034": 9, + "3035": 7, + "3036": 7, + "3037": 3, + "3038": 4, + "3039": 4, + "3040": 6, + "3041": 3, + "3042": 4, + "3043": 1, + "3044": 4, + "3045": 3, + "3046": 3, + "3047": 1, + "3048": 4, + "3049": 1, + "3050": 7, + "3051": 6, + "3052": 3, + "3053": 5, + "3054": 4, + "3055": 5, + "3056": 6, + "3057": 9, + "3058": 5, + "3059": 8, + "3060": 12, + "3061": 3, + "3062": 15, + "3063": 8, + "3064": 6, + "3065": 10, + "3066": 5, + "3067": 9, + "3068": 8, + "3069": 7, + "3070": 14, + "3071": 9, + "3072": 5, + "3073": 8, + "3074": 5, + "3075": 4, + "3076": 1, + "3077": 6, + "3078": 5, + "3079": 2, + "3080": 1, + "3081": 4, + "3085": 2, + "3086": 1, + "3087": 1, + "3088": 2, + "3090": 2, + "3091": 1, + "3092": 3, + "3093": 2, + "3094": 1, + "3095": 3, + "3096": 1 + }, + "started": "2025-09-11T20:11:50.725Z", + "trafficStats": { + "incomingCompressionRatio": 0.045407745361328126, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2975842, + "incomingOctetsWireLevel": 2983842, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0026883147693997195, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2856093, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014024788111748109, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 280 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "280": 1, + "2801": 2, + "2802": 1, + "2803": 2, + "2804": 5, + "2805": 4, + "2806": 6, + "2807": 5, + "2808": 6, + "2809": 12, + "2810": 17, + "2811": 22, + "2812": 26, + "2813": 28, + "2814": 17, + "2815": 35, + "2816": 19, + "2817": 31, + "2818": 20, + "2819": 23, + "2820": 17, + "2821": 21, + "2822": 27, + "2823": 25, + "2824": 22, + "2825": 26, + "2826": 20, + "2827": 34, + "2828": 20, + "2829": 14, + "2830": 8, + "2831": 9, + "2832": 17, + "2833": 16, + "2834": 17, + "2835": 16, + "2836": 10, + "2837": 9, + "2838": 5, + "2839": 3, + "2840": 1, + "2841": 3, + "2842": 4, + "2843": 2, + "2846": 2, + "2847": 1, + "2849": 1, + "2850": 1, + "2851": 2, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 3, + "2859": 4, + "2860": 1, + "2862": 4, + "2863": 3, + "2864": 2, + "2866": 2, + "2867": 1, + "2868": 1, + "2869": 1, + "2870": 1, + "2872": 1, + "2878": 1, + "2879": 1, + "2882": 2, + "2883": 1, + "2884": 1, + "2885": 1, + "2886": 2, + "2887": 1, + "2888": 2, + "2892": 1, + "2895": 1, + "2897": 1, + "2899": 3, + "2900": 2, + "2901": 2, + "2902": 5, + "2903": 8, + "2904": 5, + "2905": 7, + "2906": 4, + "2907": 8, + "2908": 2, + "2909": 3, + "2910": 3, + "2911": 5, + "2912": 10, + "2913": 11, + "2914": 16, + "2915": 10, + "2916": 11, + "2917": 6, + "2918": 19, + "2919": 12, + "2920": 6, + "2921": 9, + "2922": 12, + "2923": 12, + "2924": 12, + "2925": 9, + "2926": 7, + "2927": 9, + "2928": 7, + "2929": 6, + "2930": 4, + "2931": 4, + "2932": 2, + "2933": 3, + "2934": 1, + "2935": 6, + "2936": 11, + "2937": 8, + "2938": 13, + "2939": 10, + "2940": 9, + "2941": 5, + "2942": 2, + "2943": 3, + "2957": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343138266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 280, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d88feb2edb67" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d88feb2e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_1.html b/autobahn/client/tungstenite_case_13_3_1.html new file mode 100644 index 0000000..d488432 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_1.html @@ -0,0 +1,325 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.1 : Pass - 133 ms @ 2025-09-11T20:12:11.978Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=428&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: jbF/ZD9bVaKMBMpR9Kh1yw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LxDbku1scSzKHwRa5Rserj40nC0=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
107557550
1126286
1240480
1356728
14981372
15690
16696
17234
18354
19357
20120
21121
22122
24248
2571257
Total100211123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
67554530
766462
837296
9103927
1024240
11444
12224
14114
15345
16116
17117
18118
20240
2781278
Total10026955
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343238266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882f1edc35bf205
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6631656463333562
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_1.json b/autobahn/client/tungstenite_case_13_3_1.json new file mode 100644 index 0000000..836e120 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_1.json @@ -0,0 +1,172 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 428, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 133, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=428&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: jbF/ZD9bVaKMBMpR9Kh1yw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LxDbku1scSzKHwRa5Rserj40nC0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 755, + "11": 26, + "12": 40, + "13": 56, + "14": 98, + "15": 6, + "16": 6, + "17": 2, + "18": 3, + "19": 3, + "20": 1, + "21": 1, + "22": 1, + "24": 2, + "257": 1 + }, + "started": "2025-09-11T20:12:11.978Z", + "trafficStats": { + "incomingCompressionRatio": 0.303625, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 4858, + "incomingOctetsWireLevel": 10858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 1.2350761630300535, + "outgoingCompressionRatio": 0.2920625, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 4673, + "outgoingOctetsWireLevel": 6673, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.4279905842071474, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 755, + "7": 66, + "8": 37, + "9": 103, + "10": 24, + "11": 4, + "12": 2, + "14": 1, + "15": 3, + "16": 1, + "17": 1, + "18": 1, + "20": 2, + "278": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343238266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f1edc35bf205" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f1edc35b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_10.html b/autobahn/client/tungstenite_case_13_3_10.html new file mode 100644 index 0000000..8687a9f --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_10.html @@ -0,0 +1,720 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.10 : Pass - 6551 ms @ 2025-09-11T20:12:20.070Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=437&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 93MvcABNKcg+LMoMaQzV8g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1oQzF37/VbrvegOiLD+vFS/d2Qc=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
460714607
460914609
461014610
461114611
461414614
462029240
462114621
4623523115
4624523120
462514625
4626523130
4627313881
4628837024
4629732403
4630732410
4631732417
4632523160
4633418532
463429268
463514635
463614636
4637523185
463814638
464029280
464114641
465229304
465314653
465414654
465529310
465614656
4658313974
465929318
466214662
466314663
466414664
466514665
466729334
4668418672
4669314007
467414674
4676418704
467714677
4679523395
468014680
468114681
468214682
468314683
468414684
468629372
4687314061
468814688
468929378
469014690
469314693
469414694
469529390
469614696
470314703
470929418
4710418840
4711732977
471214712
471329426
471429428
471529430
4716628296
4717628302
471829436
471929438
472014720
4721418884
4722314166
472329446
472429448
472529450
472614726
4727418908
472829456
472914729
4730942570
4731314193
4732418928
473329466
473429468
473514735
4736314208
4737314211
4738733166
4739523695
4740628440
47411152151
4742628452
4743837944
474429488
474514745
474629492
474729494
4748314244
474929498
475314753
475414754
475614756
476029520
476429528
476514765
476614766
476814768
477114771
477614776
478014780
478114781
478214782
4783314349
478429568
4785419140
478829576
478914789
479214792
479414794
479614796
479714797
479814798
4799314397
4800419200
4801314403
480329606
480429608
480529610
480614806
480929618
481214812
481329626
481414814
481529630
481629632
4817314451
481829636
481929638
482014820
482214822
482514825
482729654
482829656
482914829
483014830
483229664
483329666
483429668
483514835
483614836
483729674
4838314514
4839419356
4840419360
4841419364
4842314526
484414844
484614846
484814848
485314853
485514855
4856314568
4857419428
48581048580
4859838872
48601258320
4861734027
4862838896
486314863
4864943776
48661048660
4867314601
4868524340
4869943821
4870629220
4871314613
4872734104
4873524365
487629752
487829756
487914879
4880524400
4882314646
4883314649
488429768
488514885
489014890
489514895
489814898
489914899
490129802
490329806
490429808
490529810
490614906
491214912
4913314739
491414914
491629832
491729834
4918524590
4919314757
4920314760
4921839368
4922734454
49231678768
49241154164
4925629550
4926629556
4927314781
49281049280
4929629574
4930314790
4931314793
4932524660
4933629598
4934629604
4935839480
4936524680
4937524685
49381154318
4939524695
494014940
4941314823
4942314826
4943524715
4944629664
4945314835
4946629676
4947944523
4948629688
4949839592
49501154450
49511049510
4952839616
49531154483
4954629724
4955629730
4956524780
49571259484
4958734706
49591259508
49601364480
496121104181
4962944658
4963839704
49641049640
4965524825
496614966
496714967
496929938
497029940
4971629826
4972524860
4973734811
4974839792
49751469650
4976734832
49771049770
4978524890
49792099580
4980944820
498129962
498214982
498329966
498429968
498529970
498614986
498714987
499114991
499214992
5004315012
5006420024
500815008
500915009
502215022
502315023
502415024
Total10024853761
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2781278
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668380
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343337266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888263e10a6e6009
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3633653130613665
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_10.json b/autobahn/client/tungstenite_case_13_3_10.json new file mode 100644 index 0000000..d51c161 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_10.json @@ -0,0 +1,567 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 437, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 6551, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=437&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 93MvcABNKcg+LMoMaQzV8g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1oQzF37/VbrvegOiLD+vFS/d2Qc=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4607": 1, + "4609": 1, + "4610": 1, + "4611": 1, + "4614": 1, + "4620": 2, + "4621": 1, + "4623": 5, + "4624": 5, + "4625": 1, + "4626": 5, + "4627": 3, + "4628": 8, + "4629": 7, + "4630": 7, + "4631": 7, + "4632": 5, + "4633": 4, + "4634": 2, + "4635": 1, + "4636": 1, + "4637": 5, + "4638": 1, + "4640": 2, + "4641": 1, + "4652": 2, + "4653": 1, + "4654": 1, + "4655": 2, + "4656": 1, + "4658": 3, + "4659": 2, + "4662": 1, + "4663": 1, + "4664": 1, + "4665": 1, + "4667": 2, + "4668": 4, + "4669": 3, + "4674": 1, + "4676": 4, + "4677": 1, + "4679": 5, + "4680": 1, + "4681": 1, + "4682": 1, + "4683": 1, + "4684": 1, + "4686": 2, + "4687": 3, + "4688": 1, + "4689": 2, + "4690": 1, + "4693": 1, + "4694": 1, + "4695": 2, + "4696": 1, + "4703": 1, + "4709": 2, + "4710": 4, + "4711": 7, + "4712": 1, + "4713": 2, + "4714": 2, + "4715": 2, + "4716": 6, + "4717": 6, + "4718": 2, + "4719": 2, + "4720": 1, + "4721": 4, + "4722": 3, + "4723": 2, + "4724": 2, + "4725": 2, + "4726": 1, + "4727": 4, + "4728": 2, + "4729": 1, + "4730": 9, + "4731": 3, + "4732": 4, + "4733": 2, + "4734": 2, + "4735": 1, + "4736": 3, + "4737": 3, + "4738": 7, + "4739": 5, + "4740": 6, + "4741": 11, + "4742": 6, + "4743": 8, + "4744": 2, + "4745": 1, + "4746": 2, + "4747": 2, + "4748": 3, + "4749": 2, + "4753": 1, + "4754": 1, + "4756": 1, + "4760": 2, + "4764": 2, + "4765": 1, + "4766": 1, + "4768": 1, + "4771": 1, + "4776": 1, + "4780": 1, + "4781": 1, + "4782": 1, + "4783": 3, + "4784": 2, + "4785": 4, + "4788": 2, + "4789": 1, + "4792": 1, + "4794": 1, + "4796": 1, + "4797": 1, + "4798": 1, + "4799": 3, + "4800": 4, + "4801": 3, + "4803": 2, + "4804": 2, + "4805": 2, + "4806": 1, + "4809": 2, + "4812": 1, + "4813": 2, + "4814": 1, + "4815": 2, + "4816": 2, + "4817": 3, + "4818": 2, + "4819": 2, + "4820": 1, + "4822": 1, + "4825": 1, + "4827": 2, + "4828": 2, + "4829": 1, + "4830": 1, + "4832": 2, + "4833": 2, + "4834": 2, + "4835": 1, + "4836": 1, + "4837": 2, + "4838": 3, + "4839": 4, + "4840": 4, + "4841": 4, + "4842": 3, + "4844": 1, + "4846": 1, + "4848": 1, + "4853": 1, + "4855": 1, + "4856": 3, + "4857": 4, + "4858": 10, + "4859": 8, + "4860": 12, + "4861": 7, + "4862": 8, + "4863": 1, + "4864": 9, + "4866": 10, + "4867": 3, + "4868": 5, + "4869": 9, + "4870": 6, + "4871": 3, + "4872": 7, + "4873": 5, + "4876": 2, + "4878": 2, + "4879": 1, + "4880": 5, + "4882": 3, + "4883": 3, + "4884": 2, + "4885": 1, + "4890": 1, + "4895": 1, + "4898": 1, + "4899": 1, + "4901": 2, + "4903": 2, + "4904": 2, + "4905": 2, + "4906": 1, + "4912": 1, + "4913": 3, + "4914": 1, + "4916": 2, + "4917": 2, + "4918": 5, + "4919": 3, + "4920": 3, + "4921": 8, + "4922": 7, + "4923": 16, + "4924": 11, + "4925": 6, + "4926": 6, + "4927": 3, + "4928": 10, + "4929": 6, + "4930": 3, + "4931": 3, + "4932": 5, + "4933": 6, + "4934": 6, + "4935": 8, + "4936": 5, + "4937": 5, + "4938": 11, + "4939": 5, + "4940": 1, + "4941": 3, + "4942": 3, + "4943": 5, + "4944": 6, + "4945": 3, + "4946": 6, + "4947": 9, + "4948": 6, + "4949": 8, + "4950": 11, + "4951": 10, + "4952": 8, + "4953": 11, + "4954": 6, + "4955": 6, + "4956": 5, + "4957": 12, + "4958": 7, + "4959": 12, + "4960": 13, + "4961": 21, + "4962": 9, + "4963": 8, + "4964": 10, + "4965": 5, + "4966": 1, + "4967": 1, + "4969": 2, + "4970": 2, + "4971": 6, + "4972": 5, + "4973": 7, + "4974": 8, + "4975": 14, + "4976": 7, + "4977": 10, + "4978": 5, + "4979": 20, + "4980": 9, + "4981": 2, + "4982": 1, + "4983": 2, + "4984": 2, + "4985": 2, + "4986": 1, + "4987": 1, + "4991": 1, + "4992": 1, + "5004": 3, + "5006": 4, + "5008": 1, + "5009": 1, + "5022": 1, + "5023": 1, + "5024": 1 + }, + "started": "2025-09-11T20:12:20.070Z", + "trafficStats": { + "incomingCompressionRatio": 0.03696820068359375, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4845496, + "incomingOctetsWireLevel": 4853496, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016510177699042574, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "278": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343337266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888263e10a6e6009" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "63e10a6e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_11.html b/autobahn/client/tungstenite_case_13_3_11.html new file mode 100644 index 0000000..2f9c263 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_11.html @@ -0,0 +1,672 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.11 : Pass - 593 ms @ 2025-09-11T20:12:26.623Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=438&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: JuRlhmw4kpNzjylB6IDAVw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: p7wovEGbUDmtwx/Qbp0HAbn/8mw=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2542508
2571257
2582516
2592518
2601260
2613783
2623786
2631263
2641264
26571855
26661596
26761602
2683804
2693807
27051350
271102710
27251360
27361638
274102740
275123300
276102760
27761662
27871946
279133627
280102800
28192529
28292538
28361698
28471988
28571995
28682288
28792583
288123456
28982312
29061740
291123492
2923876
2931293
294144116
29592655
29651480
29782376
29841192
29961794
3003900
30172107
3023906
30341212
304113344
30592745
30672142
30782456
30892772
309103090
31051550
31192799
31292808
313123756
314113454
31592835
316103160
31782536
318113498
319144466
32092880
321134173
322144508
32392907
32492916
32561950
326123912
327134251
32841312
32951645
33082640
33172317
33241328
3333999
3342668
33551675
33672352
33741348
33831014
33941356
3402680
34151705
3421342
3432686
34472408
345103450
346124152
34751735
34893132
34941396
35062100
351124212
35262112
35362118
35441416
35541420
35631068
35762142
3582716
35941436
3602720
36151805
36241448
36341452
364103640
36541460
36672562
36793303
3692738
37031110
3711371
37241488
37341492
37441496
3752750
3762752
3771377
3782756
3792758
38031140
3812762
38262292
38331149
3842768
38572695
38651930
38772709
38831164
38951945
39093510
39183128
39272744
39383144
39483152
39583160
39631188
39741588
39841592
39931197
40052000
401156015
40252010
403114433
40472828
40552025
40662436
40731221
40872856
4091409
41031230
41141644
4122824
4131413
4141414
4152830
41631248
4171417
4201420
4211421
4251425
4261426
4272854
4311431
4332866
4391439
4401440
44131323
4441444
4452890
4461446
44831344
4491449
4502900
4511451
45241808
4542908
4551455
4562912
4571457
4581458
4591459
4611461
4621462
4631463
4641464
4661466
4771477
4791479
Total1002335620
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
435215
446264
45290
465230
476282
4811528
4910490
503150
51151
525260
53153
543162
55155
565280
577399
584232
596354
6012720
614244
6212744
6311693
6410640
6513845
6610660
67181206
68161088
69151035
7010700
71211491
72211512
73191387
7413962
75161200
767532
777539
7812936
7911869
8010800
815405
827574
834332
845420
855425
863258
87187
885440
895445
906540
919819
929828
939837
948752
9510950
968768
97141358
989882
9910990
100121200
1019909
1028816
103121236
1048832
105101050
1064424
1076642
1086648
1092218
1102220
111111221
1127784
1132226
114111254
1157805
1168928
1173351
1187826
1198952
1206720
121101210
1226732
1234492
1242248
1257875
1262252
1273381
1303390
1314524
1323396
1333399
1345670
1352270
1364544
1373411
1384552
1393417
1403420
1416846
1424568
1433429
1441144
1451145
1464584
1473441
1483444
1491149
1504600
15181208
1523456
1532306
15471078
1556930
1562312
1571157
1581158
1594636
160121920
1615805
1623486
1633489
1642328
1652330
16671162
1674668
1683504
1693507
1705850
1712342
1733519
1743522
1753525
1761176
1771177
1783534
1801180
1811181
1852370
1861186
1873561
1891189
1911191
1923576
1931193
1943582
1953585
1961196
19791773
19881584
1992398
20071400
201102010
20291818
2032406
20471428
205132665
20661236
20781656
20851040
20981672
21091890
21161266
21281696
2132426
2144856
2151215
2162432
2172434
2181218
2191219
2202440
2211221
2221222
2233669
2241224
2261226
2281228
2312462
2321232
2333699
2341234
2361236
2371237
2601000260000
2781278
Total2002376228
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343338266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888296502d4d95b8
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3936353032643464
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_11.json b/autobahn/client/tungstenite_case_13_3_11.json new file mode 100644 index 0000000..cbdfd13 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_11.json @@ -0,0 +1,519 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 438, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 593, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=438&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: JuRlhmw4kpNzjylB6IDAVw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: p7wovEGbUDmtwx/Qbp0HAbn/8mw=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "254": 2, + "257": 1, + "258": 2, + "259": 2, + "260": 1, + "261": 3, + "262": 3, + "263": 1, + "264": 1, + "265": 7, + "266": 6, + "267": 6, + "268": 3, + "269": 3, + "270": 5, + "271": 10, + "272": 5, + "273": 6, + "274": 10, + "275": 12, + "276": 10, + "277": 6, + "278": 7, + "279": 13, + "280": 10, + "281": 9, + "282": 9, + "283": 6, + "284": 7, + "285": 7, + "286": 8, + "287": 9, + "288": 12, + "289": 8, + "290": 6, + "291": 12, + "292": 3, + "293": 1, + "294": 14, + "295": 9, + "296": 5, + "297": 8, + "298": 4, + "299": 6, + "300": 3, + "301": 7, + "302": 3, + "303": 4, + "304": 11, + "305": 9, + "306": 7, + "307": 8, + "308": 9, + "309": 10, + "310": 5, + "311": 9, + "312": 9, + "313": 12, + "314": 11, + "315": 9, + "316": 10, + "317": 8, + "318": 11, + "319": 14, + "320": 9, + "321": 13, + "322": 14, + "323": 9, + "324": 9, + "325": 6, + "326": 12, + "327": 13, + "328": 4, + "329": 5, + "330": 8, + "331": 7, + "332": 4, + "333": 3, + "334": 2, + "335": 5, + "336": 7, + "337": 4, + "338": 3, + "339": 4, + "340": 2, + "341": 5, + "342": 1, + "343": 2, + "344": 7, + "345": 10, + "346": 12, + "347": 5, + "348": 9, + "349": 4, + "350": 6, + "351": 12, + "352": 6, + "353": 6, + "354": 4, + "355": 4, + "356": 3, + "357": 6, + "358": 2, + "359": 4, + "360": 2, + "361": 5, + "362": 4, + "363": 4, + "364": 10, + "365": 4, + "366": 7, + "367": 9, + "369": 2, + "370": 3, + "371": 1, + "372": 4, + "373": 4, + "374": 4, + "375": 2, + "376": 2, + "377": 1, + "378": 2, + "379": 2, + "380": 3, + "381": 2, + "382": 6, + "383": 3, + "384": 2, + "385": 7, + "386": 5, + "387": 7, + "388": 3, + "389": 5, + "390": 9, + "391": 8, + "392": 7, + "393": 8, + "394": 8, + "395": 8, + "396": 3, + "397": 4, + "398": 4, + "399": 3, + "400": 5, + "401": 15, + "402": 5, + "403": 11, + "404": 7, + "405": 5, + "406": 6, + "407": 3, + "408": 7, + "409": 1, + "410": 3, + "411": 4, + "412": 2, + "413": 1, + "414": 1, + "415": 2, + "416": 3, + "417": 1, + "420": 1, + "421": 1, + "425": 1, + "426": 1, + "427": 2, + "431": 1, + "433": 2, + "439": 1, + "440": 1, + "441": 3, + "444": 1, + "445": 2, + "446": 1, + "448": 3, + "449": 1, + "450": 2, + "451": 1, + "452": 4, + "454": 2, + "455": 1, + "456": 2, + "457": 1, + "458": 1, + "459": 1, + "461": 1, + "462": 1, + "463": 1, + "464": 1, + "466": 1, + "477": 1, + "479": 1 + }, + "started": "2025-09-11T20:12:26.623Z", + "trafficStats": { + "incomingCompressionRatio": 0.0399603271484375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 327355, + "incomingOctetsWireLevel": 335355, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.02443830092712804, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 375946, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.018067884551850388, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "43": 5, + "44": 6, + "45": 2, + "46": 5, + "47": 6, + "48": 11, + "49": 10, + "50": 3, + "51": 1, + "52": 5, + "53": 1, + "54": 3, + "55": 1, + "56": 5, + "57": 7, + "58": 4, + "59": 6, + "60": 12, + "61": 4, + "62": 12, + "63": 11, + "64": 10, + "65": 13, + "66": 10, + "67": 18, + "68": 16, + "69": 15, + "70": 10, + "71": 21, + "72": 21, + "73": 19, + "74": 13, + "75": 16, + "76": 7, + "77": 7, + "78": 12, + "79": 11, + "80": 10, + "81": 5, + "82": 7, + "83": 4, + "84": 5, + "85": 5, + "86": 3, + "87": 1, + "88": 5, + "89": 5, + "90": 6, + "91": 9, + "92": 9, + "93": 9, + "94": 8, + "95": 10, + "96": 8, + "97": 14, + "98": 9, + "99": 10, + "100": 12, + "101": 9, + "102": 8, + "103": 12, + "104": 8, + "105": 10, + "106": 4, + "107": 6, + "108": 6, + "109": 2, + "110": 2, + "111": 11, + "112": 7, + "113": 2, + "114": 11, + "115": 7, + "116": 8, + "117": 3, + "118": 7, + "119": 8, + "120": 6, + "121": 10, + "122": 6, + "123": 4, + "124": 2, + "125": 7, + "126": 2, + "127": 3, + "130": 3, + "131": 4, + "132": 3, + "133": 3, + "134": 5, + "135": 2, + "136": 4, + "137": 3, + "138": 4, + "139": 3, + "140": 3, + "141": 6, + "142": 4, + "143": 3, + "144": 1, + "145": 1, + "146": 4, + "147": 3, + "148": 3, + "149": 1, + "150": 4, + "151": 8, + "152": 3, + "153": 2, + "154": 7, + "155": 6, + "156": 2, + "157": 1, + "158": 1, + "159": 4, + "160": 12, + "161": 5, + "162": 3, + "163": 3, + "164": 2, + "165": 2, + "166": 7, + "167": 4, + "168": 3, + "169": 3, + "170": 5, + "171": 2, + "173": 3, + "174": 3, + "175": 3, + "176": 1, + "177": 1, + "178": 3, + "180": 1, + "181": 1, + "185": 2, + "186": 1, + "187": 3, + "189": 1, + "191": 1, + "192": 3, + "193": 1, + "194": 3, + "195": 3, + "196": 1, + "197": 9, + "198": 8, + "199": 2, + "200": 7, + "201": 10, + "202": 9, + "203": 2, + "204": 7, + "205": 13, + "206": 6, + "207": 8, + "208": 5, + "209": 8, + "210": 9, + "211": 6, + "212": 8, + "213": 2, + "214": 4, + "215": 1, + "216": 2, + "217": 2, + "218": 1, + "219": 1, + "220": 2, + "221": 1, + "222": 1, + "223": 3, + "224": 1, + "226": 1, + "228": 1, + "231": 2, + "232": 1, + "233": 3, + "234": 1, + "236": 1, + "237": 1, + "260": 1000, + "278": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343338266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888296502d4d95b8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "96502d4d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_12.html b/autobahn/client/tungstenite_case_13_3_12.html new file mode 100644 index 0000000..98c1eaa --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_12.html @@ -0,0 +1,823 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.12 : Pass - 1061 ms @ 2025-09-11T20:12:27.217Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=439&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: d5LIY9Cc5eF0EsC7sRE4/g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: eGgZMUzWIgY0lsM6mQLUirM8LFI=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
4951495
4961496
4971497
49841992
49931497
50031500
50131503
50242008
5031503
50421008
50642024
5071507
50931527
5111511
5121512
51331539
51421028
51631548
5171517
51852590
51963114
52021040
52163126
52263132
52394707
52452620
5251525
52621052
52721054
52821056
53021060
53121062
53252660
53331599
53473738
53542140
53652680
53752685
53831614
53963234
54073780
54163246
54221084
54373801
54442176
545105450
54684368
54794923
54863288
54984392
55073850
55194959
55273864
55342212
55442216
55542220
5561556
55731671
55821116
55952795
56042240
5611561
56221124
56321126
56431692
56542260
56642264
56731701
56821136
56952845
57052850
57131713
57221144
57331719
57421148
57542300
57621152
57731731
57821156
57931737
58031740
58142324
58231746
58321166
58421168
5851585
58652930
58752935
58863528
58963534
59063540
591127092
59221184
59352965
59431782
59552975
59621192
59731791
5981598
59921198
60031800
60142404
60231806
60395427
60431812
60542420
60663636
60731821
60831824
60963654
61063660
61195499
61295508
61353065
61442456
61521230
61674312
61742468
61853090
61921238
62021240
62131863
622127464
62353115
62442496
6251625
62631878
62763762
62863768
62985032
63053150
6311631
63231896
63331899
63421268
63542540
63642544
6371637
6381638
63921278
64031920
6421642
6431643
6451645
6461646
64721294
64821296
64974543
65031950
6511651
65321306
65421308
65621312
65721314
65842632
66053300
66121322
66231986
66321326
66542660
6661666
66764002
66821336
66942676
67085360
67121342
67274704
67353365
67432022
675106750
67621352
67764062
67853390
67953395
68042720
68164086
68264092
68364098
6841684
68532055
68674802
68753435
68832064
6891689
69021380
6911691
69221384
69342772
69432082
69574865
69674872
69742788
69874886
699106990
70064200
70153505
70242808
70353515
70496336
70542820
70696354
70753535
70864248
70932127
71074970
71153555
71264272
7131713
71421428
71521430
71632148
71742868
71832154
71953595
72032160
7211721
72253610
72321446
72421448
72832184
7321732
73432202
7351735
73642944
73753685
73821476
7391739
74021480
7411741
74242968
74321486
74553725
7461746
74742988
74821496
74921498
7501750
7511751
7531753
7541754
75621512
7571757
7621762
7651765
7671767
7711771
77321546
77432322
77521550
7761776
77721554
77932337
78132343
7821782
7841784
7861786
79021580
79521590
79643184
79732391
79821596
80021600
8011801
80232406
80332409
80421608
8051805
80632418
80732421
80954045
81054050
8111811
81254060
81321626
81421628
81621632
8181818
81921638
8201820
8211821
8231823
8241824
82621652
Total1002635881
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
428
5315
616
717
818
10110
13113
16232
17234
18354
19119
20480
21242
22244
24124
254100
275135
28256
30130
31262
32264
33133
34134
353105
367252
376222
38276
396234
404160
415205
423126
43286
44288
45290
464184
473141
484192
493147
502100
513153
535265
542108
556330
575285
584232
594236
604240
614244
622124
63163
648512
652130
662132
674268
684272
692138
705350
712142
727504
733219
746444
752150
76176
772154
782156
79179
805400
8110810
825410
834332
845420
855425
86186
877609
886528
894356
906540
915455
924368
938744
944376
955475
968768
979873
98141372
997693
1008800
101111111
1028816
1038824
1046624
105121260
1065530
1073321
1085540
1098872
1109990
111101110
112131456
11391017
114121368
115151725
116111276
117161872
11891062
1196714
12091080
1218968
1227854
1234492
1246744
1254500
1267882
1275635
1304520
1316786
1326792
1337931
1344536
1352270
1362272
1376822
1384552
1396834
1403420
1414564
1427994
1435715
14481152
1456870
14671022
1472294
14871036
14991341
150111650
151101510
152111672
15381224
15471078
15581240
15671092
1574628
15881264
1596954
1604640
1615805
1624648
1632326
1642328
1654660
1661166
1674668
1684672
1694676
1702340
1711171
1724688
1734692
1741174
1752350
1764704
1772354
1783534
1793537
1801180
1813543
1823546
1835915
1844736
1853555
1864744
1874748
1883564
1892378
1903570
1912382
19261152
1933579
19481552
1952390
1961196
1971197
1983594
1993597
2001200
2011201
2022404
2033609
2042408
2052410
2064824
2072414
2083624
2092418
21051050
2112422
2122424
21351065
2142428
2152430
2161216
2171217
2183654
2203660
2211221
2224888
2232446
22451120
2252450
2273681
2283684
22951145
2313693
2323696
2332466
2342468
2351235
2361236
23771659
2381238
2391239
2401240
2411241
2421242
2434972
2444976
2453735
24651230
2473741
2482496
2502500
2513753
25241008
2531253
2541254
2553765
2571257
2581258
2593777
2602331606060
2781278
Total3333733780
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02331
11000
81
Total3332
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343339266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828cd923108f31
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3863643932333130
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_12.json b/autobahn/client/tungstenite_case_13_3_12.json new file mode 100644 index 0000000..28257af --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_12.json @@ -0,0 +1,670 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 439, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 1061, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=439&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: d5LIY9Cc5eF0EsC7sRE4/g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: eGgZMUzWIgY0lsM6mQLUirM8LFI=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "495": 1, + "496": 1, + "497": 1, + "498": 4, + "499": 3, + "500": 3, + "501": 3, + "502": 4, + "503": 1, + "504": 2, + "506": 4, + "507": 1, + "509": 3, + "511": 1, + "512": 1, + "513": 3, + "514": 2, + "516": 3, + "517": 1, + "518": 5, + "519": 6, + "520": 2, + "521": 6, + "522": 6, + "523": 9, + "524": 5, + "525": 1, + "526": 2, + "527": 2, + "528": 2, + "530": 2, + "531": 2, + "532": 5, + "533": 3, + "534": 7, + "535": 4, + "536": 5, + "537": 5, + "538": 3, + "539": 6, + "540": 7, + "541": 6, + "542": 2, + "543": 7, + "544": 4, + "545": 10, + "546": 8, + "547": 9, + "548": 6, + "549": 8, + "550": 7, + "551": 9, + "552": 7, + "553": 4, + "554": 4, + "555": 4, + "556": 1, + "557": 3, + "558": 2, + "559": 5, + "560": 4, + "561": 1, + "562": 2, + "563": 2, + "564": 3, + "565": 4, + "566": 4, + "567": 3, + "568": 2, + "569": 5, + "570": 5, + "571": 3, + "572": 2, + "573": 3, + "574": 2, + "575": 4, + "576": 2, + "577": 3, + "578": 2, + "579": 3, + "580": 3, + "581": 4, + "582": 3, + "583": 2, + "584": 2, + "585": 1, + "586": 5, + "587": 5, + "588": 6, + "589": 6, + "590": 6, + "591": 12, + "592": 2, + "593": 5, + "594": 3, + "595": 5, + "596": 2, + "597": 3, + "598": 1, + "599": 2, + "600": 3, + "601": 4, + "602": 3, + "603": 9, + "604": 3, + "605": 4, + "606": 6, + "607": 3, + "608": 3, + "609": 6, + "610": 6, + "611": 9, + "612": 9, + "613": 5, + "614": 4, + "615": 2, + "616": 7, + "617": 4, + "618": 5, + "619": 2, + "620": 2, + "621": 3, + "622": 12, + "623": 5, + "624": 4, + "625": 1, + "626": 3, + "627": 6, + "628": 6, + "629": 8, + "630": 5, + "631": 1, + "632": 3, + "633": 3, + "634": 2, + "635": 4, + "636": 4, + "637": 1, + "638": 1, + "639": 2, + "640": 3, + "642": 1, + "643": 1, + "645": 1, + "646": 1, + "647": 2, + "648": 2, + "649": 7, + "650": 3, + "651": 1, + "653": 2, + "654": 2, + "656": 2, + "657": 2, + "658": 4, + "660": 5, + "661": 2, + "662": 3, + "663": 2, + "665": 4, + "666": 1, + "667": 6, + "668": 2, + "669": 4, + "670": 8, + "671": 2, + "672": 7, + "673": 5, + "674": 3, + "675": 10, + "676": 2, + "677": 6, + "678": 5, + "679": 5, + "680": 4, + "681": 6, + "682": 6, + "683": 6, + "684": 1, + "685": 3, + "686": 7, + "687": 5, + "688": 3, + "689": 1, + "690": 2, + "691": 1, + "692": 2, + "693": 4, + "694": 3, + "695": 7, + "696": 7, + "697": 4, + "698": 7, + "699": 10, + "700": 6, + "701": 5, + "702": 4, + "703": 5, + "704": 9, + "705": 4, + "706": 9, + "707": 5, + "708": 6, + "709": 3, + "710": 7, + "711": 5, + "712": 6, + "713": 1, + "714": 2, + "715": 2, + "716": 3, + "717": 4, + "718": 3, + "719": 5, + "720": 3, + "721": 1, + "722": 5, + "723": 2, + "724": 2, + "728": 3, + "732": 1, + "734": 3, + "735": 1, + "736": 4, + "737": 5, + "738": 2, + "739": 1, + "740": 2, + "741": 1, + "742": 4, + "743": 2, + "745": 5, + "746": 1, + "747": 4, + "748": 2, + "749": 2, + "750": 1, + "751": 1, + "753": 1, + "754": 1, + "756": 2, + "757": 1, + "762": 1, + "765": 1, + "767": 1, + "771": 1, + "773": 2, + "774": 3, + "775": 2, + "776": 1, + "777": 2, + "779": 3, + "781": 3, + "782": 1, + "784": 1, + "786": 1, + "790": 2, + "795": 2, + "796": 4, + "797": 3, + "798": 2, + "800": 2, + "801": 1, + "802": 3, + "803": 3, + "804": 2, + "805": 1, + "806": 3, + "807": 3, + "809": 5, + "810": 5, + "811": 1, + "812": 5, + "813": 2, + "814": 2, + "816": 2, + "818": 1, + "819": 2, + "820": 1, + "821": 1, + "823": 1, + "824": 1, + "826": 2 + }, + "started": "2025-09-11T20:12:27.217Z", + "trafficStats": { + "incomingCompressionRatio": 0.038306640625, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 627616, + "incomingOctetsWireLevel": 635616, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.01274664763167287, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 733498, + "outgoingWebSocketFrames": 3331, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016936510269215093, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "0": 2331, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 2, + "5": 3, + "6": 1, + "7": 1, + "8": 1, + "10": 1, + "13": 1, + "16": 2, + "17": 2, + "18": 3, + "19": 1, + "20": 4, + "21": 2, + "22": 2, + "24": 1, + "25": 4, + "27": 5, + "28": 2, + "30": 1, + "31": 2, + "32": 2, + "33": 1, + "34": 1, + "35": 3, + "36": 7, + "37": 6, + "38": 2, + "39": 6, + "40": 4, + "41": 5, + "42": 3, + "43": 2, + "44": 2, + "45": 2, + "46": 4, + "47": 3, + "48": 4, + "49": 3, + "50": 2, + "51": 3, + "53": 5, + "54": 2, + "55": 6, + "57": 5, + "58": 4, + "59": 4, + "60": 4, + "61": 4, + "62": 2, + "63": 1, + "64": 8, + "65": 2, + "66": 2, + "67": 4, + "68": 4, + "69": 2, + "70": 5, + "71": 2, + "72": 7, + "73": 3, + "74": 6, + "75": 2, + "76": 1, + "77": 2, + "78": 2, + "79": 1, + "80": 5, + "81": 10, + "82": 5, + "83": 4, + "84": 5, + "85": 5, + "86": 1, + "87": 7, + "88": 6, + "89": 4, + "90": 6, + "91": 5, + "92": 4, + "93": 8, + "94": 4, + "95": 5, + "96": 8, + "97": 9, + "98": 14, + "99": 7, + "100": 8, + "101": 11, + "102": 8, + "103": 8, + "104": 6, + "105": 12, + "106": 5, + "107": 3, + "108": 5, + "109": 8, + "110": 9, + "111": 10, + "112": 13, + "113": 9, + "114": 12, + "115": 15, + "116": 11, + "117": 16, + "118": 9, + "119": 6, + "120": 9, + "121": 8, + "122": 7, + "123": 4, + "124": 6, + "125": 4, + "126": 7, + "127": 5, + "130": 4, + "131": 6, + "132": 6, + "133": 7, + "134": 4, + "135": 2, + "136": 2, + "137": 6, + "138": 4, + "139": 6, + "140": 3, + "141": 4, + "142": 7, + "143": 5, + "144": 8, + "145": 6, + "146": 7, + "147": 2, + "148": 7, + "149": 9, + "150": 11, + "151": 10, + "152": 11, + "153": 8, + "154": 7, + "155": 8, + "156": 7, + "157": 4, + "158": 8, + "159": 6, + "160": 4, + "161": 5, + "162": 4, + "163": 2, + "164": 2, + "165": 4, + "166": 1, + "167": 4, + "168": 4, + "169": 4, + "170": 2, + "171": 1, + "172": 4, + "173": 4, + "174": 1, + "175": 2, + "176": 4, + "177": 2, + "178": 3, + "179": 3, + "180": 1, + "181": 3, + "182": 3, + "183": 5, + "184": 4, + "185": 3, + "186": 4, + "187": 4, + "188": 3, + "189": 2, + "190": 3, + "191": 2, + "192": 6, + "193": 3, + "194": 8, + "195": 2, + "196": 1, + "197": 1, + "198": 3, + "199": 3, + "200": 1, + "201": 1, + "202": 2, + "203": 3, + "204": 2, + "205": 2, + "206": 4, + "207": 2, + "208": 3, + "209": 2, + "210": 5, + "211": 2, + "212": 2, + "213": 5, + "214": 2, + "215": 2, + "216": 1, + "217": 1, + "218": 3, + "220": 3, + "221": 1, + "222": 4, + "223": 2, + "224": 5, + "225": 2, + "227": 3, + "228": 3, + "229": 5, + "231": 3, + "232": 3, + "233": 2, + "234": 2, + "235": 1, + "236": 1, + "237": 7, + "238": 1, + "239": 1, + "240": 1, + "241": 1, + "242": 1, + "243": 4, + "244": 4, + "245": 3, + "246": 5, + "247": 3, + "248": 2, + "250": 2, + "251": 3, + "252": 4, + "253": 1, + "254": 1, + "255": 3, + "257": 1, + "258": 1, + "259": 3, + "260": 2331, + "278": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343339266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828cd923108f31" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8cd92310" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_13.html b/autobahn/client/tungstenite_case_13_3_13.html new file mode 100644 index 0000000..75080b6 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_13.html @@ -0,0 +1,904 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.13 : Pass - 1942 ms @ 2025-09-11T20:12:28.280Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=440&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: SskPTGEMSNbsMiWs5v7Efg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: v5nyyo9s3HgzYgnKlpe4MqY9Yug=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
104233126
104322086
104422088
104611046
104733141
104833144
104922098
105044200
105155255
105222104
105355265
105433162
105522110
105622112
105766342
105966354
106011060
106222124
106322126
106422128
106511065
106711067
106811068
107011070
107122142
107222144
107344292
10741010740
107588600
10761010760
107766462
107822156
107999711
108077560
108122162
108255410
108455420
108533255
108622172
108744348
108866528
108933267
109044360
109166546
109299828
109333279
109455470
109522190
109644384
109766582
109855490
109966594
110055500
110133303
110255510
110333309
110444416
110511105
110611106
110722214
110811108
110955545
111022220
111111111
111222224
111522230
111611116
111711117
112111121
112233366
112322246
112411124
112611126
112722254
112822256
113033390
113122262
113211132
113333399
113511135
113711137
114011140
114211142
114333429
114411144
114511145
114611146
114711147
114922298
115222304
115322306
115411154
115522310
115633468
115722314
115811158
115911159
116333489
116433492
116522330
116622332
116733501
116822336
116933507
117022340
117122342
117211172
117333519
117444696
117533525
117611176
117722354
117833534
117911179
118044720
118122362
118322366
118455920
118567110
118644744
118733561
118833564
118967134
119078330
119133573
119255960
119355965
119422388
119544780
119611196
119711197
119844792
119944796
120011200
120133603
120244808
120311203
120433612
120544820
120633618
120767242
120844832
120944836
121033630
121178477
121233636
121356065
121433642
121533645
121633648
121744868
121822436
121978533
122033660
122167326
122233666
122356115
122411224
122533675
122644904
122711227
122822456
123122462
123222464
123333699
123444936
123556175
123722474
123811238
123911239
124044960
124144964
124233726
124322486
124411244
124511245
124622492
124733741
124856240
124911249
125033750
125133753
125211252
125445016
125622512
125911259
126122522
126411264
126522530
126711267
126822536
126945076
127067620
127178897
127267632
127378911
127467644
127556375
127633828
127711277
127833834
127922558
128045120
128222564
128311283
128522570
128611286
128822576
128922578
129045160
129133873
129222584
129322586
129411294
129556475
129633888
129722594
129822596
129911299
130033900
130256510
130356515
130433912
130745228
130833924
130911309
131011310
131111311
131311313
131411314
131511315
131611316
131733951
131822636
131911319
132011320
132122642
132222644
132322646
132411324
132579275
132645304
1327810616
132822656
132945316
133067980
133122662
133211332
133345332
133468004
1335912015
1336810688
13371013370
133856690
133911339
134068040
134156705
134234026
134322686
134434032
134534035
134656730
134734041
134845392
134911349
135045400
135122702
135234056
135434062
135511355
135645424
135745428
135834074
135956795
136022720
136122722
136334089
136522730
136634098
136722734
136822736
136911369
137011370
137122742
137311373
137422748
137511375
137611376
137734131
137922758
138011380
138122762
138268292
138322766
138422768
138511385
138622772
138711387
138911389
139011390
139211392
139322786
139411394
139822796
139911399
140311403
140422808
140522810
140634218
140811408
140922818
141211412
141411414
141611416
141711417
142211422
142422848
142522850
142734281
142811428
142911429
143011430
144311443
144411444
144511445
144911449
145422908
145622912
145722914
145911459
146011460
146122922
146311463
146522930
146722934
146934407
147011470
147122942
147257360
147334419
147411474
147534425
147611476
147711477
147811478
147922958
148022960
148211482
148411484
148511485
148634458
148857440
148911489
149011490
149111491
149334479
149411494
149722994
149945996
150011500
150134503
150223004
150511505
Total10021239200
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21020
31133
41560
5840
61060
7642
8540
91199
10330
11555
12896
1310130
148112
1510150
168128
178136
189162
1911209
2014280
2111231
2215330
238184
248192
256150
268208
278216
287196
298232
306180
315155
326192
335165
345170
355175
36272
375185
38276
395195
40280
41141
425210
434172
443132
456270
46292
47294
483144
494196
504200
513153
524208
532106
544216
552110
572114
583174
593177
60160
612122
622124
634252
642128
656390
662132
67167
696414
706420
712142
737511
744296
75175
762152
773231
783234
793237
805400
812162
82182
83183
842168
856510
863258
875435
887616
893267
903270
914364
924368
942188
95195
963288
97197
983294
995495
1003300
1012202
1023306
1036618
1041104
1054420
1062212
1072214
1086648
1094436
1104440
1111111
1124448
1134452
1143342
1154460
1162232
1172234
1193357
1203360
1213363
1223366
1232246
1242248
1262252
1272254
1301130
1312262
1321132
1336798
1342268
1351135
1363408
1374548
1381138
1391139
1401140
1414564
1422284
1432286
1441144
1452290
1461146
1474588
1492298
1512302
1524608
1541154
1551155
1563468
1572314
1594636
1601160
1612322
1622324
1641164
1664664
1672334
1681168
1692338
1701170
1712342
1722344
1732346
1743522
1752350
1762352
1772354
1791179
1802360
1811181
1821182
1832366
1841184
1853555
1862372
1872374
1882376
1894756
1904760
19161146
1923576
1932386
1942388
1951195
1962392
1973591
1983594
1992398
2002400
2011201
2021202
2033609
2044816
20561230
2063618
2072414
2084832
2093627
2102420
2111211
2124848
2133639
2142428
21551075
21661296
2171217
2183654
2191219
2204880
22161326
2223666
2232446
2244896
2253675
2264904
2273681
2284912
2293687
2304920
2313693
2324928
23361398
23451170
2353705
2362472
23771659
23892142
23951195
24071680
2412482
242102420
2434972
2444976
24581960
24661476
24871736
249133237
25041000
251112761
25261512
253102530
254102540
255102550
256164096
257133341
258184644
259143626
26051161330160
2781278
Total61181454515
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05116
11000
81
Total6117
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343430266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882460d97b545e5
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3436306439376235
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_13.json b/autobahn/client/tungstenite_case_13_3_13.json new file mode 100644 index 0000000..8d0f97a --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_13.json @@ -0,0 +1,751 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 440, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 1942, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=440&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: SskPTGEMSNbsMiWs5v7Efg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: v5nyyo9s3HgzYgnKlpe4MqY9Yug=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1042": 3, + "1043": 2, + "1044": 2, + "1046": 1, + "1047": 3, + "1048": 3, + "1049": 2, + "1050": 4, + "1051": 5, + "1052": 2, + "1053": 5, + "1054": 3, + "1055": 2, + "1056": 2, + "1057": 6, + "1059": 6, + "1060": 1, + "1062": 2, + "1063": 2, + "1064": 2, + "1065": 1, + "1067": 1, + "1068": 1, + "1070": 1, + "1071": 2, + "1072": 2, + "1073": 4, + "1074": 10, + "1075": 8, + "1076": 10, + "1077": 6, + "1078": 2, + "1079": 9, + "1080": 7, + "1081": 2, + "1082": 5, + "1084": 5, + "1085": 3, + "1086": 2, + "1087": 4, + "1088": 6, + "1089": 3, + "1090": 4, + "1091": 6, + "1092": 9, + "1093": 3, + "1094": 5, + "1095": 2, + "1096": 4, + "1097": 6, + "1098": 5, + "1099": 6, + "1100": 5, + "1101": 3, + "1102": 5, + "1103": 3, + "1104": 4, + "1105": 1, + "1106": 1, + "1107": 2, + "1108": 1, + "1109": 5, + "1110": 2, + "1111": 1, + "1112": 2, + "1115": 2, + "1116": 1, + "1117": 1, + "1121": 1, + "1122": 3, + "1123": 2, + "1124": 1, + "1126": 1, + "1127": 2, + "1128": 2, + "1130": 3, + "1131": 2, + "1132": 1, + "1133": 3, + "1135": 1, + "1137": 1, + "1140": 1, + "1142": 1, + "1143": 3, + "1144": 1, + "1145": 1, + "1146": 1, + "1147": 1, + "1149": 2, + "1152": 2, + "1153": 2, + "1154": 1, + "1155": 2, + "1156": 3, + "1157": 2, + "1158": 1, + "1159": 1, + "1163": 3, + "1164": 3, + "1165": 2, + "1166": 2, + "1167": 3, + "1168": 2, + "1169": 3, + "1170": 2, + "1171": 2, + "1172": 1, + "1173": 3, + "1174": 4, + "1175": 3, + "1176": 1, + "1177": 2, + "1178": 3, + "1179": 1, + "1180": 4, + "1181": 2, + "1183": 2, + "1184": 5, + "1185": 6, + "1186": 4, + "1187": 3, + "1188": 3, + "1189": 6, + "1190": 7, + "1191": 3, + "1192": 5, + "1193": 5, + "1194": 2, + "1195": 4, + "1196": 1, + "1197": 1, + "1198": 4, + "1199": 4, + "1200": 1, + "1201": 3, + "1202": 4, + "1203": 1, + "1204": 3, + "1205": 4, + "1206": 3, + "1207": 6, + "1208": 4, + "1209": 4, + "1210": 3, + "1211": 7, + "1212": 3, + "1213": 5, + "1214": 3, + "1215": 3, + "1216": 3, + "1217": 4, + "1218": 2, + "1219": 7, + "1220": 3, + "1221": 6, + "1222": 3, + "1223": 5, + "1224": 1, + "1225": 3, + "1226": 4, + "1227": 1, + "1228": 2, + "1231": 2, + "1232": 2, + "1233": 3, + "1234": 4, + "1235": 5, + "1237": 2, + "1238": 1, + "1239": 1, + "1240": 4, + "1241": 4, + "1242": 3, + "1243": 2, + "1244": 1, + "1245": 1, + "1246": 2, + "1247": 3, + "1248": 5, + "1249": 1, + "1250": 3, + "1251": 3, + "1252": 1, + "1254": 4, + "1256": 2, + "1259": 1, + "1261": 2, + "1264": 1, + "1265": 2, + "1267": 1, + "1268": 2, + "1269": 4, + "1270": 6, + "1271": 7, + "1272": 6, + "1273": 7, + "1274": 6, + "1275": 5, + "1276": 3, + "1277": 1, + "1278": 3, + "1279": 2, + "1280": 4, + "1282": 2, + "1283": 1, + "1285": 2, + "1286": 1, + "1288": 2, + "1289": 2, + "1290": 4, + "1291": 3, + "1292": 2, + "1293": 2, + "1294": 1, + "1295": 5, + "1296": 3, + "1297": 2, + "1298": 2, + "1299": 1, + "1300": 3, + "1302": 5, + "1303": 5, + "1304": 3, + "1307": 4, + "1308": 3, + "1309": 1, + "1310": 1, + "1311": 1, + "1313": 1, + "1314": 1, + "1315": 1, + "1316": 1, + "1317": 3, + "1318": 2, + "1319": 1, + "1320": 1, + "1321": 2, + "1322": 2, + "1323": 2, + "1324": 1, + "1325": 7, + "1326": 4, + "1327": 8, + "1328": 2, + "1329": 4, + "1330": 6, + "1331": 2, + "1332": 1, + "1333": 4, + "1334": 6, + "1335": 9, + "1336": 8, + "1337": 10, + "1338": 5, + "1339": 1, + "1340": 6, + "1341": 5, + "1342": 3, + "1343": 2, + "1344": 3, + "1345": 3, + "1346": 5, + "1347": 3, + "1348": 4, + "1349": 1, + "1350": 4, + "1351": 2, + "1352": 3, + "1354": 3, + "1355": 1, + "1356": 4, + "1357": 4, + "1358": 3, + "1359": 5, + "1360": 2, + "1361": 2, + "1363": 3, + "1365": 2, + "1366": 3, + "1367": 2, + "1368": 2, + "1369": 1, + "1370": 1, + "1371": 2, + "1373": 1, + "1374": 2, + "1375": 1, + "1376": 1, + "1377": 3, + "1379": 2, + "1380": 1, + "1381": 2, + "1382": 6, + "1383": 2, + "1384": 2, + "1385": 1, + "1386": 2, + "1387": 1, + "1389": 1, + "1390": 1, + "1392": 1, + "1393": 2, + "1394": 1, + "1398": 2, + "1399": 1, + "1403": 1, + "1404": 2, + "1405": 2, + "1406": 3, + "1408": 1, + "1409": 2, + "1412": 1, + "1414": 1, + "1416": 1, + "1417": 1, + "1422": 1, + "1424": 2, + "1425": 2, + "1427": 3, + "1428": 1, + "1429": 1, + "1430": 1, + "1443": 1, + "1444": 1, + "1445": 1, + "1449": 1, + "1454": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 1, + "1461": 2, + "1463": 1, + "1465": 2, + "1467": 2, + "1469": 3, + "1470": 1, + "1471": 2, + "1472": 5, + "1473": 3, + "1474": 1, + "1475": 3, + "1476": 1, + "1477": 1, + "1478": 1, + "1479": 2, + "1480": 2, + "1482": 1, + "1484": 1, + "1485": 1, + "1486": 3, + "1488": 5, + "1489": 1, + "1490": 1, + "1491": 1, + "1493": 3, + "1494": 1, + "1497": 2, + "1499": 4, + "1500": 1, + "1501": 3, + "1502": 2, + "1505": 1 + }, + "started": "2025-09-11T20:12:28.280Z", + "trafficStats": { + "incomingCompressionRatio": 0.03756515502929687, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1230935, + "incomingOctetsWireLevel": 1238935, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.006499124649148817, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1454233, + "outgoingWebSocketFrames": 6116, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016331379969459034, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "0": 5116, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 10, + "3": 11, + "4": 15, + "5": 8, + "6": 10, + "7": 6, + "8": 5, + "9": 11, + "10": 3, + "11": 5, + "12": 8, + "13": 10, + "14": 8, + "15": 10, + "16": 8, + "17": 8, + "18": 9, + "19": 11, + "20": 14, + "21": 11, + "22": 15, + "23": 8, + "24": 8, + "25": 6, + "26": 8, + "27": 8, + "28": 7, + "29": 8, + "30": 6, + "31": 5, + "32": 6, + "33": 5, + "34": 5, + "35": 5, + "36": 2, + "37": 5, + "38": 2, + "39": 5, + "40": 2, + "41": 1, + "42": 5, + "43": 4, + "44": 3, + "45": 6, + "46": 2, + "47": 2, + "48": 3, + "49": 4, + "50": 4, + "51": 3, + "52": 4, + "53": 2, + "54": 4, + "55": 2, + "57": 2, + "58": 3, + "59": 3, + "60": 1, + "61": 2, + "62": 2, + "63": 4, + "64": 2, + "65": 6, + "66": 2, + "67": 1, + "69": 6, + "70": 6, + "71": 2, + "73": 7, + "74": 4, + "75": 1, + "76": 2, + "77": 3, + "78": 3, + "79": 3, + "80": 5, + "81": 2, + "82": 1, + "83": 1, + "84": 2, + "85": 6, + "86": 3, + "87": 5, + "88": 7, + "89": 3, + "90": 3, + "91": 4, + "92": 4, + "94": 2, + "95": 1, + "96": 3, + "97": 1, + "98": 3, + "99": 5, + "100": 3, + "101": 2, + "102": 3, + "103": 6, + "104": 1, + "105": 4, + "106": 2, + "107": 2, + "108": 6, + "109": 4, + "110": 4, + "111": 1, + "112": 4, + "113": 4, + "114": 3, + "115": 4, + "116": 2, + "117": 2, + "119": 3, + "120": 3, + "121": 3, + "122": 3, + "123": 2, + "124": 2, + "126": 2, + "127": 2, + "130": 1, + "131": 2, + "132": 1, + "133": 6, + "134": 2, + "135": 1, + "136": 3, + "137": 4, + "138": 1, + "139": 1, + "140": 1, + "141": 4, + "142": 2, + "143": 2, + "144": 1, + "145": 2, + "146": 1, + "147": 4, + "149": 2, + "151": 2, + "152": 4, + "154": 1, + "155": 1, + "156": 3, + "157": 2, + "159": 4, + "160": 1, + "161": 2, + "162": 2, + "164": 1, + "166": 4, + "167": 2, + "168": 1, + "169": 2, + "170": 1, + "171": 2, + "172": 2, + "173": 2, + "174": 3, + "175": 2, + "176": 2, + "177": 2, + "179": 1, + "180": 2, + "181": 1, + "182": 1, + "183": 2, + "184": 1, + "185": 3, + "186": 2, + "187": 2, + "188": 2, + "189": 4, + "190": 4, + "191": 6, + "192": 3, + "193": 2, + "194": 2, + "195": 1, + "196": 2, + "197": 3, + "198": 3, + "199": 2, + "200": 2, + "201": 1, + "202": 1, + "203": 3, + "204": 4, + "205": 6, + "206": 3, + "207": 2, + "208": 4, + "209": 3, + "210": 2, + "211": 1, + "212": 4, + "213": 3, + "214": 2, + "215": 5, + "216": 6, + "217": 1, + "218": 3, + "219": 1, + "220": 4, + "221": 6, + "222": 3, + "223": 2, + "224": 4, + "225": 3, + "226": 4, + "227": 3, + "228": 4, + "229": 3, + "230": 4, + "231": 3, + "232": 4, + "233": 6, + "234": 5, + "235": 3, + "236": 2, + "237": 7, + "238": 9, + "239": 5, + "240": 7, + "241": 2, + "242": 10, + "243": 4, + "244": 4, + "245": 8, + "246": 6, + "248": 7, + "249": 13, + "250": 4, + "251": 11, + "252": 6, + "253": 10, + "254": 10, + "255": 10, + "256": 16, + "257": 13, + "258": 18, + "259": 14, + "260": 5116, + "278": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343430266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882460d97b545e5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "460d97b5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_14.html b/autobahn/client/tungstenite_case_13_3_14.html new file mode 100644 index 0000000..2f2baf1 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_14.html @@ -0,0 +1,693 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.14 : Pass - 3545 ms @ 2025-09-11T20:12:30.223Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=441&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: nAuIk2Y2STMGDG5BVrEz5g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 51J1Ig2knSPw3FV0Phce0gpBbQw=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
230512305
230636918
230836924
230949236
2310511550
231112311
231236936
231324626
231436942
231512315
231724634
2318613908
2319613914
23201637120
23211534815
2322920898
2323511615
2324716268
2325511625
232649304
232736981
232836984
233024660
233136993
233224664
233312333
233412334
233537005
233612336
233712337
233812338
234049360
2341614046
234249368
23431228116
2344716408
23451330485
23461023460
23471228164
23481535220
23491125839
23501228200
23511228212
23521023520
23531125883
23541125894
23551432970
23561023560
2357921213
2358818864
23591228308
23601740120
23611535415
23621433068
23631740171
23641433096
236549460
2366716562
236712367
236812368
236949476
237037110
2371511855
237237116
237312373
237524750
237612376
237812378
237937137
238024760
238112381
2382614292
238337149
238424768
238512385
238712387
238812388
238912389
239037170
239112391
239312393
239412394
239612396
2398511990
239912399
240037200
240112401
240224804
240312403
241112411
241237236
241312413
241424828
241512415
2416512080
241724834
2418512090
241949676
24201536300
24211433894
2422819376
24231126653
2424716968
24251229100
2426921834
2427512135
242849712
242949716
243049720
243124862
2432512160
243324866
243412434
244612446
244824896
244912449
245024900
245137353
245212452
245312453
245424908
245612456
245724914
245924918
246024920
246312463
246412464
246612466
246912469
247012470
247124942
247212472
247412474
247924958
248012480
248124962
248237446
248324966
248412484
248512485
248737461
248812488
248937467
249012490
249124982
249237476
249337479
249437482
249537485
249637488
249724994
249837494
249937497
2500512500
250112501
250412504
250512505
250625012
250712507
251012510
251137533
2512512560
251325026
251425028
251512515
251625032
251712517
252012520
252112521
252212522
252325046
252412524
252512525
252625052
252712527
253312533
2534615204
253525070
25361025360
2537717759
2538410152
2539512695
2540717780
2541922869
2542512710
254325086
254437632
254612546
2547512735
254825096
254937647
255037650
255125102
255237656
255337659
2554717878
255525110
255637668
255737671
2559410236
256012560
256112561
256212562
256312563
256412564
256512565
256612566
256812568
256912569
257012570
257125142
257325146
257637728
257912579
258025160
258125162
258312583
258412584
258512585
258825176
259012590
2592410368
259325186
259425188
259625192
259812598
259912599
260012600
260125202
260312603
260512605
260612606
260737821
260937827
261025220
261125222
261212612
261312613
261512615
261612616
262312623
262412624
262812628
263012630
263112631
263212632
263512635
263712637
263825276
263937917
264012640
264125282
264337929
264412644
264625292
264912649
2651410604
265237956
265325306
2654410616
2655410620
2656615936
2657513285
2658821264
26591026590
26601437240
26612053220
2662821296
2663513315
2664410656
266512665
266612666
268612686
Total10022446541
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21734
32163
428112
525125
622132
726182
820160
934306
1020200
1114154
12896
139117
1417238
1516240
1617272
1716272
1810180
199171
205100
21363
22122
23369
24496
25250
28256
29129
31131
32132
33266
35135
36136
37274
393117
414164
42142
444176
453135
46292
48296
49149
50150
51151
52152
54154
60160
61161
642128
65165
66166
67167
682136
69169
702140
74174
77177
79179
813243
822164
832166
845420
858680
865430
877609
884352
898712
902180
913273
923276
935465
9410940
95111045
96161536
9710970
98111078
996594
100191900
101121212
1026612
1039927
104121248
105121260
106121272
1079963
1087756
1099981
1107770
1116666
1124448
1134452
1142228
1153345
1161116
1176702
118111298
1198952
120131560
121101210
12291098
1235615
1242248
1253375
1411141
2412482
2421242
2432486
24451220
2454980
24661476
24751235
24861488
249122988
250174250
251225522
252266552
253287084
254174318
255358925
256194864
257317967
258205160
259235957
260107192786940
2781278
Total117212897815
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
010719
11000
81
Total11720
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343431266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820309dd6d00e1
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3033303964643664
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_14.json b/autobahn/client/tungstenite_case_13_3_14.json new file mode 100644 index 0000000..e09bd10 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_14.json @@ -0,0 +1,540 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 441, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 3545, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=441&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: nAuIk2Y2STMGDG5BVrEz5g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 51J1Ig2knSPw3FV0Phce0gpBbQw=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2305": 1, + "2306": 3, + "2308": 3, + "2309": 4, + "2310": 5, + "2311": 1, + "2312": 3, + "2313": 2, + "2314": 3, + "2315": 1, + "2317": 2, + "2318": 6, + "2319": 6, + "2320": 16, + "2321": 15, + "2322": 9, + "2323": 5, + "2324": 7, + "2325": 5, + "2326": 4, + "2327": 3, + "2328": 3, + "2330": 2, + "2331": 3, + "2332": 2, + "2333": 1, + "2334": 1, + "2335": 3, + "2336": 1, + "2337": 1, + "2338": 1, + "2340": 4, + "2341": 6, + "2342": 4, + "2343": 12, + "2344": 7, + "2345": 13, + "2346": 10, + "2347": 12, + "2348": 15, + "2349": 11, + "2350": 12, + "2351": 12, + "2352": 10, + "2353": 11, + "2354": 11, + "2355": 14, + "2356": 10, + "2357": 9, + "2358": 8, + "2359": 12, + "2360": 17, + "2361": 15, + "2362": 14, + "2363": 17, + "2364": 14, + "2365": 4, + "2366": 7, + "2367": 1, + "2368": 1, + "2369": 4, + "2370": 3, + "2371": 5, + "2372": 3, + "2373": 1, + "2375": 2, + "2376": 1, + "2378": 1, + "2379": 3, + "2380": 2, + "2381": 1, + "2382": 6, + "2383": 3, + "2384": 2, + "2385": 1, + "2387": 1, + "2388": 1, + "2389": 1, + "2390": 3, + "2391": 1, + "2393": 1, + "2394": 1, + "2396": 1, + "2398": 5, + "2399": 1, + "2400": 3, + "2401": 1, + "2402": 2, + "2403": 1, + "2411": 1, + "2412": 3, + "2413": 1, + "2414": 2, + "2415": 1, + "2416": 5, + "2417": 2, + "2418": 5, + "2419": 4, + "2420": 15, + "2421": 14, + "2422": 8, + "2423": 11, + "2424": 7, + "2425": 12, + "2426": 9, + "2427": 5, + "2428": 4, + "2429": 4, + "2430": 4, + "2431": 2, + "2432": 5, + "2433": 2, + "2434": 1, + "2446": 1, + "2448": 2, + "2449": 1, + "2450": 2, + "2451": 3, + "2452": 1, + "2453": 1, + "2454": 2, + "2456": 1, + "2457": 2, + "2459": 2, + "2460": 2, + "2463": 1, + "2464": 1, + "2466": 1, + "2469": 1, + "2470": 1, + "2471": 2, + "2472": 1, + "2474": 1, + "2479": 2, + "2480": 1, + "2481": 2, + "2482": 3, + "2483": 2, + "2484": 1, + "2485": 1, + "2487": 3, + "2488": 1, + "2489": 3, + "2490": 1, + "2491": 2, + "2492": 3, + "2493": 3, + "2494": 3, + "2495": 3, + "2496": 3, + "2497": 2, + "2498": 3, + "2499": 3, + "2500": 5, + "2501": 1, + "2504": 1, + "2505": 1, + "2506": 2, + "2507": 1, + "2510": 1, + "2511": 3, + "2512": 5, + "2513": 2, + "2514": 2, + "2515": 1, + "2516": 2, + "2517": 1, + "2520": 1, + "2521": 1, + "2522": 1, + "2523": 2, + "2524": 1, + "2525": 1, + "2526": 2, + "2527": 1, + "2533": 1, + "2534": 6, + "2535": 2, + "2536": 10, + "2537": 7, + "2538": 4, + "2539": 5, + "2540": 7, + "2541": 9, + "2542": 5, + "2543": 2, + "2544": 3, + "2546": 1, + "2547": 5, + "2548": 2, + "2549": 3, + "2550": 3, + "2551": 2, + "2552": 3, + "2553": 3, + "2554": 7, + "2555": 2, + "2556": 3, + "2557": 3, + "2559": 4, + "2560": 1, + "2561": 1, + "2562": 1, + "2563": 1, + "2564": 1, + "2565": 1, + "2566": 1, + "2568": 1, + "2569": 1, + "2570": 1, + "2571": 2, + "2573": 2, + "2576": 3, + "2579": 1, + "2580": 2, + "2581": 2, + "2583": 1, + "2584": 1, + "2585": 1, + "2588": 2, + "2590": 1, + "2592": 4, + "2593": 2, + "2594": 2, + "2596": 2, + "2598": 1, + "2599": 1, + "2600": 1, + "2601": 2, + "2603": 1, + "2605": 1, + "2606": 1, + "2607": 3, + "2609": 3, + "2610": 2, + "2611": 2, + "2612": 1, + "2613": 1, + "2615": 1, + "2616": 1, + "2623": 1, + "2624": 1, + "2628": 1, + "2630": 1, + "2631": 1, + "2632": 1, + "2635": 1, + "2637": 1, + "2638": 2, + "2639": 3, + "2640": 1, + "2641": 2, + "2643": 3, + "2644": 1, + "2646": 2, + "2649": 1, + "2651": 4, + "2652": 3, + "2653": 2, + "2654": 4, + "2655": 4, + "2656": 6, + "2657": 5, + "2658": 8, + "2659": 10, + "2660": 14, + "2661": 20, + "2662": 8, + "2663": 5, + "2664": 4, + "2665": 1, + "2666": 1, + "2686": 1 + }, + "started": "2025-09-11T20:12:30.223Z", + "trafficStats": { + "incomingCompressionRatio": 0.03720513916015625, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2438276, + "incomingOctetsWireLevel": 2446276, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0032810067441093626, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2897533, + "outgoingWebSocketFrames": 11719, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015932159294945854, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "0": 10719, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 17, + "3": 21, + "4": 28, + "5": 25, + "6": 22, + "7": 26, + "8": 20, + "9": 34, + "10": 20, + "11": 14, + "12": 8, + "13": 9, + "14": 17, + "15": 16, + "16": 17, + "17": 16, + "18": 10, + "19": 9, + "20": 5, + "21": 3, + "22": 1, + "23": 3, + "24": 4, + "25": 2, + "28": 2, + "29": 1, + "31": 1, + "32": 1, + "33": 2, + "35": 1, + "36": 1, + "37": 2, + "39": 3, + "41": 4, + "42": 1, + "44": 4, + "45": 3, + "46": 2, + "48": 2, + "49": 1, + "50": 1, + "51": 1, + "52": 1, + "54": 1, + "60": 1, + "61": 1, + "64": 2, + "65": 1, + "66": 1, + "67": 1, + "68": 2, + "69": 1, + "70": 2, + "74": 1, + "77": 1, + "79": 1, + "81": 3, + "82": 2, + "83": 2, + "84": 5, + "85": 8, + "86": 5, + "87": 7, + "88": 4, + "89": 8, + "90": 2, + "91": 3, + "92": 3, + "93": 5, + "94": 10, + "95": 11, + "96": 16, + "97": 10, + "98": 11, + "99": 6, + "100": 19, + "101": 12, + "102": 6, + "103": 9, + "104": 12, + "105": 12, + "106": 12, + "107": 9, + "108": 7, + "109": 9, + "110": 7, + "111": 6, + "112": 4, + "113": 4, + "114": 2, + "115": 3, + "116": 1, + "117": 6, + "118": 11, + "119": 8, + "120": 13, + "121": 10, + "122": 9, + "123": 5, + "124": 2, + "125": 3, + "141": 1, + "241": 2, + "242": 1, + "243": 2, + "244": 5, + "245": 4, + "246": 6, + "247": 5, + "248": 6, + "249": 12, + "250": 17, + "251": 22, + "252": 26, + "253": 28, + "254": 17, + "255": 35, + "256": 19, + "257": 31, + "258": 20, + "259": 23, + "260": 10719, + "278": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343431266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820309dd6d00e1" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0309dd6d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_15.html b/autobahn/client/tungstenite_case_13_3_15.html new file mode 100644 index 0000000..30f5e13 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_15.html @@ -0,0 +1,721 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.15 : Pass - 6541 ms @ 2025-09-11T20:12:33.770Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=442&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: nEH0TJAym/v4XQJqVTF8Hw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vrOalPL4ZWLapbQ2ezlH6RZkQEg=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
460714607
460914609
461014610
461114611
461414614
462029240
462114621
4623523115
4624523120
462514625
4626523130
4627313881
4628837024
4629732403
4630732410
4631732417
4632523160
4633418532
463429268
463514635
463614636
4637523185
463814638
464029280
464114641
465229304
465314653
465414654
465529310
465614656
4658313974
465929318
466214662
466314663
466414664
466514665
466729334
4668418672
4669314007
467414674
4676418704
467714677
4679523395
468014680
468114681
468214682
468314683
468414684
468629372
4687314061
468814688
468929378
469014690
469314693
469414694
469529390
469614696
470314703
470929418
4710418840
4711732977
471214712
471329426
471429428
471529430
4716628296
4717628302
471829436
471929438
472014720
4721418884
4722314166
472329446
472429448
472529450
472614726
4727418908
472829456
472914729
4730942570
4731314193
4732418928
473329466
473429468
473514735
4736314208
4737314211
4738733166
4739523695
4740628440
47411152151
4742628452
4743837944
474429488
474514745
474629492
474729494
4748314244
474929498
475314753
475414754
475614756
476029520
476429528
476514765
476614766
476814768
477114771
477614776
478014780
478114781
478214782
4783314349
478429568
4785419140
478829576
478914789
479214792
479414794
479614796
479714797
479814798
4799314397
4800419200
4801314403
480329606
480429608
480529610
480614806
480929618
481214812
481329626
481414814
481529630
481629632
4817314451
481829636
481929638
482014820
482214822
482514825
482729654
482829656
482914829
483014830
483229664
483329666
483429668
483514835
483614836
483729674
4838314514
4839419356
4840419360
4841419364
4842314526
484414844
484614846
484814848
485314853
485514855
4856314568
4857419428
48581048580
4859838872
48601258320
4861734027
4862838896
486314863
4864943776
48661048660
4867314601
4868524340
4869943821
4870629220
4871314613
4872734104
4873524365
487629752
487829756
487914879
4880524400
4882314646
4883314649
488429768
488514885
489014890
489514895
489814898
489914899
490129802
490329806
490429808
490529810
490614906
491214912
4913314739
491414914
491629832
491729834
4918524590
4919314757
4920314760
4921839368
4922734454
49231678768
49241154164
4925629550
4926629556
4927314781
49281049280
4929629574
4930314790
4931314793
4932524660
4933629598
4934629604
4935839480
4936524680
4937524685
49381154318
4939524695
494014940
4941314823
4942314826
4943524715
4944629664
4945314835
4946629676
4947944523
4948629688
4949839592
49501154450
49511049510
4952839616
49531154483
4954629724
4955629730
4956524780
49571259484
4958734706
49591259508
49601364480
496121104181
4962944658
4963839704
49641049640
4965524825
496614966
496714967
496929938
497029940
4971629826
4972524860
4973734811
4974839792
49751469650
4976734832
49771049770
4978524890
49792099580
4980944820
498129962
498214982
498329966
498429968
498529970
498614986
498714987
499114991
499214992
5004315012
5006420024
500815008
500915009
502215022
502315023
502415024
Total10024853761
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
326
4416
515
6212
7214
818
9218
10110
11333
12112
13339
14684
15230
16232
17234
23123
30130
31262
33133
34134
36136
37274
393117
40140
41141
42284
433129
449396
455225
463138
4710470
4810480
4915735
50201000
5114714
5216832
5314742
54211134
55261430
5617952
5711627
58251450
59211239
60241440
6116976
62251550
63241512
64241536
6512780
66171122
67191273
6813884
699621
70251750
71251775
72161152
7312876
7411814
758600
7610760
77131001
784312
796474
803240
81181
822164
832166
845420
853255
863258
875435
884352
89121068
9010900
917637
92111012
939837
942188
953285
972194
983294
99199
1121112
1131113
1141114
1163348
1172234
1191119
1271127
1302260
1992398
2001200
2011201
2021202
2032406
20451020
20571435
20651030
2074828
2081208
20961254
21081680
21161266
2124848
213112343
21481712
21571505
21661296
21761302
2184872
2194876
22051100
22151105
22271554
223173791
224163584
225143150
226132938
22761362
22861368
229102290
230163680
231133003
23292088
23361398
23461404
23561410
2362472
2374948
23851190
2394956
24061440
2413723
2432486
2442488
2462492
2481248
2491249
2513753
2533759
2542508
2561256
2582516
2591259
260217025642520
2781278
Total227045753788
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
021702
11000
81
Total22703
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343432266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822174e7d0229c
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3231373465376430
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_15.json b/autobahn/client/tungstenite_case_13_3_15.json new file mode 100644 index 0000000..d5cc8b8 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_15.json @@ -0,0 +1,568 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 442, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 6541, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=442&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: nEH0TJAym/v4XQJqVTF8Hw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vrOalPL4ZWLapbQ2ezlH6RZkQEg=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4607": 1, + "4609": 1, + "4610": 1, + "4611": 1, + "4614": 1, + "4620": 2, + "4621": 1, + "4623": 5, + "4624": 5, + "4625": 1, + "4626": 5, + "4627": 3, + "4628": 8, + "4629": 7, + "4630": 7, + "4631": 7, + "4632": 5, + "4633": 4, + "4634": 2, + "4635": 1, + "4636": 1, + "4637": 5, + "4638": 1, + "4640": 2, + "4641": 1, + "4652": 2, + "4653": 1, + "4654": 1, + "4655": 2, + "4656": 1, + "4658": 3, + "4659": 2, + "4662": 1, + "4663": 1, + "4664": 1, + "4665": 1, + "4667": 2, + "4668": 4, + "4669": 3, + "4674": 1, + "4676": 4, + "4677": 1, + "4679": 5, + "4680": 1, + "4681": 1, + "4682": 1, + "4683": 1, + "4684": 1, + "4686": 2, + "4687": 3, + "4688": 1, + "4689": 2, + "4690": 1, + "4693": 1, + "4694": 1, + "4695": 2, + "4696": 1, + "4703": 1, + "4709": 2, + "4710": 4, + "4711": 7, + "4712": 1, + "4713": 2, + "4714": 2, + "4715": 2, + "4716": 6, + "4717": 6, + "4718": 2, + "4719": 2, + "4720": 1, + "4721": 4, + "4722": 3, + "4723": 2, + "4724": 2, + "4725": 2, + "4726": 1, + "4727": 4, + "4728": 2, + "4729": 1, + "4730": 9, + "4731": 3, + "4732": 4, + "4733": 2, + "4734": 2, + "4735": 1, + "4736": 3, + "4737": 3, + "4738": 7, + "4739": 5, + "4740": 6, + "4741": 11, + "4742": 6, + "4743": 8, + "4744": 2, + "4745": 1, + "4746": 2, + "4747": 2, + "4748": 3, + "4749": 2, + "4753": 1, + "4754": 1, + "4756": 1, + "4760": 2, + "4764": 2, + "4765": 1, + "4766": 1, + "4768": 1, + "4771": 1, + "4776": 1, + "4780": 1, + "4781": 1, + "4782": 1, + "4783": 3, + "4784": 2, + "4785": 4, + "4788": 2, + "4789": 1, + "4792": 1, + "4794": 1, + "4796": 1, + "4797": 1, + "4798": 1, + "4799": 3, + "4800": 4, + "4801": 3, + "4803": 2, + "4804": 2, + "4805": 2, + "4806": 1, + "4809": 2, + "4812": 1, + "4813": 2, + "4814": 1, + "4815": 2, + "4816": 2, + "4817": 3, + "4818": 2, + "4819": 2, + "4820": 1, + "4822": 1, + "4825": 1, + "4827": 2, + "4828": 2, + "4829": 1, + "4830": 1, + "4832": 2, + "4833": 2, + "4834": 2, + "4835": 1, + "4836": 1, + "4837": 2, + "4838": 3, + "4839": 4, + "4840": 4, + "4841": 4, + "4842": 3, + "4844": 1, + "4846": 1, + "4848": 1, + "4853": 1, + "4855": 1, + "4856": 3, + "4857": 4, + "4858": 10, + "4859": 8, + "4860": 12, + "4861": 7, + "4862": 8, + "4863": 1, + "4864": 9, + "4866": 10, + "4867": 3, + "4868": 5, + "4869": 9, + "4870": 6, + "4871": 3, + "4872": 7, + "4873": 5, + "4876": 2, + "4878": 2, + "4879": 1, + "4880": 5, + "4882": 3, + "4883": 3, + "4884": 2, + "4885": 1, + "4890": 1, + "4895": 1, + "4898": 1, + "4899": 1, + "4901": 2, + "4903": 2, + "4904": 2, + "4905": 2, + "4906": 1, + "4912": 1, + "4913": 3, + "4914": 1, + "4916": 2, + "4917": 2, + "4918": 5, + "4919": 3, + "4920": 3, + "4921": 8, + "4922": 7, + "4923": 16, + "4924": 11, + "4925": 6, + "4926": 6, + "4927": 3, + "4928": 10, + "4929": 6, + "4930": 3, + "4931": 3, + "4932": 5, + "4933": 6, + "4934": 6, + "4935": 8, + "4936": 5, + "4937": 5, + "4938": 11, + "4939": 5, + "4940": 1, + "4941": 3, + "4942": 3, + "4943": 5, + "4944": 6, + "4945": 3, + "4946": 6, + "4947": 9, + "4948": 6, + "4949": 8, + "4950": 11, + "4951": 10, + "4952": 8, + "4953": 11, + "4954": 6, + "4955": 6, + "4956": 5, + "4957": 12, + "4958": 7, + "4959": 12, + "4960": 13, + "4961": 21, + "4962": 9, + "4963": 8, + "4964": 10, + "4965": 5, + "4966": 1, + "4967": 1, + "4969": 2, + "4970": 2, + "4971": 6, + "4972": 5, + "4973": 7, + "4974": 8, + "4975": 14, + "4976": 7, + "4977": 10, + "4978": 5, + "4979": 20, + "4980": 9, + "4981": 2, + "4982": 1, + "4983": 2, + "4984": 2, + "4985": 2, + "4986": 1, + "4987": 1, + "4991": 1, + "4992": 1, + "5004": 3, + "5006": 4, + "5008": 1, + "5009": 1, + "5022": 1, + "5023": 1, + "5024": 1 + }, + "started": "2025-09-11T20:12:33.770Z", + "trafficStats": { + "incomingCompressionRatio": 0.03696820068359375, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4845496, + "incomingOctetsWireLevel": 4853496, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016510177699042574, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5753506, + "outgoingWebSocketFrames": 22702, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01578503761764009, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "0": 21702, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 2, + "4": 4, + "5": 1, + "6": 2, + "7": 2, + "8": 1, + "9": 2, + "10": 1, + "11": 3, + "12": 1, + "13": 3, + "14": 6, + "15": 2, + "16": 2, + "17": 2, + "23": 1, + "30": 1, + "31": 2, + "33": 1, + "34": 1, + "36": 1, + "37": 2, + "39": 3, + "40": 1, + "41": 1, + "42": 2, + "43": 3, + "44": 9, + "45": 5, + "46": 3, + "47": 10, + "48": 10, + "49": 15, + "50": 20, + "51": 14, + "52": 16, + "53": 14, + "54": 21, + "55": 26, + "56": 17, + "57": 11, + "58": 25, + "59": 21, + "60": 24, + "61": 16, + "62": 25, + "63": 24, + "64": 24, + "65": 12, + "66": 17, + "67": 19, + "68": 13, + "69": 9, + "70": 25, + "71": 25, + "72": 16, + "73": 12, + "74": 11, + "75": 8, + "76": 10, + "77": 13, + "78": 4, + "79": 6, + "80": 3, + "81": 1, + "82": 2, + "83": 2, + "84": 5, + "85": 3, + "86": 3, + "87": 5, + "88": 4, + "89": 12, + "90": 10, + "91": 7, + "92": 11, + "93": 9, + "94": 2, + "95": 3, + "97": 2, + "98": 3, + "99": 1, + "112": 1, + "113": 1, + "114": 1, + "116": 3, + "117": 2, + "119": 1, + "127": 1, + "130": 2, + "199": 2, + "200": 1, + "201": 1, + "202": 1, + "203": 2, + "204": 5, + "205": 7, + "206": 5, + "207": 4, + "208": 1, + "209": 6, + "210": 8, + "211": 6, + "212": 4, + "213": 11, + "214": 8, + "215": 7, + "216": 6, + "217": 6, + "218": 4, + "219": 4, + "220": 5, + "221": 5, + "222": 7, + "223": 17, + "224": 16, + "225": 14, + "226": 13, + "227": 6, + "228": 6, + "229": 10, + "230": 16, + "231": 13, + "232": 9, + "233": 6, + "234": 6, + "235": 6, + "236": 2, + "237": 4, + "238": 5, + "239": 4, + "240": 6, + "241": 3, + "243": 2, + "244": 2, + "246": 2, + "248": 1, + "249": 1, + "251": 3, + "253": 3, + "254": 2, + "256": 1, + "258": 2, + "259": 1, + "260": 21702, + "278": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343432266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822174e7d0229c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2174e7d0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_16.html b/autobahn/client/tungstenite_case_13_3_16.html new file mode 100644 index 0000000..652a4da --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_16.html @@ -0,0 +1,722 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.16 : Pass - 6409 ms @ 2025-09-11T20:12:40.313Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=443&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: m00fg3FhdNbeu5OUpGXKRA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: eS6zQOI7xpx/LI5oV4o/N+WWlFs=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
460714607
460914609
461014610
461114611
461414614
462029240
462114621
4623523115
4624523120
462514625
4626523130
4627313881
4628837024
4629732403
4630732410
4631732417
4632523160
4633418532
463429268
463514635
463614636
4637523185
463814638
464029280
464114641
465229304
465314653
465414654
465529310
465614656
4658313974
465929318
466214662
466314663
466414664
466514665
466729334
4668418672
4669314007
467414674
4676418704
467714677
4679523395
468014680
468114681
468214682
468314683
468414684
468629372
4687314061
468814688
468929378
469014690
469314693
469414694
469529390
469614696
470314703
470929418
4710418840
4711732977
471214712
471329426
471429428
471529430
4716628296
4717628302
471829436
471929438
472014720
4721418884
4722314166
472329446
472429448
472529450
472614726
4727418908
472829456
472914729
4730942570
4731314193
4732418928
473329466
473429468
473514735
4736314208
4737314211
4738733166
4739523695
4740628440
47411152151
4742628452
4743837944
474429488
474514745
474629492
474729494
4748314244
474929498
475314753
475414754
475614756
476029520
476429528
476514765
476614766
476814768
477114771
477614776
478014780
478114781
478214782
4783314349
478429568
4785419140
478829576
478914789
479214792
479414794
479614796
479714797
479814798
4799314397
4800419200
4801314403
480329606
480429608
480529610
480614806
480929618
481214812
481329626
481414814
481529630
481629632
4817314451
481829636
481929638
482014820
482214822
482514825
482729654
482829656
482914829
483014830
483229664
483329666
483429668
483514835
483614836
483729674
4838314514
4839419356
4840419360
4841419364
4842314526
484414844
484614846
484814848
485314853
485514855
4856314568
4857419428
48581048580
4859838872
48601258320
4861734027
4862838896
486314863
4864943776
48661048660
4867314601
4868524340
4869943821
4870629220
4871314613
4872734104
4873524365
487629752
487829756
487914879
4880524400
4882314646
4883314649
488429768
488514885
489014890
489514895
489814898
489914899
490129802
490329806
490429808
490529810
490614906
491214912
4913314739
491414914
491629832
491729834
4918524590
4919314757
4920314760
4921839368
4922734454
49231678768
49241154164
4925629550
4926629556
4927314781
49281049280
4929629574
4930314790
4931314793
4932524660
4933629598
4934629604
4935839480
4936524680
4937524685
49381154318
4939524695
494014940
4941314823
4942314826
4943524715
4944629664
4945314835
4946629676
4947944523
4948629688
4949839592
49501154450
49511049510
4952839616
49531154483
4954629724
4955629730
4956524780
49571259484
4958734706
49591259508
49601364480
496121104181
4962944658
4963839704
49641049640
4965524825
496614966
496714967
496929938
497029940
4971629826
4972524860
4973734811
4974839792
49751469650
4976734832
49771049770
4978524890
49792099580
4980944820
498129962
498214982
498329966
498429968
498529970
498614986
498714987
499114991
499214992
5004315012
5006420024
500815008
500915009
502215022
502315023
502415024
Total10024853761
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2781278
4552910
4561456
4571457
4581458
4592918
46052300
46173227
46252310
46341852
4641464
46562790
46683728
46762802
46841872
469115159
47083760
47173297
47262832
47362838
47441896
47541900
47652380
47752385
47873346
479178143
480167680
481146734
482136266
48362898
48462904
485104850
486167776
487136331
48894392
48962934
49062940
49162946
4922984
49341972
49452470
49541980
49662976
49731491
4992998
50021000
50221004
5041504
5051505
50731521
50931527
51021020
5121512
51421028
5151515
51721034
51831554
5191519
52021040
52121042
5221522
52321046
5241524
52531575
5261526
52731581
52863168
52921058
53021060
53121062
5371537
5441544
54521090
5471547
5481548
5501550
55121102
55331659
5541554
5551555
55621112
55731671
55895022
55952795
56031680
561105610
562105620
563158445
5642011280
565147910
566169056
567147938
5682111928
5692614794
570179690
571116281
5722514300
5732112033
5742413776
575169200
5762514400
5772413848
5782413872
579126948
580179860
5811911039
582137566
58395247
5842514600
5852514625
586169376
587127044
588116468
58984712
590105900
591137683
59242368
59363558
59431782
5951595
59621192
59721194
59852990
59931797
60031800
60153005
60242408
603127236
604106040
60574235
606116666
60795463
60821216
60931827
61121222
61231836
6131613
6261626
6271627
6281628
63031890
63121262
6331633
6411641
64221284
102850005140000
Total60025688380
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05000
11000
81
Total6001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343433266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88825413ce8957fb
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3534313363653839
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_16.json b/autobahn/client/tungstenite_case_13_3_16.json new file mode 100644 index 0000000..a968b5f --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_16.json @@ -0,0 +1,569 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 443, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 6409, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=443&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: m00fg3FhdNbeu5OUpGXKRA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: eS6zQOI7xpx/LI5oV4o/N+WWlFs=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4607": 1, + "4609": 1, + "4610": 1, + "4611": 1, + "4614": 1, + "4620": 2, + "4621": 1, + "4623": 5, + "4624": 5, + "4625": 1, + "4626": 5, + "4627": 3, + "4628": 8, + "4629": 7, + "4630": 7, + "4631": 7, + "4632": 5, + "4633": 4, + "4634": 2, + "4635": 1, + "4636": 1, + "4637": 5, + "4638": 1, + "4640": 2, + "4641": 1, + "4652": 2, + "4653": 1, + "4654": 1, + "4655": 2, + "4656": 1, + "4658": 3, + "4659": 2, + "4662": 1, + "4663": 1, + "4664": 1, + "4665": 1, + "4667": 2, + "4668": 4, + "4669": 3, + "4674": 1, + "4676": 4, + "4677": 1, + "4679": 5, + "4680": 1, + "4681": 1, + "4682": 1, + "4683": 1, + "4684": 1, + "4686": 2, + "4687": 3, + "4688": 1, + "4689": 2, + "4690": 1, + "4693": 1, + "4694": 1, + "4695": 2, + "4696": 1, + "4703": 1, + "4709": 2, + "4710": 4, + "4711": 7, + "4712": 1, + "4713": 2, + "4714": 2, + "4715": 2, + "4716": 6, + "4717": 6, + "4718": 2, + "4719": 2, + "4720": 1, + "4721": 4, + "4722": 3, + "4723": 2, + "4724": 2, + "4725": 2, + "4726": 1, + "4727": 4, + "4728": 2, + "4729": 1, + "4730": 9, + "4731": 3, + "4732": 4, + "4733": 2, + "4734": 2, + "4735": 1, + "4736": 3, + "4737": 3, + "4738": 7, + "4739": 5, + "4740": 6, + "4741": 11, + "4742": 6, + "4743": 8, + "4744": 2, + "4745": 1, + "4746": 2, + "4747": 2, + "4748": 3, + "4749": 2, + "4753": 1, + "4754": 1, + "4756": 1, + "4760": 2, + "4764": 2, + "4765": 1, + "4766": 1, + "4768": 1, + "4771": 1, + "4776": 1, + "4780": 1, + "4781": 1, + "4782": 1, + "4783": 3, + "4784": 2, + "4785": 4, + "4788": 2, + "4789": 1, + "4792": 1, + "4794": 1, + "4796": 1, + "4797": 1, + "4798": 1, + "4799": 3, + "4800": 4, + "4801": 3, + "4803": 2, + "4804": 2, + "4805": 2, + "4806": 1, + "4809": 2, + "4812": 1, + "4813": 2, + "4814": 1, + "4815": 2, + "4816": 2, + "4817": 3, + "4818": 2, + "4819": 2, + "4820": 1, + "4822": 1, + "4825": 1, + "4827": 2, + "4828": 2, + "4829": 1, + "4830": 1, + "4832": 2, + "4833": 2, + "4834": 2, + "4835": 1, + "4836": 1, + "4837": 2, + "4838": 3, + "4839": 4, + "4840": 4, + "4841": 4, + "4842": 3, + "4844": 1, + "4846": 1, + "4848": 1, + "4853": 1, + "4855": 1, + "4856": 3, + "4857": 4, + "4858": 10, + "4859": 8, + "4860": 12, + "4861": 7, + "4862": 8, + "4863": 1, + "4864": 9, + "4866": 10, + "4867": 3, + "4868": 5, + "4869": 9, + "4870": 6, + "4871": 3, + "4872": 7, + "4873": 5, + "4876": 2, + "4878": 2, + "4879": 1, + "4880": 5, + "4882": 3, + "4883": 3, + "4884": 2, + "4885": 1, + "4890": 1, + "4895": 1, + "4898": 1, + "4899": 1, + "4901": 2, + "4903": 2, + "4904": 2, + "4905": 2, + "4906": 1, + "4912": 1, + "4913": 3, + "4914": 1, + "4916": 2, + "4917": 2, + "4918": 5, + "4919": 3, + "4920": 3, + "4921": 8, + "4922": 7, + "4923": 16, + "4924": 11, + "4925": 6, + "4926": 6, + "4927": 3, + "4928": 10, + "4929": 6, + "4930": 3, + "4931": 3, + "4932": 5, + "4933": 6, + "4934": 6, + "4935": 8, + "4936": 5, + "4937": 5, + "4938": 11, + "4939": 5, + "4940": 1, + "4941": 3, + "4942": 3, + "4943": 5, + "4944": 6, + "4945": 3, + "4946": 6, + "4947": 9, + "4948": 6, + "4949": 8, + "4950": 11, + "4951": 10, + "4952": 8, + "4953": 11, + "4954": 6, + "4955": 6, + "4956": 5, + "4957": 12, + "4958": 7, + "4959": 12, + "4960": 13, + "4961": 21, + "4962": 9, + "4963": 8, + "4964": 10, + "4965": 5, + "4966": 1, + "4967": 1, + "4969": 2, + "4970": 2, + "4971": 6, + "4972": 5, + "4973": 7, + "4974": 8, + "4975": 14, + "4976": 7, + "4977": 10, + "4978": 5, + "4979": 20, + "4980": 9, + "4981": 2, + "4982": 1, + "4983": 2, + "4984": 2, + "4985": 2, + "4986": 1, + "4987": 1, + "4991": 1, + "4992": 1, + "5004": 3, + "5006": 4, + "5008": 1, + "5009": 1, + "5022": 1, + "5023": 1, + "5024": 1 + }, + "started": "2025-09-11T20:12:40.313Z", + "trafficStats": { + "incomingCompressionRatio": 0.03696820068359375, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4845496, + "incomingOctetsWireLevel": 4853496, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016510177699042574, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5688098, + "outgoingWebSocketFrames": 6000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0042372148222011696, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "0": 5000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "278": 1, + "455": 2, + "456": 1, + "457": 1, + "458": 1, + "459": 2, + "460": 5, + "461": 7, + "462": 5, + "463": 4, + "464": 1, + "465": 6, + "466": 8, + "467": 6, + "468": 4, + "469": 11, + "470": 8, + "471": 7, + "472": 6, + "473": 6, + "474": 4, + "475": 4, + "476": 5, + "477": 5, + "478": 7, + "479": 17, + "480": 16, + "481": 14, + "482": 13, + "483": 6, + "484": 6, + "485": 10, + "486": 16, + "487": 13, + "488": 9, + "489": 6, + "490": 6, + "491": 6, + "492": 2, + "493": 4, + "494": 5, + "495": 4, + "496": 6, + "497": 3, + "499": 2, + "500": 2, + "502": 2, + "504": 1, + "505": 1, + "507": 3, + "509": 3, + "510": 2, + "512": 1, + "514": 2, + "515": 1, + "517": 2, + "518": 3, + "519": 1, + "520": 2, + "521": 2, + "522": 1, + "523": 2, + "524": 1, + "525": 3, + "526": 1, + "527": 3, + "528": 6, + "529": 2, + "530": 2, + "531": 2, + "537": 1, + "544": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "551": 2, + "553": 3, + "554": 1, + "555": 1, + "556": 2, + "557": 3, + "558": 9, + "559": 5, + "560": 3, + "561": 10, + "562": 10, + "563": 15, + "564": 20, + "565": 14, + "566": 16, + "567": 14, + "568": 21, + "569": 26, + "570": 17, + "571": 11, + "572": 25, + "573": 21, + "574": 24, + "575": 16, + "576": 25, + "577": 24, + "578": 24, + "579": 12, + "580": 17, + "581": 19, + "582": 13, + "583": 9, + "584": 25, + "585": 25, + "586": 16, + "587": 12, + "588": 11, + "589": 8, + "590": 10, + "591": 13, + "592": 4, + "593": 6, + "594": 3, + "595": 1, + "596": 2, + "597": 2, + "598": 5, + "599": 3, + "600": 3, + "601": 5, + "602": 4, + "603": 12, + "604": 10, + "605": 7, + "606": 11, + "607": 9, + "608": 2, + "609": 3, + "611": 2, + "612": 3, + "613": 1, + "626": 1, + "627": 1, + "628": 1, + "630": 3, + "631": 2, + "633": 1, + "641": 1, + "642": 2, + "1028": 5000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343433266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825413ce8957fb" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5413ce89" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_17.html b/autobahn/client/tungstenite_case_13_3_17.html new file mode 100644 index 0000000..45abdbd --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_17.html @@ -0,0 +1,722 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.17 : Pass - 6544 ms @ 2025-09-11T20:12:46.723Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=444&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: cLiHgamDB+c91G3tvXLthg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iiIdw6mZ2nNsIR/kvt/pNzdDcZ0=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
460714607
460914609
461014610
461114611
461414614
462029240
462114621
4623523115
4624523120
462514625
4626523130
4627313881
4628837024
4629732403
4630732410
4631732417
4632523160
4633418532
463429268
463514635
463614636
4637523185
463814638
464029280
464114641
465229304
465314653
465414654
465529310
465614656
4658313974
465929318
466214662
466314663
466414664
466514665
466729334
4668418672
4669314007
467414674
4676418704
467714677
4679523395
468014680
468114681
468214682
468314683
468414684
468629372
4687314061
468814688
468929378
469014690
469314693
469414694
469529390
469614696
470314703
470929418
4710418840
4711732977
471214712
471329426
471429428
471529430
4716628296
4717628302
471829436
471929438
472014720
4721418884
4722314166
472329446
472429448
472529450
472614726
4727418908
472829456
472914729
4730942570
4731314193
4732418928
473329466
473429468
473514735
4736314208
4737314211
4738733166
4739523695
4740628440
47411152151
4742628452
4743837944
474429488
474514745
474629492
474729494
4748314244
474929498
475314753
475414754
475614756
476029520
476429528
476514765
476614766
476814768
477114771
477614776
478014780
478114781
478214782
4783314349
478429568
4785419140
478829576
478914789
479214792
479414794
479614796
479714797
479814798
4799314397
4800419200
4801314403
480329606
480429608
480529610
480614806
480929618
481214812
481329626
481414814
481529630
481629632
4817314451
481829636
481929638
482014820
482214822
482514825
482729654
482829656
482914829
483014830
483229664
483329666
483429668
483514835
483614836
483729674
4838314514
4839419356
4840419360
4841419364
4842314526
484414844
484614846
484814848
485314853
485514855
4856314568
4857419428
48581048580
4859838872
48601258320
4861734027
4862838896
486314863
4864943776
48661048660
4867314601
4868524340
4869943821
4870629220
4871314613
4872734104
4873524365
487629752
487829756
487914879
4880524400
4882314646
4883314649
488429768
488514885
489014890
489514895
489814898
489914899
490129802
490329806
490429808
490529810
490614906
491214912
4913314739
491414914
491629832
491729834
4918524590
4919314757
4920314760
4921839368
4922734454
49231678768
49241154164
4925629550
4926629556
4927314781
49281049280
4929629574
4930314790
4931314793
4932524660
4933629598
4934629604
4935839480
4936524680
4937524685
49381154318
4939524695
494014940
4941314823
4942314826
4943524715
4944629664
4945314835
4946629676
4947944523
4948629688
4949839592
49501154450
49511049510
4952839616
49531154483
4954629724
4955629730
4956524780
49571259484
4958734706
49591259508
49601364480
496121104181
4962944658
4963839704
49641049640
4965524825
496614966
496714967
496929938
497029940
4971629826
4972524860
4973734811
4974839792
49751469650
4976734832
49771049770
4978524890
49792099580
4980944820
498129962
498214982
498329966
498429968
498529970
498614986
498714987
499114991
499214992
5004315012
5006420024
500815008
500915009
502215022
502315023
502415024
Total10024853761
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2781278
147922958
148011480
148111481
148211482
148322966
148457420
1485710395
148657430
148745948
148811488
148968934
1490811920
149168946
149245968
14931116423
1494811952
1495710465
149668976
149768982
149845992
149945996
150057500
150157505
1502710514
15031725551
15041624064
15051421070
15061319578
150769042
150869048
15091015090
15101624160
15111319643
1512913608
151369078
151469084
151569090
151623032
151746068
151857590
151946076
152069120
152134563
152323046
152423048
152623052
152811528
152911529
153134593
153334599
153423068
153611536
153823076
153911539
154123082
154234626
154311543
154423088
154523090
154611546
154723094
154811548
154934647
155011550
155134653
155269312
155323106
155423108
155523110
156111561
156811568
156923138
157111571
157211572
157411574
157523150
157734731
157811578
157911579
158023160
158134743
1582914238
158357915
158434752
15851015850
15861015860
15871523805
15882031760
15891422246
15901625440
15911422274
15922133432
15932641418
15941727098
15951117545
15962539900
15972133537
15982438352
15991625584
16002540000
16012438424
16022438448
16031219236
16041727268
16051930495
16061320878
1607914463
16082540200
16092540225
16101625760
16111219332
16121117732
1613812904
16141016140
16151320995
161646464
161769702
161834854
161911619
162023240
162123242
162258110
162334869
162434872
162558125
162646504
16271219524
16281016280
1629711403
16301117930
1631914679
163223264
163334899
163523270
163634908
163711637
165011650
165111651
165211652
165434962
165523310
165711657
166511665
166623332
410010004100000
Total20025672380
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343434266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888257cbaa005423
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3537636261613030
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_17.json b/autobahn/client/tungstenite_case_13_3_17.json new file mode 100644 index 0000000..fbb971d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_17.json @@ -0,0 +1,569 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 444, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 6544, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=444&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: cLiHgamDB+c91G3tvXLthg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iiIdw6mZ2nNsIR/kvt/pNzdDcZ0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4607": 1, + "4609": 1, + "4610": 1, + "4611": 1, + "4614": 1, + "4620": 2, + "4621": 1, + "4623": 5, + "4624": 5, + "4625": 1, + "4626": 5, + "4627": 3, + "4628": 8, + "4629": 7, + "4630": 7, + "4631": 7, + "4632": 5, + "4633": 4, + "4634": 2, + "4635": 1, + "4636": 1, + "4637": 5, + "4638": 1, + "4640": 2, + "4641": 1, + "4652": 2, + "4653": 1, + "4654": 1, + "4655": 2, + "4656": 1, + "4658": 3, + "4659": 2, + "4662": 1, + "4663": 1, + "4664": 1, + "4665": 1, + "4667": 2, + "4668": 4, + "4669": 3, + "4674": 1, + "4676": 4, + "4677": 1, + "4679": 5, + "4680": 1, + "4681": 1, + "4682": 1, + "4683": 1, + "4684": 1, + "4686": 2, + "4687": 3, + "4688": 1, + "4689": 2, + "4690": 1, + "4693": 1, + "4694": 1, + "4695": 2, + "4696": 1, + "4703": 1, + "4709": 2, + "4710": 4, + "4711": 7, + "4712": 1, + "4713": 2, + "4714": 2, + "4715": 2, + "4716": 6, + "4717": 6, + "4718": 2, + "4719": 2, + "4720": 1, + "4721": 4, + "4722": 3, + "4723": 2, + "4724": 2, + "4725": 2, + "4726": 1, + "4727": 4, + "4728": 2, + "4729": 1, + "4730": 9, + "4731": 3, + "4732": 4, + "4733": 2, + "4734": 2, + "4735": 1, + "4736": 3, + "4737": 3, + "4738": 7, + "4739": 5, + "4740": 6, + "4741": 11, + "4742": 6, + "4743": 8, + "4744": 2, + "4745": 1, + "4746": 2, + "4747": 2, + "4748": 3, + "4749": 2, + "4753": 1, + "4754": 1, + "4756": 1, + "4760": 2, + "4764": 2, + "4765": 1, + "4766": 1, + "4768": 1, + "4771": 1, + "4776": 1, + "4780": 1, + "4781": 1, + "4782": 1, + "4783": 3, + "4784": 2, + "4785": 4, + "4788": 2, + "4789": 1, + "4792": 1, + "4794": 1, + "4796": 1, + "4797": 1, + "4798": 1, + "4799": 3, + "4800": 4, + "4801": 3, + "4803": 2, + "4804": 2, + "4805": 2, + "4806": 1, + "4809": 2, + "4812": 1, + "4813": 2, + "4814": 1, + "4815": 2, + "4816": 2, + "4817": 3, + "4818": 2, + "4819": 2, + "4820": 1, + "4822": 1, + "4825": 1, + "4827": 2, + "4828": 2, + "4829": 1, + "4830": 1, + "4832": 2, + "4833": 2, + "4834": 2, + "4835": 1, + "4836": 1, + "4837": 2, + "4838": 3, + "4839": 4, + "4840": 4, + "4841": 4, + "4842": 3, + "4844": 1, + "4846": 1, + "4848": 1, + "4853": 1, + "4855": 1, + "4856": 3, + "4857": 4, + "4858": 10, + "4859": 8, + "4860": 12, + "4861": 7, + "4862": 8, + "4863": 1, + "4864": 9, + "4866": 10, + "4867": 3, + "4868": 5, + "4869": 9, + "4870": 6, + "4871": 3, + "4872": 7, + "4873": 5, + "4876": 2, + "4878": 2, + "4879": 1, + "4880": 5, + "4882": 3, + "4883": 3, + "4884": 2, + "4885": 1, + "4890": 1, + "4895": 1, + "4898": 1, + "4899": 1, + "4901": 2, + "4903": 2, + "4904": 2, + "4905": 2, + "4906": 1, + "4912": 1, + "4913": 3, + "4914": 1, + "4916": 2, + "4917": 2, + "4918": 5, + "4919": 3, + "4920": 3, + "4921": 8, + "4922": 7, + "4923": 16, + "4924": 11, + "4925": 6, + "4926": 6, + "4927": 3, + "4928": 10, + "4929": 6, + "4930": 3, + "4931": 3, + "4932": 5, + "4933": 6, + "4934": 6, + "4935": 8, + "4936": 5, + "4937": 5, + "4938": 11, + "4939": 5, + "4940": 1, + "4941": 3, + "4942": 3, + "4943": 5, + "4944": 6, + "4945": 3, + "4946": 6, + "4947": 9, + "4948": 6, + "4949": 8, + "4950": 11, + "4951": 10, + "4952": 8, + "4953": 11, + "4954": 6, + "4955": 6, + "4956": 5, + "4957": 12, + "4958": 7, + "4959": 12, + "4960": 13, + "4961": 21, + "4962": 9, + "4963": 8, + "4964": 10, + "4965": 5, + "4966": 1, + "4967": 1, + "4969": 2, + "4970": 2, + "4971": 6, + "4972": 5, + "4973": 7, + "4974": 8, + "4975": 14, + "4976": 7, + "4977": 10, + "4978": 5, + "4979": 20, + "4980": 9, + "4981": 2, + "4982": 1, + "4983": 2, + "4984": 2, + "4985": 2, + "4986": 1, + "4987": 1, + "4991": 1, + "4992": 1, + "5004": 3, + "5006": 4, + "5008": 1, + "5009": 1, + "5022": 1, + "5023": 1, + "5024": 1 + }, + "started": "2025-09-11T20:12:46.723Z", + "trafficStats": { + "incomingCompressionRatio": 0.03696820068359375, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4845496, + "incomingOctetsWireLevel": 4853496, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016510177699042574, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5672098, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014124049407337233, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "278": 1, + "1479": 2, + "1480": 1, + "1481": 1, + "1482": 1, + "1483": 2, + "1484": 5, + "1485": 7, + "1486": 5, + "1487": 4, + "1488": 1, + "1489": 6, + "1490": 8, + "1491": 6, + "1492": 4, + "1493": 11, + "1494": 8, + "1495": 7, + "1496": 6, + "1497": 6, + "1498": 4, + "1499": 4, + "1500": 5, + "1501": 5, + "1502": 7, + "1503": 17, + "1504": 16, + "1505": 14, + "1506": 13, + "1507": 6, + "1508": 6, + "1509": 10, + "1510": 16, + "1511": 13, + "1512": 9, + "1513": 6, + "1514": 6, + "1515": 6, + "1516": 2, + "1517": 4, + "1518": 5, + "1519": 4, + "1520": 6, + "1521": 3, + "1523": 2, + "1524": 2, + "1526": 2, + "1528": 1, + "1529": 1, + "1531": 3, + "1533": 3, + "1534": 2, + "1536": 1, + "1538": 2, + "1539": 1, + "1541": 2, + "1542": 3, + "1543": 1, + "1544": 2, + "1545": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 3, + "1550": 1, + "1551": 3, + "1552": 6, + "1553": 2, + "1554": 2, + "1555": 2, + "1561": 1, + "1568": 1, + "1569": 2, + "1571": 1, + "1572": 1, + "1574": 1, + "1575": 2, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 3, + "1582": 9, + "1583": 5, + "1584": 3, + "1585": 10, + "1586": 10, + "1587": 15, + "1588": 20, + "1589": 14, + "1590": 16, + "1591": 14, + "1592": 21, + "1593": 26, + "1594": 17, + "1595": 11, + "1596": 25, + "1597": 21, + "1598": 24, + "1599": 16, + "1600": 25, + "1601": 24, + "1602": 24, + "1603": 12, + "1604": 17, + "1605": 19, + "1606": 13, + "1607": 9, + "1608": 25, + "1609": 25, + "1610": 16, + "1611": 12, + "1612": 11, + "1613": 8, + "1614": 10, + "1615": 13, + "1616": 4, + "1617": 6, + "1618": 3, + "1619": 1, + "1620": 2, + "1621": 2, + "1622": 5, + "1623": 3, + "1624": 3, + "1625": 5, + "1626": 4, + "1627": 12, + "1628": 10, + "1629": 7, + "1630": 11, + "1631": 9, + "1632": 2, + "1633": 3, + "1635": 2, + "1636": 3, + "1637": 1, + "1650": 1, + "1651": 1, + "1652": 1, + "1654": 3, + "1655": 2, + "1657": 1, + "1665": 1, + "1666": 2, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343434266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888257cbaa005423" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "57cbaa00" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_18.html b/autobahn/client/tungstenite_case_13_3_18.html new file mode 100644 index 0000000..781b626 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_18.html @@ -0,0 +1,720 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.18 : Pass - 6566 ms @ 2025-09-11T20:12:53.269Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=445&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: fvVSwkjWSJNo9nWlqgHbIw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: X1Z402LA4VFR1gbvZEir5677GuQ=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
460714607
460914609
461014610
461114611
461414614
462029240
462114621
4623523115
4624523120
462514625
4626523130
4627313881
4628837024
4629732403
4630732410
4631732417
4632523160
4633418532
463429268
463514635
463614636
4637523185
463814638
464029280
464114641
465229304
465314653
465414654
465529310
465614656
4658313974
465929318
466214662
466314663
466414664
466514665
466729334
4668418672
4669314007
467414674
4676418704
467714677
4679523395
468014680
468114681
468214682
468314683
468414684
468629372
4687314061
468814688
468929378
469014690
469314693
469414694
469529390
469614696
470314703
470929418
4710418840
4711732977
471214712
471329426
471429428
471529430
4716628296
4717628302
471829436
471929438
472014720
4721418884
4722314166
472329446
472429448
472529450
472614726
4727418908
472829456
472914729
4730942570
4731314193
4732418928
473329466
473429468
473514735
4736314208
4737314211
4738733166
4739523695
4740628440
47411152151
4742628452
4743837944
474429488
474514745
474629492
474729494
4748314244
474929498
475314753
475414754
475614756
476029520
476429528
476514765
476614766
476814768
477114771
477614776
478014780
478114781
478214782
4783314349
478429568
4785419140
478829576
478914789
479214792
479414794
479614796
479714797
479814798
4799314397
4800419200
4801314403
480329606
480429608
480529610
480614806
480929618
481214812
481329626
481414814
481529630
481629632
4817314451
481829636
481929638
482014820
482214822
482514825
482729654
482829656
482914829
483014830
483229664
483329666
483429668
483514835
483614836
483729674
4838314514
4839419356
4840419360
4841419364
4842314526
484414844
484614846
484814848
485314853
485514855
4856314568
4857419428
48581048580
4859838872
48601258320
4861734027
4862838896
486314863
4864943776
48661048660
4867314601
4868524340
4869943821
4870629220
4871314613
4872734104
4873524365
487629752
487829756
487914879
4880524400
4882314646
4883314649
488429768
488514885
489014890
489514895
489814898
489914899
490129802
490329806
490429808
490529810
490614906
491214912
4913314739
491414914
491629832
491729834
4918524590
4919314757
4920314760
4921839368
4922734454
49231678768
49241154164
4925629550
4926629556
4927314781
49281049280
4929629574
4930314790
4931314793
4932524660
4933629598
4934629604
4935839480
4936524680
4937524685
49381154318
4939524695
494014940
4941314823
4942314826
4943524715
4944629664
4945314835
4946629676
4947944523
4948629688
4949839592
49501154450
49511049510
4952839616
49531154483
4954629724
4955629730
4956524780
49571259484
4958734706
49591259508
49601364480
496121104181
4962944658
4963839704
49641049640
4965524825
496614966
496714967
496929938
497029940
4971629826
4972524860
4973734811
4974839792
49751469650
4976734832
49771049770
4978524890
49792099580
4980944820
498129962
498214982
498329966
498429968
498529970
498614986
498714987
499114991
499214992
5004315012
5006420024
500815008
500915009
502215022
502315023
502415024
Total10024853761
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2781278
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668380
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343435266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882236994312081
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3233363939343331
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_18.json b/autobahn/client/tungstenite_case_13_3_18.json new file mode 100644 index 0000000..bccbd8b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_18.json @@ -0,0 +1,567 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 445, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 6566, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=445&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: fvVSwkjWSJNo9nWlqgHbIw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: X1Z402LA4VFR1gbvZEir5677GuQ=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4607": 1, + "4609": 1, + "4610": 1, + "4611": 1, + "4614": 1, + "4620": 2, + "4621": 1, + "4623": 5, + "4624": 5, + "4625": 1, + "4626": 5, + "4627": 3, + "4628": 8, + "4629": 7, + "4630": 7, + "4631": 7, + "4632": 5, + "4633": 4, + "4634": 2, + "4635": 1, + "4636": 1, + "4637": 5, + "4638": 1, + "4640": 2, + "4641": 1, + "4652": 2, + "4653": 1, + "4654": 1, + "4655": 2, + "4656": 1, + "4658": 3, + "4659": 2, + "4662": 1, + "4663": 1, + "4664": 1, + "4665": 1, + "4667": 2, + "4668": 4, + "4669": 3, + "4674": 1, + "4676": 4, + "4677": 1, + "4679": 5, + "4680": 1, + "4681": 1, + "4682": 1, + "4683": 1, + "4684": 1, + "4686": 2, + "4687": 3, + "4688": 1, + "4689": 2, + "4690": 1, + "4693": 1, + "4694": 1, + "4695": 2, + "4696": 1, + "4703": 1, + "4709": 2, + "4710": 4, + "4711": 7, + "4712": 1, + "4713": 2, + "4714": 2, + "4715": 2, + "4716": 6, + "4717": 6, + "4718": 2, + "4719": 2, + "4720": 1, + "4721": 4, + "4722": 3, + "4723": 2, + "4724": 2, + "4725": 2, + "4726": 1, + "4727": 4, + "4728": 2, + "4729": 1, + "4730": 9, + "4731": 3, + "4732": 4, + "4733": 2, + "4734": 2, + "4735": 1, + "4736": 3, + "4737": 3, + "4738": 7, + "4739": 5, + "4740": 6, + "4741": 11, + "4742": 6, + "4743": 8, + "4744": 2, + "4745": 1, + "4746": 2, + "4747": 2, + "4748": 3, + "4749": 2, + "4753": 1, + "4754": 1, + "4756": 1, + "4760": 2, + "4764": 2, + "4765": 1, + "4766": 1, + "4768": 1, + "4771": 1, + "4776": 1, + "4780": 1, + "4781": 1, + "4782": 1, + "4783": 3, + "4784": 2, + "4785": 4, + "4788": 2, + "4789": 1, + "4792": 1, + "4794": 1, + "4796": 1, + "4797": 1, + "4798": 1, + "4799": 3, + "4800": 4, + "4801": 3, + "4803": 2, + "4804": 2, + "4805": 2, + "4806": 1, + "4809": 2, + "4812": 1, + "4813": 2, + "4814": 1, + "4815": 2, + "4816": 2, + "4817": 3, + "4818": 2, + "4819": 2, + "4820": 1, + "4822": 1, + "4825": 1, + "4827": 2, + "4828": 2, + "4829": 1, + "4830": 1, + "4832": 2, + "4833": 2, + "4834": 2, + "4835": 1, + "4836": 1, + "4837": 2, + "4838": 3, + "4839": 4, + "4840": 4, + "4841": 4, + "4842": 3, + "4844": 1, + "4846": 1, + "4848": 1, + "4853": 1, + "4855": 1, + "4856": 3, + "4857": 4, + "4858": 10, + "4859": 8, + "4860": 12, + "4861": 7, + "4862": 8, + "4863": 1, + "4864": 9, + "4866": 10, + "4867": 3, + "4868": 5, + "4869": 9, + "4870": 6, + "4871": 3, + "4872": 7, + "4873": 5, + "4876": 2, + "4878": 2, + "4879": 1, + "4880": 5, + "4882": 3, + "4883": 3, + "4884": 2, + "4885": 1, + "4890": 1, + "4895": 1, + "4898": 1, + "4899": 1, + "4901": 2, + "4903": 2, + "4904": 2, + "4905": 2, + "4906": 1, + "4912": 1, + "4913": 3, + "4914": 1, + "4916": 2, + "4917": 2, + "4918": 5, + "4919": 3, + "4920": 3, + "4921": 8, + "4922": 7, + "4923": 16, + "4924": 11, + "4925": 6, + "4926": 6, + "4927": 3, + "4928": 10, + "4929": 6, + "4930": 3, + "4931": 3, + "4932": 5, + "4933": 6, + "4934": 6, + "4935": 8, + "4936": 5, + "4937": 5, + "4938": 11, + "4939": 5, + "4940": 1, + "4941": 3, + "4942": 3, + "4943": 5, + "4944": 6, + "4945": 3, + "4946": 6, + "4947": 9, + "4948": 6, + "4949": 8, + "4950": 11, + "4951": 10, + "4952": 8, + "4953": 11, + "4954": 6, + "4955": 6, + "4956": 5, + "4957": 12, + "4958": 7, + "4959": 12, + "4960": 13, + "4961": 21, + "4962": 9, + "4963": 8, + "4964": 10, + "4965": 5, + "4966": 1, + "4967": 1, + "4969": 2, + "4970": 2, + "4971": 6, + "4972": 5, + "4973": 7, + "4974": 8, + "4975": 14, + "4976": 7, + "4977": 10, + "4978": 5, + "4979": 20, + "4980": 9, + "4981": 2, + "4982": 1, + "4983": 2, + "4984": 2, + "4985": 2, + "4986": 1, + "4987": 1, + "4991": 1, + "4992": 1, + "5004": 3, + "5006": 4, + "5008": 1, + "5009": 1, + "5022": 1, + "5023": 1, + "5024": 1 + }, + "started": "2025-09-11T20:12:53.269Z", + "trafficStats": { + "incomingCompressionRatio": 0.03696820068359375, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4845496, + "incomingOctetsWireLevel": 4853496, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016510177699042574, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "278": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343435266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882236994312081" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "23699431" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_2.html b/autobahn/client/tungstenite_case_13_3_2.html new file mode 100644 index 0000000..3056556 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_2.html @@ -0,0 +1,330 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.2 : Pass - 140 ms @ 2025-09-11T20:12:12.113Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=429&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: a94mgBSZ3LO3yzXOqnmhNw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: utag6IQosmXFf+qX/MpSmJBW0fM=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
113123432
1222264
1317221
143544956
1530450
16681088
171402380
1810180
1935665
20120
215105
23123
28128
36136
41141
42142
55155
2571257
Total100214251
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
74413087
81080
91431287
101741740
1136396
1268816
13781014
1428392
1516240
19119
24124
32132
37137
38138
51151
2781278
Total10029535
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343239266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882e17b8c30e293
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6531376238633330
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_2.json b/autobahn/client/tungstenite_case_13_3_2.json new file mode 100644 index 0000000..5a1c7ab --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_2.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 429, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 140, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=429&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: a94mgBSZ3LO3yzXOqnmhNw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: utag6IQosmXFf+qX/MpSmJBW0fM=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 312, + "12": 22, + "13": 17, + "14": 354, + "15": 30, + "16": 68, + "17": 140, + "18": 10, + "19": 35, + "20": 1, + "21": 5, + "23": 1, + "28": 1, + "36": 1, + "41": 1, + "42": 1, + "55": 1, + "257": 1 + }, + "started": "2025-09-11T20:12:12.113Z", + "trafficStats": { + "incomingCompressionRatio": 0.12478125, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 7986, + "incomingOctetsWireLevel": 13986, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.7513148009015778, + "outgoingCompressionRatio": 0.113328125, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 7253, + "outgoingOctetsWireLevel": 9253, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.2757479663587481, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 441, + "8": 10, + "9": 143, + "10": 174, + "11": 36, + "12": 68, + "13": 78, + "14": 28, + "15": 16, + "19": 1, + "24": 1, + "32": 1, + "37": 1, + "38": 1, + "51": 1, + "278": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343239266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e17b8c30e293" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e17b8c30" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_3.html b/autobahn/client/tungstenite_case_13_3_3.html new file mode 100644 index 0000000..17f41a9 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_3.html @@ -0,0 +1,360 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.3 : Pass - 184 ms @ 2025-09-11T20:12:12.254Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=430&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 9Mgm9CyB9kPZwSuJ40e//w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: DCeBzxrsZddoyhxcVme7GM67fFc=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
17117
18981764
19238
2022440
2133693
221813982
2340920
24741776
251684200
26541404
27701890
28762128
29421218
30351050
3126806
3229928
3311363
349306
356210
365180
37274
38138
393117
40280
42284
44144
45290
48148
53153
71171
76176
1511151
2571257
Total100225504
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1342546
1470980
1542630
161382208
171051785
18991782
191252375
20721440
21761596
22541188
23531219
2438912
2529725
2622572
2710270
284112
295145
30130
31262
32132
33266
34134
36136
37137
39139
41282
43143
61161
66166
1471147
2781278
Total100219502
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343330266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882bab9a025b951
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6261623961303235
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_3.json b/autobahn/client/tungstenite_case_13_3_3.json new file mode 100644 index 0000000..b89ab43 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_3.json @@ -0,0 +1,207 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 430, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 184, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=430&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 9Mgm9CyB9kPZwSuJ40e//w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: DCeBzxrsZddoyhxcVme7GM67fFc=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "17": 1, + "18": 98, + "19": 2, + "20": 22, + "21": 33, + "22": 181, + "23": 40, + "24": 74, + "25": 168, + "26": 54, + "27": 70, + "28": 76, + "29": 42, + "30": 35, + "31": 26, + "32": 29, + "33": 11, + "34": 9, + "35": 6, + "36": 5, + "37": 2, + "38": 1, + "39": 3, + "40": 2, + "42": 2, + "44": 1, + "45": 2, + "48": 1, + "53": 1, + "71": 1, + "76": 1, + "151": 1, + "257": 1 + }, + "started": "2025-09-11T20:12:12.254Z", + "trafficStats": { + "incomingCompressionRatio": 0.07514453125, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 19237, + "incomingOctetsWireLevel": 25239, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.3120029110568176, + "outgoingCompressionRatio": 0.0672578125, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 17218, + "outgoingOctetsWireLevel": 19220, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11627366709257754, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 42, + "14": 70, + "15": 42, + "16": 138, + "17": 105, + "18": 99, + "19": 125, + "20": 72, + "21": 76, + "22": 54, + "23": 53, + "24": 38, + "25": 29, + "26": 22, + "27": 10, + "28": 4, + "29": 5, + "30": 1, + "31": 2, + "32": 1, + "33": 2, + "34": 1, + "36": 1, + "37": 1, + "39": 1, + "41": 2, + "43": 1, + "61": 1, + "66": 1, + "147": 1, + "278": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343330266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882bab9a025b951" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "bab9a025" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_4.html b/autobahn/client/tungstenite_case_13_3_4.html new file mode 100644 index 0000000..4a2c854 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_4.html @@ -0,0 +1,427 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.4 : Pass - 193 ms @ 2025-09-11T20:12:12.439Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=431&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: e/YzY/OnD+TH8vh8AyjDSQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: aRLV6GcmKju8N7MuanPPi4hyyLA=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
49298
509450
516306
5219988
532106
547378
55482640
56241344
57321824
58311798
59663894
60331980
61231403
62472914
63402520
64352240
65412665
66644224
67674489
68291972
69432967
70422940
71251775
72362592
73302190
74322368
75282100
76191444
77161232
78161248
792158
808640
815405
826492
83183
842168
854340
868688
872174
885440
895445
912182
923276
934372
963288
97197
98198
992198
1001100
1011101
1041104
1072214
1081108
1091109
1101110
1111111
1124448
1141114
1151115
1162232
1171117
1182236
1221122
1232246
1741174
2571257
Total100267659
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
39139
40140
414164
445220
45145
464184
479423
48221056
49331617
50321600
51391989
52683536
53482544
54633402
55603300
56673752
57663762
58271566
59492891
60291740
61181098
6216992
63311953
64181152
65161040
668528
67191273
68211428
69161104
70292030
71181278
72282016
73312263
7410740
7511825
76181368
7710770
788624
794316
803240
82182
832166
843252
863258
87187
88188
893267
912182
922184
944376
96196
97197
992198
1001100
1011101
1041104
1052210
1061106
1071107
1081108
1092218
1101110
1141114
1701170
2781278
Total100260971
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343331266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828ad5c832893d
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3861643563383332
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_4.json b/autobahn/client/tungstenite_case_13_3_4.json new file mode 100644 index 0000000..2c3efdd --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_4.json @@ -0,0 +1,274 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 431, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 193, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=431&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: e/YzY/OnD+TH8vh8AyjDSQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: aRLV6GcmKju8N7MuanPPi4hyyLA=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "49": 2, + "50": 9, + "51": 6, + "52": 19, + "53": 2, + "54": 7, + "55": 48, + "56": 24, + "57": 32, + "58": 31, + "59": 66, + "60": 33, + "61": 23, + "62": 47, + "63": 40, + "64": 35, + "65": 41, + "66": 64, + "67": 67, + "68": 29, + "69": 43, + "70": 42, + "71": 25, + "72": 36, + "73": 30, + "74": 32, + "75": 28, + "76": 19, + "77": 16, + "78": 16, + "79": 2, + "80": 8, + "81": 5, + "82": 6, + "83": 1, + "84": 2, + "85": 4, + "86": 8, + "87": 2, + "88": 5, + "89": 5, + "91": 2, + "92": 3, + "93": 4, + "96": 3, + "97": 1, + "98": 1, + "99": 2, + "100": 1, + "101": 1, + "104": 1, + "107": 2, + "108": 1, + "109": 1, + "110": 1, + "111": 1, + "112": 4, + "114": 1, + "115": 1, + "116": 2, + "117": 1, + "118": 2, + "122": 1, + "123": 2, + "174": 1, + "257": 1 + }, + "started": "2025-09-11T20:12:12.439Z", + "trafficStats": { + "incomingCompressionRatio": 0.059953125, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 61392, + "incomingOctetsWireLevel": 67394, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.097765181131092, + "outgoingCompressionRatio": 0.0573115234375, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 58687, + "outgoingOctetsWireLevel": 60689, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.034113176683081434, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "39": 1, + "40": 1, + "41": 4, + "44": 5, + "45": 1, + "46": 4, + "47": 9, + "48": 22, + "49": 33, + "50": 32, + "51": 39, + "52": 68, + "53": 48, + "54": 63, + "55": 60, + "56": 67, + "57": 66, + "58": 27, + "59": 49, + "60": 29, + "61": 18, + "62": 16, + "63": 31, + "64": 18, + "65": 16, + "66": 8, + "67": 19, + "68": 21, + "69": 16, + "70": 29, + "71": 18, + "72": 28, + "73": 31, + "74": 10, + "75": 11, + "76": 18, + "77": 10, + "78": 8, + "79": 4, + "80": 3, + "82": 1, + "83": 2, + "84": 3, + "86": 3, + "87": 1, + "88": 1, + "89": 3, + "91": 2, + "92": 2, + "94": 4, + "96": 1, + "97": 1, + "99": 2, + "100": 1, + "101": 1, + "104": 1, + "105": 2, + "106": 1, + "107": 1, + "108": 1, + "109": 2, + "110": 1, + "114": 1, + "170": 1, + "278": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343331266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828ad5c832893d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8ad5c832" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_5.html b/autobahn/client/tungstenite_case_13_3_5.html new file mode 100644 index 0000000..a35602c --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_5.html @@ -0,0 +1,547 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.5 : Pass - 347 ms @ 2025-09-11T20:12:12.634Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=432&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: y3QJpgd/6YGnwORBu8aC4w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: JRJZD2BwkEZ4QXuvwIRRikBoI+A=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1311131
1381138
1391139
1401140
1414564
1425710
14481152
1453435
1464584
147131911
14871036
149101490
150111650
151111661
152203040
153223366
15491386
15571085
156203120
157142198
158172686
159213339
160152400
161152415
162162592
163142282
164142296
165121980
166132158
167101670
168122016
16981352
17091530
17191539
172122064
173172941
174162784
175122100
176142464
177213717
178142492
179132327
180183240
181101810
182162912
18371281
184142576
185162960
186101860
187193553
188173196
189203780
190112090
191214011
192234416
193152895
194132522
195173315
196152940
19761182
19871386
199101990
20051000
20181608
20261212
2033609
2043612
2054820
20671442
20771449
20851040
20971463
21071470
21151055
2124848
2132426
2143642
2153645
2163648
21751085
2183654
21951095
220102200
2214884
2224888
2233669
22451120
2253675
22661356
22761362
2283684
22981832
23051150
2314924
2321232
2334932
2342468
2352470
23651180
2373711
2383714
2394956
24061440
2414964
2421242
2434972
2443732
24551225
2461246
2472494
2482496
2491249
2502500
2531253
25451270
2551255
2563768
2571257
2581258
2593777
2612522
2631263
2651265
2711271
2743822
2752550
2771277
2792558
3031303
Total1002185462
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1481148
1492298
1502300
1514604
1533459
1542308
1552310
1563468
1571157
1582316
1591159
1606960
1615805
1621162
16371141
16471148
165101650
166132158
167101670
168132184
169142366
170193230
171203420
172162752
173284844
174203480
175244200
176234048
177234071
178234094
179285012
180203600
181193439
182173094
183122196
184224048
185264810
186122232
187132431
188152820
189112079
190112090
191163056
192112112
19391737
19471358
195101950
1963588
19791773
198112178
1995995
2004800
201102010
202102020
2034812
20471428
2051205
2063618
20751035
20851040
20951045
210102100
211112321
212102120
213122556
214102140
21571505
2164864
21791953
218112398
219102190
220173740
22161326
222122664
223143122
22471568
225132925
226112486
22792043
228112508
229153435
230122760
231163696
23271624
23361398
2343702
2352470
2361236
2402480
24251210
2432486
2444976
2452490
2464984
2471247
2484992
2491249
2512502
2523756
25341012
2541254
2551255
25641024
2572514
2583774
2591259
26061560
2613783
26261572
26351315
26451320
26592385
26651330
26741068
2681268
2693807
2701270
2721272
2781278
2811281
2851285
3061306
Total1002198939
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343332266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882262f2f1825c7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3236326632663138
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_5.json b/autobahn/client/tungstenite_case_13_3_5.json new file mode 100644 index 0000000..0723c93 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_5.json @@ -0,0 +1,394 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 432, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 347, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=432&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: y3QJpgd/6YGnwORBu8aC4w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: JRJZD2BwkEZ4QXuvwIRRikBoI+A=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "131": 1, + "138": 1, + "139": 1, + "140": 1, + "141": 4, + "142": 5, + "144": 8, + "145": 3, + "146": 4, + "147": 13, + "148": 7, + "149": 10, + "150": 11, + "151": 11, + "152": 20, + "153": 22, + "154": 9, + "155": 7, + "156": 20, + "157": 14, + "158": 17, + "159": 21, + "160": 15, + "161": 15, + "162": 16, + "163": 14, + "164": 14, + "165": 12, + "166": 13, + "167": 10, + "168": 12, + "169": 8, + "170": 9, + "171": 9, + "172": 12, + "173": 17, + "174": 16, + "175": 12, + "176": 14, + "177": 21, + "178": 14, + "179": 13, + "180": 18, + "181": 10, + "182": 16, + "183": 7, + "184": 14, + "185": 16, + "186": 10, + "187": 19, + "188": 17, + "189": 20, + "190": 11, + "191": 21, + "192": 23, + "193": 15, + "194": 13, + "195": 17, + "196": 15, + "197": 6, + "198": 7, + "199": 10, + "200": 5, + "201": 8, + "202": 6, + "203": 3, + "204": 3, + "205": 4, + "206": 7, + "207": 7, + "208": 5, + "209": 7, + "210": 7, + "211": 5, + "212": 4, + "213": 2, + "214": 3, + "215": 3, + "216": 3, + "217": 5, + "218": 3, + "219": 5, + "220": 10, + "221": 4, + "222": 4, + "223": 3, + "224": 5, + "225": 3, + "226": 6, + "227": 6, + "228": 3, + "229": 8, + "230": 5, + "231": 4, + "232": 1, + "233": 4, + "234": 2, + "235": 2, + "236": 5, + "237": 3, + "238": 3, + "239": 4, + "240": 6, + "241": 4, + "242": 1, + "243": 4, + "244": 3, + "245": 5, + "246": 1, + "247": 2, + "248": 2, + "249": 1, + "250": 2, + "253": 1, + "254": 5, + "255": 1, + "256": 3, + "257": 1, + "258": 1, + "259": 3, + "261": 2, + "263": 1, + "265": 1, + "271": 1, + "274": 3, + "275": 2, + "277": 1, + "279": 2, + "303": 1 + }, + "started": "2025-09-11T20:12:12.634Z", + "trafficStats": { + "incomingCompressionRatio": 0.043261474609375, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 177199, + "incomingOctetsWireLevel": 185197, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.04513569489669806, + "outgoingCompressionRatio": 0.047523681640625, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 194657, + "outgoingOctetsWireLevel": 198657, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.02054896561644328, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "148": 1, + "149": 2, + "150": 2, + "151": 4, + "153": 3, + "154": 2, + "155": 2, + "156": 3, + "157": 1, + "158": 2, + "159": 1, + "160": 6, + "161": 5, + "162": 1, + "163": 7, + "164": 7, + "165": 10, + "166": 13, + "167": 10, + "168": 13, + "169": 14, + "170": 19, + "171": 20, + "172": 16, + "173": 28, + "174": 20, + "175": 24, + "176": 23, + "177": 23, + "178": 23, + "179": 28, + "180": 20, + "181": 19, + "182": 17, + "183": 12, + "184": 22, + "185": 26, + "186": 12, + "187": 13, + "188": 15, + "189": 11, + "190": 11, + "191": 16, + "192": 11, + "193": 9, + "194": 7, + "195": 10, + "196": 3, + "197": 9, + "198": 11, + "199": 5, + "200": 4, + "201": 10, + "202": 10, + "203": 4, + "204": 7, + "205": 1, + "206": 3, + "207": 5, + "208": 5, + "209": 5, + "210": 10, + "211": 11, + "212": 10, + "213": 12, + "214": 10, + "215": 7, + "216": 4, + "217": 9, + "218": 11, + "219": 10, + "220": 17, + "221": 6, + "222": 12, + "223": 14, + "224": 7, + "225": 13, + "226": 11, + "227": 9, + "228": 11, + "229": 15, + "230": 12, + "231": 16, + "232": 7, + "233": 6, + "234": 3, + "235": 2, + "236": 1, + "240": 2, + "242": 5, + "243": 2, + "244": 4, + "245": 2, + "246": 4, + "247": 1, + "248": 4, + "249": 1, + "251": 2, + "252": 3, + "253": 4, + "254": 1, + "255": 1, + "256": 4, + "257": 2, + "258": 3, + "259": 1, + "260": 6, + "261": 3, + "262": 6, + "263": 5, + "264": 5, + "265": 9, + "266": 5, + "267": 4, + "268": 1, + "269": 3, + "270": 1, + "272": 1, + "278": 1, + "281": 1, + "285": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343332266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882262f2f1825c7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "262f2f18" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_6.html b/autobahn/client/tungstenite_case_13_3_6.html new file mode 100644 index 0000000..5d9a2a4 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_6.html @@ -0,0 +1,670 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.6 : Pass - 553 ms @ 2025-09-11T20:12:12.982Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=433&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: yek6j16WaOAnl5WOkDA3WA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: OZRXuF5WW8Y1u7sFYXN2vBYbY0s=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2542508
2571257
2582516
2592518
2601260
2613783
2623786
2631263
2641264
26571855
26661596
26761602
2683804
2693807
27051350
271102710
27251360
27361638
274102740
275123300
276102760
27761662
27871946
279133627
280102800
28192529
28292538
28361698
28471988
28571995
28682288
28792583
288123456
28982312
29061740
291123492
2923876
2931293
294144116
29592655
29651480
29782376
29841192
29961794
3003900
30172107
3023906
30341212
304113344
30592745
30672142
30782456
30892772
309103090
31051550
31192799
31292808
313123756
314113454
31592835
316103160
31782536
318113498
319144466
32092880
321134173
322144508
32392907
32492916
32561950
326123912
327134251
32841312
32951645
33082640
33172317
33241328
3333999
3342668
33551675
33672352
33741348
33831014
33941356
3402680
34151705
3421342
3432686
34472408
345103450
346124152
34751735
34893132
34941396
35062100
351124212
35262112
35362118
35441416
35541420
35631068
35762142
3582716
35941436
3602720
36151805
36241448
36341452
364103640
36541460
36672562
36793303
3692738
37031110
3711371
37241488
37341492
37441496
3752750
3762752
3771377
3782756
3792758
38031140
3812762
38262292
38331149
3842768
38572695
38651930
38772709
38831164
38951945
39093510
39183128
39272744
39383144
39483152
39583160
39631188
39741588
39841592
39931197
40052000
401156015
40252010
403114433
40472828
40552025
40662436
40731221
40872856
4091409
41031230
41141644
4122824
4131413
4141414
4152830
41631248
4171417
4201420
4211421
4251425
4261426
4272854
4311431
4332866
4391439
4401440
44131323
4441444
4452890
4461446
44831344
4491449
4502900
4511451
45241808
4542908
4551455
4562912
4571457
4581458
4591459
4611461
4621462
4631463
4641464
4661466
4771477
4791479
Total1002335620
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2781278
30151505
30261812
3032606
30451520
30561830
306113366
307103070
3083924
3091309
31051550
3111311
3123936
3131313
31451570
31572205
31641264
31761902
318123816
31941276
320123840
321113531
322103220
323134199
324103240
325185850
326165216
327154905
328103280
329216909
330216930
331196289
332134316
333165328
33472338
33572345
336124032
337113707
338103380
33951695
34072380
34141364
34251710
34351715
34431032
3451345
34651730
34751735
34862088
34993141
35093150
35193159
35282816
353103530
35482832
355144970
35693204
357103570
358124296
35993231
36082880
361124332
36282896
363103630
36441456
36562190
36662196
3672734
3682736
369114059
37072590
3712742
372114092
37372611
37482992
37531125
37672632
37783016
37862268
379103790
38062280
38141524
3822764
38372681
3842768
38531155
38631158
38741548
38831164
38931167
39051950
3912782
39241568
39331179
39441576
39531185
39631188
39762382
39841592
39931197
4001400
4011401
40241608
40331209
40431212
4051405
40641624
40783256
40831224
4092818
41072870
41162466
4122824
4131413
4141414
41541660
416124992
41752085
41831254
41931257
4202840
4212842
42272954
42341692
42431272
42531275
42652130
4272854
42931287
43031290
43131293
4321432
4331433
43431302
4361436
4371437
4412882
4421442
44331329
4451445
4471447
44831344
4491449
45031350
45131353
4521452
45394077
45483632
4552910
45673192
457104570
45894122
4592918
46073220
461135993
46262772
46383704
46452320
46583720
46694194
46762802
46883744
4692938
47041880
4711471
4722944
4732946
4741474
4751475
4762952
4771477
4781478
47931437
4801480
4821482
4841484
4872974
4881488
48931467
4901490
4921492
4931493
Total1002373556
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343333266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882df177d06dcff
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6466313737643036
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_6.json b/autobahn/client/tungstenite_case_13_3_6.json new file mode 100644 index 0000000..7c12d83 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_6.json @@ -0,0 +1,517 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 433, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 553, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=433&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: yek6j16WaOAnl5WOkDA3WA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: OZRXuF5WW8Y1u7sFYXN2vBYbY0s=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "254": 2, + "257": 1, + "258": 2, + "259": 2, + "260": 1, + "261": 3, + "262": 3, + "263": 1, + "264": 1, + "265": 7, + "266": 6, + "267": 6, + "268": 3, + "269": 3, + "270": 5, + "271": 10, + "272": 5, + "273": 6, + "274": 10, + "275": 12, + "276": 10, + "277": 6, + "278": 7, + "279": 13, + "280": 10, + "281": 9, + "282": 9, + "283": 6, + "284": 7, + "285": 7, + "286": 8, + "287": 9, + "288": 12, + "289": 8, + "290": 6, + "291": 12, + "292": 3, + "293": 1, + "294": 14, + "295": 9, + "296": 5, + "297": 8, + "298": 4, + "299": 6, + "300": 3, + "301": 7, + "302": 3, + "303": 4, + "304": 11, + "305": 9, + "306": 7, + "307": 8, + "308": 9, + "309": 10, + "310": 5, + "311": 9, + "312": 9, + "313": 12, + "314": 11, + "315": 9, + "316": 10, + "317": 8, + "318": 11, + "319": 14, + "320": 9, + "321": 13, + "322": 14, + "323": 9, + "324": 9, + "325": 6, + "326": 12, + "327": 13, + "328": 4, + "329": 5, + "330": 8, + "331": 7, + "332": 4, + "333": 3, + "334": 2, + "335": 5, + "336": 7, + "337": 4, + "338": 3, + "339": 4, + "340": 2, + "341": 5, + "342": 1, + "343": 2, + "344": 7, + "345": 10, + "346": 12, + "347": 5, + "348": 9, + "349": 4, + "350": 6, + "351": 12, + "352": 6, + "353": 6, + "354": 4, + "355": 4, + "356": 3, + "357": 6, + "358": 2, + "359": 4, + "360": 2, + "361": 5, + "362": 4, + "363": 4, + "364": 10, + "365": 4, + "366": 7, + "367": 9, + "369": 2, + "370": 3, + "371": 1, + "372": 4, + "373": 4, + "374": 4, + "375": 2, + "376": 2, + "377": 1, + "378": 2, + "379": 2, + "380": 3, + "381": 2, + "382": 6, + "383": 3, + "384": 2, + "385": 7, + "386": 5, + "387": 7, + "388": 3, + "389": 5, + "390": 9, + "391": 8, + "392": 7, + "393": 8, + "394": 8, + "395": 8, + "396": 3, + "397": 4, + "398": 4, + "399": 3, + "400": 5, + "401": 15, + "402": 5, + "403": 11, + "404": 7, + "405": 5, + "406": 6, + "407": 3, + "408": 7, + "409": 1, + "410": 3, + "411": 4, + "412": 2, + "413": 1, + "414": 1, + "415": 2, + "416": 3, + "417": 1, + "420": 1, + "421": 1, + "425": 1, + "426": 1, + "427": 2, + "431": 1, + "433": 2, + "439": 1, + "440": 1, + "441": 3, + "444": 1, + "445": 2, + "446": 1, + "448": 3, + "449": 1, + "450": 2, + "451": 1, + "452": 4, + "454": 2, + "455": 1, + "456": 2, + "457": 1, + "458": 1, + "459": 1, + "461": 1, + "462": 1, + "463": 1, + "464": 1, + "466": 1, + "477": 1, + "479": 1 + }, + "started": "2025-09-11T20:12:12.982Z", + "trafficStats": { + "incomingCompressionRatio": 0.0399603271484375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 327355, + "incomingOctetsWireLevel": 335355, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.02443830092712804, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 373274, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.010832065079046995, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "278": 1, + "301": 5, + "302": 6, + "303": 2, + "304": 5, + "305": 6, + "306": 11, + "307": 10, + "308": 3, + "309": 1, + "310": 5, + "311": 1, + "312": 3, + "313": 1, + "314": 5, + "315": 7, + "316": 4, + "317": 6, + "318": 12, + "319": 4, + "320": 12, + "321": 11, + "322": 10, + "323": 13, + "324": 10, + "325": 18, + "326": 16, + "327": 15, + "328": 10, + "329": 21, + "330": 21, + "331": 19, + "332": 13, + "333": 16, + "334": 7, + "335": 7, + "336": 12, + "337": 11, + "338": 10, + "339": 5, + "340": 7, + "341": 4, + "342": 5, + "343": 5, + "344": 3, + "345": 1, + "346": 5, + "347": 5, + "348": 6, + "349": 9, + "350": 9, + "351": 9, + "352": 8, + "353": 10, + "354": 8, + "355": 14, + "356": 9, + "357": 10, + "358": 12, + "359": 9, + "360": 8, + "361": 12, + "362": 8, + "363": 10, + "364": 4, + "365": 6, + "366": 6, + "367": 2, + "368": 2, + "369": 11, + "370": 7, + "371": 2, + "372": 11, + "373": 7, + "374": 8, + "375": 3, + "376": 7, + "377": 8, + "378": 6, + "379": 10, + "380": 6, + "381": 4, + "382": 2, + "383": 7, + "384": 2, + "385": 3, + "386": 3, + "387": 4, + "388": 3, + "389": 3, + "390": 5, + "391": 2, + "392": 4, + "393": 3, + "394": 4, + "395": 3, + "396": 3, + "397": 6, + "398": 4, + "399": 3, + "400": 1, + "401": 1, + "402": 4, + "403": 3, + "404": 3, + "405": 1, + "406": 4, + "407": 8, + "408": 3, + "409": 2, + "410": 7, + "411": 6, + "412": 2, + "413": 1, + "414": 1, + "415": 4, + "416": 12, + "417": 5, + "418": 3, + "419": 3, + "420": 2, + "421": 2, + "422": 7, + "423": 4, + "424": 3, + "425": 3, + "426": 5, + "427": 2, + "429": 3, + "430": 3, + "431": 3, + "432": 1, + "433": 1, + "434": 3, + "436": 1, + "437": 1, + "441": 2, + "442": 1, + "443": 3, + "445": 1, + "447": 1, + "448": 3, + "449": 1, + "450": 3, + "451": 3, + "452": 1, + "453": 9, + "454": 8, + "455": 2, + "456": 7, + "457": 10, + "458": 9, + "459": 2, + "460": 7, + "461": 13, + "462": 6, + "463": 8, + "464": 5, + "465": 8, + "466": 9, + "467": 6, + "468": 8, + "469": 2, + "470": 4, + "471": 1, + "472": 2, + "473": 2, + "474": 1, + "475": 1, + "476": 2, + "477": 1, + "478": 1, + "479": 3, + "480": 1, + "482": 1, + "484": 1, + "487": 2, + "488": 1, + "489": 3, + "490": 1, + "492": 1, + "493": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343333266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882df177d06dcff" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "df177d06" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_7.html b/autobahn/client/tungstenite_case_13_3_7.html new file mode 100644 index 0000000..5f50e0b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_7.html @@ -0,0 +1,860 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.7 : Pass - 987 ms @ 2025-09-11T20:12:13.535Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=434&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: EQGHDyfatdSLhi/DegE3gg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BAkTpNPMx5m51trbdTzhINhRPZo=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
4951495
4961496
4971497
49841992
49931497
50031500
50131503
50242008
5031503
50421008
50642024
5071507
50931527
5111511
5121512
51331539
51421028
51631548
5171517
51852590
51963114
52021040
52163126
52263132
52394707
52452620
5251525
52621052
52721054
52821056
53021060
53121062
53252660
53331599
53473738
53542140
53652680
53752685
53831614
53963234
54073780
54163246
54221084
54373801
54442176
545105450
54684368
54794923
54863288
54984392
55073850
55194959
55273864
55342212
55442216
55542220
5561556
55731671
55821116
55952795
56042240
5611561
56221124
56321126
56431692
56542260
56642264
56731701
56821136
56952845
57052850
57131713
57221144
57331719
57421148
57542300
57621152
57731731
57821156
57931737
58031740
58142324
58231746
58321166
58421168
5851585
58652930
58752935
58863528
58963534
59063540
591127092
59221184
59352965
59431782
59552975
59621192
59731791
5981598
59921198
60031800
60142404
60231806
60395427
60431812
60542420
60663636
60731821
60831824
60963654
61063660
61195499
61295508
61353065
61442456
61521230
61674312
61742468
61853090
61921238
62021240
62131863
622127464
62353115
62442496
6251625
62631878
62763762
62863768
62985032
63053150
6311631
63231896
63331899
63421268
63542540
63642544
6371637
6381638
63921278
64031920
6421642
6431643
6451645
6461646
64721294
64821296
64974543
65031950
6511651
65321306
65421308
65621312
65721314
65842632
66053300
66121322
66231986
66321326
66542660
6661666
66764002
66821336
66942676
67085360
67121342
67274704
67353365
67432022
675106750
67621352
67764062
67853390
67953395
68042720
68164086
68264092
68364098
6841684
68532055
68674802
68753435
68832064
6891689
69021380
6911691
69221384
69342772
69432082
69574865
69674872
69742788
69874886
699106990
70064200
70153505
70242808
70353515
70496336
70542820
70696354
70753535
70864248
70932127
71074970
71153555
71264272
7131713
71421428
71521430
71632148
71742868
71832154
71953595
72032160
7211721
72253610
72321446
72421448
72832184
7321732
73432202
7351735
73642944
73753685
73821476
7391739
74021480
7411741
74242968
74321486
74553725
7461746
74742988
74821496
74921498
7501750
7511751
7531753
7541754
75621512
7571757
7621762
7651765
7671767
7711771
77321546
77432322
77521550
7761776
77721554
77932337
78132343
7821782
7841784
7861786
79021580
79521590
79643184
79732391
79821596
80021600
8011801
80232406
80332409
80421608
8051805
80632418
80732421
80954045
81054050
8111811
81254060
81321626
81421628
81621632
8181818
81921638
8201820
8211821
8231823
8241824
82621652
Total1002635881
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2781278
60121202
60231806
6031603
60421208
6051605
6061606
6071607
6081608
6091609
61021220
61131833
61274284
61342452
61463684
615106150
61674312
61753085
61831854
619106190
62053100
6211621
62242488
62374361
62495616
62585000
626116886
62795643
628106280
629159435
63095670
631159465
63274424
63363798
63485072
63585080
63674452
63731911
63853190
63942556
64074480
64153205
64242568
64353215
64453220
64574515
64642584
64721294
6481648
64963894
65031950
65121302
65221304
65342612
65463924
65553275
65685248
65763942
65874606
65921318
66074620
66195949
662117282
663106630
664117304
66585320
66674662
66785336
66874676
66942676
67085360
67164026
67242688
67353365
67442696
67521350
67621352
67742708
6781678
67942716
68042720
68142724
68221364
6831683
68442736
68542740
6861686
68721374
68842752
68921378
69032070
69132073
6921692
69332079
69432082
69553475
69642784
69732091
69842792
69942796
70032100
70121402
70232106
70321406
70464224
70532115
70685648
70721414
7081708
7091709
71032130
71132133
7121712
7131713
71421428
71532145
71621432
71721434
71842872
71921438
72032160
72121442
72253610
72321446
72421448
72553625
72621452
72721454
7281728
7291729
73032190
73232196
7331733
73442936
73521470
73653680
73721474
73932217
74032220
74153705
74332229
74432232
74521490
74621492
7471747
7481748
74975243
7501750
7511751
7521752
7531753
7541754
75543020
75643024
75732271
75853790
75932277
76021520
76221524
76332289
76443056
7651765
7661766
76732301
7691769
7701770
77132313
7721772
77321546
7741774
77532325
7761776
7771777
7781778
7801780
7831783
78621572
78721574
78832364
7891789
79043160
79121582
79221584
7941794
79543180
79753985
79821596
8001800
80121602
80221604
8031803
8041804
80532415
80675642
80764842
80821616
80964854
81043240
81154055
81232436
81321626
81421628
81521630
81643264
81732451
81843272
81932457
82021640
82132463
82354115
82421648
82564950
82754135
82843312
82943316
83043320
83143324
83221664
8331833
83486672
83521670
83621672
83743348
83843352
83921678
84054200
84121682
84275894
84332529
84465064
84521690
8461846
84721694
84821696
8491849
85054250
851108510
85254260
85343412
85454270
85554275
8561856
85754285
85832574
85932577
86043440
86143444
86232586
86376041
86432592
86543460
86665196
86765202
86876076
86932607
87021740
8711871
8721872
87332619
87432622
87521750
87721754
8781878
8791879
88121762
88221764
88421768
88621772
8871887
88821776
8901890
8931893
8941894
8991899
9001900
9041904
9061906
90743628
9081908
9101910
Total1002725564
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343334266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882e4778161e79f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6534373738313631
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_7.json b/autobahn/client/tungstenite_case_13_3_7.json new file mode 100644 index 0000000..71531fb --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_7.json @@ -0,0 +1,707 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 434, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 987, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=434&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: EQGHDyfatdSLhi/DegE3gg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BAkTpNPMx5m51trbdTzhINhRPZo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "495": 1, + "496": 1, + "497": 1, + "498": 4, + "499": 3, + "500": 3, + "501": 3, + "502": 4, + "503": 1, + "504": 2, + "506": 4, + "507": 1, + "509": 3, + "511": 1, + "512": 1, + "513": 3, + "514": 2, + "516": 3, + "517": 1, + "518": 5, + "519": 6, + "520": 2, + "521": 6, + "522": 6, + "523": 9, + "524": 5, + "525": 1, + "526": 2, + "527": 2, + "528": 2, + "530": 2, + "531": 2, + "532": 5, + "533": 3, + "534": 7, + "535": 4, + "536": 5, + "537": 5, + "538": 3, + "539": 6, + "540": 7, + "541": 6, + "542": 2, + "543": 7, + "544": 4, + "545": 10, + "546": 8, + "547": 9, + "548": 6, + "549": 8, + "550": 7, + "551": 9, + "552": 7, + "553": 4, + "554": 4, + "555": 4, + "556": 1, + "557": 3, + "558": 2, + "559": 5, + "560": 4, + "561": 1, + "562": 2, + "563": 2, + "564": 3, + "565": 4, + "566": 4, + "567": 3, + "568": 2, + "569": 5, + "570": 5, + "571": 3, + "572": 2, + "573": 3, + "574": 2, + "575": 4, + "576": 2, + "577": 3, + "578": 2, + "579": 3, + "580": 3, + "581": 4, + "582": 3, + "583": 2, + "584": 2, + "585": 1, + "586": 5, + "587": 5, + "588": 6, + "589": 6, + "590": 6, + "591": 12, + "592": 2, + "593": 5, + "594": 3, + "595": 5, + "596": 2, + "597": 3, + "598": 1, + "599": 2, + "600": 3, + "601": 4, + "602": 3, + "603": 9, + "604": 3, + "605": 4, + "606": 6, + "607": 3, + "608": 3, + "609": 6, + "610": 6, + "611": 9, + "612": 9, + "613": 5, + "614": 4, + "615": 2, + "616": 7, + "617": 4, + "618": 5, + "619": 2, + "620": 2, + "621": 3, + "622": 12, + "623": 5, + "624": 4, + "625": 1, + "626": 3, + "627": 6, + "628": 6, + "629": 8, + "630": 5, + "631": 1, + "632": 3, + "633": 3, + "634": 2, + "635": 4, + "636": 4, + "637": 1, + "638": 1, + "639": 2, + "640": 3, + "642": 1, + "643": 1, + "645": 1, + "646": 1, + "647": 2, + "648": 2, + "649": 7, + "650": 3, + "651": 1, + "653": 2, + "654": 2, + "656": 2, + "657": 2, + "658": 4, + "660": 5, + "661": 2, + "662": 3, + "663": 2, + "665": 4, + "666": 1, + "667": 6, + "668": 2, + "669": 4, + "670": 8, + "671": 2, + "672": 7, + "673": 5, + "674": 3, + "675": 10, + "676": 2, + "677": 6, + "678": 5, + "679": 5, + "680": 4, + "681": 6, + "682": 6, + "683": 6, + "684": 1, + "685": 3, + "686": 7, + "687": 5, + "688": 3, + "689": 1, + "690": 2, + "691": 1, + "692": 2, + "693": 4, + "694": 3, + "695": 7, + "696": 7, + "697": 4, + "698": 7, + "699": 10, + "700": 6, + "701": 5, + "702": 4, + "703": 5, + "704": 9, + "705": 4, + "706": 9, + "707": 5, + "708": 6, + "709": 3, + "710": 7, + "711": 5, + "712": 6, + "713": 1, + "714": 2, + "715": 2, + "716": 3, + "717": 4, + "718": 3, + "719": 5, + "720": 3, + "721": 1, + "722": 5, + "723": 2, + "724": 2, + "728": 3, + "732": 1, + "734": 3, + "735": 1, + "736": 4, + "737": 5, + "738": 2, + "739": 1, + "740": 2, + "741": 1, + "742": 4, + "743": 2, + "745": 5, + "746": 1, + "747": 4, + "748": 2, + "749": 2, + "750": 1, + "751": 1, + "753": 1, + "754": 1, + "756": 2, + "757": 1, + "762": 1, + "765": 1, + "767": 1, + "771": 1, + "773": 2, + "774": 3, + "775": 2, + "776": 1, + "777": 2, + "779": 3, + "781": 3, + "782": 1, + "784": 1, + "786": 1, + "790": 2, + "795": 2, + "796": 4, + "797": 3, + "798": 2, + "800": 2, + "801": 1, + "802": 3, + "803": 3, + "804": 2, + "805": 1, + "806": 3, + "807": 3, + "809": 5, + "810": 5, + "811": 1, + "812": 5, + "813": 2, + "814": 2, + "816": 2, + "818": 1, + "819": 2, + "820": 1, + "821": 1, + "823": 1, + "824": 1, + "826": 2 + }, + "started": "2025-09-11T20:12:13.535Z", + "trafficStats": { + "incomingCompressionRatio": 0.038306640625, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 627616, + "incomingOctetsWireLevel": 635616, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.01274664763167287, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 725282, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.005545681162152944, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "278": 1, + "601": 2, + "602": 3, + "603": 1, + "604": 2, + "605": 1, + "606": 1, + "607": 1, + "608": 1, + "609": 1, + "610": 2, + "611": 3, + "612": 7, + "613": 4, + "614": 6, + "615": 10, + "616": 7, + "617": 5, + "618": 3, + "619": 10, + "620": 5, + "621": 1, + "622": 4, + "623": 7, + "624": 9, + "625": 8, + "626": 11, + "627": 9, + "628": 10, + "629": 15, + "630": 9, + "631": 15, + "632": 7, + "633": 6, + "634": 8, + "635": 8, + "636": 7, + "637": 3, + "638": 5, + "639": 4, + "640": 7, + "641": 5, + "642": 4, + "643": 5, + "644": 5, + "645": 7, + "646": 4, + "647": 2, + "648": 1, + "649": 6, + "650": 3, + "651": 2, + "652": 2, + "653": 4, + "654": 6, + "655": 5, + "656": 8, + "657": 6, + "658": 7, + "659": 2, + "660": 7, + "661": 9, + "662": 11, + "663": 10, + "664": 11, + "665": 8, + "666": 7, + "667": 8, + "668": 7, + "669": 4, + "670": 8, + "671": 6, + "672": 4, + "673": 5, + "674": 4, + "675": 2, + "676": 2, + "677": 4, + "678": 1, + "679": 4, + "680": 4, + "681": 4, + "682": 2, + "683": 1, + "684": 4, + "685": 4, + "686": 1, + "687": 2, + "688": 4, + "689": 2, + "690": 3, + "691": 3, + "692": 1, + "693": 3, + "694": 3, + "695": 5, + "696": 4, + "697": 3, + "698": 4, + "699": 4, + "700": 3, + "701": 2, + "702": 3, + "703": 2, + "704": 6, + "705": 3, + "706": 8, + "707": 2, + "708": 1, + "709": 1, + "710": 3, + "711": 3, + "712": 1, + "713": 1, + "714": 2, + "715": 3, + "716": 2, + "717": 2, + "718": 4, + "719": 2, + "720": 3, + "721": 2, + "722": 5, + "723": 2, + "724": 2, + "725": 5, + "726": 2, + "727": 2, + "728": 1, + "729": 1, + "730": 3, + "732": 3, + "733": 1, + "734": 4, + "735": 2, + "736": 5, + "737": 2, + "739": 3, + "740": 3, + "741": 5, + "743": 3, + "744": 3, + "745": 2, + "746": 2, + "747": 1, + "748": 1, + "749": 7, + "750": 1, + "751": 1, + "752": 1, + "753": 1, + "754": 1, + "755": 4, + "756": 4, + "757": 3, + "758": 5, + "759": 3, + "760": 2, + "762": 2, + "763": 3, + "764": 4, + "765": 1, + "766": 1, + "767": 3, + "769": 1, + "770": 1, + "771": 3, + "772": 1, + "773": 2, + "774": 1, + "775": 3, + "776": 1, + "777": 1, + "778": 1, + "780": 1, + "783": 1, + "786": 2, + "787": 2, + "788": 3, + "789": 1, + "790": 4, + "791": 2, + "792": 2, + "794": 1, + "795": 4, + "797": 5, + "798": 2, + "800": 1, + "801": 2, + "802": 2, + "803": 1, + "804": 1, + "805": 3, + "806": 7, + "807": 6, + "808": 2, + "809": 6, + "810": 4, + "811": 5, + "812": 3, + "813": 2, + "814": 2, + "815": 2, + "816": 4, + "817": 3, + "818": 4, + "819": 3, + "820": 2, + "821": 3, + "823": 5, + "824": 2, + "825": 6, + "827": 5, + "828": 4, + "829": 4, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 8, + "835": 2, + "836": 2, + "837": 4, + "838": 4, + "839": 2, + "840": 5, + "841": 2, + "842": 7, + "843": 3, + "844": 6, + "845": 2, + "846": 1, + "847": 2, + "848": 2, + "849": 1, + "850": 5, + "851": 10, + "852": 5, + "853": 4, + "854": 5, + "855": 5, + "856": 1, + "857": 5, + "858": 3, + "859": 3, + "860": 4, + "861": 4, + "862": 3, + "863": 7, + "864": 3, + "865": 4, + "866": 6, + "867": 6, + "868": 7, + "869": 3, + "870": 2, + "871": 1, + "872": 1, + "873": 3, + "874": 3, + "875": 2, + "877": 2, + "878": 1, + "879": 1, + "881": 2, + "882": 2, + "884": 2, + "886": 2, + "887": 1, + "888": 2, + "890": 1, + "893": 1, + "894": 1, + "899": 1, + "900": 1, + "904": 1, + "906": 1, + "907": 4, + "908": 1, + "910": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343334266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e4778161e79f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e4778161" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_8.html b/autobahn/client/tungstenite_case_13_3_8.html new file mode 100644 index 0000000..1b7bcdc --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_8.html @@ -0,0 +1,1021 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.8 : Pass - 1845 ms @ 2025-09-11T20:12:14.524Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=435&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: o0o95K9EvI4fkwcvXPNCoA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +HWs8VwGT/GVZKBh85RAlSjPNaE=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
104233126
104322086
104422088
104611046
104733141
104833144
104922098
105044200
105155255
105222104
105355265
105433162
105522110
105622112
105766342
105966354
106011060
106222124
106322126
106422128
106511065
106711067
106811068
107011070
107122142
107222144
107344292
10741010740
107588600
10761010760
107766462
107822156
107999711
108077560
108122162
108255410
108455420
108533255
108622172
108744348
108866528
108933267
109044360
109166546
109299828
109333279
109455470
109522190
109644384
109766582
109855490
109966594
110055500
110133303
110255510
110333309
110444416
110511105
110611106
110722214
110811108
110955545
111022220
111111111
111222224
111522230
111611116
111711117
112111121
112233366
112322246
112411124
112611126
112722254
112822256
113033390
113122262
113211132
113333399
113511135
113711137
114011140
114211142
114333429
114411144
114511145
114611146
114711147
114922298
115222304
115322306
115411154
115522310
115633468
115722314
115811158
115911159
116333489
116433492
116522330
116622332
116733501
116822336
116933507
117022340
117122342
117211172
117333519
117444696
117533525
117611176
117722354
117833534
117911179
118044720
118122362
118322366
118455920
118567110
118644744
118733561
118833564
118967134
119078330
119133573
119255960
119355965
119422388
119544780
119611196
119711197
119844792
119944796
120011200
120133603
120244808
120311203
120433612
120544820
120633618
120767242
120844832
120944836
121033630
121178477
121233636
121356065
121433642
121533645
121633648
121744868
121822436
121978533
122033660
122167326
122233666
122356115
122411224
122533675
122644904
122711227
122822456
123122462
123222464
123333699
123444936
123556175
123722474
123811238
123911239
124044960
124144964
124233726
124322486
124411244
124511245
124622492
124733741
124856240
124911249
125033750
125133753
125211252
125445016
125622512
125911259
126122522
126411264
126522530
126711267
126822536
126945076
127067620
127178897
127267632
127378911
127467644
127556375
127633828
127711277
127833834
127922558
128045120
128222564
128311283
128522570
128611286
128822576
128922578
129045160
129133873
129222584
129322586
129411294
129556475
129633888
129722594
129822596
129911299
130033900
130256510
130356515
130433912
130745228
130833924
130911309
131011310
131111311
131311313
131411314
131511315
131611316
131733951
131822636
131911319
132011320
132122642
132222644
132322646
132411324
132579275
132645304
1327810616
132822656
132945316
133067980
133122662
133211332
133345332
133468004
1335912015
1336810688
13371013370
133856690
133911339
134068040
134156705
134234026
134322686
134434032
134534035
134656730
134734041
134845392
134911349
135045400
135122702
135234056
135434062
135511355
135645424
135745428
135834074
135956795
136022720
136122722
136334089
136522730
136634098
136722734
136822736
136911369
137011370
137122742
137311373
137422748
137511375
137611376
137734131
137922758
138011380
138122762
138268292
138322766
138422768
138511385
138622772
138711387
138911389
139011390
139211392
139322786
139411394
139822796
139911399
140311403
140422808
140522810
140634218
140811408
140922818
141211412
141411414
141611416
141711417
142211422
142422848
142522850
142734281
142811428
142911429
143011430
144311443
144411444
144511445
144911449
145422908
145622912
145722914
145911459
146011460
146122922
146311463
146522930
146722934
146934407
147011470
147122942
147257360
147334419
147411474
147534425
147611476
147711477
147811478
147922958
148022960
148211482
148411484
148511485
148634458
148857440
148911489
149011490
149111491
149334479
149411494
149722994
149945996
150011500
150134503
150223004
150511505
Total10021239200
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2781278
123611236
123922478
124011240
124111241
124211242
124311243
124411244
124544980
124611246
124822496
125022500
125122502
125211252
125311253
125433762
125511255
125645024
125711257
125833774
125911259
126011260
126133783
126256310
126322526
126433792
126522530
126645064
126745068
126822536
126978883
127056350
127245088
1273810184
127445096
1275911475
127633828
1277911493
127867668
127967674
12801114080
1281810248
1282911538
1283911547
128445136
128545140
1286810288
128756435
128856440
128956445
129022580
129145164
129211292
129333879
129456470
129545180
129633888
129745188
129856490
129956495
130033900
130167806
130267812
130345212
130445216
130511305
130611306
130745228
130822616
130933927
131022620
131133933
131245248
131322626
131411314
131622632
131722634
131811318
131945276
132133963
132211322
132311323
132422648
132522650
132745308
132822656
132911329
133011330
133122662
133222664
133311333
133422668
133634008
133711337
133922678
134034020
134122682
134211342
134322686
134422688
134545380
134622692
134768082
134811348
134911349
135156755
135245408
135322706
135556775
135645424
135811358
135934077
136034080
136122722
136211362
136322726
136411364
136622732
136745468
136811368
136945476
137011370
137222744
137322746
137434122
137711377
137822756
137911379
138011380
138134143
138234146
138311383
138434152
138534155
138611386
138711387
138922778
139134173
139222784
139311393
139422788
139522790
139611396
139722794
139811398
140111401
140222804
140311403
140411404
140511405
140622812
140922818
141011410
141122822
141211412
141368478
141422828
141511415
141634248
141745668
141811418
141911419
142011420
142145684
142222844
142322846
142411424
142522850
142611426
142745708
142922858
143122862
143245728
143411434
143511435
143634308
143722874
143945756
144011440
144122882
144222884
144411444
144645784
144722894
144811448
144922898
145011450
145122902
145222904
145322906
145434362
145522910
145622912
145722914
145911459
146022920
146111461
146211462
146322926
146411464
146534395
146622932
146722934
146822936
146945876
147045880
147168826
147234416
147322946
147422948
147511475
147622952
147734431
147834434
147922958
148022960
148111481
148211482
148334449
148445936
148568910
148634458
148722974
148845952
148934467
149022980
149111491
149234476
149334479
149422988
149534485
149657480
149822996
150034500
150123002
150223004
150323006
150423008
150534515
150623012
150711507
150834524
150923018
151011510
151123022
151357565
151423028
151523030
151611516
151746068
151846072
151934557
152046080
152269132
152423048
152511525
152611526
152834584
152957645
153123062
153234596
153311533
153446136
153546140
153657680
153757685
1538913842
153957695
154069240
1541710787
154269252
154334629
154457720
154511545
154634638
1547710829
154823096
154923098
155034650
155169306
155257760
155369318
155434662
155534665
155669336
155757785
1558812464
1559710913
15601117160
1561710927
1562710934
156323126
156469384
156557825
156657830
156757835
156823136
156934707
157057850
157157855
157234716
157334719
157411574
157511575
157623152
157723154
157811578
158034740
158123162
158234746
158323166
158511585
158623172
158723174
158823176
158923178
159023180
159123182
159211592
159311593
159711597
160411604
160711607
160823216
161123222
161311613
161411614
161711617
161846472
162111621
162323246
162423248
162511625
162669756
162734881
162811628
162923258
163011630
163223264
163411634
163623272
163723274
163911639
164134923
164334929
164423288
164669876
164711647
164823296
165023300
165123302
165223304
165323306
165411654
165523310
165723314
165811658
165923318
166023320
166111661
166423328
Total10021435147
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343335266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882f7fa64b9f412
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6637666136346239
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_8.json b/autobahn/client/tungstenite_case_13_3_8.json new file mode 100644 index 0000000..b9025e8 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_8.json @@ -0,0 +1,868 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 435, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 1845, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=435&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: o0o95K9EvI4fkwcvXPNCoA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +HWs8VwGT/GVZKBh85RAlSjPNaE=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1042": 3, + "1043": 2, + "1044": 2, + "1046": 1, + "1047": 3, + "1048": 3, + "1049": 2, + "1050": 4, + "1051": 5, + "1052": 2, + "1053": 5, + "1054": 3, + "1055": 2, + "1056": 2, + "1057": 6, + "1059": 6, + "1060": 1, + "1062": 2, + "1063": 2, + "1064": 2, + "1065": 1, + "1067": 1, + "1068": 1, + "1070": 1, + "1071": 2, + "1072": 2, + "1073": 4, + "1074": 10, + "1075": 8, + "1076": 10, + "1077": 6, + "1078": 2, + "1079": 9, + "1080": 7, + "1081": 2, + "1082": 5, + "1084": 5, + "1085": 3, + "1086": 2, + "1087": 4, + "1088": 6, + "1089": 3, + "1090": 4, + "1091": 6, + "1092": 9, + "1093": 3, + "1094": 5, + "1095": 2, + "1096": 4, + "1097": 6, + "1098": 5, + "1099": 6, + "1100": 5, + "1101": 3, + "1102": 5, + "1103": 3, + "1104": 4, + "1105": 1, + "1106": 1, + "1107": 2, + "1108": 1, + "1109": 5, + "1110": 2, + "1111": 1, + "1112": 2, + "1115": 2, + "1116": 1, + "1117": 1, + "1121": 1, + "1122": 3, + "1123": 2, + "1124": 1, + "1126": 1, + "1127": 2, + "1128": 2, + "1130": 3, + "1131": 2, + "1132": 1, + "1133": 3, + "1135": 1, + "1137": 1, + "1140": 1, + "1142": 1, + "1143": 3, + "1144": 1, + "1145": 1, + "1146": 1, + "1147": 1, + "1149": 2, + "1152": 2, + "1153": 2, + "1154": 1, + "1155": 2, + "1156": 3, + "1157": 2, + "1158": 1, + "1159": 1, + "1163": 3, + "1164": 3, + "1165": 2, + "1166": 2, + "1167": 3, + "1168": 2, + "1169": 3, + "1170": 2, + "1171": 2, + "1172": 1, + "1173": 3, + "1174": 4, + "1175": 3, + "1176": 1, + "1177": 2, + "1178": 3, + "1179": 1, + "1180": 4, + "1181": 2, + "1183": 2, + "1184": 5, + "1185": 6, + "1186": 4, + "1187": 3, + "1188": 3, + "1189": 6, + "1190": 7, + "1191": 3, + "1192": 5, + "1193": 5, + "1194": 2, + "1195": 4, + "1196": 1, + "1197": 1, + "1198": 4, + "1199": 4, + "1200": 1, + "1201": 3, + "1202": 4, + "1203": 1, + "1204": 3, + "1205": 4, + "1206": 3, + "1207": 6, + "1208": 4, + "1209": 4, + "1210": 3, + "1211": 7, + "1212": 3, + "1213": 5, + "1214": 3, + "1215": 3, + "1216": 3, + "1217": 4, + "1218": 2, + "1219": 7, + "1220": 3, + "1221": 6, + "1222": 3, + "1223": 5, + "1224": 1, + "1225": 3, + "1226": 4, + "1227": 1, + "1228": 2, + "1231": 2, + "1232": 2, + "1233": 3, + "1234": 4, + "1235": 5, + "1237": 2, + "1238": 1, + "1239": 1, + "1240": 4, + "1241": 4, + "1242": 3, + "1243": 2, + "1244": 1, + "1245": 1, + "1246": 2, + "1247": 3, + "1248": 5, + "1249": 1, + "1250": 3, + "1251": 3, + "1252": 1, + "1254": 4, + "1256": 2, + "1259": 1, + "1261": 2, + "1264": 1, + "1265": 2, + "1267": 1, + "1268": 2, + "1269": 4, + "1270": 6, + "1271": 7, + "1272": 6, + "1273": 7, + "1274": 6, + "1275": 5, + "1276": 3, + "1277": 1, + "1278": 3, + "1279": 2, + "1280": 4, + "1282": 2, + "1283": 1, + "1285": 2, + "1286": 1, + "1288": 2, + "1289": 2, + "1290": 4, + "1291": 3, + "1292": 2, + "1293": 2, + "1294": 1, + "1295": 5, + "1296": 3, + "1297": 2, + "1298": 2, + "1299": 1, + "1300": 3, + "1302": 5, + "1303": 5, + "1304": 3, + "1307": 4, + "1308": 3, + "1309": 1, + "1310": 1, + "1311": 1, + "1313": 1, + "1314": 1, + "1315": 1, + "1316": 1, + "1317": 3, + "1318": 2, + "1319": 1, + "1320": 1, + "1321": 2, + "1322": 2, + "1323": 2, + "1324": 1, + "1325": 7, + "1326": 4, + "1327": 8, + "1328": 2, + "1329": 4, + "1330": 6, + "1331": 2, + "1332": 1, + "1333": 4, + "1334": 6, + "1335": 9, + "1336": 8, + "1337": 10, + "1338": 5, + "1339": 1, + "1340": 6, + "1341": 5, + "1342": 3, + "1343": 2, + "1344": 3, + "1345": 3, + "1346": 5, + "1347": 3, + "1348": 4, + "1349": 1, + "1350": 4, + "1351": 2, + "1352": 3, + "1354": 3, + "1355": 1, + "1356": 4, + "1357": 4, + "1358": 3, + "1359": 5, + "1360": 2, + "1361": 2, + "1363": 3, + "1365": 2, + "1366": 3, + "1367": 2, + "1368": 2, + "1369": 1, + "1370": 1, + "1371": 2, + "1373": 1, + "1374": 2, + "1375": 1, + "1376": 1, + "1377": 3, + "1379": 2, + "1380": 1, + "1381": 2, + "1382": 6, + "1383": 2, + "1384": 2, + "1385": 1, + "1386": 2, + "1387": 1, + "1389": 1, + "1390": 1, + "1392": 1, + "1393": 2, + "1394": 1, + "1398": 2, + "1399": 1, + "1403": 1, + "1404": 2, + "1405": 2, + "1406": 3, + "1408": 1, + "1409": 2, + "1412": 1, + "1414": 1, + "1416": 1, + "1417": 1, + "1422": 1, + "1424": 2, + "1425": 2, + "1427": 3, + "1428": 1, + "1429": 1, + "1430": 1, + "1443": 1, + "1444": 1, + "1445": 1, + "1449": 1, + "1454": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 1, + "1461": 2, + "1463": 1, + "1465": 2, + "1467": 2, + "1469": 3, + "1470": 1, + "1471": 2, + "1472": 5, + "1473": 3, + "1474": 1, + "1475": 3, + "1476": 1, + "1477": 1, + "1478": 1, + "1479": 2, + "1480": 2, + "1482": 1, + "1484": 1, + "1485": 1, + "1486": 3, + "1488": 5, + "1489": 1, + "1490": 1, + "1491": 1, + "1493": 3, + "1494": 1, + "1497": 2, + "1499": 4, + "1500": 1, + "1501": 3, + "1502": 2, + "1505": 1 + }, + "started": "2025-09-11T20:12:14.524Z", + "trafficStats": { + "incomingCompressionRatio": 0.03756515502929687, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1230935, + "incomingOctetsWireLevel": 1238935, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.006499124649148817, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1434865, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0027955118057957948, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "278": 1, + "1236": 1, + "1239": 2, + "1240": 1, + "1241": 1, + "1242": 1, + "1243": 1, + "1244": 1, + "1245": 4, + "1246": 1, + "1248": 2, + "1250": 2, + "1251": 2, + "1252": 1, + "1253": 1, + "1254": 3, + "1255": 1, + "1256": 4, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 1, + "1261": 3, + "1262": 5, + "1263": 2, + "1264": 3, + "1265": 2, + "1266": 4, + "1267": 4, + "1268": 2, + "1269": 7, + "1270": 5, + "1272": 4, + "1273": 8, + "1274": 4, + "1275": 9, + "1276": 3, + "1277": 9, + "1278": 6, + "1279": 6, + "1280": 11, + "1281": 8, + "1282": 9, + "1283": 9, + "1284": 4, + "1285": 4, + "1286": 8, + "1287": 5, + "1288": 5, + "1289": 5, + "1290": 2, + "1291": 4, + "1292": 1, + "1293": 3, + "1294": 5, + "1295": 4, + "1296": 3, + "1297": 4, + "1298": 5, + "1299": 5, + "1300": 3, + "1301": 6, + "1302": 6, + "1303": 4, + "1304": 4, + "1305": 1, + "1306": 1, + "1307": 4, + "1308": 2, + "1309": 3, + "1310": 2, + "1311": 3, + "1312": 4, + "1313": 2, + "1314": 1, + "1316": 2, + "1317": 2, + "1318": 1, + "1319": 4, + "1321": 3, + "1322": 1, + "1323": 1, + "1324": 2, + "1325": 2, + "1327": 4, + "1328": 2, + "1329": 1, + "1330": 1, + "1331": 2, + "1332": 2, + "1333": 1, + "1334": 2, + "1336": 3, + "1337": 1, + "1339": 2, + "1340": 3, + "1341": 2, + "1342": 1, + "1343": 2, + "1344": 2, + "1345": 4, + "1346": 2, + "1347": 6, + "1348": 1, + "1349": 1, + "1351": 5, + "1352": 4, + "1353": 2, + "1355": 5, + "1356": 4, + "1358": 1, + "1359": 3, + "1360": 3, + "1361": 2, + "1362": 1, + "1363": 2, + "1364": 1, + "1366": 2, + "1367": 4, + "1368": 1, + "1369": 4, + "1370": 1, + "1372": 2, + "1373": 2, + "1374": 3, + "1377": 1, + "1378": 2, + "1379": 1, + "1380": 1, + "1381": 3, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 3, + "1386": 1, + "1387": 1, + "1389": 2, + "1391": 3, + "1392": 2, + "1393": 1, + "1394": 2, + "1395": 2, + "1396": 1, + "1397": 2, + "1398": 1, + "1401": 1, + "1402": 2, + "1403": 1, + "1404": 1, + "1405": 1, + "1406": 2, + "1409": 2, + "1410": 1, + "1411": 2, + "1412": 1, + "1413": 6, + "1414": 2, + "1415": 1, + "1416": 3, + "1417": 4, + "1418": 1, + "1419": 1, + "1420": 1, + "1421": 4, + "1422": 2, + "1423": 2, + "1424": 1, + "1425": 2, + "1426": 1, + "1427": 4, + "1429": 2, + "1431": 2, + "1432": 4, + "1434": 1, + "1435": 1, + "1436": 3, + "1437": 2, + "1439": 4, + "1440": 1, + "1441": 2, + "1442": 2, + "1444": 1, + "1446": 4, + "1447": 2, + "1448": 1, + "1449": 2, + "1450": 1, + "1451": 2, + "1452": 2, + "1453": 2, + "1454": 3, + "1455": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 2, + "1461": 1, + "1462": 1, + "1463": 2, + "1464": 1, + "1465": 3, + "1466": 2, + "1467": 2, + "1468": 2, + "1469": 4, + "1470": 4, + "1471": 6, + "1472": 3, + "1473": 2, + "1474": 2, + "1475": 1, + "1476": 2, + "1477": 3, + "1478": 3, + "1479": 2, + "1480": 2, + "1481": 1, + "1482": 1, + "1483": 3, + "1484": 4, + "1485": 6, + "1486": 3, + "1487": 2, + "1488": 4, + "1489": 3, + "1490": 2, + "1491": 1, + "1492": 3, + "1493": 3, + "1494": 2, + "1495": 3, + "1496": 5, + "1498": 2, + "1500": 3, + "1501": 2, + "1502": 2, + "1503": 2, + "1504": 2, + "1505": 3, + "1506": 2, + "1507": 1, + "1508": 3, + "1509": 2, + "1510": 1, + "1511": 2, + "1513": 5, + "1514": 2, + "1515": 2, + "1516": 1, + "1517": 4, + "1518": 4, + "1519": 3, + "1520": 4, + "1522": 6, + "1524": 2, + "1525": 1, + "1526": 1, + "1528": 3, + "1529": 5, + "1531": 2, + "1532": 3, + "1533": 1, + "1534": 4, + "1535": 4, + "1536": 5, + "1537": 5, + "1538": 9, + "1539": 5, + "1540": 6, + "1541": 7, + "1542": 6, + "1543": 3, + "1544": 5, + "1545": 1, + "1546": 3, + "1547": 7, + "1548": 2, + "1549": 2, + "1550": 3, + "1551": 6, + "1552": 5, + "1553": 6, + "1554": 3, + "1555": 3, + "1556": 6, + "1557": 5, + "1558": 8, + "1559": 7, + "1560": 11, + "1561": 7, + "1562": 7, + "1563": 2, + "1564": 6, + "1565": 5, + "1566": 5, + "1567": 5, + "1568": 2, + "1569": 3, + "1570": 5, + "1571": 5, + "1572": 3, + "1573": 3, + "1574": 1, + "1575": 1, + "1576": 2, + "1577": 2, + "1578": 1, + "1580": 3, + "1581": 2, + "1582": 3, + "1583": 2, + "1585": 1, + "1586": 2, + "1587": 2, + "1588": 2, + "1589": 2, + "1590": 2, + "1591": 2, + "1592": 1, + "1593": 1, + "1597": 1, + "1604": 1, + "1607": 1, + "1608": 2, + "1611": 2, + "1613": 1, + "1614": 1, + "1617": 1, + "1618": 4, + "1621": 1, + "1623": 2, + "1624": 2, + "1625": 1, + "1626": 6, + "1627": 3, + "1628": 1, + "1629": 2, + "1630": 1, + "1632": 2, + "1634": 1, + "1636": 2, + "1637": 2, + "1639": 1, + "1641": 3, + "1643": 3, + "1644": 2, + "1646": 6, + "1647": 1, + "1648": 2, + "1650": 2, + "1651": 2, + "1652": 2, + "1653": 2, + "1654": 1, + "1655": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1660": 2, + "1661": 1, + "1664": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343335266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f7fa64b9f412" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f7fa64b9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_3_9.html b/autobahn/client/tungstenite_case_13_3_9.html new file mode 100644 index 0000000..35a6db0 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_9.html @@ -0,0 +1,692 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.3.9 : Pass - 3698 ms @ 2025-09-11T20:12:16.370Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=436&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: khsB7/tHFfrGKype0L23Gw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0piaRWCCt/3bbD5ejYyBj/CgdJY=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
230512305
230636918
230836924
230949236
2310511550
231112311
231236936
231324626
231436942
231512315
231724634
2318613908
2319613914
23201637120
23211534815
2322920898
2323511615
2324716268
2325511625
232649304
232736981
232836984
233024660
233136993
233224664
233312333
233412334
233537005
233612336
233712337
233812338
234049360
2341614046
234249368
23431228116
2344716408
23451330485
23461023460
23471228164
23481535220
23491125839
23501228200
23511228212
23521023520
23531125883
23541125894
23551432970
23561023560
2357921213
2358818864
23591228308
23601740120
23611535415
23621433068
23631740171
23641433096
236549460
2366716562
236712367
236812368
236949476
237037110
2371511855
237237116
237312373
237524750
237612376
237812378
237937137
238024760
238112381
2382614292
238337149
238424768
238512385
238712387
238812388
238912389
239037170
239112391
239312393
239412394
239612396
2398511990
239912399
240037200
240112401
240224804
240312403
241112411
241237236
241312413
241424828
241512415
2416512080
241724834
2418512090
241949676
24201536300
24211433894
2422819376
24231126653
2424716968
24251229100
2426921834
2427512135
242849712
242949716
243049720
243124862
2432512160
243324866
243412434
244612446
244824896
244912449
245024900
245137353
245212452
245312453
245424908
245612456
245724914
245924918
246024920
246312463
246412464
246612466
246912469
247012470
247124942
247212472
247412474
247924958
248012480
248124962
248237446
248324966
248412484
248512485
248737461
248812488
248937467
249012490
249124982
249237476
249337479
249437482
249537485
249637488
249724994
249837494
249937497
2500512500
250112501
250412504
250512505
250625012
250712507
251012510
251137533
2512512560
251325026
251425028
251512515
251625032
251712517
252012520
252112521
252212522
252325046
252412524
252512525
252625052
252712527
253312533
2534615204
253525070
25361025360
2537717759
2538410152
2539512695
2540717780
2541922869
2542512710
254325086
254437632
254612546
2547512735
254825096
254937647
255037650
255125102
255237656
255337659
2554717878
255525110
255637668
255737671
2559410236
256012560
256112561
256212562
256312563
256412564
256512565
256612566
256812568
256912569
257012570
257125142
257325146
257637728
257912579
258025160
258125162
258312583
258412584
258512585
258825176
259012590
2592410368
259325186
259425188
259625192
259812598
259912599
260012600
260125202
260312603
260512605
260612606
260737821
260937827
261025220
261125222
261212612
261312613
261512615
261612616
262312623
262412624
262812628
263012630
263112631
263212632
263512635
263712637
263825276
263937917
264012640
264125282
264337929
264412644
264625292
264912649
2651410604
265237956
265325306
2654410616
2655410620
2656615936
2657513285
2658821264
26591026590
26601437240
26612053220
2662821296
2663513315
2664410656
266512665
266612666
268612686
Total10022446541
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2781278
280125602
280212802
280325606
2804514020
2805411220
2806616836
2807514035
2808616848
28091233708
28101747770
28112261842
28122673112
28132878764
28141747838
28153598525
28161953504
28173187327
28182056360
28192364837
28201747940
28212159241
28222776194
28232570575
28242262128
28252673450
28262056520
28273496118
28282056560
28291439606
2830822640
2831925479
28321748144
28331645328
28341748178
28351645360
28361028360
2837925533
2838514190
283938517
284012840
284138523
2842411368
284325686
284625692
284712847
284912849
285012850
285125702
285312853
285412854
285525710
285738571
2859411436
286012860
2862411448
286338589
286425728
286625732
286712867
286812868
286912869
287012870
287212872
287812878
287912879
288225764
288312883
288412884
288512885
288625772
288712887
288825776
289212892
289512895
289712897
289938697
290025800
290125802
2902514510
2903823224
2904514520
2905720335
2906411624
2907823256
290825816
290938727
291038730
2911514555
29121029120
29131132043
29141646624
29151029150
29161132076
2917617502
29181955442
29191235028
2920617520
2921926289
29221235064
29231235076
29241235088
2925926325
2926720482
2927926343
2928720496
2929617574
2930411720
2931411724
293225864
293338799
293412934
2935617610
29361132296
2937823496
29381338194
29391029390
2940926460
2941514705
294225884
294338829
295712957
Total10022856375
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343336266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d95d65f3dab5
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6439356436356633
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_3_9.json b/autobahn/client/tungstenite_case_13_3_9.json new file mode 100644 index 0000000..4067e2c --- /dev/null +++ b/autobahn/client/tungstenite_case_13_3_9.json @@ -0,0 +1,539 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 436, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 9)]", + "droppedByMe": true, + "duration": 3698, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=436&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: khsB7/tHFfrGKype0L23Gw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0piaRWCCt/3bbD5ejYyBj/CgdJY=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=9\r\n\r\n", + "id": "13.3.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2305": 1, + "2306": 3, + "2308": 3, + "2309": 4, + "2310": 5, + "2311": 1, + "2312": 3, + "2313": 2, + "2314": 3, + "2315": 1, + "2317": 2, + "2318": 6, + "2319": 6, + "2320": 16, + "2321": 15, + "2322": 9, + "2323": 5, + "2324": 7, + "2325": 5, + "2326": 4, + "2327": 3, + "2328": 3, + "2330": 2, + "2331": 3, + "2332": 2, + "2333": 1, + "2334": 1, + "2335": 3, + "2336": 1, + "2337": 1, + "2338": 1, + "2340": 4, + "2341": 6, + "2342": 4, + "2343": 12, + "2344": 7, + "2345": 13, + "2346": 10, + "2347": 12, + "2348": 15, + "2349": 11, + "2350": 12, + "2351": 12, + "2352": 10, + "2353": 11, + "2354": 11, + "2355": 14, + "2356": 10, + "2357": 9, + "2358": 8, + "2359": 12, + "2360": 17, + "2361": 15, + "2362": 14, + "2363": 17, + "2364": 14, + "2365": 4, + "2366": 7, + "2367": 1, + "2368": 1, + "2369": 4, + "2370": 3, + "2371": 5, + "2372": 3, + "2373": 1, + "2375": 2, + "2376": 1, + "2378": 1, + "2379": 3, + "2380": 2, + "2381": 1, + "2382": 6, + "2383": 3, + "2384": 2, + "2385": 1, + "2387": 1, + "2388": 1, + "2389": 1, + "2390": 3, + "2391": 1, + "2393": 1, + "2394": 1, + "2396": 1, + "2398": 5, + "2399": 1, + "2400": 3, + "2401": 1, + "2402": 2, + "2403": 1, + "2411": 1, + "2412": 3, + "2413": 1, + "2414": 2, + "2415": 1, + "2416": 5, + "2417": 2, + "2418": 5, + "2419": 4, + "2420": 15, + "2421": 14, + "2422": 8, + "2423": 11, + "2424": 7, + "2425": 12, + "2426": 9, + "2427": 5, + "2428": 4, + "2429": 4, + "2430": 4, + "2431": 2, + "2432": 5, + "2433": 2, + "2434": 1, + "2446": 1, + "2448": 2, + "2449": 1, + "2450": 2, + "2451": 3, + "2452": 1, + "2453": 1, + "2454": 2, + "2456": 1, + "2457": 2, + "2459": 2, + "2460": 2, + "2463": 1, + "2464": 1, + "2466": 1, + "2469": 1, + "2470": 1, + "2471": 2, + "2472": 1, + "2474": 1, + "2479": 2, + "2480": 1, + "2481": 2, + "2482": 3, + "2483": 2, + "2484": 1, + "2485": 1, + "2487": 3, + "2488": 1, + "2489": 3, + "2490": 1, + "2491": 2, + "2492": 3, + "2493": 3, + "2494": 3, + "2495": 3, + "2496": 3, + "2497": 2, + "2498": 3, + "2499": 3, + "2500": 5, + "2501": 1, + "2504": 1, + "2505": 1, + "2506": 2, + "2507": 1, + "2510": 1, + "2511": 3, + "2512": 5, + "2513": 2, + "2514": 2, + "2515": 1, + "2516": 2, + "2517": 1, + "2520": 1, + "2521": 1, + "2522": 1, + "2523": 2, + "2524": 1, + "2525": 1, + "2526": 2, + "2527": 1, + "2533": 1, + "2534": 6, + "2535": 2, + "2536": 10, + "2537": 7, + "2538": 4, + "2539": 5, + "2540": 7, + "2541": 9, + "2542": 5, + "2543": 2, + "2544": 3, + "2546": 1, + "2547": 5, + "2548": 2, + "2549": 3, + "2550": 3, + "2551": 2, + "2552": 3, + "2553": 3, + "2554": 7, + "2555": 2, + "2556": 3, + "2557": 3, + "2559": 4, + "2560": 1, + "2561": 1, + "2562": 1, + "2563": 1, + "2564": 1, + "2565": 1, + "2566": 1, + "2568": 1, + "2569": 1, + "2570": 1, + "2571": 2, + "2573": 2, + "2576": 3, + "2579": 1, + "2580": 2, + "2581": 2, + "2583": 1, + "2584": 1, + "2585": 1, + "2588": 2, + "2590": 1, + "2592": 4, + "2593": 2, + "2594": 2, + "2596": 2, + "2598": 1, + "2599": 1, + "2600": 1, + "2601": 2, + "2603": 1, + "2605": 1, + "2606": 1, + "2607": 3, + "2609": 3, + "2610": 2, + "2611": 2, + "2612": 1, + "2613": 1, + "2615": 1, + "2616": 1, + "2623": 1, + "2624": 1, + "2628": 1, + "2630": 1, + "2631": 1, + "2632": 1, + "2635": 1, + "2637": 1, + "2638": 2, + "2639": 3, + "2640": 1, + "2641": 2, + "2643": 3, + "2644": 1, + "2646": 2, + "2649": 1, + "2651": 4, + "2652": 3, + "2653": 2, + "2654": 4, + "2655": 4, + "2656": 6, + "2657": 5, + "2658": 8, + "2659": 10, + "2660": 14, + "2661": 20, + "2662": 8, + "2663": 5, + "2664": 4, + "2665": 1, + "2666": 1, + "2686": 1 + }, + "started": "2025-09-11T20:12:16.370Z", + "trafficStats": { + "incomingCompressionRatio": 0.03720513916015625, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2438276, + "incomingOctetsWireLevel": 2446276, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0032810067441093626, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2856093, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014024788111748109, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 278 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "278": 1, + "2801": 2, + "2802": 1, + "2803": 2, + "2804": 5, + "2805": 4, + "2806": 6, + "2807": 5, + "2808": 6, + "2809": 12, + "2810": 17, + "2811": 22, + "2812": 26, + "2813": 28, + "2814": 17, + "2815": 35, + "2816": 19, + "2817": 31, + "2818": 20, + "2819": 23, + "2820": 17, + "2821": 21, + "2822": 27, + "2823": 25, + "2824": 22, + "2825": 26, + "2826": 20, + "2827": 34, + "2828": 20, + "2829": 14, + "2830": 8, + "2831": 9, + "2832": 17, + "2833": 16, + "2834": 17, + "2835": 16, + "2836": 10, + "2837": 9, + "2838": 5, + "2839": 3, + "2840": 1, + "2841": 3, + "2842": 4, + "2843": 2, + "2846": 2, + "2847": 1, + "2849": 1, + "2850": 1, + "2851": 2, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 3, + "2859": 4, + "2860": 1, + "2862": 4, + "2863": 3, + "2864": 2, + "2866": 2, + "2867": 1, + "2868": 1, + "2869": 1, + "2870": 1, + "2872": 1, + "2878": 1, + "2879": 1, + "2882": 2, + "2883": 1, + "2884": 1, + "2885": 1, + "2886": 2, + "2887": 1, + "2888": 2, + "2892": 1, + "2895": 1, + "2897": 1, + "2899": 3, + "2900": 2, + "2901": 2, + "2902": 5, + "2903": 8, + "2904": 5, + "2905": 7, + "2906": 4, + "2907": 8, + "2908": 2, + "2909": 3, + "2910": 3, + "2911": 5, + "2912": 10, + "2913": 11, + "2914": 16, + "2915": 10, + "2916": 11, + "2917": 6, + "2918": 19, + "2919": 12, + "2920": 6, + "2921": 9, + "2922": 12, + "2923": 12, + "2924": 12, + "2925": 9, + "2926": 7, + "2927": 9, + "2928": 7, + "2929": 6, + "2930": 4, + "2931": 4, + "2932": 2, + "2933": 3, + "2934": 1, + "2935": 6, + "2936": 11, + "2937": 8, + "2938": 13, + "2939": 10, + "2940": 9, + "2941": 5, + "2942": 2, + "2943": 3, + "2957": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343336266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 278, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d95d65f3dab5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d95d65f3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_1.html b/autobahn/client/tungstenite_case_13_4_1.html new file mode 100644 index 0000000..f3d58a8 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_1.html @@ -0,0 +1,324 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.1 : Pass - 157 ms @ 2025-09-11T20:12:59.836Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=446&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: DfFkMW7o6kgVGSc30SVk+Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dsKFQC8tPc+b74q1GO+AJ+usuJ0=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
107557550
1166726
1237444
131031339
1424336
15460
16232
18118
19357
20120
21121
22122
24248
2571257
Total100210938
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
67554530
766462
837296
9103927
1024240
11444
12224
14114
15345
16116
17117
18118
20240
2791279
Total10026956
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343436266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88826bf8893c6810
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3662663838393363
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_1.json b/autobahn/client/tungstenite_case_13_4_1.json new file mode 100644 index 0000000..7a69b62 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_1.json @@ -0,0 +1,171 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 446, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 157, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=446&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: DfFkMW7o6kgVGSc30SVk+Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dsKFQC8tPc+b74q1GO+AJ+usuJ0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 755, + "11": 66, + "12": 37, + "13": 103, + "14": 24, + "15": 4, + "16": 2, + "18": 1, + "19": 3, + "20": 1, + "21": 1, + "22": 1, + "24": 2, + "257": 1 + }, + "started": "2025-09-11T20:12:59.836Z", + "trafficStats": { + "incomingCompressionRatio": 0.2920625, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 4673, + "incomingOctetsWireLevel": 10673, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 1.2839717526214423, + "outgoingCompressionRatio": 0.2920625, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 4673, + "outgoingOctetsWireLevel": 6673, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.4279905842071474, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 755, + "7": 66, + "8": 37, + "9": 103, + "10": 24, + "11": 4, + "12": 2, + "14": 1, + "15": 3, + "16": 1, + "17": 1, + "18": 1, + "20": 2, + "279": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343436266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826bf8893c6810" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6bf8893c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_10.html b/autobahn/client/tungstenite_case_13_4_10.html new file mode 100644 index 0000000..a474af9 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_10.html @@ -0,0 +1,586 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.10 : Pass - 3152 ms @ 2025-09-11T20:13:04.506Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=455&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: tjOg8ejAjeM03nLKWvmtkw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: OxXCkvFJOOLbHEr32I98zOQ5gx4=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2791279
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668381
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343535266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88825a36a55759de
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3561333661353537
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_10.json b/autobahn/client/tungstenite_case_13_4_10.json new file mode 100644 index 0000000..4ff9120 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_10.json @@ -0,0 +1,433 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 455, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 3152, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=455&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: tjOg8ejAjeM03nLKWvmtkw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: OxXCkvFJOOLbHEr32I98zOQ5gx4=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:13:04.506Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "279": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343535266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825a36a55759de" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5a36a557" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_11.html b/autobahn/client/tungstenite_case_13_4_11.html new file mode 100644 index 0000000..1d57f6a --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_11.html @@ -0,0 +1,662 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.11 : Pass - 361 ms @ 2025-09-11T20:13:07.660Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=456&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: XyNQnASnHAJhlttDYaDnTQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bnhQvTHxzfqldPUi7QoiGSvHOno=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
30551525
30661836
3072614
30851540
30961854
310113410
311103110
3123936
3131313
31451570
3151315
3163948
3171317
31851590
31972233
32041280
32161926
322123864
32341292
324123888
325113575
326103260
327134251
328103280
329185922
330165280
331154965
332103320
333216993
334217014
335196365
336134368
337165392
33872366
33972373
340124080
341113751
342103420
34351715
34472408
34541380
34651730
34751735
34831044
3491349
35051750
35151755
35262112
35393177
35493186
35593195
35682848
357103570
35882864
359145026
36093240
361103610
362124344
36393267
36482912
365124380
36682928
367103670
36841472
36962214
37062220
3712742
3722744
373114103
37472618
3752750
376114136
37772639
37883024
37931137
38072660
38183048
38262292
383103830
38462304
38541540
3862772
38772709
3882776
38931167
39031170
39141564
39231176
39331179
39451970
3952790
39641584
39731191
39841592
39931197
40031200
40162406
40241608
40331209
4041404
4051405
40641624
40731221
40831224
4091409
41041640
41183288
41231236
4132826
41472898
41562490
4162832
4171417
4181418
41941676
420125040
42152105
42231266
42331269
4242848
4252850
42672982
42741708
42831284
42931287
43052150
4312862
43331299
43431302
43531305
4361436
4371437
43831314
4401440
4411441
4452890
4461446
44731341
4491449
4511451
45231356
4531453
45431362
45531365
4561456
45794113
45883664
4592918
46073220
461104610
46294158
4632926
46473248
465136045
46662796
46783736
46852340
46983752
47094230
47162826
47283776
4732946
47441896
4751475
4762952
4772954
4781478
4791479
4802960
4811481
4821482
48331449
4841484
4861486
4881488
4912982
4921492
49331479
4941494
4961496
4971497
Total1002377539
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
435215
446264
45290
465230
476282
4811528
4910490
503150
51151
525260
53153
543162
55155
565280
577399
584232
596354
6012720
614244
6212744
6311693
6410640
6513845
6610660
67181206
68161088
69151035
7010700
71211491
72211512
73191387
7413962
75161200
767532
777539
7812936
7911869
8010800
815405
827574
834332
845420
855425
863258
87187
885440
895445
906540
919819
929828
939837
948752
9510950
968768
97141358
989882
9910990
100121200
1019909
1028816
103121236
1048832
105101050
1064424
1076642
1086648
1092218
1102220
111111221
1127784
1132226
114111254
1157805
1168928
1173351
1187826
1198952
1206720
121101210
1226732
1234492
1242248
1257875
1262252
1273381
1303390
1314524
1323396
1333399
1345670
1352270
1364544
1373411
1384552
1393417
1403420
1416846
1424568
1433429
1441144
1451145
1464584
1473441
1483444
1491149
1504600
15181208
1523456
1532306
15471078
1556930
1562312
1571157
1581158
1594636
160121920
1615805
1623486
1633489
1642328
1652330
16671162
1674668
1683504
1693507
1705850
1712342
1733519
1743522
1753525
1761176
1771177
1783534
1801180
1811181
1852370
1861186
1873561
1891189
1911191
1923576
1931193
1943582
1953585
1961196
19791773
19881584
1992398
20071400
201102010
20291818
2032406
20471428
205132665
20661236
20781656
20851040
20981672
21091890
21161266
21281696
2132426
2144856
2151215
2162432
2172434
2181218
2191219
2202440
2211221
2221222
2233669
2241224
2261226
2281228
2312462
2321232
2333699
2341234
2361236
2371237
2601000260000
2791279
Total2002376229
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343536266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882b5f50e07b61d
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6235663530653037
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_11.json b/autobahn/client/tungstenite_case_13_4_11.json new file mode 100644 index 0000000..795d46a --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_11.json @@ -0,0 +1,509 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 456, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 361, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=456&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: XyNQnASnHAJhlttDYaDnTQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bnhQvTHxzfqldPUi7QoiGSvHOno=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "305": 5, + "306": 6, + "307": 2, + "308": 5, + "309": 6, + "310": 11, + "311": 10, + "312": 3, + "313": 1, + "314": 5, + "315": 1, + "316": 3, + "317": 1, + "318": 5, + "319": 7, + "320": 4, + "321": 6, + "322": 12, + "323": 4, + "324": 12, + "325": 11, + "326": 10, + "327": 13, + "328": 10, + "329": 18, + "330": 16, + "331": 15, + "332": 10, + "333": 21, + "334": 21, + "335": 19, + "336": 13, + "337": 16, + "338": 7, + "339": 7, + "340": 12, + "341": 11, + "342": 10, + "343": 5, + "344": 7, + "345": 4, + "346": 5, + "347": 5, + "348": 3, + "349": 1, + "350": 5, + "351": 5, + "352": 6, + "353": 9, + "354": 9, + "355": 9, + "356": 8, + "357": 10, + "358": 8, + "359": 14, + "360": 9, + "361": 10, + "362": 12, + "363": 9, + "364": 8, + "365": 12, + "366": 8, + "367": 10, + "368": 4, + "369": 6, + "370": 6, + "371": 2, + "372": 2, + "373": 11, + "374": 7, + "375": 2, + "376": 11, + "377": 7, + "378": 8, + "379": 3, + "380": 7, + "381": 8, + "382": 6, + "383": 10, + "384": 6, + "385": 4, + "386": 2, + "387": 7, + "388": 2, + "389": 3, + "390": 3, + "391": 4, + "392": 3, + "393": 3, + "394": 5, + "395": 2, + "396": 4, + "397": 3, + "398": 4, + "399": 3, + "400": 3, + "401": 6, + "402": 4, + "403": 3, + "404": 1, + "405": 1, + "406": 4, + "407": 3, + "408": 3, + "409": 1, + "410": 4, + "411": 8, + "412": 3, + "413": 2, + "414": 7, + "415": 6, + "416": 2, + "417": 1, + "418": 1, + "419": 4, + "420": 12, + "421": 5, + "422": 3, + "423": 3, + "424": 2, + "425": 2, + "426": 7, + "427": 4, + "428": 3, + "429": 3, + "430": 5, + "431": 2, + "433": 3, + "434": 3, + "435": 3, + "436": 1, + "437": 1, + "438": 3, + "440": 1, + "441": 1, + "445": 2, + "446": 1, + "447": 3, + "449": 1, + "451": 1, + "452": 3, + "453": 1, + "454": 3, + "455": 3, + "456": 1, + "457": 9, + "458": 8, + "459": 2, + "460": 7, + "461": 10, + "462": 9, + "463": 2, + "464": 7, + "465": 13, + "466": 6, + "467": 8, + "468": 5, + "469": 8, + "470": 9, + "471": 6, + "472": 8, + "473": 2, + "474": 4, + "475": 1, + "476": 2, + "477": 2, + "478": 1, + "479": 1, + "480": 2, + "481": 1, + "482": 1, + "483": 3, + "484": 1, + "486": 1, + "488": 1, + "491": 2, + "492": 1, + "493": 3, + "494": 1, + "496": 1, + "497": 1 + }, + "started": "2025-09-11T20:13:07.660Z", + "trafficStats": { + "incomingCompressionRatio": 0.045077392578125, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 369274, + "incomingOctetsWireLevel": 377274, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.02166413015809399, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 375946, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.018067884551850388, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "43": 5, + "44": 6, + "45": 2, + "46": 5, + "47": 6, + "48": 11, + "49": 10, + "50": 3, + "51": 1, + "52": 5, + "53": 1, + "54": 3, + "55": 1, + "56": 5, + "57": 7, + "58": 4, + "59": 6, + "60": 12, + "61": 4, + "62": 12, + "63": 11, + "64": 10, + "65": 13, + "66": 10, + "67": 18, + "68": 16, + "69": 15, + "70": 10, + "71": 21, + "72": 21, + "73": 19, + "74": 13, + "75": 16, + "76": 7, + "77": 7, + "78": 12, + "79": 11, + "80": 10, + "81": 5, + "82": 7, + "83": 4, + "84": 5, + "85": 5, + "86": 3, + "87": 1, + "88": 5, + "89": 5, + "90": 6, + "91": 9, + "92": 9, + "93": 9, + "94": 8, + "95": 10, + "96": 8, + "97": 14, + "98": 9, + "99": 10, + "100": 12, + "101": 9, + "102": 8, + "103": 12, + "104": 8, + "105": 10, + "106": 4, + "107": 6, + "108": 6, + "109": 2, + "110": 2, + "111": 11, + "112": 7, + "113": 2, + "114": 11, + "115": 7, + "116": 8, + "117": 3, + "118": 7, + "119": 8, + "120": 6, + "121": 10, + "122": 6, + "123": 4, + "124": 2, + "125": 7, + "126": 2, + "127": 3, + "130": 3, + "131": 4, + "132": 3, + "133": 3, + "134": 5, + "135": 2, + "136": 4, + "137": 3, + "138": 4, + "139": 3, + "140": 3, + "141": 6, + "142": 4, + "143": 3, + "144": 1, + "145": 1, + "146": 4, + "147": 3, + "148": 3, + "149": 1, + "150": 4, + "151": 8, + "152": 3, + "153": 2, + "154": 7, + "155": 6, + "156": 2, + "157": 1, + "158": 1, + "159": 4, + "160": 12, + "161": 5, + "162": 3, + "163": 3, + "164": 2, + "165": 2, + "166": 7, + "167": 4, + "168": 3, + "169": 3, + "170": 5, + "171": 2, + "173": 3, + "174": 3, + "175": 3, + "176": 1, + "177": 1, + "178": 3, + "180": 1, + "181": 1, + "185": 2, + "186": 1, + "187": 3, + "189": 1, + "191": 1, + "192": 3, + "193": 1, + "194": 3, + "195": 3, + "196": 1, + "197": 9, + "198": 8, + "199": 2, + "200": 7, + "201": 10, + "202": 9, + "203": 2, + "204": 7, + "205": 13, + "206": 6, + "207": 8, + "208": 5, + "209": 8, + "210": 9, + "211": 6, + "212": 8, + "213": 2, + "214": 4, + "215": 1, + "216": 2, + "217": 2, + "218": 1, + "219": 1, + "220": 2, + "221": 1, + "222": 1, + "223": 3, + "224": 1, + "226": 1, + "228": 1, + "231": 2, + "232": 1, + "233": 3, + "234": 1, + "236": 1, + "237": 1, + "260": 1000, + "279": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343536266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b5f50e07b61d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b5f50e07" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_12.html b/autobahn/client/tungstenite_case_13_4_12.html new file mode 100644 index 0000000..4344ae4 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_12.html @@ -0,0 +1,819 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.12 : Pass - 621 ms @ 2025-09-11T20:13:08.022Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=457&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 6cYV6BVEbtUreaJNwg4Vug==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: N6bSxrsm+7N0Hk0NcUStfcKSmho=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
60521210
60631818
6071607
60821216
6091609
6101610
6111611
6121612
6131613
61421228
61531845
61674312
61742468
61863708
619106190
62074340
62153105
62231866
623106230
62453120
6251625
62642504
62774389
62895652
62985032
630116930
63195679
632106320
633159495
63495706
635159525
63674452
63763822
63885104
63985112
64074480
64131923
64253210
64342572
64474508
64553225
64642584
64753235
64853240
64974543
65042600
65121302
6521652
65363918
65431962
65521310
65621312
65742628
65863948
65953295
66085280
66163966
66274634
66321326
66474648
66595985
666117326
667106670
668117348
66985352
67074690
67185368
67274704
67342692
67485392
67564050
67642704
67753385
67842712
67921358
68021360
68142724
6821682
68342732
68442736
68542740
68621372
6871687
68842752
68942756
6901690
69121382
69242768
69321386
69432082
69532085
6961696
69732091
69832094
69953495
70042800
70132103
70242808
70342812
70432112
70521410
70632118
70721414
70864248
70932127
71085680
71121422
7121712
7131713
71432142
71532145
7161716
7171717
71821436
71932157
72021440
72121442
72242888
72321446
72432172
72521450
72653630
72721454
72821456
72953645
73021460
73121462
7321732
7331733
73432202
73632208
7371737
73842952
73921478
74053700
74121482
74332229
74432232
74553725
74732241
74832244
74921498
75021500
7511751
7521752
75375271
7541754
7551755
7561756
7571757
7581758
75943036
76043040
76132283
76253810
76332289
76421528
76621532
76732301
76843072
7691769
7701770
77132313
7731773
7741774
77532325
7761776
77721554
7781778
77932337
7801780
7811781
7821782
7841784
7871787
79021580
79121582
79232376
7931793
79443176
79521590
79621592
7981798
79943196
80154005
80221604
8041804
80521610
80621612
8071807
8081808
80932427
81075670
81164866
81221624
81364878
81443256
81554075
81632448
81721634
81821636
81921638
82043280
82132463
82243288
82332469
82421648
82532475
82754135
82821656
82964974
83154155
83243328
83343332
83443336
83543340
83621672
8371837
83886704
83921678
84021680
84143364
84243368
84321686
84454220
84521690
84675922
84732541
84865088
84921698
8501850
85121702
85221704
8531853
85454270
855108550
85654280
85743428
85854290
85954295
8601860
86154305
86232586
86332589
86443456
86543460
86632598
86776069
86832604
86943476
87065220
87165226
87276104
87332619
87421748
8751875
8761876
87732631
87832634
87921758
88121762
8821882
8831883
88521770
88621772
88821776
89021780
8911891
89221784
8941894
8971897
8981898
9031903
9041904
9081908
9101910
91143644
9121912
9141914
Total1002729547
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
428
5315
616
717
818
10110
13113
16232
17234
18354
19119
20480
21242
22244
24124
254100
275135
28256
30130
31262
32264
33133
34134
353105
367252
376222
38276
396234
404160
415205
423126
43286
44288
45290
464184
473141
484192
493147
502100
513153
535265
542108
556330
575285
584232
594236
604240
614244
622124
63163
648512
652130
662132
674268
684272
692138
705350
712142
727504
733219
746444
752150
76176
772154
782156
79179
805400
8110810
825410
834332
845420
855425
86186
877609
886528
894356
906540
915455
924368
938744
944376
955475
968768
979873
98141372
997693
1008800
101111111
1028816
1038824
1046624
105121260
1065530
1073321
1085540
1098872
1109990
111101110
112131456
11391017
114121368
115151725
116111276
117161872
11891062
1196714
12091080
1218968
1227854
1234492
1246744
1254500
1267882
1275635
1304520
1316786
1326792
1337931
1344536
1352270
1362272
1376822
1384552
1396834
1403420
1414564
1427994
1435715
14481152
1456870
14671022
1472294
14871036
14991341
150111650
151101510
152111672
15381224
15471078
15581240
15671092
1574628
15881264
1596954
1604640
1615805
1624648
1632326
1642328
1654660
1661166
1674668
1684672
1694676
1702340
1711171
1724688
1734692
1741174
1752350
1764704
1772354
1783534
1793537
1801180
1813543
1823546
1835915
1844736
1853555
1864744
1874748
1883564
1892378
1903570
1912382
19261152
1933579
19481552
1952390
1961196
1971197
1983594
1993597
2001200
2011201
2022404
2033609
2042408
2052410
2064824
2072414
2083624
2092418
21051050
2112422
2122424
21351065
2142428
2152430
2161216
2171217
2183654
2203660
2211221
2224888
2232446
22451120
2252450
2273681
2283684
22951145
2313693
2323696
2332466
2342468
2351235
2361236
23771659
2381238
2391239
2401240
2411241
2421242
2434972
2444976
2453735
24651230
2473741
2482496
2502500
2513753
25241008
2531253
2541254
2553765
2571257
2581258
2593777
2602331606060
2791279
Total3333733781
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02331
11000
81
Total3332
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343537266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828ecc25e18d24
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3865636332356531
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_12.json b/autobahn/client/tungstenite_case_13_4_12.json new file mode 100644 index 0000000..5bce000 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_12.json @@ -0,0 +1,666 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 457, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 621, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=457&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 6cYV6BVEbtUreaJNwg4Vug==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: N6bSxrsm+7N0Hk0NcUStfcKSmho=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "605": 2, + "606": 3, + "607": 1, + "608": 2, + "609": 1, + "610": 1, + "611": 1, + "612": 1, + "613": 1, + "614": 2, + "615": 3, + "616": 7, + "617": 4, + "618": 6, + "619": 10, + "620": 7, + "621": 5, + "622": 3, + "623": 10, + "624": 5, + "625": 1, + "626": 4, + "627": 7, + "628": 9, + "629": 8, + "630": 11, + "631": 9, + "632": 10, + "633": 15, + "634": 9, + "635": 15, + "636": 7, + "637": 6, + "638": 8, + "639": 8, + "640": 7, + "641": 3, + "642": 5, + "643": 4, + "644": 7, + "645": 5, + "646": 4, + "647": 5, + "648": 5, + "649": 7, + "650": 4, + "651": 2, + "652": 1, + "653": 6, + "654": 3, + "655": 2, + "656": 2, + "657": 4, + "658": 6, + "659": 5, + "660": 8, + "661": 6, + "662": 7, + "663": 2, + "664": 7, + "665": 9, + "666": 11, + "667": 10, + "668": 11, + "669": 8, + "670": 7, + "671": 8, + "672": 7, + "673": 4, + "674": 8, + "675": 6, + "676": 4, + "677": 5, + "678": 4, + "679": 2, + "680": 2, + "681": 4, + "682": 1, + "683": 4, + "684": 4, + "685": 4, + "686": 2, + "687": 1, + "688": 4, + "689": 4, + "690": 1, + "691": 2, + "692": 4, + "693": 2, + "694": 3, + "695": 3, + "696": 1, + "697": 3, + "698": 3, + "699": 5, + "700": 4, + "701": 3, + "702": 4, + "703": 4, + "704": 3, + "705": 2, + "706": 3, + "707": 2, + "708": 6, + "709": 3, + "710": 8, + "711": 2, + "712": 1, + "713": 1, + "714": 3, + "715": 3, + "716": 1, + "717": 1, + "718": 2, + "719": 3, + "720": 2, + "721": 2, + "722": 4, + "723": 2, + "724": 3, + "725": 2, + "726": 5, + "727": 2, + "728": 2, + "729": 5, + "730": 2, + "731": 2, + "732": 1, + "733": 1, + "734": 3, + "736": 3, + "737": 1, + "738": 4, + "739": 2, + "740": 5, + "741": 2, + "743": 3, + "744": 3, + "745": 5, + "747": 3, + "748": 3, + "749": 2, + "750": 2, + "751": 1, + "752": 1, + "753": 7, + "754": 1, + "755": 1, + "756": 1, + "757": 1, + "758": 1, + "759": 4, + "760": 4, + "761": 3, + "762": 5, + "763": 3, + "764": 2, + "766": 2, + "767": 3, + "768": 4, + "769": 1, + "770": 1, + "771": 3, + "773": 1, + "774": 1, + "775": 3, + "776": 1, + "777": 2, + "778": 1, + "779": 3, + "780": 1, + "781": 1, + "782": 1, + "784": 1, + "787": 1, + "790": 2, + "791": 2, + "792": 3, + "793": 1, + "794": 4, + "795": 2, + "796": 2, + "798": 1, + "799": 4, + "801": 5, + "802": 2, + "804": 1, + "805": 2, + "806": 2, + "807": 1, + "808": 1, + "809": 3, + "810": 7, + "811": 6, + "812": 2, + "813": 6, + "814": 4, + "815": 5, + "816": 3, + "817": 2, + "818": 2, + "819": 2, + "820": 4, + "821": 3, + "822": 4, + "823": 3, + "824": 2, + "825": 3, + "827": 5, + "828": 2, + "829": 6, + "831": 5, + "832": 4, + "833": 4, + "834": 4, + "835": 4, + "836": 2, + "837": 1, + "838": 8, + "839": 2, + "840": 2, + "841": 4, + "842": 4, + "843": 2, + "844": 5, + "845": 2, + "846": 7, + "847": 3, + "848": 6, + "849": 2, + "850": 1, + "851": 2, + "852": 2, + "853": 1, + "854": 5, + "855": 10, + "856": 5, + "857": 4, + "858": 5, + "859": 5, + "860": 1, + "861": 5, + "862": 3, + "863": 3, + "864": 4, + "865": 4, + "866": 3, + "867": 7, + "868": 3, + "869": 4, + "870": 6, + "871": 6, + "872": 7, + "873": 3, + "874": 2, + "875": 1, + "876": 1, + "877": 3, + "878": 3, + "879": 2, + "881": 2, + "882": 1, + "883": 1, + "885": 2, + "886": 2, + "888": 2, + "890": 2, + "891": 1, + "892": 2, + "894": 1, + "897": 1, + "898": 1, + "903": 1, + "904": 1, + "908": 1, + "910": 1, + "911": 4, + "912": 1, + "914": 1 + }, + "started": "2025-09-11T20:13:08.022Z", + "trafficStats": { + "incomingCompressionRatio": 0.0440235595703125, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 721282, + "incomingOctetsWireLevel": 729282, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.011091362324305888, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 733498, + "outgoingWebSocketFrames": 3331, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016936510269215093, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "0": 2331, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 2, + "5": 3, + "6": 1, + "7": 1, + "8": 1, + "10": 1, + "13": 1, + "16": 2, + "17": 2, + "18": 3, + "19": 1, + "20": 4, + "21": 2, + "22": 2, + "24": 1, + "25": 4, + "27": 5, + "28": 2, + "30": 1, + "31": 2, + "32": 2, + "33": 1, + "34": 1, + "35": 3, + "36": 7, + "37": 6, + "38": 2, + "39": 6, + "40": 4, + "41": 5, + "42": 3, + "43": 2, + "44": 2, + "45": 2, + "46": 4, + "47": 3, + "48": 4, + "49": 3, + "50": 2, + "51": 3, + "53": 5, + "54": 2, + "55": 6, + "57": 5, + "58": 4, + "59": 4, + "60": 4, + "61": 4, + "62": 2, + "63": 1, + "64": 8, + "65": 2, + "66": 2, + "67": 4, + "68": 4, + "69": 2, + "70": 5, + "71": 2, + "72": 7, + "73": 3, + "74": 6, + "75": 2, + "76": 1, + "77": 2, + "78": 2, + "79": 1, + "80": 5, + "81": 10, + "82": 5, + "83": 4, + "84": 5, + "85": 5, + "86": 1, + "87": 7, + "88": 6, + "89": 4, + "90": 6, + "91": 5, + "92": 4, + "93": 8, + "94": 4, + "95": 5, + "96": 8, + "97": 9, + "98": 14, + "99": 7, + "100": 8, + "101": 11, + "102": 8, + "103": 8, + "104": 6, + "105": 12, + "106": 5, + "107": 3, + "108": 5, + "109": 8, + "110": 9, + "111": 10, + "112": 13, + "113": 9, + "114": 12, + "115": 15, + "116": 11, + "117": 16, + "118": 9, + "119": 6, + "120": 9, + "121": 8, + "122": 7, + "123": 4, + "124": 6, + "125": 4, + "126": 7, + "127": 5, + "130": 4, + "131": 6, + "132": 6, + "133": 7, + "134": 4, + "135": 2, + "136": 2, + "137": 6, + "138": 4, + "139": 6, + "140": 3, + "141": 4, + "142": 7, + "143": 5, + "144": 8, + "145": 6, + "146": 7, + "147": 2, + "148": 7, + "149": 9, + "150": 11, + "151": 10, + "152": 11, + "153": 8, + "154": 7, + "155": 8, + "156": 7, + "157": 4, + "158": 8, + "159": 6, + "160": 4, + "161": 5, + "162": 4, + "163": 2, + "164": 2, + "165": 4, + "166": 1, + "167": 4, + "168": 4, + "169": 4, + "170": 2, + "171": 1, + "172": 4, + "173": 4, + "174": 1, + "175": 2, + "176": 4, + "177": 2, + "178": 3, + "179": 3, + "180": 1, + "181": 3, + "182": 3, + "183": 5, + "184": 4, + "185": 3, + "186": 4, + "187": 4, + "188": 3, + "189": 2, + "190": 3, + "191": 2, + "192": 6, + "193": 3, + "194": 8, + "195": 2, + "196": 1, + "197": 1, + "198": 3, + "199": 3, + "200": 1, + "201": 1, + "202": 2, + "203": 3, + "204": 2, + "205": 2, + "206": 4, + "207": 2, + "208": 3, + "209": 2, + "210": 5, + "211": 2, + "212": 2, + "213": 5, + "214": 2, + "215": 2, + "216": 1, + "217": 1, + "218": 3, + "220": 3, + "221": 1, + "222": 4, + "223": 2, + "224": 5, + "225": 2, + "227": 3, + "228": 3, + "229": 5, + "231": 3, + "232": 3, + "233": 2, + "234": 2, + "235": 1, + "236": 1, + "237": 7, + "238": 1, + "239": 1, + "240": 1, + "241": 1, + "242": 1, + "243": 4, + "244": 4, + "245": 3, + "246": 5, + "247": 3, + "248": 2, + "250": 2, + "251": 3, + "252": 4, + "253": 1, + "254": 1, + "255": 3, + "257": 1, + "258": 1, + "259": 3, + "260": 2331, + "279": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343537266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828ecc25e18d24" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8ecc25e1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_13.html b/autobahn/client/tungstenite_case_13_4_13.html new file mode 100644 index 0000000..937d931 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_13.html @@ -0,0 +1,901 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.13 : Pass - 1130 ms @ 2025-09-11T20:13:08.645Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=458&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 6j/fOkPhbntxNZdFiwkGFw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Qb927MWlYgcU+SY32bi0RefTePo=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
124011240
124322486
124411244
124511245
124611246
124711247
124811248
124944996
125011250
125222504
125422508
125522510
125611256
125711257
125833774
125911259
126045040
126111261
126233786
126311263
126411264
126533795
126656330
126722534
126833804
126922538
127045080
127145084
127222544
127378911
127456370
127645104
1277810216
127845112
1279911511
128033840
1281911529
128267692
128367698
12841114124
1285810280
1286911574
1287911583
128845152
128945156
1290810320
129156455
129256460
129356465
129422588
129545180
129611296
129733891
129856490
129945196
130033900
130145204
130256510
130356515
130433912
130567830
130667836
130745228
130845232
130911309
131011310
131145244
131222624
131333939
131422628
131533945
131645264
131722634
131811318
132022640
132122642
132211322
132345292
132533975
132611326
132711327
132822656
132922658
133145324
133222664
133311333
133411334
133522670
133622672
133711337
133822676
134034020
134111341
134322686
134434032
134522690
134611346
134722694
134822696
134945396
135022700
135168106
135211352
135311353
135556775
135645424
135722714
135956795
136045440
136211362
136334089
136434092
136522730
136611366
136722734
136811368
137022740
137145484
137211372
137345492
137411374
137622752
137722754
137834134
138111381
138222764
138311383
138411384
138534155
138634158
138711387
138834164
138934167
139011390
139111391
139322786
139534185
139622792
139711397
139822796
139922798
140011400
140122802
140211402
140511405
140622812
140711407
140811408
140911409
141022820
141322826
141411414
141522830
141611416
141768502
141822836
141911419
142034260
142145684
142211422
142311423
142411424
142545700
142622852
142722854
142811428
142922858
143011430
143145724
143322866
143522870
143645744
143811438
143911439
144034320
144122882
144345772
144411444
144522890
144622892
144811448
145045800
145122902
145211452
145322906
145411454
145522910
145622912
145722914
145834374
145922918
146022920
146122922
146311463
146422928
146511465
146611466
146722934
146811468
146934407
147022940
147122942
147222944
147345892
147445896
147568850
147634428
147722954
147822956
147911479
148022960
148134443
148234446
148322966
148422968
148511485
148611486
148734461
148845952
148968934
149034470
149122982
149245968
149334479
149422988
149511495
149634488
149734491
149822996
149934497
150057500
150223004
150434512
150523010
150623012
150723014
150823016
150934527
151023020
151111511
151234536
151323026
151411514
151523030
151757585
151823036
151923038
152011520
152146084
152246088
152334569
152446096
152669156
152823056
152911529
153011530
153234596
153357665
153523070
153634608
153711537
153846152
153946156
154057700
154157705
1542913878
154357715
154469264
1545710815
154669276
154734641
154857740
154911549
155034650
1551710857
155223104
155323106
155434662
155569330
155657780
155769342
155834674
155934677
156069360
156157805
1562812496
1563710941
15641117204
1565710955
1566710962
156723134
156869408
156957845
157057850
157157855
157223144
157334719
157457870
157557875
157634728
157734731
157811578
157911579
158023160
158123162
158211582
158434752
158523170
158634758
158723174
158911589
159023180
159123182
159223184
159323186
159423188
159523190
159611596
159711597
160111601
160811608
161111611
161223224
161523230
161711617
161811618
162111621
162246488
162511625
162723254
162823256
162911629
163069780
163134893
163211632
163323266
163411634
163623272
163811638
164023280
164123282
164311643
164534935
164734941
164823296
165069900
165111651
165223304
165423308
165523310
165623312
165723314
165811658
165923318
166123322
166211662
166323326
166423328
166511665
166823336
Total10021439130
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21020
31133
41560
5840
61060
7642
8540
91199
10330
11555
12896
1310130
148112
1510150
168128
178136
189162
1911209
2014280
2111231
2215330
238184
248192
256150
268208
278216
287196
298232
306180
315155
326192
335165
345170
355175
36272
375185
38276
395195
40280
41141
425210
434172
443132
456270
46292
47294
483144
494196
504200
513153
524208
532106
544216
552110
572114
583174
593177
60160
612122
622124
634252
642128
656390
662132
67167
696414
706420
712142
737511
744296
75175
762152
773231
783234
793237
805400
812162
82182
83183
842168
856510
863258
875435
887616
893267
903270
914364
924368
942188
95195
963288
97197
983294
995495
1003300
1012202
1023306
1036618
1041104
1054420
1062212
1072214
1086648
1094436
1104440
1111111
1124448
1134452
1143342
1154460
1162232
1172234
1193357
1203360
1213363
1223366
1232246
1242248
1262252
1272254
1301130
1312262
1321132
1336798
1342268
1351135
1363408
1374548
1381138
1391139
1401140
1414564
1422284
1432286
1441144
1452290
1461146
1474588
1492298
1512302
1524608
1541154
1551155
1563468
1572314
1594636
1601160
1612322
1622324
1641164
1664664
1672334
1681168
1692338
1701170
1712342
1722344
1732346
1743522
1752350
1762352
1772354
1791179
1802360
1811181
1821182
1832366
1841184
1853555
1862372
1872374
1882376
1894756
1904760
19161146
1923576
1932386
1942388
1951195
1962392
1973591
1983594
1992398
2002400
2011201
2021202
2033609
2044816
20561230
2063618
2072414
2084832
2093627
2102420
2111211
2124848
2133639
2142428
21551075
21661296
2171217
2183654
2191219
2204880
22161326
2223666
2232446
2244896
2253675
2264904
2273681
2284912
2293687
2304920
2313693
2324928
23361398
23451170
2353705
2362472
23771659
23892142
23951195
24071680
2412482
242102420
2434972
2444976
24581960
24661476
24871736
249133237
25041000
251112761
25261512
253102530
254102540
255102550
256164096
257133341
258184644
259143626
26051161330160
2791279
Total61181454516
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05116
11000
81
Total6117
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343538266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882ce21988ccdc9
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6365323139383863
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_13.json b/autobahn/client/tungstenite_case_13_4_13.json new file mode 100644 index 0000000..8d4a402 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_13.json @@ -0,0 +1,748 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 458, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 1130, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=458&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 6j/fOkPhbntxNZdFiwkGFw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Qb927MWlYgcU+SY32bi0RefTePo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1240": 1, + "1243": 2, + "1244": 1, + "1245": 1, + "1246": 1, + "1247": 1, + "1248": 1, + "1249": 4, + "1250": 1, + "1252": 2, + "1254": 2, + "1255": 2, + "1256": 1, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 4, + "1261": 1, + "1262": 3, + "1263": 1, + "1264": 1, + "1265": 3, + "1266": 5, + "1267": 2, + "1268": 3, + "1269": 2, + "1270": 4, + "1271": 4, + "1272": 2, + "1273": 7, + "1274": 5, + "1276": 4, + "1277": 8, + "1278": 4, + "1279": 9, + "1280": 3, + "1281": 9, + "1282": 6, + "1283": 6, + "1284": 11, + "1285": 8, + "1286": 9, + "1287": 9, + "1288": 4, + "1289": 4, + "1290": 8, + "1291": 5, + "1292": 5, + "1293": 5, + "1294": 2, + "1295": 4, + "1296": 1, + "1297": 3, + "1298": 5, + "1299": 4, + "1300": 3, + "1301": 4, + "1302": 5, + "1303": 5, + "1304": 3, + "1305": 6, + "1306": 6, + "1307": 4, + "1308": 4, + "1309": 1, + "1310": 1, + "1311": 4, + "1312": 2, + "1313": 3, + "1314": 2, + "1315": 3, + "1316": 4, + "1317": 2, + "1318": 1, + "1320": 2, + "1321": 2, + "1322": 1, + "1323": 4, + "1325": 3, + "1326": 1, + "1327": 1, + "1328": 2, + "1329": 2, + "1331": 4, + "1332": 2, + "1333": 1, + "1334": 1, + "1335": 2, + "1336": 2, + "1337": 1, + "1338": 2, + "1340": 3, + "1341": 1, + "1343": 2, + "1344": 3, + "1345": 2, + "1346": 1, + "1347": 2, + "1348": 2, + "1349": 4, + "1350": 2, + "1351": 6, + "1352": 1, + "1353": 1, + "1355": 5, + "1356": 4, + "1357": 2, + "1359": 5, + "1360": 4, + "1362": 1, + "1363": 3, + "1364": 3, + "1365": 2, + "1366": 1, + "1367": 2, + "1368": 1, + "1370": 2, + "1371": 4, + "1372": 1, + "1373": 4, + "1374": 1, + "1376": 2, + "1377": 2, + "1378": 3, + "1381": 1, + "1382": 2, + "1383": 1, + "1384": 1, + "1385": 3, + "1386": 3, + "1387": 1, + "1388": 3, + "1389": 3, + "1390": 1, + "1391": 1, + "1393": 2, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 2, + "1400": 1, + "1401": 2, + "1402": 1, + "1405": 1, + "1406": 2, + "1407": 1, + "1408": 1, + "1409": 1, + "1410": 2, + "1413": 2, + "1414": 1, + "1415": 2, + "1416": 1, + "1417": 6, + "1418": 2, + "1419": 1, + "1420": 3, + "1421": 4, + "1422": 1, + "1423": 1, + "1424": 1, + "1425": 4, + "1426": 2, + "1427": 2, + "1428": 1, + "1429": 2, + "1430": 1, + "1431": 4, + "1433": 2, + "1435": 2, + "1436": 4, + "1438": 1, + "1439": 1, + "1440": 3, + "1441": 2, + "1443": 4, + "1444": 1, + "1445": 2, + "1446": 2, + "1448": 1, + "1450": 4, + "1451": 2, + "1452": 1, + "1453": 2, + "1454": 1, + "1455": 2, + "1456": 2, + "1457": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 2, + "1463": 1, + "1464": 2, + "1465": 1, + "1466": 1, + "1467": 2, + "1468": 1, + "1469": 3, + "1470": 2, + "1471": 2, + "1472": 2, + "1473": 4, + "1474": 4, + "1475": 6, + "1476": 3, + "1477": 2, + "1478": 2, + "1479": 1, + "1480": 2, + "1481": 3, + "1482": 3, + "1483": 2, + "1484": 2, + "1485": 1, + "1486": 1, + "1487": 3, + "1488": 4, + "1489": 6, + "1490": 3, + "1491": 2, + "1492": 4, + "1493": 3, + "1494": 2, + "1495": 1, + "1496": 3, + "1497": 3, + "1498": 2, + "1499": 3, + "1500": 5, + "1502": 2, + "1504": 3, + "1505": 2, + "1506": 2, + "1507": 2, + "1508": 2, + "1509": 3, + "1510": 2, + "1511": 1, + "1512": 3, + "1513": 2, + "1514": 1, + "1515": 2, + "1517": 5, + "1518": 2, + "1519": 2, + "1520": 1, + "1521": 4, + "1522": 4, + "1523": 3, + "1524": 4, + "1526": 6, + "1528": 2, + "1529": 1, + "1530": 1, + "1532": 3, + "1533": 5, + "1535": 2, + "1536": 3, + "1537": 1, + "1538": 4, + "1539": 4, + "1540": 5, + "1541": 5, + "1542": 9, + "1543": 5, + "1544": 6, + "1545": 7, + "1546": 6, + "1547": 3, + "1548": 5, + "1549": 1, + "1550": 3, + "1551": 7, + "1552": 2, + "1553": 2, + "1554": 3, + "1555": 6, + "1556": 5, + "1557": 6, + "1558": 3, + "1559": 3, + "1560": 6, + "1561": 5, + "1562": 8, + "1563": 7, + "1564": 11, + "1565": 7, + "1566": 7, + "1567": 2, + "1568": 6, + "1569": 5, + "1570": 5, + "1571": 5, + "1572": 2, + "1573": 3, + "1574": 5, + "1575": 5, + "1576": 3, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 2, + "1582": 1, + "1584": 3, + "1585": 2, + "1586": 3, + "1587": 2, + "1589": 1, + "1590": 2, + "1591": 2, + "1592": 2, + "1593": 2, + "1594": 2, + "1595": 2, + "1596": 1, + "1597": 1, + "1601": 1, + "1608": 1, + "1611": 1, + "1612": 2, + "1615": 2, + "1617": 1, + "1618": 1, + "1621": 1, + "1622": 4, + "1625": 1, + "1627": 2, + "1628": 2, + "1629": 1, + "1630": 6, + "1631": 3, + "1632": 1, + "1633": 2, + "1634": 1, + "1636": 2, + "1638": 1, + "1640": 2, + "1641": 2, + "1643": 1, + "1645": 3, + "1647": 3, + "1648": 2, + "1650": 6, + "1651": 1, + "1652": 2, + "1654": 2, + "1655": 2, + "1656": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1661": 2, + "1662": 1, + "1663": 2, + "1664": 2, + "1665": 1, + "1668": 2 + }, + "started": "2025-09-11T20:13:08.645Z", + "trafficStats": { + "incomingCompressionRatio": 0.043666534423828125, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1430865, + "incomingOctetsWireLevel": 1438865, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0055910236115915895, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1454233, + "outgoingWebSocketFrames": 6116, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016331379969459034, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "0": 5116, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 10, + "3": 11, + "4": 15, + "5": 8, + "6": 10, + "7": 6, + "8": 5, + "9": 11, + "10": 3, + "11": 5, + "12": 8, + "13": 10, + "14": 8, + "15": 10, + "16": 8, + "17": 8, + "18": 9, + "19": 11, + "20": 14, + "21": 11, + "22": 15, + "23": 8, + "24": 8, + "25": 6, + "26": 8, + "27": 8, + "28": 7, + "29": 8, + "30": 6, + "31": 5, + "32": 6, + "33": 5, + "34": 5, + "35": 5, + "36": 2, + "37": 5, + "38": 2, + "39": 5, + "40": 2, + "41": 1, + "42": 5, + "43": 4, + "44": 3, + "45": 6, + "46": 2, + "47": 2, + "48": 3, + "49": 4, + "50": 4, + "51": 3, + "52": 4, + "53": 2, + "54": 4, + "55": 2, + "57": 2, + "58": 3, + "59": 3, + "60": 1, + "61": 2, + "62": 2, + "63": 4, + "64": 2, + "65": 6, + "66": 2, + "67": 1, + "69": 6, + "70": 6, + "71": 2, + "73": 7, + "74": 4, + "75": 1, + "76": 2, + "77": 3, + "78": 3, + "79": 3, + "80": 5, + "81": 2, + "82": 1, + "83": 1, + "84": 2, + "85": 6, + "86": 3, + "87": 5, + "88": 7, + "89": 3, + "90": 3, + "91": 4, + "92": 4, + "94": 2, + "95": 1, + "96": 3, + "97": 1, + "98": 3, + "99": 5, + "100": 3, + "101": 2, + "102": 3, + "103": 6, + "104": 1, + "105": 4, + "106": 2, + "107": 2, + "108": 6, + "109": 4, + "110": 4, + "111": 1, + "112": 4, + "113": 4, + "114": 3, + "115": 4, + "116": 2, + "117": 2, + "119": 3, + "120": 3, + "121": 3, + "122": 3, + "123": 2, + "124": 2, + "126": 2, + "127": 2, + "130": 1, + "131": 2, + "132": 1, + "133": 6, + "134": 2, + "135": 1, + "136": 3, + "137": 4, + "138": 1, + "139": 1, + "140": 1, + "141": 4, + "142": 2, + "143": 2, + "144": 1, + "145": 2, + "146": 1, + "147": 4, + "149": 2, + "151": 2, + "152": 4, + "154": 1, + "155": 1, + "156": 3, + "157": 2, + "159": 4, + "160": 1, + "161": 2, + "162": 2, + "164": 1, + "166": 4, + "167": 2, + "168": 1, + "169": 2, + "170": 1, + "171": 2, + "172": 2, + "173": 2, + "174": 3, + "175": 2, + "176": 2, + "177": 2, + "179": 1, + "180": 2, + "181": 1, + "182": 1, + "183": 2, + "184": 1, + "185": 3, + "186": 2, + "187": 2, + "188": 2, + "189": 4, + "190": 4, + "191": 6, + "192": 3, + "193": 2, + "194": 2, + "195": 1, + "196": 2, + "197": 3, + "198": 3, + "199": 2, + "200": 2, + "201": 1, + "202": 1, + "203": 3, + "204": 4, + "205": 6, + "206": 3, + "207": 2, + "208": 4, + "209": 3, + "210": 2, + "211": 1, + "212": 4, + "213": 3, + "214": 2, + "215": 5, + "216": 6, + "217": 1, + "218": 3, + "219": 1, + "220": 4, + "221": 6, + "222": 3, + "223": 2, + "224": 4, + "225": 3, + "226": 4, + "227": 3, + "228": 4, + "229": 3, + "230": 4, + "231": 3, + "232": 4, + "233": 6, + "234": 5, + "235": 3, + "236": 2, + "237": 7, + "238": 9, + "239": 5, + "240": 7, + "241": 2, + "242": 10, + "243": 4, + "244": 4, + "245": 8, + "246": 6, + "248": 7, + "249": 13, + "250": 4, + "251": 11, + "252": 6, + "253": 10, + "254": 10, + "255": 10, + "256": 16, + "257": 13, + "258": 18, + "259": 14, + "260": 5116, + "279": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343538266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ce21988ccdc9" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ce21988c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_14.html b/autobahn/client/tungstenite_case_13_4_14.html new file mode 100644 index 0000000..3e971f3 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_14.html @@ -0,0 +1,541 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.14 : Pass - 2005 ms @ 2025-09-11T20:13:09.776Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=459&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /I83C0k7Gkzd6s7NOBBG/g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: v4Q4cq4Cgt35P5XzApbGOQrr9Uk=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
280525610
280612806
280725614
2808514040
2809411236
2810616860
2811514055
2812616872
28131233756
28141747838
28152261930
28162673216
28172878876
28181747906
28193598665
28201953580
28213187451
28222056440
28232364929
28241748008
28252159325
28262776302
28272570675
28282262216
28292673554
28302056600
28313496254
28322056640
28331439662
2834822672
2835925515
28361748212
28371645392
28381748246
28391645424
28401028400
2841925569
2842514210
284338529
284412844
284538535
2846411384
284725694
285025700
285112851
285312853
285412854
285525710
285712857
285812858
285925718
286138583
2863411452
286412864
2866411464
286738601
286825736
287025740
287112871
287212872
287312873
287412874
287612876
288212882
288312883
288625772
288712887
288812888
288912889
289025780
289112891
289225784
289612896
289912899
290112901
290338709
290425808
290525810
2906514530
2907823256
2908514540
2909720363
2910411640
2911823288
291225824
291338739
291438742
2915514575
29161029160
29171132087
29181646688
29191029190
29201132120
2921617526
29221955518
29231235076
2924617544
2925926325
29261235112
29271235124
29281235136
2929926361
2930720510
2931926379
2932720524
2933617598
2934411736
2935411740
293625872
293738811
293812938
2939617634
29401132340
2941823528
29421338246
29431029430
2944926496
2945514725
294625892
294738841
296112961
Total10022860358
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21734
32163
428112
525125
622132
726182
820160
934306
1020200
1114154
12896
139117
1417238
1516240
1617272
1716272
1810180
199171
205100
21363
22122
23369
24496
25250
28256
29129
31131
32132
33266
35135
36136
37274
393117
414164
42142
444176
453135
46292
48296
49149
50150
51151
52152
54154
60160
61161
642128
65165
66166
67167
682136
69169
702140
74174
77177
79179
813243
822164
832166
845420
858680
865430
877609
884352
898712
902180
913273
923276
935465
9410940
95111045
96161536
9710970
98111078
996594
100191900
101121212
1026612
1039927
104121248
105121260
106121272
1079963
1087756
1099981
1107770
1116666
1124448
1134452
1142228
1153345
1161116
1176702
118111298
1198952
120131560
121101210
12291098
1235615
1242248
1253375
1411141
2412482
2421242
2432486
24451220
2454980
24661476
24751235
24861488
249122988
250174250
251225522
252266552
253287084
254174318
255358925
256194864
257317967
258205160
259235957
260107192786940
2791279
Total117212897816
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
010719
11000
81
Total11720
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343539266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882a9b784dcaa5f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6139623738346463
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_14.json b/autobahn/client/tungstenite_case_13_4_14.json new file mode 100644 index 0000000..0d9746c --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_14.json @@ -0,0 +1,388 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 459, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 2005, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=459&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /I83C0k7Gkzd6s7NOBBG/g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: v4Q4cq4Cgt35P5XzApbGOQrr9Uk=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2805": 2, + "2806": 1, + "2807": 2, + "2808": 5, + "2809": 4, + "2810": 6, + "2811": 5, + "2812": 6, + "2813": 12, + "2814": 17, + "2815": 22, + "2816": 26, + "2817": 28, + "2818": 17, + "2819": 35, + "2820": 19, + "2821": 31, + "2822": 20, + "2823": 23, + "2824": 17, + "2825": 21, + "2826": 27, + "2827": 25, + "2828": 22, + "2829": 26, + "2830": 20, + "2831": 34, + "2832": 20, + "2833": 14, + "2834": 8, + "2835": 9, + "2836": 17, + "2837": 16, + "2838": 17, + "2839": 16, + "2840": 10, + "2841": 9, + "2842": 5, + "2843": 3, + "2844": 1, + "2845": 3, + "2846": 4, + "2847": 2, + "2850": 2, + "2851": 1, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 1, + "2858": 1, + "2859": 2, + "2861": 3, + "2863": 4, + "2864": 1, + "2866": 4, + "2867": 3, + "2868": 2, + "2870": 2, + "2871": 1, + "2872": 1, + "2873": 1, + "2874": 1, + "2876": 1, + "2882": 1, + "2883": 1, + "2886": 2, + "2887": 1, + "2888": 1, + "2889": 1, + "2890": 2, + "2891": 1, + "2892": 2, + "2896": 1, + "2899": 1, + "2901": 1, + "2903": 3, + "2904": 2, + "2905": 2, + "2906": 5, + "2907": 8, + "2908": 5, + "2909": 7, + "2910": 4, + "2911": 8, + "2912": 2, + "2913": 3, + "2914": 3, + "2915": 5, + "2916": 10, + "2917": 11, + "2918": 16, + "2919": 10, + "2920": 11, + "2921": 6, + "2922": 19, + "2923": 12, + "2924": 6, + "2925": 9, + "2926": 12, + "2927": 12, + "2928": 12, + "2929": 9, + "2930": 7, + "2931": 9, + "2932": 7, + "2933": 6, + "2934": 4, + "2935": 4, + "2936": 2, + "2937": 3, + "2938": 1, + "2939": 6, + "2940": 11, + "2941": 8, + "2942": 13, + "2943": 10, + "2944": 9, + "2945": 5, + "2946": 2, + "2947": 3, + "2961": 1 + }, + "started": "2025-09-11T20:13:09.776Z", + "trafficStats": { + "incomingCompressionRatio": 0.04351948547363281, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2852093, + "incomingOctetsWireLevel": 2860093, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0028049576223496218, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2897533, + "outgoingWebSocketFrames": 11719, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015932159294945854, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "0": 10719, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 17, + "3": 21, + "4": 28, + "5": 25, + "6": 22, + "7": 26, + "8": 20, + "9": 34, + "10": 20, + "11": 14, + "12": 8, + "13": 9, + "14": 17, + "15": 16, + "16": 17, + "17": 16, + "18": 10, + "19": 9, + "20": 5, + "21": 3, + "22": 1, + "23": 3, + "24": 4, + "25": 2, + "28": 2, + "29": 1, + "31": 1, + "32": 1, + "33": 2, + "35": 1, + "36": 1, + "37": 2, + "39": 3, + "41": 4, + "42": 1, + "44": 4, + "45": 3, + "46": 2, + "48": 2, + "49": 1, + "50": 1, + "51": 1, + "52": 1, + "54": 1, + "60": 1, + "61": 1, + "64": 2, + "65": 1, + "66": 1, + "67": 1, + "68": 2, + "69": 1, + "70": 2, + "74": 1, + "77": 1, + "79": 1, + "81": 3, + "82": 2, + "83": 2, + "84": 5, + "85": 8, + "86": 5, + "87": 7, + "88": 4, + "89": 8, + "90": 2, + "91": 3, + "92": 3, + "93": 5, + "94": 10, + "95": 11, + "96": 16, + "97": 10, + "98": 11, + "99": 6, + "100": 19, + "101": 12, + "102": 6, + "103": 9, + "104": 12, + "105": 12, + "106": 12, + "107": 9, + "108": 7, + "109": 9, + "110": 7, + "111": 6, + "112": 4, + "113": 4, + "114": 2, + "115": 3, + "116": 1, + "117": 6, + "118": 11, + "119": 8, + "120": 13, + "121": 10, + "122": 9, + "123": 5, + "124": 2, + "125": 3, + "141": 1, + "241": 2, + "242": 1, + "243": 2, + "244": 5, + "245": 4, + "246": 6, + "247": 5, + "248": 6, + "249": 12, + "250": 17, + "251": 22, + "252": 26, + "253": 28, + "254": 17, + "255": 35, + "256": 19, + "257": 31, + "258": 20, + "259": 23, + "260": 10719, + "279": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343539266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a9b784dcaa5f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a9b784dc" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_15.html b/autobahn/client/tungstenite_case_13_4_15.html new file mode 100644 index 0000000..60c034f --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_15.html @@ -0,0 +1,587 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.15 : Pass - 3447 ms @ 2025-09-11T20:13:11.783Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=460&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: DTUv6uBEqpUi/C/Wa2Tmcg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UXuDXItjsi3hDLY291/MBPr0FMk=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
326
4416
515
6212
7214
818
9218
10110
11333
12112
13339
14684
15230
16232
17234
23123
30130
31262
33133
34134
36136
37274
393117
40140
41141
42284
433129
449396
455225
463138
4710470
4810480
4915735
50201000
5114714
5216832
5314742
54211134
55261430
5617952
5711627
58251450
59211239
60241440
6116976
62251550
63241512
64241536
6512780
66171122
67191273
6813884
699621
70251750
71251775
72161152
7312876
7411814
758600
7610760
77131001
784312
796474
803240
81181
822164
832166
845420
853255
863258
875435
884352
89121068
9010900
917637
92111012
939837
942188
953285
972194
983294
99199
1121112
1131113
1141114
1163348
1172234
1191119
1271127
1302260
1992398
2001200
2011201
2021202
2032406
20451020
20571435
20651030
2074828
2081208
20961254
21081680
21161266
2124848
213112343
21481712
21571505
21661296
21761302
2184872
2194876
22051100
22151105
22271554
223173791
224163584
225143150
226132938
22761362
22861368
229102290
230163680
231133003
23292088
23361398
23461404
23561410
2362472
2374948
23851190
2394956
24061440
2413723
2432486
2442488
2462492
2481248
2491249
2513753
2533759
2542508
2561256
2582516
2591259
260217025642520
2791279
Total227045753789
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
021702
11000
81
Total22703
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343630266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882db372b75d8df
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6462333732623735
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_15.json b/autobahn/client/tungstenite_case_13_4_15.json new file mode 100644 index 0000000..968d846 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_15.json @@ -0,0 +1,434 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 460, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 3447, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=460&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: DTUv6uBEqpUi/C/Wa2Tmcg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UXuDXItjsi3hDLY291/MBPr0FMk=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:13:11.783Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5753506, + "outgoingWebSocketFrames": 22702, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01578503761764009, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "0": 21702, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 2, + "4": 4, + "5": 1, + "6": 2, + "7": 2, + "8": 1, + "9": 2, + "10": 1, + "11": 3, + "12": 1, + "13": 3, + "14": 6, + "15": 2, + "16": 2, + "17": 2, + "23": 1, + "30": 1, + "31": 2, + "33": 1, + "34": 1, + "36": 1, + "37": 2, + "39": 3, + "40": 1, + "41": 1, + "42": 2, + "43": 3, + "44": 9, + "45": 5, + "46": 3, + "47": 10, + "48": 10, + "49": 15, + "50": 20, + "51": 14, + "52": 16, + "53": 14, + "54": 21, + "55": 26, + "56": 17, + "57": 11, + "58": 25, + "59": 21, + "60": 24, + "61": 16, + "62": 25, + "63": 24, + "64": 24, + "65": 12, + "66": 17, + "67": 19, + "68": 13, + "69": 9, + "70": 25, + "71": 25, + "72": 16, + "73": 12, + "74": 11, + "75": 8, + "76": 10, + "77": 13, + "78": 4, + "79": 6, + "80": 3, + "81": 1, + "82": 2, + "83": 2, + "84": 5, + "85": 3, + "86": 3, + "87": 5, + "88": 4, + "89": 12, + "90": 10, + "91": 7, + "92": 11, + "93": 9, + "94": 2, + "95": 3, + "97": 2, + "98": 3, + "99": 1, + "112": 1, + "113": 1, + "114": 1, + "116": 3, + "117": 2, + "119": 1, + "127": 1, + "130": 2, + "199": 2, + "200": 1, + "201": 1, + "202": 1, + "203": 2, + "204": 5, + "205": 7, + "206": 5, + "207": 4, + "208": 1, + "209": 6, + "210": 8, + "211": 6, + "212": 4, + "213": 11, + "214": 8, + "215": 7, + "216": 6, + "217": 6, + "218": 4, + "219": 4, + "220": 5, + "221": 5, + "222": 7, + "223": 17, + "224": 16, + "225": 14, + "226": 13, + "227": 6, + "228": 6, + "229": 10, + "230": 16, + "231": 13, + "232": 9, + "233": 6, + "234": 6, + "235": 6, + "236": 2, + "237": 4, + "238": 5, + "239": 4, + "240": 6, + "241": 3, + "243": 2, + "244": 2, + "246": 2, + "248": 1, + "249": 1, + "251": 3, + "253": 3, + "254": 2, + "256": 1, + "258": 2, + "259": 1, + "260": 21702, + "279": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343630266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882db372b75d8df" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "db372b75" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_16.html b/autobahn/client/tungstenite_case_13_4_16.html new file mode 100644 index 0000000..662712c --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_16.html @@ -0,0 +1,588 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.16 : Pass - 3487 ms @ 2025-09-11T20:13:15.232Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=461&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: JCWznbj1Gar0aKKEONi0fA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: C/5KdWkOurRvE2/brldQgdAJ/eQ=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2791279
4552910
4561456
4571457
4581458
4592918
46052300
46173227
46252310
46341852
4641464
46562790
46683728
46762802
46841872
469115159
47083760
47173297
47262832
47362838
47441896
47541900
47652380
47752385
47873346
479178143
480167680
481146734
482136266
48362898
48462904
485104850
486167776
487136331
48894392
48962934
49062940
49162946
4922984
49341972
49452470
49541980
49662976
49731491
4992998
50021000
50221004
5041504
5051505
50731521
50931527
51021020
5121512
51421028
5151515
51721034
51831554
5191519
52021040
52121042
5221522
52321046
5241524
52531575
5261526
52731581
52863168
52921058
53021060
53121062
5371537
5441544
54521090
5471547
5481548
5501550
55121102
55331659
5541554
5551555
55621112
55731671
55895022
55952795
56031680
561105610
562105620
563158445
5642011280
565147910
566169056
567147938
5682111928
5692614794
570179690
571116281
5722514300
5732112033
5742413776
575169200
5762514400
5772413848
5782413872
579126948
580179860
5811911039
582137566
58395247
5842514600
5852514625
586169376
587127044
588116468
58984712
590105900
591137683
59242368
59363558
59431782
5951595
59621192
59721194
59852990
59931797
60031800
60153005
60242408
603127236
604106040
60574235
606116666
60795463
60821216
60931827
61121222
61231836
6131613
6261626
6271627
6281628
63031890
63121262
6331633
6411641
64221284
102850005140000
Total60025688381
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05000
11000
81
Total6001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343631266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88827d9908487e71
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3764393930383438
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_16.json b/autobahn/client/tungstenite_case_13_4_16.json new file mode 100644 index 0000000..8bfd3a9 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_16.json @@ -0,0 +1,435 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 461, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 3487, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=461&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: JCWznbj1Gar0aKKEONi0fA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: C/5KdWkOurRvE2/brldQgdAJ/eQ=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:13:15.232Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5688098, + "outgoingWebSocketFrames": 6000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0042372148222011696, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "0": 5000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "279": 1, + "455": 2, + "456": 1, + "457": 1, + "458": 1, + "459": 2, + "460": 5, + "461": 7, + "462": 5, + "463": 4, + "464": 1, + "465": 6, + "466": 8, + "467": 6, + "468": 4, + "469": 11, + "470": 8, + "471": 7, + "472": 6, + "473": 6, + "474": 4, + "475": 4, + "476": 5, + "477": 5, + "478": 7, + "479": 17, + "480": 16, + "481": 14, + "482": 13, + "483": 6, + "484": 6, + "485": 10, + "486": 16, + "487": 13, + "488": 9, + "489": 6, + "490": 6, + "491": 6, + "492": 2, + "493": 4, + "494": 5, + "495": 4, + "496": 6, + "497": 3, + "499": 2, + "500": 2, + "502": 2, + "504": 1, + "505": 1, + "507": 3, + "509": 3, + "510": 2, + "512": 1, + "514": 2, + "515": 1, + "517": 2, + "518": 3, + "519": 1, + "520": 2, + "521": 2, + "522": 1, + "523": 2, + "524": 1, + "525": 3, + "526": 1, + "527": 3, + "528": 6, + "529": 2, + "530": 2, + "531": 2, + "537": 1, + "544": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "551": 2, + "553": 3, + "554": 1, + "555": 1, + "556": 2, + "557": 3, + "558": 9, + "559": 5, + "560": 3, + "561": 10, + "562": 10, + "563": 15, + "564": 20, + "565": 14, + "566": 16, + "567": 14, + "568": 21, + "569": 26, + "570": 17, + "571": 11, + "572": 25, + "573": 21, + "574": 24, + "575": 16, + "576": 25, + "577": 24, + "578": 24, + "579": 12, + "580": 17, + "581": 19, + "582": 13, + "583": 9, + "584": 25, + "585": 25, + "586": 16, + "587": 12, + "588": 11, + "589": 8, + "590": 10, + "591": 13, + "592": 4, + "593": 6, + "594": 3, + "595": 1, + "596": 2, + "597": 2, + "598": 5, + "599": 3, + "600": 3, + "601": 5, + "602": 4, + "603": 12, + "604": 10, + "605": 7, + "606": 11, + "607": 9, + "608": 2, + "609": 3, + "611": 2, + "612": 3, + "613": 1, + "626": 1, + "627": 1, + "628": 1, + "630": 3, + "631": 2, + "633": 1, + "641": 1, + "642": 2, + "1028": 5000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343631266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827d9908487e71" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7d990848" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_17.html b/autobahn/client/tungstenite_case_13_4_17.html new file mode 100644 index 0000000..c10238d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_17.html @@ -0,0 +1,588 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.17 : Pass - 3036 ms @ 2025-09-11T20:13:18.720Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=462&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ZHbL/kdfSnlKePde3r9CRQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: n5a+waNSY9YoZpbNjF+2g396nYg=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2791279
147922958
148011480
148111481
148211482
148322966
148457420
1485710395
148657430
148745948
148811488
148968934
1490811920
149168946
149245968
14931116423
1494811952
1495710465
149668976
149768982
149845992
149945996
150057500
150157505
1502710514
15031725551
15041624064
15051421070
15061319578
150769042
150869048
15091015090
15101624160
15111319643
1512913608
151369078
151469084
151569090
151623032
151746068
151857590
151946076
152069120
152134563
152323046
152423048
152623052
152811528
152911529
153134593
153334599
153423068
153611536
153823076
153911539
154123082
154234626
154311543
154423088
154523090
154611546
154723094
154811548
154934647
155011550
155134653
155269312
155323106
155423108
155523110
156111561
156811568
156923138
157111571
157211572
157411574
157523150
157734731
157811578
157911579
158023160
158134743
1582914238
158357915
158434752
15851015850
15861015860
15871523805
15882031760
15891422246
15901625440
15911422274
15922133432
15932641418
15941727098
15951117545
15962539900
15972133537
15982438352
15991625584
16002540000
16012438424
16022438448
16031219236
16041727268
16051930495
16061320878
1607914463
16082540200
16092540225
16101625760
16111219332
16121117732
1613812904
16141016140
16151320995
161646464
161769702
161834854
161911619
162023240
162123242
162258110
162334869
162434872
162558125
162646504
16271219524
16281016280
1629711403
16301117930
1631914679
163223264
163334899
163523270
163634908
163711637
165011650
165111651
165211652
165434962
165523310
165711657
166511665
166623332
410010004100000
Total20025672381
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343632266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882913f2a0892d7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3931336632613038
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_17.json b/autobahn/client/tungstenite_case_13_4_17.json new file mode 100644 index 0000000..6a2c970 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_17.json @@ -0,0 +1,435 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 462, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 3036, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=462&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ZHbL/kdfSnlKePde3r9CRQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: n5a+waNSY9YoZpbNjF+2g396nYg=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:13:18.720Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5672098, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014124049407337233, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "279": 1, + "1479": 2, + "1480": 1, + "1481": 1, + "1482": 1, + "1483": 2, + "1484": 5, + "1485": 7, + "1486": 5, + "1487": 4, + "1488": 1, + "1489": 6, + "1490": 8, + "1491": 6, + "1492": 4, + "1493": 11, + "1494": 8, + "1495": 7, + "1496": 6, + "1497": 6, + "1498": 4, + "1499": 4, + "1500": 5, + "1501": 5, + "1502": 7, + "1503": 17, + "1504": 16, + "1505": 14, + "1506": 13, + "1507": 6, + "1508": 6, + "1509": 10, + "1510": 16, + "1511": 13, + "1512": 9, + "1513": 6, + "1514": 6, + "1515": 6, + "1516": 2, + "1517": 4, + "1518": 5, + "1519": 4, + "1520": 6, + "1521": 3, + "1523": 2, + "1524": 2, + "1526": 2, + "1528": 1, + "1529": 1, + "1531": 3, + "1533": 3, + "1534": 2, + "1536": 1, + "1538": 2, + "1539": 1, + "1541": 2, + "1542": 3, + "1543": 1, + "1544": 2, + "1545": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 3, + "1550": 1, + "1551": 3, + "1552": 6, + "1553": 2, + "1554": 2, + "1555": 2, + "1561": 1, + "1568": 1, + "1569": 2, + "1571": 1, + "1572": 1, + "1574": 1, + "1575": 2, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 3, + "1582": 9, + "1583": 5, + "1584": 3, + "1585": 10, + "1586": 10, + "1587": 15, + "1588": 20, + "1589": 14, + "1590": 16, + "1591": 14, + "1592": 21, + "1593": 26, + "1594": 17, + "1595": 11, + "1596": 25, + "1597": 21, + "1598": 24, + "1599": 16, + "1600": 25, + "1601": 24, + "1602": 24, + "1603": 12, + "1604": 17, + "1605": 19, + "1606": 13, + "1607": 9, + "1608": 25, + "1609": 25, + "1610": 16, + "1611": 12, + "1612": 11, + "1613": 8, + "1614": 10, + "1615": 13, + "1616": 4, + "1617": 6, + "1618": 3, + "1619": 1, + "1620": 2, + "1621": 2, + "1622": 5, + "1623": 3, + "1624": 3, + "1625": 5, + "1626": 4, + "1627": 12, + "1628": 10, + "1629": 7, + "1630": 11, + "1631": 9, + "1632": 2, + "1633": 3, + "1635": 2, + "1636": 3, + "1637": 1, + "1650": 1, + "1651": 1, + "1652": 1, + "1654": 3, + "1655": 2, + "1657": 1, + "1665": 1, + "1666": 2, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343632266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882913f2a0892d7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "913f2a08" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_18.html b/autobahn/client/tungstenite_case_13_4_18.html new file mode 100644 index 0000000..7bf2bee --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_18.html @@ -0,0 +1,586 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.18 : Pass - 2654 ms @ 2025-09-11T20:13:21.758Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=463&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ZpYd4daIct0klm60xUcz5A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: J/TIYBPj0z0yk0m9IV6NPNrfmrg=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
5579211158
558015580
558115581
558215582
5583211166
5584527920
5585739095
5586527930
5587422348
558815588
5589633534
5590844720
5591633546
5592422368
55931161523
5594844752
5595739165
5596633576
5597633582
5598422392
5599422396
5600528000
5601528005
5602739214
56031795251
56041689664
56051478470
56061372878
5607633642
5608633648
56091056090
56101689760
56111372943
5612950508
5613633678
5614633684
5615633690
5616211232
5617422468
5618528090
5619422476
5620633720
5621316863
5623211246
5624211248
5626211252
562815628
562915629
5631316893
5633316899
5634211268
563615636
5638211276
563915639
5641211282
5642316926
564315643
5644211288
5645211290
564615646
5647211294
564815648
5649316947
565015650
5651316953
5652633912
5653211306
5654211308
5655211310
566115661
566815668
5669211338
567115671
567215672
567415674
5675211350
5677317031
567815678
567915679
5680211360
5681317043
5682951138
5683528415
5684317052
56851056850
56861056860
56871585305
568820113760
56891479646
56901691040
56911479674
569221119532
569326148018
56941796798
56951162645
569625142400
569721119637
569824136752
56991691184
570025142500
570124136824
570224136848
57031268436
57041796968
570519108395
57061374178
5707951363
570825142700
570925142725
57101691360
57111268532
57121162832
5713845704
57141057140
57151374295
5716422864
5717634302
5718317154
571915719
5720211440
5721211442
5722528610
5723317169
5724317172
5725528625
5726422904
57271268724
57281057280
5729740103
57301163030
5731951579
5732211464
5733317199
5735211470
5736317208
573715737
575015750
575115751
575215752
5754317262
5755211510
575715757
576515765
5766211532
Total10025672363
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2791279
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668381
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343633266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88827fdc58de7c34
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3766646335386465
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_18.json b/autobahn/client/tungstenite_case_13_4_18.json new file mode 100644 index 0000000..a7d2471 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_18.json @@ -0,0 +1,433 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 463, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 2654, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=463&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ZpYd4daIct0klm60xUcz5A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: J/TIYBPj0z0yk0m9IV6NPNrfmrg=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5579": 2, + "5580": 1, + "5581": 1, + "5582": 1, + "5583": 2, + "5584": 5, + "5585": 7, + "5586": 5, + "5587": 4, + "5588": 1, + "5589": 6, + "5590": 8, + "5591": 6, + "5592": 4, + "5593": 11, + "5594": 8, + "5595": 7, + "5596": 6, + "5597": 6, + "5598": 4, + "5599": 4, + "5600": 5, + "5601": 5, + "5602": 7, + "5603": 17, + "5604": 16, + "5605": 14, + "5606": 13, + "5607": 6, + "5608": 6, + "5609": 10, + "5610": 16, + "5611": 13, + "5612": 9, + "5613": 6, + "5614": 6, + "5615": 6, + "5616": 2, + "5617": 4, + "5618": 5, + "5619": 4, + "5620": 6, + "5621": 3, + "5623": 2, + "5624": 2, + "5626": 2, + "5628": 1, + "5629": 1, + "5631": 3, + "5633": 3, + "5634": 2, + "5636": 1, + "5638": 2, + "5639": 1, + "5641": 2, + "5642": 3, + "5643": 1, + "5644": 2, + "5645": 2, + "5646": 1, + "5647": 2, + "5648": 1, + "5649": 3, + "5650": 1, + "5651": 3, + "5652": 6, + "5653": 2, + "5654": 2, + "5655": 2, + "5661": 1, + "5668": 1, + "5669": 2, + "5671": 1, + "5672": 1, + "5674": 1, + "5675": 2, + "5677": 3, + "5678": 1, + "5679": 1, + "5680": 2, + "5681": 3, + "5682": 9, + "5683": 5, + "5684": 3, + "5685": 10, + "5686": 10, + "5687": 15, + "5688": 20, + "5689": 14, + "5690": 16, + "5691": 14, + "5692": 21, + "5693": 26, + "5694": 17, + "5695": 11, + "5696": 25, + "5697": 21, + "5698": 24, + "5699": 16, + "5700": 25, + "5701": 24, + "5702": 24, + "5703": 12, + "5704": 17, + "5705": 19, + "5706": 13, + "5707": 9, + "5708": 25, + "5709": 25, + "5710": 16, + "5711": 12, + "5712": 11, + "5713": 8, + "5714": 10, + "5715": 13, + "5716": 4, + "5717": 6, + "5718": 3, + "5719": 1, + "5720": 2, + "5721": 2, + "5722": 5, + "5723": 3, + "5724": 3, + "5725": 5, + "5726": 4, + "5727": 12, + "5728": 10, + "5729": 7, + "5730": 11, + "5731": 9, + "5732": 2, + "5733": 3, + "5735": 2, + "5736": 3, + "5737": 1, + "5750": 1, + "5751": 1, + "5752": 1, + "5754": 3, + "5755": 2, + "5757": 1, + "5765": 1, + "5766": 2 + }, + "started": "2025-09-11T20:13:21.758Z", + "trafficStats": { + "incomingCompressionRatio": 0.04321363830566406, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5664098, + "incomingOctetsWireLevel": 5672098, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0014124049407337233, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "279": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343633266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827fdc58de7c34" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7fdc58de" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_2.html b/autobahn/client/tungstenite_case_13_4_2.html new file mode 100644 index 0000000..0f666e4 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_2.html @@ -0,0 +1,328 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.2 : Pass - 146 ms @ 2025-09-11T20:12:59.994Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=447&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: oUaZ7n9ENh0V4aCkZhaSSA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Q27WRywx5QW+xxnG8hITzLXzIes=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
114414851
1210120
131431859
141742436
1536540
16681088
17781326
1828504
1916304
23123
28128
36136
41141
42142
55155
2571257
Total100213518
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
74413087
81080
91431287
101741740
1136396
1268816
13781014
1428392
1516240
19119
24124
32132
37137
38138
51151
2791279
Total10029536
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343437266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882cb822289c86a
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6362383232323839
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_2.json b/autobahn/client/tungstenite_case_13_4_2.json new file mode 100644 index 0000000..84dfaf6 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_2.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 447, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 146, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=447&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: oUaZ7n9ENh0V4aCkZhaSSA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Q27WRywx5QW+xxnG8hITzLXzIes=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 441, + "12": 10, + "13": 143, + "14": 174, + "15": 36, + "16": 68, + "17": 78, + "18": 28, + "19": 16, + "23": 1, + "28": 1, + "36": 1, + "41": 1, + "42": 1, + "55": 1, + "257": 1 + }, + "started": "2025-09-11T20:12:59.994Z", + "trafficStats": { + "incomingCompressionRatio": 0.113328125, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 7253, + "incomingOctetsWireLevel": 13253, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.8272438990762443, + "outgoingCompressionRatio": 0.113328125, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 7253, + "outgoingOctetsWireLevel": 9253, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.2757479663587481, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 441, + "8": 10, + "9": 143, + "10": 174, + "11": 36, + "12": 68, + "13": 78, + "14": 28, + "15": 16, + "19": 1, + "24": 1, + "32": 1, + "37": 1, + "38": 1, + "51": 1, + "279": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343437266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882cb822289c86a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "cb822289" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_3.html b/autobahn/client/tungstenite_case_13_4_3.html new file mode 100644 index 0000000..021ef3d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_3.html @@ -0,0 +1,358 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.3 : Pass - 164 ms @ 2025-09-11T20:13:00.141Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=448&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1e5uCkEnfYhP1qJGZlYkUA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ImLVAtHNjSEo01sD702q5AO3Zq4=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1742714
18701260
1942798
201382760
211052205
22992178
231252875
24721728
25761900
26541404
27531431
28381064
2929841
3022660
3110310
324128
335165
34134
35270
36136
37274
38138
40140
41141
43143
45290
47147
65165
70170
1511151
2571257
Total100223485
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1342546
1470980
1542630
161382208
171051785
18991782
191252375
20721440
21761596
22541188
23531219
2438912
2529725
2622572
2710270
284112
295145
30130
31262
32132
33266
34134
36136
37137
39139
41282
43143
61161
66166
1471147
2791279
Total100219503
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343438266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882370b001934e3
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3337306230303139
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_3.json b/autobahn/client/tungstenite_case_13_4_3.json new file mode 100644 index 0000000..ee30032 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_3.json @@ -0,0 +1,205 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 448, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 164, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=448&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1e5uCkEnfYhP1qJGZlYkUA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ImLVAtHNjSEo01sD702q5AO3Zq4=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "17": 42, + "18": 70, + "19": 42, + "20": 138, + "21": 105, + "22": 99, + "23": 125, + "24": 72, + "25": 76, + "26": 54, + "27": 53, + "28": 38, + "29": 29, + "30": 22, + "31": 10, + "32": 4, + "33": 5, + "34": 1, + "35": 2, + "36": 1, + "37": 2, + "38": 1, + "40": 1, + "41": 1, + "43": 1, + "45": 2, + "47": 1, + "65": 1, + "70": 1, + "151": 1, + "257": 1 + }, + "started": "2025-09-11T20:13:00.141Z", + "trafficStats": { + "incomingCompressionRatio": 0.0672578125, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 17218, + "incomingOctetsWireLevel": 23220, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.3485886862585666, + "outgoingCompressionRatio": 0.0672578125, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 17218, + "outgoingOctetsWireLevel": 19220, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11627366709257754, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 42, + "14": 70, + "15": 42, + "16": 138, + "17": 105, + "18": 99, + "19": 125, + "20": 72, + "21": 76, + "22": 54, + "23": 53, + "24": 38, + "25": 29, + "26": 22, + "27": 10, + "28": 4, + "29": 5, + "30": 1, + "31": 2, + "32": 1, + "33": 2, + "34": 1, + "36": 1, + "37": 1, + "39": 1, + "41": 2, + "43": 1, + "61": 1, + "66": 1, + "147": 1, + "279": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343438266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882370b001934e3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "370b0019" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_4.html b/autobahn/client/tungstenite_case_13_4_4.html new file mode 100644 index 0000000..ec2f7ce --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_4.html @@ -0,0 +1,426 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.4 : Pass - 190 ms @ 2025-09-11T20:13:00.307Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=449&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: q8rlAzoFJ1ouAk5VnxckIw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: TVjctkRYcr5gtJt8oOO4HfdG+wc=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
43143
44144
454180
485240
49149
504200
519459
52221144
53331749
54321728
55392145
56683808
57482736
58633654
59603540
60674020
61664026
62271674
63493087
64291856
65181170
66161056
67312077
68181224
69161104
708560
71191349
72211512
73161168
74292146
75181350
76282128
77312387
7810780
7911869
80181440
8110810
828656
834332
843252
86186
872174
883264
903270
91191
92192
933279
952190
962192
984392
1001100
1011101
1032206
1041104
1051105
1081108
1092218
1101110
1111111
1121112
1132226
1141114
1181118
1741174
2571257
Total100264954
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
39139
40140
414164
445220
45145
464184
479423
48221056
49331617
50321600
51391989
52683536
53482544
54633402
55603300
56673752
57663762
58271566
59492891
60291740
61181098
6216992
63311953
64181152
65161040
668528
67191273
68211428
69161104
70292030
71181278
72282016
73312263
7410740
7511825
76181368
7710770
788624
794316
803240
82182
832166
843252
863258
87187
88188
893267
912182
922184
944376
96196
97197
992198
1001100
1011101
1041104
1052210
1061106
1071107
1081108
1092218
1101110
1141114
1701170
2791279
Total100260972
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343439266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882ef5f01deecb7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6566356630316465
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_4.json b/autobahn/client/tungstenite_case_13_4_4.json new file mode 100644 index 0000000..ca68071 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_4.json @@ -0,0 +1,273 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 449, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 190, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=449&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: q8rlAzoFJ1ouAk5VnxckIw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: TVjctkRYcr5gtJt8oOO4HfdG+wc=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "43": 1, + "44": 1, + "45": 4, + "48": 5, + "49": 1, + "50": 4, + "51": 9, + "52": 22, + "53": 33, + "54": 32, + "55": 39, + "56": 68, + "57": 48, + "58": 63, + "59": 60, + "60": 67, + "61": 66, + "62": 27, + "63": 49, + "64": 29, + "65": 18, + "66": 16, + "67": 31, + "68": 18, + "69": 16, + "70": 8, + "71": 19, + "72": 21, + "73": 16, + "74": 29, + "75": 18, + "76": 28, + "77": 31, + "78": 10, + "79": 11, + "80": 18, + "81": 10, + "82": 8, + "83": 4, + "84": 3, + "86": 1, + "87": 2, + "88": 3, + "90": 3, + "91": 1, + "92": 1, + "93": 3, + "95": 2, + "96": 2, + "98": 4, + "100": 1, + "101": 1, + "103": 2, + "104": 1, + "105": 1, + "108": 1, + "109": 2, + "110": 1, + "111": 1, + "112": 1, + "113": 2, + "114": 1, + "118": 1, + "174": 1, + "257": 1 + }, + "started": "2025-09-11T20:13:00.307Z", + "trafficStats": { + "incomingCompressionRatio": 0.0573115234375, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 58687, + "incomingOctetsWireLevel": 64689, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.1022713718540733, + "outgoingCompressionRatio": 0.0573115234375, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 58687, + "outgoingOctetsWireLevel": 60689, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.034113176683081434, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "39": 1, + "40": 1, + "41": 4, + "44": 5, + "45": 1, + "46": 4, + "47": 9, + "48": 22, + "49": 33, + "50": 32, + "51": 39, + "52": 68, + "53": 48, + "54": 63, + "55": 60, + "56": 67, + "57": 66, + "58": 27, + "59": 49, + "60": 29, + "61": 18, + "62": 16, + "63": 31, + "64": 18, + "65": 16, + "66": 8, + "67": 19, + "68": 21, + "69": 16, + "70": 29, + "71": 18, + "72": 28, + "73": 31, + "74": 10, + "75": 11, + "76": 18, + "77": 10, + "78": 8, + "79": 4, + "80": 3, + "82": 1, + "83": 2, + "84": 3, + "86": 3, + "87": 1, + "88": 1, + "89": 3, + "91": 2, + "92": 2, + "94": 4, + "96": 1, + "97": 1, + "99": 2, + "100": 1, + "101": 1, + "104": 1, + "105": 2, + "106": 1, + "107": 1, + "108": 1, + "109": 2, + "110": 1, + "114": 1, + "170": 1, + "279": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343439266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ef5f01deecb7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ef5f01de" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_5.html b/autobahn/client/tungstenite_case_13_4_5.html new file mode 100644 index 0000000..fc8777e --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_5.html @@ -0,0 +1,539 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.5 : Pass - 294 ms @ 2025-09-11T20:13:00.498Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=450&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: j5YQ54hi62OVoGzqvh2R7A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: tNdcmkO/1buZ6MM5soyy6GJSyxw=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1521152
1532306
1542308
1554620
1573471
1582316
1592318
1603480
1611161
1622324
1631163
1646984
1655825
1661166
16771169
16871176
169101690
170132210
171101710
172132236
173142422
174193306
175203500
176162816
177284956
178203560
179244296
180234140
181234163
182234186
183285124
184203680
185193515
186173162
187122244
188224136
189264914
190122280
191132483
192152880
193112123
194112134
195163120
196112156
19791773
19871386
199101990
2003600
20191809
202112222
20351015
2044816
205102050
206102060
2074828
20871456
2091209
2103630
21151055
21251060
21351065
214102140
215112365
216102160
217122604
218102180
21971533
2204880
22191989
222112442
223102230
224173808
22561350
226122712
227143178
22871596
229132977
230112530
23192079
232112552
233153495
234122808
235163760
23671652
23761422
2383714
2392478
2401240
2442488
24651230
2472494
2484992
2492498
25041000
2511251
25241008
2531253
2552510
2563768
25751285
2581258
2591259
26041040
2612522
2623786
2631263
26461584
2653795
26661596
26751335
26851340
26992421
27051350
27141084
2721272
2733819
2741274
2761276
2851285
2891289
3101310
Total1002202922
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1481148
1492298
1502300
1514604
1533459
1542308
1552310
1563468
1571157
1582316
1591159
1606960
1615805
1621162
16371141
16471148
165101650
166132158
167101670
168132184
169142366
170193230
171203420
172162752
173284844
174203480
175244200
176234048
177234071
178234094
179285012
180203600
181193439
182173094
183122196
184224048
185264810
186122232
187132431
188152820
189112079
190112090
191163056
192112112
19391737
19471358
195101950
1963588
19791773
198112178
1995995
2004800
201102010
202102020
2034812
20471428
2051205
2063618
20751035
20851040
20951045
210102100
211112321
212102120
213122556
214102140
21571505
2164864
21791953
218112398
219102190
220173740
22161326
222122664
223143122
22471568
225132925
226112486
22792043
228112508
229153435
230122760
231163696
23271624
23361398
2343702
2352470
2361236
2402480
24251210
2432486
2444976
2452490
2464984
2471247
2484992
2491249
2512502
2523756
25341012
2541254
2551255
25641024
2572514
2583774
2591259
26061560
2613783
26261572
26351315
26451320
26592385
26651330
26741068
2681268
2693807
2701270
2721272
2791279
2811281
2851285
3061306
Total1002198940
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343530266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888223774719209f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3233373734373139
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_5.json b/autobahn/client/tungstenite_case_13_4_5.json new file mode 100644 index 0000000..1823552 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_5.json @@ -0,0 +1,386 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 450, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 294, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=450&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: j5YQ54hi62OVoGzqvh2R7A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: tNdcmkO/1buZ6MM5soyy6GJSyxw=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "152": 1, + "153": 2, + "154": 2, + "155": 4, + "157": 3, + "158": 2, + "159": 2, + "160": 3, + "161": 1, + "162": 2, + "163": 1, + "164": 6, + "165": 5, + "166": 1, + "167": 7, + "168": 7, + "169": 10, + "170": 13, + "171": 10, + "172": 13, + "173": 14, + "174": 19, + "175": 20, + "176": 16, + "177": 28, + "178": 20, + "179": 24, + "180": 23, + "181": 23, + "182": 23, + "183": 28, + "184": 20, + "185": 19, + "186": 17, + "187": 12, + "188": 22, + "189": 26, + "190": 12, + "191": 13, + "192": 15, + "193": 11, + "194": 11, + "195": 16, + "196": 11, + "197": 9, + "198": 7, + "199": 10, + "200": 3, + "201": 9, + "202": 11, + "203": 5, + "204": 4, + "205": 10, + "206": 10, + "207": 4, + "208": 7, + "209": 1, + "210": 3, + "211": 5, + "212": 5, + "213": 5, + "214": 10, + "215": 11, + "216": 10, + "217": 12, + "218": 10, + "219": 7, + "220": 4, + "221": 9, + "222": 11, + "223": 10, + "224": 17, + "225": 6, + "226": 12, + "227": 14, + "228": 7, + "229": 13, + "230": 11, + "231": 9, + "232": 11, + "233": 15, + "234": 12, + "235": 16, + "236": 7, + "237": 6, + "238": 3, + "239": 2, + "240": 1, + "244": 2, + "246": 5, + "247": 2, + "248": 4, + "249": 2, + "250": 4, + "251": 1, + "252": 4, + "253": 1, + "255": 2, + "256": 3, + "257": 5, + "258": 1, + "259": 1, + "260": 4, + "261": 2, + "262": 3, + "263": 1, + "264": 6, + "265": 3, + "266": 6, + "267": 5, + "268": 5, + "269": 9, + "270": 5, + "271": 4, + "272": 1, + "273": 3, + "274": 1, + "276": 1, + "285": 1, + "289": 1, + "310": 1 + }, + "started": "2025-09-11T20:13:00.498Z", + "trafficStats": { + "incomingCompressionRatio": 0.047523681640625, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 194657, + "incomingOctetsWireLevel": 202657, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.04109793123288656, + "outgoingCompressionRatio": 0.047523681640625, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 194657, + "outgoingOctetsWireLevel": 198657, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.02054896561644328, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "148": 1, + "149": 2, + "150": 2, + "151": 4, + "153": 3, + "154": 2, + "155": 2, + "156": 3, + "157": 1, + "158": 2, + "159": 1, + "160": 6, + "161": 5, + "162": 1, + "163": 7, + "164": 7, + "165": 10, + "166": 13, + "167": 10, + "168": 13, + "169": 14, + "170": 19, + "171": 20, + "172": 16, + "173": 28, + "174": 20, + "175": 24, + "176": 23, + "177": 23, + "178": 23, + "179": 28, + "180": 20, + "181": 19, + "182": 17, + "183": 12, + "184": 22, + "185": 26, + "186": 12, + "187": 13, + "188": 15, + "189": 11, + "190": 11, + "191": 16, + "192": 11, + "193": 9, + "194": 7, + "195": 10, + "196": 3, + "197": 9, + "198": 11, + "199": 5, + "200": 4, + "201": 10, + "202": 10, + "203": 4, + "204": 7, + "205": 1, + "206": 3, + "207": 5, + "208": 5, + "209": 5, + "210": 10, + "211": 11, + "212": 10, + "213": 12, + "214": 10, + "215": 7, + "216": 4, + "217": 9, + "218": 11, + "219": 10, + "220": 17, + "221": 6, + "222": 12, + "223": 14, + "224": 7, + "225": 13, + "226": 11, + "227": 9, + "228": 11, + "229": 15, + "230": 12, + "231": 16, + "232": 7, + "233": 6, + "234": 3, + "235": 2, + "236": 1, + "240": 2, + "242": 5, + "243": 2, + "244": 4, + "245": 2, + "246": 4, + "247": 1, + "248": 4, + "249": 1, + "251": 2, + "252": 3, + "253": 4, + "254": 1, + "255": 1, + "256": 4, + "257": 2, + "258": 3, + "259": 1, + "260": 6, + "261": 3, + "262": 6, + "263": 5, + "264": 5, + "265": 9, + "266": 5, + "267": 4, + "268": 1, + "269": 3, + "270": 1, + "272": 1, + "279": 1, + "281": 1, + "285": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343530266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888223774719209f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "23774719" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_6.html b/autobahn/client/tungstenite_case_13_4_6.html new file mode 100644 index 0000000..56d1418 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_6.html @@ -0,0 +1,660 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.6 : Pass - 393 ms @ 2025-09-11T20:13:00.794Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=451&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: qAsogvu+SPQ/jKqn8w8aAw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xP0Mt1f0NfimDitxCy67Ji1Riqg=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
30551525
30661836
3072614
30851540
30961854
310113410
311103110
3123936
3131313
31451570
3151315
3163948
3171317
31851590
31972233
32041280
32161926
322123864
32341292
324123888
325113575
326103260
327134251
328103280
329185922
330165280
331154965
332103320
333216993
334217014
335196365
336134368
337165392
33872366
33972373
340124080
341113751
342103420
34351715
34472408
34541380
34651730
34751735
34831044
3491349
35051750
35151755
35262112
35393177
35493186
35593195
35682848
357103570
35882864
359145026
36093240
361103610
362124344
36393267
36482912
365124380
36682928
367103670
36841472
36962214
37062220
3712742
3722744
373114103
37472618
3752750
376114136
37772639
37883024
37931137
38072660
38183048
38262292
383103830
38462304
38541540
3862772
38772709
3882776
38931167
39031170
39141564
39231176
39331179
39451970
3952790
39641584
39731191
39841592
39931197
40031200
40162406
40241608
40331209
4041404
4051405
40641624
40731221
40831224
4091409
41041640
41183288
41231236
4132826
41472898
41562490
4162832
4171417
4181418
41941676
420125040
42152105
42231266
42331269
4242848
4252850
42672982
42741708
42831284
42931287
43052150
4312862
43331299
43431302
43531305
4361436
4371437
43831314
4401440
4411441
4452890
4461446
44731341
4491449
4511451
45231356
4531453
45431362
45531365
4561456
45794113
45883664
4592918
46073220
461104610
46294158
4632926
46473248
465136045
46662796
46783736
46852340
46983752
47094230
47162826
47283776
4732946
47441896
4751475
4762952
4772954
4781478
4791479
4802960
4811481
4821482
48331449
4841484
4861486
4881488
4912982
4921492
49331479
4941494
4961496
4971497
Total1002377539
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2791279
30151505
30261812
3032606
30451520
30561830
306113366
307103070
3083924
3091309
31051550
3111311
3123936
3131313
31451570
31572205
31641264
31761902
318123816
31941276
320123840
321113531
322103220
323134199
324103240
325185850
326165216
327154905
328103280
329216909
330216930
331196289
332134316
333165328
33472338
33572345
336124032
337113707
338103380
33951695
34072380
34141364
34251710
34351715
34431032
3451345
34651730
34751735
34862088
34993141
35093150
35193159
35282816
353103530
35482832
355144970
35693204
357103570
358124296
35993231
36082880
361124332
36282896
363103630
36441456
36562190
36662196
3672734
3682736
369114059
37072590
3712742
372114092
37372611
37482992
37531125
37672632
37783016
37862268
379103790
38062280
38141524
3822764
38372681
3842768
38531155
38631158
38741548
38831164
38931167
39051950
3912782
39241568
39331179
39441576
39531185
39631188
39762382
39841592
39931197
4001400
4011401
40241608
40331209
40431212
4051405
40641624
40783256
40831224
4092818
41072870
41162466
4122824
4131413
4141414
41541660
416124992
41752085
41831254
41931257
4202840
4212842
42272954
42341692
42431272
42531275
42652130
4272854
42931287
43031290
43131293
4321432
4331433
43431302
4361436
4371437
4412882
4421442
44331329
4451445
4471447
44831344
4491449
45031350
45131353
4521452
45394077
45483632
4552910
45673192
457104570
45894122
4592918
46073220
461135993
46262772
46383704
46452320
46583720
46694194
46762802
46883744
4692938
47041880
4711471
4722944
4732946
4741474
4751475
4762952
4771477
4781478
47931437
4801480
4821482
4841484
4872974
4881488
48931467
4901490
4921492
4931493
Total1002373557
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343531266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888201e5f47b020d
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3031653566343762
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_6.json b/autobahn/client/tungstenite_case_13_4_6.json new file mode 100644 index 0000000..1e99d21 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_6.json @@ -0,0 +1,507 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 451, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 393, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=451&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: qAsogvu+SPQ/jKqn8w8aAw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xP0Mt1f0NfimDitxCy67Ji1Riqg=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "305": 5, + "306": 6, + "307": 2, + "308": 5, + "309": 6, + "310": 11, + "311": 10, + "312": 3, + "313": 1, + "314": 5, + "315": 1, + "316": 3, + "317": 1, + "318": 5, + "319": 7, + "320": 4, + "321": 6, + "322": 12, + "323": 4, + "324": 12, + "325": 11, + "326": 10, + "327": 13, + "328": 10, + "329": 18, + "330": 16, + "331": 15, + "332": 10, + "333": 21, + "334": 21, + "335": 19, + "336": 13, + "337": 16, + "338": 7, + "339": 7, + "340": 12, + "341": 11, + "342": 10, + "343": 5, + "344": 7, + "345": 4, + "346": 5, + "347": 5, + "348": 3, + "349": 1, + "350": 5, + "351": 5, + "352": 6, + "353": 9, + "354": 9, + "355": 9, + "356": 8, + "357": 10, + "358": 8, + "359": 14, + "360": 9, + "361": 10, + "362": 12, + "363": 9, + "364": 8, + "365": 12, + "366": 8, + "367": 10, + "368": 4, + "369": 6, + "370": 6, + "371": 2, + "372": 2, + "373": 11, + "374": 7, + "375": 2, + "376": 11, + "377": 7, + "378": 8, + "379": 3, + "380": 7, + "381": 8, + "382": 6, + "383": 10, + "384": 6, + "385": 4, + "386": 2, + "387": 7, + "388": 2, + "389": 3, + "390": 3, + "391": 4, + "392": 3, + "393": 3, + "394": 5, + "395": 2, + "396": 4, + "397": 3, + "398": 4, + "399": 3, + "400": 3, + "401": 6, + "402": 4, + "403": 3, + "404": 1, + "405": 1, + "406": 4, + "407": 3, + "408": 3, + "409": 1, + "410": 4, + "411": 8, + "412": 3, + "413": 2, + "414": 7, + "415": 6, + "416": 2, + "417": 1, + "418": 1, + "419": 4, + "420": 12, + "421": 5, + "422": 3, + "423": 3, + "424": 2, + "425": 2, + "426": 7, + "427": 4, + "428": 3, + "429": 3, + "430": 5, + "431": 2, + "433": 3, + "434": 3, + "435": 3, + "436": 1, + "437": 1, + "438": 3, + "440": 1, + "441": 1, + "445": 2, + "446": 1, + "447": 3, + "449": 1, + "451": 1, + "452": 3, + "453": 1, + "454": 3, + "455": 3, + "456": 1, + "457": 9, + "458": 8, + "459": 2, + "460": 7, + "461": 10, + "462": 9, + "463": 2, + "464": 7, + "465": 13, + "466": 6, + "467": 8, + "468": 5, + "469": 8, + "470": 9, + "471": 6, + "472": 8, + "473": 2, + "474": 4, + "475": 1, + "476": 2, + "477": 2, + "478": 1, + "479": 1, + "480": 2, + "481": 1, + "482": 1, + "483": 3, + "484": 1, + "486": 1, + "488": 1, + "491": 2, + "492": 1, + "493": 3, + "494": 1, + "496": 1, + "497": 1 + }, + "started": "2025-09-11T20:13:00.794Z", + "trafficStats": { + "incomingCompressionRatio": 0.045077392578125, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 369274, + "incomingOctetsWireLevel": 377274, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.02166413015809399, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 373274, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.010832065079046995, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "279": 1, + "301": 5, + "302": 6, + "303": 2, + "304": 5, + "305": 6, + "306": 11, + "307": 10, + "308": 3, + "309": 1, + "310": 5, + "311": 1, + "312": 3, + "313": 1, + "314": 5, + "315": 7, + "316": 4, + "317": 6, + "318": 12, + "319": 4, + "320": 12, + "321": 11, + "322": 10, + "323": 13, + "324": 10, + "325": 18, + "326": 16, + "327": 15, + "328": 10, + "329": 21, + "330": 21, + "331": 19, + "332": 13, + "333": 16, + "334": 7, + "335": 7, + "336": 12, + "337": 11, + "338": 10, + "339": 5, + "340": 7, + "341": 4, + "342": 5, + "343": 5, + "344": 3, + "345": 1, + "346": 5, + "347": 5, + "348": 6, + "349": 9, + "350": 9, + "351": 9, + "352": 8, + "353": 10, + "354": 8, + "355": 14, + "356": 9, + "357": 10, + "358": 12, + "359": 9, + "360": 8, + "361": 12, + "362": 8, + "363": 10, + "364": 4, + "365": 6, + "366": 6, + "367": 2, + "368": 2, + "369": 11, + "370": 7, + "371": 2, + "372": 11, + "373": 7, + "374": 8, + "375": 3, + "376": 7, + "377": 8, + "378": 6, + "379": 10, + "380": 6, + "381": 4, + "382": 2, + "383": 7, + "384": 2, + "385": 3, + "386": 3, + "387": 4, + "388": 3, + "389": 3, + "390": 5, + "391": 2, + "392": 4, + "393": 3, + "394": 4, + "395": 3, + "396": 3, + "397": 6, + "398": 4, + "399": 3, + "400": 1, + "401": 1, + "402": 4, + "403": 3, + "404": 3, + "405": 1, + "406": 4, + "407": 8, + "408": 3, + "409": 2, + "410": 7, + "411": 6, + "412": 2, + "413": 1, + "414": 1, + "415": 4, + "416": 12, + "417": 5, + "418": 3, + "419": 3, + "420": 2, + "421": 2, + "422": 7, + "423": 4, + "424": 3, + "425": 3, + "426": 5, + "427": 2, + "429": 3, + "430": 3, + "431": 3, + "432": 1, + "433": 1, + "434": 3, + "436": 1, + "437": 1, + "441": 2, + "442": 1, + "443": 3, + "445": 1, + "447": 1, + "448": 3, + "449": 1, + "450": 3, + "451": 3, + "452": 1, + "453": 9, + "454": 8, + "455": 2, + "456": 7, + "457": 10, + "458": 9, + "459": 2, + "460": 7, + "461": 13, + "462": 6, + "463": 8, + "464": 5, + "465": 8, + "466": 9, + "467": 6, + "468": 8, + "469": 2, + "470": 4, + "471": 1, + "472": 2, + "473": 2, + "474": 1, + "475": 1, + "476": 2, + "477": 1, + "478": 1, + "479": 3, + "480": 1, + "482": 1, + "484": 1, + "487": 2, + "488": 1, + "489": 3, + "490": 1, + "492": 1, + "493": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343531266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888201e5f47b020d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "01e5f47b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_7.html b/autobahn/client/tungstenite_case_13_4_7.html new file mode 100644 index 0000000..5a588ea --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_7.html @@ -0,0 +1,856 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.7 : Pass - 619 ms @ 2025-09-11T20:13:01.188Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=452&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ArW8NICjNbM3FKsxenn9vQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sQT4z6/FmzaLK9Zt+w1jcJkPpz0=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
60521210
60631818
6071607
60821216
6091609
6101610
6111611
6121612
6131613
61421228
61531845
61674312
61742468
61863708
619106190
62074340
62153105
62231866
623106230
62453120
6251625
62642504
62774389
62895652
62985032
630116930
63195679
632106320
633159495
63495706
635159525
63674452
63763822
63885104
63985112
64074480
64131923
64253210
64342572
64474508
64553225
64642584
64753235
64853240
64974543
65042600
65121302
6521652
65363918
65431962
65521310
65621312
65742628
65863948
65953295
66085280
66163966
66274634
66321326
66474648
66595985
666117326
667106670
668117348
66985352
67074690
67185368
67274704
67342692
67485392
67564050
67642704
67753385
67842712
67921358
68021360
68142724
6821682
68342732
68442736
68542740
68621372
6871687
68842752
68942756
6901690
69121382
69242768
69321386
69432082
69532085
6961696
69732091
69832094
69953495
70042800
70132103
70242808
70342812
70432112
70521410
70632118
70721414
70864248
70932127
71085680
71121422
7121712
7131713
71432142
71532145
7161716
7171717
71821436
71932157
72021440
72121442
72242888
72321446
72432172
72521450
72653630
72721454
72821456
72953645
73021460
73121462
7321732
7331733
73432202
73632208
7371737
73842952
73921478
74053700
74121482
74332229
74432232
74553725
74732241
74832244
74921498
75021500
7511751
7521752
75375271
7541754
7551755
7561756
7571757
7581758
75943036
76043040
76132283
76253810
76332289
76421528
76621532
76732301
76843072
7691769
7701770
77132313
7731773
7741774
77532325
7761776
77721554
7781778
77932337
7801780
7811781
7821782
7841784
7871787
79021580
79121582
79232376
7931793
79443176
79521590
79621592
7981798
79943196
80154005
80221604
8041804
80521610
80621612
8071807
8081808
80932427
81075670
81164866
81221624
81364878
81443256
81554075
81632448
81721634
81821636
81921638
82043280
82132463
82243288
82332469
82421648
82532475
82754135
82821656
82964974
83154155
83243328
83343332
83443336
83543340
83621672
8371837
83886704
83921678
84021680
84143364
84243368
84321686
84454220
84521690
84675922
84732541
84865088
84921698
8501850
85121702
85221704
8531853
85454270
855108550
85654280
85743428
85854290
85954295
8601860
86154305
86232586
86332589
86443456
86543460
86632598
86776069
86832604
86943476
87065220
87165226
87276104
87332619
87421748
8751875
8761876
87732631
87832634
87921758
88121762
8821882
8831883
88521770
88621772
88821776
89021780
8911891
89221784
8941894
8971897
8981898
9031903
9041904
9081908
9101910
91143644
9121912
9141914
Total1002729547
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2791279
60121202
60231806
6031603
60421208
6051605
6061606
6071607
6081608
6091609
61021220
61131833
61274284
61342452
61463684
615106150
61674312
61753085
61831854
619106190
62053100
6211621
62242488
62374361
62495616
62585000
626116886
62795643
628106280
629159435
63095670
631159465
63274424
63363798
63485072
63585080
63674452
63731911
63853190
63942556
64074480
64153205
64242568
64353215
64453220
64574515
64642584
64721294
6481648
64963894
65031950
65121302
65221304
65342612
65463924
65553275
65685248
65763942
65874606
65921318
66074620
66195949
662117282
663106630
664117304
66585320
66674662
66785336
66874676
66942676
67085360
67164026
67242688
67353365
67442696
67521350
67621352
67742708
6781678
67942716
68042720
68142724
68221364
6831683
68442736
68542740
6861686
68721374
68842752
68921378
69032070
69132073
6921692
69332079
69432082
69553475
69642784
69732091
69842792
69942796
70032100
70121402
70232106
70321406
70464224
70532115
70685648
70721414
7081708
7091709
71032130
71132133
7121712
7131713
71421428
71532145
71621432
71721434
71842872
71921438
72032160
72121442
72253610
72321446
72421448
72553625
72621452
72721454
7281728
7291729
73032190
73232196
7331733
73442936
73521470
73653680
73721474
73932217
74032220
74153705
74332229
74432232
74521490
74621492
7471747
7481748
74975243
7501750
7511751
7521752
7531753
7541754
75543020
75643024
75732271
75853790
75932277
76021520
76221524
76332289
76443056
7651765
7661766
76732301
7691769
7701770
77132313
7721772
77321546
7741774
77532325
7761776
7771777
7781778
7801780
7831783
78621572
78721574
78832364
7891789
79043160
79121582
79221584
7941794
79543180
79753985
79821596
8001800
80121602
80221604
8031803
8041804
80532415
80675642
80764842
80821616
80964854
81043240
81154055
81232436
81321626
81421628
81521630
81643264
81732451
81843272
81932457
82021640
82132463
82354115
82421648
82564950
82754135
82843312
82943316
83043320
83143324
83221664
8331833
83486672
83521670
83621672
83743348
83843352
83921678
84054200
84121682
84275894
84332529
84465064
84521690
8461846
84721694
84821696
8491849
85054250
851108510
85254260
85343412
85454270
85554275
8561856
85754285
85832574
85932577
86043440
86143444
86232586
86376041
86432592
86543460
86665196
86765202
86876076
86932607
87021740
8711871
8721872
87332619
87432622
87521750
87721754
8781878
8791879
88121762
88221764
88421768
88621772
8871887
88821776
8901890
8931893
8941894
8991899
9001900
9041904
9061906
90743628
9081908
9101910
Total1002725565
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343532266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88824b8fe4a04867
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3462386665346130
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_7.json b/autobahn/client/tungstenite_case_13_4_7.json new file mode 100644 index 0000000..a1a2055 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_7.json @@ -0,0 +1,703 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 452, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 619, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=452&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ArW8NICjNbM3FKsxenn9vQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sQT4z6/FmzaLK9Zt+w1jcJkPpz0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "605": 2, + "606": 3, + "607": 1, + "608": 2, + "609": 1, + "610": 1, + "611": 1, + "612": 1, + "613": 1, + "614": 2, + "615": 3, + "616": 7, + "617": 4, + "618": 6, + "619": 10, + "620": 7, + "621": 5, + "622": 3, + "623": 10, + "624": 5, + "625": 1, + "626": 4, + "627": 7, + "628": 9, + "629": 8, + "630": 11, + "631": 9, + "632": 10, + "633": 15, + "634": 9, + "635": 15, + "636": 7, + "637": 6, + "638": 8, + "639": 8, + "640": 7, + "641": 3, + "642": 5, + "643": 4, + "644": 7, + "645": 5, + "646": 4, + "647": 5, + "648": 5, + "649": 7, + "650": 4, + "651": 2, + "652": 1, + "653": 6, + "654": 3, + "655": 2, + "656": 2, + "657": 4, + "658": 6, + "659": 5, + "660": 8, + "661": 6, + "662": 7, + "663": 2, + "664": 7, + "665": 9, + "666": 11, + "667": 10, + "668": 11, + "669": 8, + "670": 7, + "671": 8, + "672": 7, + "673": 4, + "674": 8, + "675": 6, + "676": 4, + "677": 5, + "678": 4, + "679": 2, + "680": 2, + "681": 4, + "682": 1, + "683": 4, + "684": 4, + "685": 4, + "686": 2, + "687": 1, + "688": 4, + "689": 4, + "690": 1, + "691": 2, + "692": 4, + "693": 2, + "694": 3, + "695": 3, + "696": 1, + "697": 3, + "698": 3, + "699": 5, + "700": 4, + "701": 3, + "702": 4, + "703": 4, + "704": 3, + "705": 2, + "706": 3, + "707": 2, + "708": 6, + "709": 3, + "710": 8, + "711": 2, + "712": 1, + "713": 1, + "714": 3, + "715": 3, + "716": 1, + "717": 1, + "718": 2, + "719": 3, + "720": 2, + "721": 2, + "722": 4, + "723": 2, + "724": 3, + "725": 2, + "726": 5, + "727": 2, + "728": 2, + "729": 5, + "730": 2, + "731": 2, + "732": 1, + "733": 1, + "734": 3, + "736": 3, + "737": 1, + "738": 4, + "739": 2, + "740": 5, + "741": 2, + "743": 3, + "744": 3, + "745": 5, + "747": 3, + "748": 3, + "749": 2, + "750": 2, + "751": 1, + "752": 1, + "753": 7, + "754": 1, + "755": 1, + "756": 1, + "757": 1, + "758": 1, + "759": 4, + "760": 4, + "761": 3, + "762": 5, + "763": 3, + "764": 2, + "766": 2, + "767": 3, + "768": 4, + "769": 1, + "770": 1, + "771": 3, + "773": 1, + "774": 1, + "775": 3, + "776": 1, + "777": 2, + "778": 1, + "779": 3, + "780": 1, + "781": 1, + "782": 1, + "784": 1, + "787": 1, + "790": 2, + "791": 2, + "792": 3, + "793": 1, + "794": 4, + "795": 2, + "796": 2, + "798": 1, + "799": 4, + "801": 5, + "802": 2, + "804": 1, + "805": 2, + "806": 2, + "807": 1, + "808": 1, + "809": 3, + "810": 7, + "811": 6, + "812": 2, + "813": 6, + "814": 4, + "815": 5, + "816": 3, + "817": 2, + "818": 2, + "819": 2, + "820": 4, + "821": 3, + "822": 4, + "823": 3, + "824": 2, + "825": 3, + "827": 5, + "828": 2, + "829": 6, + "831": 5, + "832": 4, + "833": 4, + "834": 4, + "835": 4, + "836": 2, + "837": 1, + "838": 8, + "839": 2, + "840": 2, + "841": 4, + "842": 4, + "843": 2, + "844": 5, + "845": 2, + "846": 7, + "847": 3, + "848": 6, + "849": 2, + "850": 1, + "851": 2, + "852": 2, + "853": 1, + "854": 5, + "855": 10, + "856": 5, + "857": 4, + "858": 5, + "859": 5, + "860": 1, + "861": 5, + "862": 3, + "863": 3, + "864": 4, + "865": 4, + "866": 3, + "867": 7, + "868": 3, + "869": 4, + "870": 6, + "871": 6, + "872": 7, + "873": 3, + "874": 2, + "875": 1, + "876": 1, + "877": 3, + "878": 3, + "879": 2, + "881": 2, + "882": 1, + "883": 1, + "885": 2, + "886": 2, + "888": 2, + "890": 2, + "891": 1, + "892": 2, + "894": 1, + "897": 1, + "898": 1, + "903": 1, + "904": 1, + "908": 1, + "910": 1, + "911": 4, + "912": 1, + "914": 1 + }, + "started": "2025-09-11T20:13:01.188Z", + "trafficStats": { + "incomingCompressionRatio": 0.0440235595703125, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 721282, + "incomingOctetsWireLevel": 729282, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.011091362324305888, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 725282, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.005545681162152944, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "279": 1, + "601": 2, + "602": 3, + "603": 1, + "604": 2, + "605": 1, + "606": 1, + "607": 1, + "608": 1, + "609": 1, + "610": 2, + "611": 3, + "612": 7, + "613": 4, + "614": 6, + "615": 10, + "616": 7, + "617": 5, + "618": 3, + "619": 10, + "620": 5, + "621": 1, + "622": 4, + "623": 7, + "624": 9, + "625": 8, + "626": 11, + "627": 9, + "628": 10, + "629": 15, + "630": 9, + "631": 15, + "632": 7, + "633": 6, + "634": 8, + "635": 8, + "636": 7, + "637": 3, + "638": 5, + "639": 4, + "640": 7, + "641": 5, + "642": 4, + "643": 5, + "644": 5, + "645": 7, + "646": 4, + "647": 2, + "648": 1, + "649": 6, + "650": 3, + "651": 2, + "652": 2, + "653": 4, + "654": 6, + "655": 5, + "656": 8, + "657": 6, + "658": 7, + "659": 2, + "660": 7, + "661": 9, + "662": 11, + "663": 10, + "664": 11, + "665": 8, + "666": 7, + "667": 8, + "668": 7, + "669": 4, + "670": 8, + "671": 6, + "672": 4, + "673": 5, + "674": 4, + "675": 2, + "676": 2, + "677": 4, + "678": 1, + "679": 4, + "680": 4, + "681": 4, + "682": 2, + "683": 1, + "684": 4, + "685": 4, + "686": 1, + "687": 2, + "688": 4, + "689": 2, + "690": 3, + "691": 3, + "692": 1, + "693": 3, + "694": 3, + "695": 5, + "696": 4, + "697": 3, + "698": 4, + "699": 4, + "700": 3, + "701": 2, + "702": 3, + "703": 2, + "704": 6, + "705": 3, + "706": 8, + "707": 2, + "708": 1, + "709": 1, + "710": 3, + "711": 3, + "712": 1, + "713": 1, + "714": 2, + "715": 3, + "716": 2, + "717": 2, + "718": 4, + "719": 2, + "720": 3, + "721": 2, + "722": 5, + "723": 2, + "724": 2, + "725": 5, + "726": 2, + "727": 2, + "728": 1, + "729": 1, + "730": 3, + "732": 3, + "733": 1, + "734": 4, + "735": 2, + "736": 5, + "737": 2, + "739": 3, + "740": 3, + "741": 5, + "743": 3, + "744": 3, + "745": 2, + "746": 2, + "747": 1, + "748": 1, + "749": 7, + "750": 1, + "751": 1, + "752": 1, + "753": 1, + "754": 1, + "755": 4, + "756": 4, + "757": 3, + "758": 5, + "759": 3, + "760": 2, + "762": 2, + "763": 3, + "764": 4, + "765": 1, + "766": 1, + "767": 3, + "769": 1, + "770": 1, + "771": 3, + "772": 1, + "773": 2, + "774": 1, + "775": 3, + "776": 1, + "777": 1, + "778": 1, + "780": 1, + "783": 1, + "786": 2, + "787": 2, + "788": 3, + "789": 1, + "790": 4, + "791": 2, + "792": 2, + "794": 1, + "795": 4, + "797": 5, + "798": 2, + "800": 1, + "801": 2, + "802": 2, + "803": 1, + "804": 1, + "805": 3, + "806": 7, + "807": 6, + "808": 2, + "809": 6, + "810": 4, + "811": 5, + "812": 3, + "813": 2, + "814": 2, + "815": 2, + "816": 4, + "817": 3, + "818": 4, + "819": 3, + "820": 2, + "821": 3, + "823": 5, + "824": 2, + "825": 6, + "827": 5, + "828": 4, + "829": 4, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 8, + "835": 2, + "836": 2, + "837": 4, + "838": 4, + "839": 2, + "840": 5, + "841": 2, + "842": 7, + "843": 3, + "844": 6, + "845": 2, + "846": 1, + "847": 2, + "848": 2, + "849": 1, + "850": 5, + "851": 10, + "852": 5, + "853": 4, + "854": 5, + "855": 5, + "856": 1, + "857": 5, + "858": 3, + "859": 3, + "860": 4, + "861": 4, + "862": 3, + "863": 7, + "864": 3, + "865": 4, + "866": 6, + "867": 6, + "868": 7, + "869": 3, + "870": 2, + "871": 1, + "872": 1, + "873": 3, + "874": 3, + "875": 2, + "877": 2, + "878": 1, + "879": 1, + "881": 2, + "882": 2, + "884": 2, + "886": 2, + "887": 1, + "888": 2, + "890": 1, + "893": 1, + "894": 1, + "899": 1, + "900": 1, + "904": 1, + "906": 1, + "907": 4, + "908": 1, + "910": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343532266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824b8fe4a04867" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4b8fe4a0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_8.html b/autobahn/client/tungstenite_case_13_4_8.html new file mode 100644 index 0000000..610bee7 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_8.html @@ -0,0 +1,1018 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.8 : Pass - 977 ms @ 2025-09-11T20:13:01.809Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=453&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: xJ9DLDAkuvXKFoCspoD30g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: XcNPMCCCRtH3/CHtfyhdFfXK0NA=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
124011240
124322486
124411244
124511245
124611246
124711247
124811248
124944996
125011250
125222504
125422508
125522510
125611256
125711257
125833774
125911259
126045040
126111261
126233786
126311263
126411264
126533795
126656330
126722534
126833804
126922538
127045080
127145084
127222544
127378911
127456370
127645104
1277810216
127845112
1279911511
128033840
1281911529
128267692
128367698
12841114124
1285810280
1286911574
1287911583
128845152
128945156
1290810320
129156455
129256460
129356465
129422588
129545180
129611296
129733891
129856490
129945196
130033900
130145204
130256510
130356515
130433912
130567830
130667836
130745228
130845232
130911309
131011310
131145244
131222624
131333939
131422628
131533945
131645264
131722634
131811318
132022640
132122642
132211322
132345292
132533975
132611326
132711327
132822656
132922658
133145324
133222664
133311333
133411334
133522670
133622672
133711337
133822676
134034020
134111341
134322686
134434032
134522690
134611346
134722694
134822696
134945396
135022700
135168106
135211352
135311353
135556775
135645424
135722714
135956795
136045440
136211362
136334089
136434092
136522730
136611366
136722734
136811368
137022740
137145484
137211372
137345492
137411374
137622752
137722754
137834134
138111381
138222764
138311383
138411384
138534155
138634158
138711387
138834164
138934167
139011390
139111391
139322786
139534185
139622792
139711397
139822796
139922798
140011400
140122802
140211402
140511405
140622812
140711407
140811408
140911409
141022820
141322826
141411414
141522830
141611416
141768502
141822836
141911419
142034260
142145684
142211422
142311423
142411424
142545700
142622852
142722854
142811428
142922858
143011430
143145724
143322866
143522870
143645744
143811438
143911439
144034320
144122882
144345772
144411444
144522890
144622892
144811448
145045800
145122902
145211452
145322906
145411454
145522910
145622912
145722914
145834374
145922918
146022920
146122922
146311463
146422928
146511465
146611466
146722934
146811468
146934407
147022940
147122942
147222944
147345892
147445896
147568850
147634428
147722954
147822956
147911479
148022960
148134443
148234446
148322966
148422968
148511485
148611486
148734461
148845952
148968934
149034470
149122982
149245968
149334479
149422988
149511495
149634488
149734491
149822996
149934497
150057500
150223004
150434512
150523010
150623012
150723014
150823016
150934527
151023020
151111511
151234536
151323026
151411514
151523030
151757585
151823036
151923038
152011520
152146084
152246088
152334569
152446096
152669156
152823056
152911529
153011530
153234596
153357665
153523070
153634608
153711537
153846152
153946156
154057700
154157705
1542913878
154357715
154469264
1545710815
154669276
154734641
154857740
154911549
155034650
1551710857
155223104
155323106
155434662
155569330
155657780
155769342
155834674
155934677
156069360
156157805
1562812496
1563710941
15641117204
1565710955
1566710962
156723134
156869408
156957845
157057850
157157855
157223144
157334719
157457870
157557875
157634728
157734731
157811578
157911579
158023160
158123162
158211582
158434752
158523170
158634758
158723174
158911589
159023180
159123182
159223184
159323186
159423188
159523190
159611596
159711597
160111601
160811608
161111611
161223224
161523230
161711617
161811618
162111621
162246488
162511625
162723254
162823256
162911629
163069780
163134893
163211632
163323266
163411634
163623272
163811638
164023280
164123282
164311643
164534935
164734941
164823296
165069900
165111651
165223304
165423308
165523310
165623312
165723314
165811658
165923318
166123322
166211662
166323326
166423328
166511665
166823336
Total10021439130
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2791279
123611236
123922478
124011240
124111241
124211242
124311243
124411244
124544980
124611246
124822496
125022500
125122502
125211252
125311253
125433762
125511255
125645024
125711257
125833774
125911259
126011260
126133783
126256310
126322526
126433792
126522530
126645064
126745068
126822536
126978883
127056350
127245088
1273810184
127445096
1275911475
127633828
1277911493
127867668
127967674
12801114080
1281810248
1282911538
1283911547
128445136
128545140
1286810288
128756435
128856440
128956445
129022580
129145164
129211292
129333879
129456470
129545180
129633888
129745188
129856490
129956495
130033900
130167806
130267812
130345212
130445216
130511305
130611306
130745228
130822616
130933927
131022620
131133933
131245248
131322626
131411314
131622632
131722634
131811318
131945276
132133963
132211322
132311323
132422648
132522650
132745308
132822656
132911329
133011330
133122662
133222664
133311333
133422668
133634008
133711337
133922678
134034020
134122682
134211342
134322686
134422688
134545380
134622692
134768082
134811348
134911349
135156755
135245408
135322706
135556775
135645424
135811358
135934077
136034080
136122722
136211362
136322726
136411364
136622732
136745468
136811368
136945476
137011370
137222744
137322746
137434122
137711377
137822756
137911379
138011380
138134143
138234146
138311383
138434152
138534155
138611386
138711387
138922778
139134173
139222784
139311393
139422788
139522790
139611396
139722794
139811398
140111401
140222804
140311403
140411404
140511405
140622812
140922818
141011410
141122822
141211412
141368478
141422828
141511415
141634248
141745668
141811418
141911419
142011420
142145684
142222844
142322846
142411424
142522850
142611426
142745708
142922858
143122862
143245728
143411434
143511435
143634308
143722874
143945756
144011440
144122882
144222884
144411444
144645784
144722894
144811448
144922898
145011450
145122902
145222904
145322906
145434362
145522910
145622912
145722914
145911459
146022920
146111461
146211462
146322926
146411464
146534395
146622932
146722934
146822936
146945876
147045880
147168826
147234416
147322946
147422948
147511475
147622952
147734431
147834434
147922958
148022960
148111481
148211482
148334449
148445936
148568910
148634458
148722974
148845952
148934467
149022980
149111491
149234476
149334479
149422988
149534485
149657480
149822996
150034500
150123002
150223004
150323006
150423008
150534515
150623012
150711507
150834524
150923018
151011510
151123022
151357565
151423028
151523030
151611516
151746068
151846072
151934557
152046080
152269132
152423048
152511525
152611526
152834584
152957645
153123062
153234596
153311533
153446136
153546140
153657680
153757685
1538913842
153957695
154069240
1541710787
154269252
154334629
154457720
154511545
154634638
1547710829
154823096
154923098
155034650
155169306
155257760
155369318
155434662
155534665
155669336
155757785
1558812464
1559710913
15601117160
1561710927
1562710934
156323126
156469384
156557825
156657830
156757835
156823136
156934707
157057850
157157855
157234716
157334719
157411574
157511575
157623152
157723154
157811578
158034740
158123162
158234746
158323166
158511585
158623172
158723174
158823176
158923178
159023180
159123182
159211592
159311593
159711597
160411604
160711607
160823216
161123222
161311613
161411614
161711617
161846472
162111621
162323246
162423248
162511625
162669756
162734881
162811628
162923258
163011630
163223264
163411634
163623272
163723274
163911639
164134923
164334929
164423288
164669876
164711647
164823296
165023300
165123302
165223304
165323306
165411654
165523310
165723314
165811658
165923318
166023320
166111661
166423328
Total10021435148
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343533266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888212450d1d11ad
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3132343530643164
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_8.json b/autobahn/client/tungstenite_case_13_4_8.json new file mode 100644 index 0000000..49a694d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_8.json @@ -0,0 +1,865 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 453, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 977, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=453&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: xJ9DLDAkuvXKFoCspoD30g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: XcNPMCCCRtH3/CHtfyhdFfXK0NA=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1240": 1, + "1243": 2, + "1244": 1, + "1245": 1, + "1246": 1, + "1247": 1, + "1248": 1, + "1249": 4, + "1250": 1, + "1252": 2, + "1254": 2, + "1255": 2, + "1256": 1, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 4, + "1261": 1, + "1262": 3, + "1263": 1, + "1264": 1, + "1265": 3, + "1266": 5, + "1267": 2, + "1268": 3, + "1269": 2, + "1270": 4, + "1271": 4, + "1272": 2, + "1273": 7, + "1274": 5, + "1276": 4, + "1277": 8, + "1278": 4, + "1279": 9, + "1280": 3, + "1281": 9, + "1282": 6, + "1283": 6, + "1284": 11, + "1285": 8, + "1286": 9, + "1287": 9, + "1288": 4, + "1289": 4, + "1290": 8, + "1291": 5, + "1292": 5, + "1293": 5, + "1294": 2, + "1295": 4, + "1296": 1, + "1297": 3, + "1298": 5, + "1299": 4, + "1300": 3, + "1301": 4, + "1302": 5, + "1303": 5, + "1304": 3, + "1305": 6, + "1306": 6, + "1307": 4, + "1308": 4, + "1309": 1, + "1310": 1, + "1311": 4, + "1312": 2, + "1313": 3, + "1314": 2, + "1315": 3, + "1316": 4, + "1317": 2, + "1318": 1, + "1320": 2, + "1321": 2, + "1322": 1, + "1323": 4, + "1325": 3, + "1326": 1, + "1327": 1, + "1328": 2, + "1329": 2, + "1331": 4, + "1332": 2, + "1333": 1, + "1334": 1, + "1335": 2, + "1336": 2, + "1337": 1, + "1338": 2, + "1340": 3, + "1341": 1, + "1343": 2, + "1344": 3, + "1345": 2, + "1346": 1, + "1347": 2, + "1348": 2, + "1349": 4, + "1350": 2, + "1351": 6, + "1352": 1, + "1353": 1, + "1355": 5, + "1356": 4, + "1357": 2, + "1359": 5, + "1360": 4, + "1362": 1, + "1363": 3, + "1364": 3, + "1365": 2, + "1366": 1, + "1367": 2, + "1368": 1, + "1370": 2, + "1371": 4, + "1372": 1, + "1373": 4, + "1374": 1, + "1376": 2, + "1377": 2, + "1378": 3, + "1381": 1, + "1382": 2, + "1383": 1, + "1384": 1, + "1385": 3, + "1386": 3, + "1387": 1, + "1388": 3, + "1389": 3, + "1390": 1, + "1391": 1, + "1393": 2, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 2, + "1400": 1, + "1401": 2, + "1402": 1, + "1405": 1, + "1406": 2, + "1407": 1, + "1408": 1, + "1409": 1, + "1410": 2, + "1413": 2, + "1414": 1, + "1415": 2, + "1416": 1, + "1417": 6, + "1418": 2, + "1419": 1, + "1420": 3, + "1421": 4, + "1422": 1, + "1423": 1, + "1424": 1, + "1425": 4, + "1426": 2, + "1427": 2, + "1428": 1, + "1429": 2, + "1430": 1, + "1431": 4, + "1433": 2, + "1435": 2, + "1436": 4, + "1438": 1, + "1439": 1, + "1440": 3, + "1441": 2, + "1443": 4, + "1444": 1, + "1445": 2, + "1446": 2, + "1448": 1, + "1450": 4, + "1451": 2, + "1452": 1, + "1453": 2, + "1454": 1, + "1455": 2, + "1456": 2, + "1457": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 2, + "1463": 1, + "1464": 2, + "1465": 1, + "1466": 1, + "1467": 2, + "1468": 1, + "1469": 3, + "1470": 2, + "1471": 2, + "1472": 2, + "1473": 4, + "1474": 4, + "1475": 6, + "1476": 3, + "1477": 2, + "1478": 2, + "1479": 1, + "1480": 2, + "1481": 3, + "1482": 3, + "1483": 2, + "1484": 2, + "1485": 1, + "1486": 1, + "1487": 3, + "1488": 4, + "1489": 6, + "1490": 3, + "1491": 2, + "1492": 4, + "1493": 3, + "1494": 2, + "1495": 1, + "1496": 3, + "1497": 3, + "1498": 2, + "1499": 3, + "1500": 5, + "1502": 2, + "1504": 3, + "1505": 2, + "1506": 2, + "1507": 2, + "1508": 2, + "1509": 3, + "1510": 2, + "1511": 1, + "1512": 3, + "1513": 2, + "1514": 1, + "1515": 2, + "1517": 5, + "1518": 2, + "1519": 2, + "1520": 1, + "1521": 4, + "1522": 4, + "1523": 3, + "1524": 4, + "1526": 6, + "1528": 2, + "1529": 1, + "1530": 1, + "1532": 3, + "1533": 5, + "1535": 2, + "1536": 3, + "1537": 1, + "1538": 4, + "1539": 4, + "1540": 5, + "1541": 5, + "1542": 9, + "1543": 5, + "1544": 6, + "1545": 7, + "1546": 6, + "1547": 3, + "1548": 5, + "1549": 1, + "1550": 3, + "1551": 7, + "1552": 2, + "1553": 2, + "1554": 3, + "1555": 6, + "1556": 5, + "1557": 6, + "1558": 3, + "1559": 3, + "1560": 6, + "1561": 5, + "1562": 8, + "1563": 7, + "1564": 11, + "1565": 7, + "1566": 7, + "1567": 2, + "1568": 6, + "1569": 5, + "1570": 5, + "1571": 5, + "1572": 2, + "1573": 3, + "1574": 5, + "1575": 5, + "1576": 3, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 2, + "1582": 1, + "1584": 3, + "1585": 2, + "1586": 3, + "1587": 2, + "1589": 1, + "1590": 2, + "1591": 2, + "1592": 2, + "1593": 2, + "1594": 2, + "1595": 2, + "1596": 1, + "1597": 1, + "1601": 1, + "1608": 1, + "1611": 1, + "1612": 2, + "1615": 2, + "1617": 1, + "1618": 1, + "1621": 1, + "1622": 4, + "1625": 1, + "1627": 2, + "1628": 2, + "1629": 1, + "1630": 6, + "1631": 3, + "1632": 1, + "1633": 2, + "1634": 1, + "1636": 2, + "1638": 1, + "1640": 2, + "1641": 2, + "1643": 1, + "1645": 3, + "1647": 3, + "1648": 2, + "1650": 6, + "1651": 1, + "1652": 2, + "1654": 2, + "1655": 2, + "1656": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1661": 2, + "1662": 1, + "1663": 2, + "1664": 2, + "1665": 1, + "1668": 2 + }, + "started": "2025-09-11T20:13:01.809Z", + "trafficStats": { + "incomingCompressionRatio": 0.043666534423828125, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1430865, + "incomingOctetsWireLevel": 1438865, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0055910236115915895, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1434865, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0027955118057957948, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "279": 1, + "1236": 1, + "1239": 2, + "1240": 1, + "1241": 1, + "1242": 1, + "1243": 1, + "1244": 1, + "1245": 4, + "1246": 1, + "1248": 2, + "1250": 2, + "1251": 2, + "1252": 1, + "1253": 1, + "1254": 3, + "1255": 1, + "1256": 4, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 1, + "1261": 3, + "1262": 5, + "1263": 2, + "1264": 3, + "1265": 2, + "1266": 4, + "1267": 4, + "1268": 2, + "1269": 7, + "1270": 5, + "1272": 4, + "1273": 8, + "1274": 4, + "1275": 9, + "1276": 3, + "1277": 9, + "1278": 6, + "1279": 6, + "1280": 11, + "1281": 8, + "1282": 9, + "1283": 9, + "1284": 4, + "1285": 4, + "1286": 8, + "1287": 5, + "1288": 5, + "1289": 5, + "1290": 2, + "1291": 4, + "1292": 1, + "1293": 3, + "1294": 5, + "1295": 4, + "1296": 3, + "1297": 4, + "1298": 5, + "1299": 5, + "1300": 3, + "1301": 6, + "1302": 6, + "1303": 4, + "1304": 4, + "1305": 1, + "1306": 1, + "1307": 4, + "1308": 2, + "1309": 3, + "1310": 2, + "1311": 3, + "1312": 4, + "1313": 2, + "1314": 1, + "1316": 2, + "1317": 2, + "1318": 1, + "1319": 4, + "1321": 3, + "1322": 1, + "1323": 1, + "1324": 2, + "1325": 2, + "1327": 4, + "1328": 2, + "1329": 1, + "1330": 1, + "1331": 2, + "1332": 2, + "1333": 1, + "1334": 2, + "1336": 3, + "1337": 1, + "1339": 2, + "1340": 3, + "1341": 2, + "1342": 1, + "1343": 2, + "1344": 2, + "1345": 4, + "1346": 2, + "1347": 6, + "1348": 1, + "1349": 1, + "1351": 5, + "1352": 4, + "1353": 2, + "1355": 5, + "1356": 4, + "1358": 1, + "1359": 3, + "1360": 3, + "1361": 2, + "1362": 1, + "1363": 2, + "1364": 1, + "1366": 2, + "1367": 4, + "1368": 1, + "1369": 4, + "1370": 1, + "1372": 2, + "1373": 2, + "1374": 3, + "1377": 1, + "1378": 2, + "1379": 1, + "1380": 1, + "1381": 3, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 3, + "1386": 1, + "1387": 1, + "1389": 2, + "1391": 3, + "1392": 2, + "1393": 1, + "1394": 2, + "1395": 2, + "1396": 1, + "1397": 2, + "1398": 1, + "1401": 1, + "1402": 2, + "1403": 1, + "1404": 1, + "1405": 1, + "1406": 2, + "1409": 2, + "1410": 1, + "1411": 2, + "1412": 1, + "1413": 6, + "1414": 2, + "1415": 1, + "1416": 3, + "1417": 4, + "1418": 1, + "1419": 1, + "1420": 1, + "1421": 4, + "1422": 2, + "1423": 2, + "1424": 1, + "1425": 2, + "1426": 1, + "1427": 4, + "1429": 2, + "1431": 2, + "1432": 4, + "1434": 1, + "1435": 1, + "1436": 3, + "1437": 2, + "1439": 4, + "1440": 1, + "1441": 2, + "1442": 2, + "1444": 1, + "1446": 4, + "1447": 2, + "1448": 1, + "1449": 2, + "1450": 1, + "1451": 2, + "1452": 2, + "1453": 2, + "1454": 3, + "1455": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 2, + "1461": 1, + "1462": 1, + "1463": 2, + "1464": 1, + "1465": 3, + "1466": 2, + "1467": 2, + "1468": 2, + "1469": 4, + "1470": 4, + "1471": 6, + "1472": 3, + "1473": 2, + "1474": 2, + "1475": 1, + "1476": 2, + "1477": 3, + "1478": 3, + "1479": 2, + "1480": 2, + "1481": 1, + "1482": 1, + "1483": 3, + "1484": 4, + "1485": 6, + "1486": 3, + "1487": 2, + "1488": 4, + "1489": 3, + "1490": 2, + "1491": 1, + "1492": 3, + "1493": 3, + "1494": 2, + "1495": 3, + "1496": 5, + "1498": 2, + "1500": 3, + "1501": 2, + "1502": 2, + "1503": 2, + "1504": 2, + "1505": 3, + "1506": 2, + "1507": 1, + "1508": 3, + "1509": 2, + "1510": 1, + "1511": 2, + "1513": 5, + "1514": 2, + "1515": 2, + "1516": 1, + "1517": 4, + "1518": 4, + "1519": 3, + "1520": 4, + "1522": 6, + "1524": 2, + "1525": 1, + "1526": 1, + "1528": 3, + "1529": 5, + "1531": 2, + "1532": 3, + "1533": 1, + "1534": 4, + "1535": 4, + "1536": 5, + "1537": 5, + "1538": 9, + "1539": 5, + "1540": 6, + "1541": 7, + "1542": 6, + "1543": 3, + "1544": 5, + "1545": 1, + "1546": 3, + "1547": 7, + "1548": 2, + "1549": 2, + "1550": 3, + "1551": 6, + "1552": 5, + "1553": 6, + "1554": 3, + "1555": 3, + "1556": 6, + "1557": 5, + "1558": 8, + "1559": 7, + "1560": 11, + "1561": 7, + "1562": 7, + "1563": 2, + "1564": 6, + "1565": 5, + "1566": 5, + "1567": 5, + "1568": 2, + "1569": 3, + "1570": 5, + "1571": 5, + "1572": 3, + "1573": 3, + "1574": 1, + "1575": 1, + "1576": 2, + "1577": 2, + "1578": 1, + "1580": 3, + "1581": 2, + "1582": 3, + "1583": 2, + "1585": 1, + "1586": 2, + "1587": 2, + "1588": 2, + "1589": 2, + "1590": 2, + "1591": 2, + "1592": 1, + "1593": 1, + "1597": 1, + "1604": 1, + "1607": 1, + "1608": 2, + "1611": 2, + "1613": 1, + "1614": 1, + "1617": 1, + "1618": 4, + "1621": 1, + "1623": 2, + "1624": 2, + "1625": 1, + "1626": 6, + "1627": 3, + "1628": 1, + "1629": 2, + "1630": 1, + "1632": 2, + "1634": 1, + "1636": 2, + "1637": 2, + "1639": 1, + "1641": 3, + "1643": 3, + "1644": 2, + "1646": 6, + "1647": 1, + "1648": 2, + "1650": 2, + "1651": 2, + "1652": 2, + "1653": 2, + "1654": 1, + "1655": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1660": 2, + "1661": 1, + "1664": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343533266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888212450d1d11ad" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "12450d1d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_4_9.html b/autobahn/client/tungstenite_case_13_4_9.html new file mode 100644 index 0000000..af67ee8 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_9.html @@ -0,0 +1,540 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.4.9 : Pass - 1717 ms @ 2025-09-11T20:13:02.788Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=454&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: TbJkCdPdbHDdpc9LDNWAbw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: v1hyzRd/M4n0MuJjNLVZjnMW+n8=
+Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
280525610
280612806
280725614
2808514040
2809411236
2810616860
2811514055
2812616872
28131233756
28141747838
28152261930
28162673216
28172878876
28181747906
28193598665
28201953580
28213187451
28222056440
28232364929
28241748008
28252159325
28262776302
28272570675
28282262216
28292673554
28302056600
28313496254
28322056640
28331439662
2834822672
2835925515
28361748212
28371645392
28381748246
28391645424
28401028400
2841925569
2842514210
284338529
284412844
284538535
2846411384
284725694
285025700
285112851
285312853
285412854
285525710
285712857
285812858
285925718
286138583
2863411452
286412864
2866411464
286738601
286825736
287025740
287112871
287212872
287312873
287412874
287612876
288212882
288312883
288625772
288712887
288812888
288912889
289025780
289112891
289225784
289612896
289912899
290112901
290338709
290425808
290525810
2906514530
2907823256
2908514540
2909720363
2910411640
2911823288
291225824
291338739
291438742
2915514575
29161029160
29171132087
29181646688
29191029190
29201132120
2921617526
29221955518
29231235076
2924617544
2925926325
29261235112
29271235124
29281235136
2929926361
2930720510
2931926379
2932720524
2933617598
2934411736
2935411740
293625872
293738811
293812938
2939617634
29401132340
2941823528
29421338246
29431029430
2944926496
2945514725
294625892
294738841
296112961
Total10022860358
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
2791279
280125602
280212802
280325606
2804514020
2805411220
2806616836
2807514035
2808616848
28091233708
28101747770
28112261842
28122673112
28132878764
28141747838
28153598525
28161953504
28173187327
28182056360
28192364837
28201747940
28212159241
28222776194
28232570575
28242262128
28252673450
28262056520
28273496118
28282056560
28291439606
2830822640
2831925479
28321748144
28331645328
28341748178
28351645360
28361028360
2837925533
2838514190
283938517
284012840
284138523
2842411368
284325686
284625692
284712847
284912849
285012850
285125702
285312853
285412854
285525710
285738571
2859411436
286012860
2862411448
286338589
286425728
286625732
286712867
286812868
286912869
287012870
287212872
287812878
287912879
288225764
288312883
288412884
288512885
288625772
288712887
288825776
289212892
289512895
289712897
289938697
290025800
290125802
2902514510
2903823224
2904514520
2905720335
2906411624
2907823256
290825816
290938727
291038730
2911514555
29121029120
29131132043
29141646624
29151029150
29161132076
2917617502
29181955442
29191235028
2920617520
2921926289
29221235064
29231235076
29241235088
2925926325
2926720482
2927926343
2928720496
2929617574
2930411720
2931411724
293225864
293338799
293412934
2935617610
29361132296
2937823496
29381338194
29391029390
2940926460
2941514705
294225884
294338829
295712957
Total10022856376
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343534266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88824276d478419e
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3432373664343738
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_4_9.json b/autobahn/client/tungstenite_case_13_4_9.json new file mode 100644 index 0000000..f60394d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_4_9.json @@ -0,0 +1,387 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 454, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(False, 15)]", + "droppedByMe": true, + "duration": 1717, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=454&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: TbJkCdPdbHDdpc9LDNWAbw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: v1hyzRd/M4n0MuJjNLVZjnMW+n8=\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits=15\r\n\r\n", + "id": "13.4.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2805": 2, + "2806": 1, + "2807": 2, + "2808": 5, + "2809": 4, + "2810": 6, + "2811": 5, + "2812": 6, + "2813": 12, + "2814": 17, + "2815": 22, + "2816": 26, + "2817": 28, + "2818": 17, + "2819": 35, + "2820": 19, + "2821": 31, + "2822": 20, + "2823": 23, + "2824": 17, + "2825": 21, + "2826": 27, + "2827": 25, + "2828": 22, + "2829": 26, + "2830": 20, + "2831": 34, + "2832": 20, + "2833": 14, + "2834": 8, + "2835": 9, + "2836": 17, + "2837": 16, + "2838": 17, + "2839": 16, + "2840": 10, + "2841": 9, + "2842": 5, + "2843": 3, + "2844": 1, + "2845": 3, + "2846": 4, + "2847": 2, + "2850": 2, + "2851": 1, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 1, + "2858": 1, + "2859": 2, + "2861": 3, + "2863": 4, + "2864": 1, + "2866": 4, + "2867": 3, + "2868": 2, + "2870": 2, + "2871": 1, + "2872": 1, + "2873": 1, + "2874": 1, + "2876": 1, + "2882": 1, + "2883": 1, + "2886": 2, + "2887": 1, + "2888": 1, + "2889": 1, + "2890": 2, + "2891": 1, + "2892": 2, + "2896": 1, + "2899": 1, + "2901": 1, + "2903": 3, + "2904": 2, + "2905": 2, + "2906": 5, + "2907": 8, + "2908": 5, + "2909": 7, + "2910": 4, + "2911": 8, + "2912": 2, + "2913": 3, + "2914": 3, + "2915": 5, + "2916": 10, + "2917": 11, + "2918": 16, + "2919": 10, + "2920": 11, + "2921": 6, + "2922": 19, + "2923": 12, + "2924": 6, + "2925": 9, + "2926": 12, + "2927": 12, + "2928": 12, + "2929": 9, + "2930": 7, + "2931": 9, + "2932": 7, + "2933": 6, + "2934": 4, + "2935": 4, + "2936": 2, + "2937": 3, + "2938": 1, + "2939": 6, + "2940": 11, + "2941": 8, + "2942": 13, + "2943": 10, + "2944": 9, + "2945": 5, + "2946": 2, + "2947": 3, + "2961": 1 + }, + "started": "2025-09-11T20:13:02.788Z", + "trafficStats": { + "incomingCompressionRatio": 0.04351948547363281, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2852093, + "incomingOctetsWireLevel": 2860093, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0028049576223496218, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2856093, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014024788111748109, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 279 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "279": 1, + "2801": 2, + "2802": 1, + "2803": 2, + "2804": 5, + "2805": 4, + "2806": 6, + "2807": 5, + "2808": 6, + "2809": 12, + "2810": 17, + "2811": 22, + "2812": 26, + "2813": 28, + "2814": 17, + "2815": 35, + "2816": 19, + "2817": 31, + "2818": 20, + "2819": 23, + "2820": 17, + "2821": 21, + "2822": 27, + "2823": 25, + "2824": 22, + "2825": 26, + "2826": 20, + "2827": 34, + "2828": 20, + "2829": 14, + "2830": 8, + "2831": 9, + "2832": 17, + "2833": 16, + "2834": 17, + "2835": 16, + "2836": 10, + "2837": 9, + "2838": 5, + "2839": 3, + "2840": 1, + "2841": 3, + "2842": 4, + "2843": 2, + "2846": 2, + "2847": 1, + "2849": 1, + "2850": 1, + "2851": 2, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 3, + "2859": 4, + "2860": 1, + "2862": 4, + "2863": 3, + "2864": 2, + "2866": 2, + "2867": 1, + "2868": 1, + "2869": 1, + "2870": 1, + "2872": 1, + "2878": 1, + "2879": 1, + "2882": 2, + "2883": 1, + "2884": 1, + "2885": 1, + "2886": 2, + "2887": 1, + "2888": 2, + "2892": 1, + "2895": 1, + "2897": 1, + "2899": 3, + "2900": 2, + "2901": 2, + "2902": 5, + "2903": 8, + "2904": 5, + "2905": 7, + "2906": 4, + "2907": 8, + "2908": 2, + "2909": 3, + "2910": 3, + "2911": 5, + "2912": 10, + "2913": 11, + "2914": 16, + "2915": 10, + "2916": 11, + "2917": 6, + "2918": 19, + "2919": 12, + "2920": 6, + "2921": 9, + "2922": 12, + "2923": 12, + "2924": 12, + "2925": 9, + "2926": 7, + "2927": 9, + "2928": 7, + "2929": 6, + "2930": 4, + "2931": 4, + "2932": 2, + "2933": 3, + "2934": 1, + "2935": 6, + "2936": 11, + "2937": 8, + "2938": 13, + "2939": 10, + "2940": 9, + "2941": 5, + "2942": 2, + "2943": 3, + "2957": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343534266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 279, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824276d478419e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4276d478" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_1.html b/autobahn/client/tungstenite_case_13_5_1.html new file mode 100644 index 0000000..36931b7 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_1.html @@ -0,0 +1,320 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.1 : Pass - 187 ms @ 2025-09-11T20:13:24.413Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=464&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: n4RbLea5jVcHkD15zKZw9A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 45V2R3iGrtUwwqbSGt1wArdwftA=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1610160
176102
181793222
19581102
20521040
211112331
22571254
23962208
2443110344
2571257
Total100222028
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
67554530
766462
837296
9103927
1024240
11444
12224
14114
15345
16116
17117
18118
20240
3061306
Total10026983
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343634266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888202f263e9011a
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3032663236336539
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_1.json b/autobahn/client/tungstenite_case_13_5_1.json new file mode 100644 index 0000000..f2a4bee --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_1.json @@ -0,0 +1,167 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 464, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 187, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=464&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: n4RbLea5jVcHkD15zKZw9A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 45V2R3iGrtUwwqbSGt1wArdwftA=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "16": 10, + "17": 6, + "18": 179, + "19": 58, + "20": 52, + "21": 111, + "22": 57, + "23": 96, + "24": 431, + "257": 1 + }, + "started": "2025-09-11T20:13:24.413Z", + "trafficStats": { + "incomingCompressionRatio": 0.9851875, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 15763, + "incomingOctetsWireLevel": 21763, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.38063820338768, + "outgoingCompressionRatio": 0.2920625, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 4673, + "outgoingOctetsWireLevel": 6673, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.4279905842071474, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 755, + "7": 66, + "8": 37, + "9": 103, + "10": 24, + "11": 4, + "12": 2, + "14": 1, + "15": 3, + "16": 1, + "17": 1, + "18": 1, + "20": 2, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343634266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888202f263e9011a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "02f263e9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_10.html b/autobahn/client/tungstenite_case_13_5_10.html new file mode 100644 index 0000000..a33bf22 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_10.html @@ -0,0 +1,735 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.10 : Pass - 7735 ms @ 2025-09-11T20:13:35.078Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=473&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: WgB6HRSZAue0/jgXmp/49w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YFADzG8Vw4Sr641XEfoRSWnZc5o=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668408
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343733266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822126170022ce
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3231323631373030
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_10.json b/autobahn/client/tungstenite_case_13_5_10.json new file mode 100644 index 0000000..d540593 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_10.json @@ -0,0 +1,582 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 473, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 7735, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=473&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: WgB6HRSZAue0/jgXmp/49w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YFADzG8Vw4Sr641XEfoRSWnZc5o=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:13:35.078Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343733266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822126170022ce" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "21261700" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_11.html b/autobahn/client/tungstenite_case_13_5_11.html new file mode 100644 index 0000000..9fd09b2 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_11.html @@ -0,0 +1,656 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.11 : Pass - 760 ms @ 2025-09-11T20:13:42.815Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=474&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: KOi7Y5nB07HaR9q07xlFxw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Rhjdplf0Hq/4k1ToXu31rPkEeLI=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
3911391
3922784
39331179
39431182
39551975
3961396
39751985
39841592
39931197
40141604
40262412
40341612
40462424
40572835
40662436
407104070
408124896
409114499
41083280
41193699
412124944
413114543
414124968
41593735
416124992
41783336
418145852
419125028
420135460
42183368
42272954
42393807
42462544
42572975
42683408
42783416
42862568
42973003
43052150
43141724
43231296
43352165
43473038
43552175
43652180
43741748
43883504
43983512
440125280
44152205
44252210
443114873
444125328
44531335
446125352
447114917
448114928
449156735
450146300
45194059
45262712
45373171
454125448
455125460
45652280
45752285
45894122
45941836
46062760
46152305
46273234
46394167
46431392
465104650
46652330
46773269
46841872
46941876
47041880
4712942
47352365
47441896
47562850
476104760
477104770
47831434
47973353
48052400
48152405
48283856
483125796
48483872
48541940
48683888
48773409
48883904
48973423
49083920
49152455
49241968
49362958
49473458
4952990
49683968
49762982
49841992
49941996
50021000
5011501
50252510
50331509
50442016
50594545
50652530
50742028
508105080
50984072
51073570
51173577
51284096
51321026
514105140
51573605
5161516
51752585
518126216
51973633
52063120
52184168
52284176
52363138
52494716
52563150
52673682
52752635
52873696
52921058
5301530
53142124
53242128
53321066
53442136
53531605
5361536
53831614
5421542
5461546
54821096
5491549
55021100
5551555
55731671
56031680
5611561
5641564
5651565
5671567
5681568
56921138
5711571
57231716
5731573
57421148
57642304
57731731
57821156
5801580
58121162
5821582
5841584
5901590
5911591
5991599
6011601
6021602
Total1002465452
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
435215
446264
45290
465230
476282
4811528
4910490
503150
51151
525260
53153
543162
55155
565280
577399
584232
596354
6012720
614244
6212744
6311693
6410640
6513845
6610660
67181206
68161088
69151035
7010700
71211491
72211512
73191387
7413962
75161200
767532
777539
7812936
7911869
8010800
815405
827574
834332
845420
855425
863258
87187
885440
895445
906540
919819
929828
939837
948752
9510950
968768
97141358
989882
9910990
100121200
1019909
1028816
103121236
1048832
105101050
1064424
1076642
1086648
1092218
1102220
111111221
1127784
1132226
114111254
1157805
1168928
1173351
1187826
1198952
1206720
121101210
1226732
1234492
1242248
1257875
1262252
1273381
1303390
1314524
1323396
1333399
1345670
1352270
1364544
1373411
1384552
1393417
1403420
1416846
1424568
1433429
1441144
1451145
1464584
1473441
1483444
1491149
1504600
15181208
1523456
1532306
15471078
1556930
1562312
1571157
1581158
1594636
160121920
1615805
1623486
1633489
1642328
1652330
16671162
1674668
1683504
1693507
1705850
1712342
1733519
1743522
1753525
1761176
1771177
1783534
1801180
1811181
1852370
1861186
1873561
1891189
1911191
1923576
1931193
1943582
1953585
1961196
19791773
19881584
1992398
20071400
201102010
20291818
2032406
20471428
205132665
20661236
20781656
20851040
20981672
21091890
21161266
21281696
2132426
2144856
2151215
2162432
2172434
2181218
2191219
2202440
2211221
2221222
2233669
2241224
2261226
2281228
2312462
2321232
2333699
2341234
2361236
2371237
2601000260000
3061306
Total2002376256
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343734266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d57b367dd693
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6435376233363764
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_11.json b/autobahn/client/tungstenite_case_13_5_11.json new file mode 100644 index 0000000..4995d7a --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_11.json @@ -0,0 +1,503 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 474, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 760, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=474&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: KOi7Y5nB07HaR9q07xlFxw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Rhjdplf0Hq/4k1ToXu31rPkEeLI=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "391": 1, + "392": 2, + "393": 3, + "394": 3, + "395": 5, + "396": 1, + "397": 5, + "398": 4, + "399": 3, + "401": 4, + "402": 6, + "403": 4, + "404": 6, + "405": 7, + "406": 6, + "407": 10, + "408": 12, + "409": 11, + "410": 8, + "411": 9, + "412": 12, + "413": 11, + "414": 12, + "415": 9, + "416": 12, + "417": 8, + "418": 14, + "419": 12, + "420": 13, + "421": 8, + "422": 7, + "423": 9, + "424": 6, + "425": 7, + "426": 8, + "427": 8, + "428": 6, + "429": 7, + "430": 5, + "431": 4, + "432": 3, + "433": 5, + "434": 7, + "435": 5, + "436": 5, + "437": 4, + "438": 8, + "439": 8, + "440": 12, + "441": 5, + "442": 5, + "443": 11, + "444": 12, + "445": 3, + "446": 12, + "447": 11, + "448": 11, + "449": 15, + "450": 14, + "451": 9, + "452": 6, + "453": 7, + "454": 12, + "455": 12, + "456": 5, + "457": 5, + "458": 9, + "459": 4, + "460": 6, + "461": 5, + "462": 7, + "463": 9, + "464": 3, + "465": 10, + "466": 5, + "467": 7, + "468": 4, + "469": 4, + "470": 4, + "471": 2, + "473": 5, + "474": 4, + "475": 6, + "476": 10, + "477": 10, + "478": 3, + "479": 7, + "480": 5, + "481": 5, + "482": 8, + "483": 12, + "484": 8, + "485": 4, + "486": 8, + "487": 7, + "488": 8, + "489": 7, + "490": 8, + "491": 5, + "492": 4, + "493": 6, + "494": 7, + "495": 2, + "496": 8, + "497": 6, + "498": 4, + "499": 4, + "500": 2, + "501": 1, + "502": 5, + "503": 3, + "504": 4, + "505": 9, + "506": 5, + "507": 4, + "508": 10, + "509": 8, + "510": 7, + "511": 7, + "512": 8, + "513": 2, + "514": 10, + "515": 7, + "516": 1, + "517": 5, + "518": 12, + "519": 7, + "520": 6, + "521": 8, + "522": 8, + "523": 6, + "524": 9, + "525": 6, + "526": 7, + "527": 5, + "528": 7, + "529": 2, + "530": 1, + "531": 4, + "532": 4, + "533": 2, + "534": 4, + "535": 3, + "536": 1, + "538": 3, + "542": 1, + "546": 1, + "548": 2, + "549": 1, + "550": 2, + "555": 1, + "557": 3, + "560": 3, + "561": 1, + "564": 1, + "565": 1, + "567": 1, + "568": 1, + "569": 2, + "571": 1, + "572": 3, + "573": 1, + "574": 2, + "576": 4, + "577": 3, + "578": 2, + "580": 1, + "581": 2, + "582": 1, + "584": 1, + "590": 1, + "591": 1, + "599": 1, + "601": 1, + "602": 1 + }, + "started": "2025-09-11T20:13:42.815Z", + "trafficStats": { + "incomingCompressionRatio": 0.0558089599609375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 457187, + "incomingOctetsWireLevel": 465187, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.017498310319409783, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 375946, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.018067884551850388, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "43": 5, + "44": 6, + "45": 2, + "46": 5, + "47": 6, + "48": 11, + "49": 10, + "50": 3, + "51": 1, + "52": 5, + "53": 1, + "54": 3, + "55": 1, + "56": 5, + "57": 7, + "58": 4, + "59": 6, + "60": 12, + "61": 4, + "62": 12, + "63": 11, + "64": 10, + "65": 13, + "66": 10, + "67": 18, + "68": 16, + "69": 15, + "70": 10, + "71": 21, + "72": 21, + "73": 19, + "74": 13, + "75": 16, + "76": 7, + "77": 7, + "78": 12, + "79": 11, + "80": 10, + "81": 5, + "82": 7, + "83": 4, + "84": 5, + "85": 5, + "86": 3, + "87": 1, + "88": 5, + "89": 5, + "90": 6, + "91": 9, + "92": 9, + "93": 9, + "94": 8, + "95": 10, + "96": 8, + "97": 14, + "98": 9, + "99": 10, + "100": 12, + "101": 9, + "102": 8, + "103": 12, + "104": 8, + "105": 10, + "106": 4, + "107": 6, + "108": 6, + "109": 2, + "110": 2, + "111": 11, + "112": 7, + "113": 2, + "114": 11, + "115": 7, + "116": 8, + "117": 3, + "118": 7, + "119": 8, + "120": 6, + "121": 10, + "122": 6, + "123": 4, + "124": 2, + "125": 7, + "126": 2, + "127": 3, + "130": 3, + "131": 4, + "132": 3, + "133": 3, + "134": 5, + "135": 2, + "136": 4, + "137": 3, + "138": 4, + "139": 3, + "140": 3, + "141": 6, + "142": 4, + "143": 3, + "144": 1, + "145": 1, + "146": 4, + "147": 3, + "148": 3, + "149": 1, + "150": 4, + "151": 8, + "152": 3, + "153": 2, + "154": 7, + "155": 6, + "156": 2, + "157": 1, + "158": 1, + "159": 4, + "160": 12, + "161": 5, + "162": 3, + "163": 3, + "164": 2, + "165": 2, + "166": 7, + "167": 4, + "168": 3, + "169": 3, + "170": 5, + "171": 2, + "173": 3, + "174": 3, + "175": 3, + "176": 1, + "177": 1, + "178": 3, + "180": 1, + "181": 1, + "185": 2, + "186": 1, + "187": 3, + "189": 1, + "191": 1, + "192": 3, + "193": 1, + "194": 3, + "195": 3, + "196": 1, + "197": 9, + "198": 8, + "199": 2, + "200": 7, + "201": 10, + "202": 9, + "203": 2, + "204": 7, + "205": 13, + "206": 6, + "207": 8, + "208": 5, + "209": 8, + "210": 9, + "211": 6, + "212": 8, + "213": 2, + "214": 4, + "215": 1, + "216": 2, + "217": 2, + "218": 1, + "219": 1, + "220": 2, + "221": 1, + "222": 1, + "223": 3, + "224": 1, + "226": 1, + "228": 1, + "231": 2, + "232": 1, + "233": 3, + "234": 1, + "236": 1, + "237": 1, + "260": 1000, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343734266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d57b367dd693" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d57b367d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_12.html b/autobahn/client/tungstenite_case_13_5_12.html new file mode 100644 index 0000000..ebfeca9 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_12.html @@ -0,0 +1,813 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.12 : Pass - 1098 ms @ 2025-09-11T20:13:43.576Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=475&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: vmH0z9vLqn+DP4wO5u/mIg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: S6sRrF9ER5wPQSsYBIXSg+lp5HU=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
63821276
6401640
64121282
64231926
64331929
64421288
64521290
6461646
64731941
64821296
64921298
65042600
65131953
6521652
6531653
6561656
65853290
65931977
66063960
66142644
66274634
66342652
66421328
66542660
66621332
66753335
66885344
66932007
6701670
6711671
67232016
67353365
67421348
67564050
67653380
67774739
67842712
679106790
68064080
68164086
68242728
68374781
68453420
68585480
68674802
687106870
68842752
68953445
690117590
69185528
69253460
69396237
69453470
6951695
69621392
69732091
69842792
69942796
7001700
70142804
70232106
70332109
704107040
70553525
7061706
70721414
70821416
70953545
71032130
71121422
7121712
71321426
71432142
71575005
71642864
71753585
7181718
71942876
72032160
72175047
72264332
72375061
72464344
72553625
72632178
72721454
72832184
72953645
73042920
73132193
73275124
73321466
73432202
73621472
73732211
73842952
73932217
74032220
74153705
74232226
74353715
7441744
74532235
74642984
74721494
74864488
74964494
75053750
75186008
75286016
75396777
75443016
755107550
75664536
75743028
75896822
75964554
76021520
76175327
76286096
76343052
76453820
76532295
76632298
76721534
76832304
76921538
77132313
77221544
77321546
7741774
7751775
7761776
77743108
77853890
77921558
78021560
78121562
78232346
78332349
78421568
78532355
78821576
78932367
79053950
7911791
79232376
7931793
79453970
79564770
79697164
79743188
79853990
79953995
80097200
80243208
80364818
8041804
80532415
80664836
80743228
80843232
80964854
81032430
81143244
81221624
81354065
81454070
81543260
81654080
81743268
81843272
81943276
82086560
82132463
82243288
82354115
82454120
82543300
8261826
82764962
82854140
82964974
83021660
83143324
83232496
83375831
83497506
83532505
83643344
83743348
838108380
83975873
84054200
84154205
84254210
84354215
84497596
84532535
8461846
84754235
84821696
84965094
85043400
85143404
85254260
8531853
8541854
85532565
8561856
85743428
85843432
8601860
86121722
86221724
86532595
86643464
86721734
86854340
86932607
8701870
87121742
87221744
8741874
87532625
87621752
8771877
8781878
8791879
88021760
88921778
8921892
8951895
9081908
90932727
9101910
91132733
91221824
91454570
9161916
9171917
9181918
91921838
9231923
92632778
9281928
92921858
9301930
93132793
93243728
9331933
93476538
9351935
93632808
93732811
93832814
93921878
94043760
9411941
94221884
9431943
9441944
9451945
9461946
94754735
9481948
9491949
95121902
9521952
95321906
9561956
9641964
9671967
Total1002771375
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
428
5315
616
717
818
10110
13113
16232
17234
18354
19119
20480
21242
22244
24124
254100
275135
28256
30130
31262
32264
33133
34134
353105
367252
376222
38276
396234
404160
415205
423126
43286
44288
45290
464184
473141
484192
493147
502100
513153
535265
542108
556330
575285
584232
594236
604240
614244
622124
63163
648512
652130
662132
674268
684272
692138
705350
712142
727504
733219
746444
752150
76176
772154
782156
79179
805400
8110810
825410
834332
845420
855425
86186
877609
886528
894356
906540
915455
924368
938744
944376
955475
968768
979873
98141372
997693
1008800
101111111
1028816
1038824
1046624
105121260
1065530
1073321
1085540
1098872
1109990
111101110
112131456
11391017
114121368
115151725
116111276
117161872
11891062
1196714
12091080
1218968
1227854
1234492
1246744
1254500
1267882
1275635
1304520
1316786
1326792
1337931
1344536
1352270
1362272
1376822
1384552
1396834
1403420
1414564
1427994
1435715
14481152
1456870
14671022
1472294
14871036
14991341
150111650
151101510
152111672
15381224
15471078
15581240
15671092
1574628
15881264
1596954
1604640
1615805
1624648
1632326
1642328
1654660
1661166
1674668
1684672
1694676
1702340
1711171
1724688
1734692
1741174
1752350
1764704
1772354
1783534
1793537
1801180
1813543
1823546
1835915
1844736
1853555
1864744
1874748
1883564
1892378
1903570
1912382
19261152
1933579
19481552
1952390
1961196
1971197
1983594
1993597
2001200
2011201
2022404
2033609
2042408
2052410
2064824
2072414
2083624
2092418
21051050
2112422
2122424
21351065
2142428
2152430
2161216
2171217
2183654
2203660
2211221
2224888
2232446
22451120
2252450
2273681
2283684
22951145
2313693
2323696
2332466
2342468
2351235
2361236
23771659
2381238
2391239
2401240
2411241
2421242
2434972
2444976
2453735
24651230
2473741
2482496
2502500
2513753
25241008
2531253
2541254
2553765
2571257
2581258
2593777
2602331606060
3061306
Total3333733808
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02331
11000
81
Total3332
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343735266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822be33b20280b
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3262653333623230
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_12.json b/autobahn/client/tungstenite_case_13_5_12.json new file mode 100644 index 0000000..b7099e7 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_12.json @@ -0,0 +1,660 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 475, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 1098, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=475&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: vmH0z9vLqn+DP4wO5u/mIg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: S6sRrF9ER5wPQSsYBIXSg+lp5HU=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "638": 2, + "640": 1, + "641": 2, + "642": 3, + "643": 3, + "644": 2, + "645": 2, + "646": 1, + "647": 3, + "648": 2, + "649": 2, + "650": 4, + "651": 3, + "652": 1, + "653": 1, + "656": 1, + "658": 5, + "659": 3, + "660": 6, + "661": 4, + "662": 7, + "663": 4, + "664": 2, + "665": 4, + "666": 2, + "667": 5, + "668": 8, + "669": 3, + "670": 1, + "671": 1, + "672": 3, + "673": 5, + "674": 2, + "675": 6, + "676": 5, + "677": 7, + "678": 4, + "679": 10, + "680": 6, + "681": 6, + "682": 4, + "683": 7, + "684": 5, + "685": 8, + "686": 7, + "687": 10, + "688": 4, + "689": 5, + "690": 11, + "691": 8, + "692": 5, + "693": 9, + "694": 5, + "695": 1, + "696": 2, + "697": 3, + "698": 4, + "699": 4, + "700": 1, + "701": 4, + "702": 3, + "703": 3, + "704": 10, + "705": 5, + "706": 1, + "707": 2, + "708": 2, + "709": 5, + "710": 3, + "711": 2, + "712": 1, + "713": 2, + "714": 3, + "715": 7, + "716": 4, + "717": 5, + "718": 1, + "719": 4, + "720": 3, + "721": 7, + "722": 6, + "723": 7, + "724": 6, + "725": 5, + "726": 3, + "727": 2, + "728": 3, + "729": 5, + "730": 4, + "731": 3, + "732": 7, + "733": 2, + "734": 3, + "736": 2, + "737": 3, + "738": 4, + "739": 3, + "740": 3, + "741": 5, + "742": 3, + "743": 5, + "744": 1, + "745": 3, + "746": 4, + "747": 2, + "748": 6, + "749": 6, + "750": 5, + "751": 8, + "752": 8, + "753": 9, + "754": 4, + "755": 10, + "756": 6, + "757": 4, + "758": 9, + "759": 6, + "760": 2, + "761": 7, + "762": 8, + "763": 4, + "764": 5, + "765": 3, + "766": 3, + "767": 2, + "768": 3, + "769": 2, + "771": 3, + "772": 2, + "773": 2, + "774": 1, + "775": 1, + "776": 1, + "777": 4, + "778": 5, + "779": 2, + "780": 2, + "781": 2, + "782": 3, + "783": 3, + "784": 2, + "785": 3, + "788": 2, + "789": 3, + "790": 5, + "791": 1, + "792": 3, + "793": 1, + "794": 5, + "795": 6, + "796": 9, + "797": 4, + "798": 5, + "799": 5, + "800": 9, + "802": 4, + "803": 6, + "804": 1, + "805": 3, + "806": 6, + "807": 4, + "808": 4, + "809": 6, + "810": 3, + "811": 4, + "812": 2, + "813": 5, + "814": 5, + "815": 4, + "816": 5, + "817": 4, + "818": 4, + "819": 4, + "820": 8, + "821": 3, + "822": 4, + "823": 5, + "824": 5, + "825": 4, + "826": 1, + "827": 6, + "828": 5, + "829": 6, + "830": 2, + "831": 4, + "832": 3, + "833": 7, + "834": 9, + "835": 3, + "836": 4, + "837": 4, + "838": 10, + "839": 7, + "840": 5, + "841": 5, + "842": 5, + "843": 5, + "844": 9, + "845": 3, + "846": 1, + "847": 5, + "848": 2, + "849": 6, + "850": 4, + "851": 4, + "852": 5, + "853": 1, + "854": 1, + "855": 3, + "856": 1, + "857": 4, + "858": 4, + "860": 1, + "861": 2, + "862": 2, + "865": 3, + "866": 4, + "867": 2, + "868": 5, + "869": 3, + "870": 1, + "871": 2, + "872": 2, + "874": 1, + "875": 3, + "876": 2, + "877": 1, + "878": 1, + "879": 1, + "880": 2, + "889": 2, + "892": 1, + "895": 1, + "908": 1, + "909": 3, + "910": 1, + "911": 3, + "912": 2, + "914": 5, + "916": 1, + "917": 1, + "918": 1, + "919": 2, + "923": 1, + "926": 3, + "928": 1, + "929": 2, + "930": 1, + "931": 3, + "932": 4, + "933": 1, + "934": 7, + "935": 1, + "936": 3, + "937": 3, + "938": 3, + "939": 2, + "940": 4, + "941": 1, + "942": 2, + "943": 1, + "944": 1, + "945": 1, + "946": 1, + "947": 5, + "948": 1, + "949": 1, + "951": 2, + "952": 1, + "953": 2, + "956": 1, + "964": 1, + "967": 1 + }, + "started": "2025-09-11T20:13:43.576Z", + "trafficStats": { + "incomingCompressionRatio": 0.0465765380859375, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 763110, + "incomingOctetsWireLevel": 771110, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.010483416545452163, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 733498, + "outgoingWebSocketFrames": 3331, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016936510269215093, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 2331, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 2, + "5": 3, + "6": 1, + "7": 1, + "8": 1, + "10": 1, + "13": 1, + "16": 2, + "17": 2, + "18": 3, + "19": 1, + "20": 4, + "21": 2, + "22": 2, + "24": 1, + "25": 4, + "27": 5, + "28": 2, + "30": 1, + "31": 2, + "32": 2, + "33": 1, + "34": 1, + "35": 3, + "36": 7, + "37": 6, + "38": 2, + "39": 6, + "40": 4, + "41": 5, + "42": 3, + "43": 2, + "44": 2, + "45": 2, + "46": 4, + "47": 3, + "48": 4, + "49": 3, + "50": 2, + "51": 3, + "53": 5, + "54": 2, + "55": 6, + "57": 5, + "58": 4, + "59": 4, + "60": 4, + "61": 4, + "62": 2, + "63": 1, + "64": 8, + "65": 2, + "66": 2, + "67": 4, + "68": 4, + "69": 2, + "70": 5, + "71": 2, + "72": 7, + "73": 3, + "74": 6, + "75": 2, + "76": 1, + "77": 2, + "78": 2, + "79": 1, + "80": 5, + "81": 10, + "82": 5, + "83": 4, + "84": 5, + "85": 5, + "86": 1, + "87": 7, + "88": 6, + "89": 4, + "90": 6, + "91": 5, + "92": 4, + "93": 8, + "94": 4, + "95": 5, + "96": 8, + "97": 9, + "98": 14, + "99": 7, + "100": 8, + "101": 11, + "102": 8, + "103": 8, + "104": 6, + "105": 12, + "106": 5, + "107": 3, + "108": 5, + "109": 8, + "110": 9, + "111": 10, + "112": 13, + "113": 9, + "114": 12, + "115": 15, + "116": 11, + "117": 16, + "118": 9, + "119": 6, + "120": 9, + "121": 8, + "122": 7, + "123": 4, + "124": 6, + "125": 4, + "126": 7, + "127": 5, + "130": 4, + "131": 6, + "132": 6, + "133": 7, + "134": 4, + "135": 2, + "136": 2, + "137": 6, + "138": 4, + "139": 6, + "140": 3, + "141": 4, + "142": 7, + "143": 5, + "144": 8, + "145": 6, + "146": 7, + "147": 2, + "148": 7, + "149": 9, + "150": 11, + "151": 10, + "152": 11, + "153": 8, + "154": 7, + "155": 8, + "156": 7, + "157": 4, + "158": 8, + "159": 6, + "160": 4, + "161": 5, + "162": 4, + "163": 2, + "164": 2, + "165": 4, + "166": 1, + "167": 4, + "168": 4, + "169": 4, + "170": 2, + "171": 1, + "172": 4, + "173": 4, + "174": 1, + "175": 2, + "176": 4, + "177": 2, + "178": 3, + "179": 3, + "180": 1, + "181": 3, + "182": 3, + "183": 5, + "184": 4, + "185": 3, + "186": 4, + "187": 4, + "188": 3, + "189": 2, + "190": 3, + "191": 2, + "192": 6, + "193": 3, + "194": 8, + "195": 2, + "196": 1, + "197": 1, + "198": 3, + "199": 3, + "200": 1, + "201": 1, + "202": 2, + "203": 3, + "204": 2, + "205": 2, + "206": 4, + "207": 2, + "208": 3, + "209": 2, + "210": 5, + "211": 2, + "212": 2, + "213": 5, + "214": 2, + "215": 2, + "216": 1, + "217": 1, + "218": 3, + "220": 3, + "221": 1, + "222": 4, + "223": 2, + "224": 5, + "225": 2, + "227": 3, + "228": 3, + "229": 5, + "231": 3, + "232": 3, + "233": 2, + "234": 2, + "235": 1, + "236": 1, + "237": 7, + "238": 1, + "239": 1, + "240": 1, + "241": 1, + "242": 1, + "243": 4, + "244": 4, + "245": 3, + "246": 5, + "247": 3, + "248": 2, + "250": 2, + "251": 3, + "252": 4, + "253": 1, + "254": 1, + "255": 3, + "257": 1, + "258": 1, + "259": 3, + "260": 2331, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343735266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822be33b20280b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2be33b20" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_13.html b/autobahn/client/tungstenite_case_13_5_13.html new file mode 100644 index 0000000..c52c54d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_13.html @@ -0,0 +1,903 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.13 : Pass - 2143 ms @ 2025-09-11T20:13:44.675Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=476&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pQB02t71Q+/T33PaOgwxEA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: CNBz3yJtxdlWYVIkFooMOyJ+uds=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
118911189
119211192
119411194
119522390
119611196
119744788
119811198
119922398
120044800
120122402
120211202
120333609
120433612
120556025
120633618
120711207
120833624
120944836
121011210
121133633
121233636
121344852
121433642
121522430
121656080
121756085
121867308
121967314
122033660
122167326
122222444
122333669
122433672
122556125
122644904
122711227
122833684
122967374
123089840
123133693
123256160
123367398
123444936
123578645
123667416
1237911133
12381214856
123944956
124033720
124122482
124244968
124367458
124467464
124533735
124633738
124733741
124878736
124967494
125011250
125122502
125222504
125411254
125545020
125611256
125711257
125822516
126111261
126211262
126422528
126845072
126922538
127122542
127211272
127333819
127411274
127522550
127622552
127711277
127811278
127911279
128011280
128211282
128322566
128411284
128511285
128611286
128711287
128811288
128911289
129011290
129133873
129222584
129333879
129533885
129611296
129711297
130133903
130345212
130411304
130522610
130611306
130733921
130845232
131033930
131133933
131256560
131333939
131411314
131556575
131611316
131711317
131833954
131945276
132011320
132122642
132211322
132311323
132445296
132511325
132633978
132767962
132856640
132933987
133045320
133145324
133233996
133311333
133456670
133556675
133622672
133722674
133811338
133968034
134068040
1341810728
134245368
134456720
134522690
134645384
134779429
134879436
134945396
135034050
135145404
135245408
135356765
135422708
1355810840
135622712
135734071
135856790
136045440
136156805
136234086
136334089
136411364
136545460
136622732
136745468
136822736
136934107
137034110
137134113
137211372
137368238
137534125
137711377
137822756
137945516
138034140
138145524
138222764
138322766
138422768
138511385
138611386
138722774
138834164
138922778
139011390
139111391
139222784
139311393
139534185
139622792
139711397
139822796
139934197
140034200
140111401
140222804
140311403
140711407
140834224
140957045
141034230
141145644
141222824
1413811304
141445656
141511415
1416811328
141745668
141857090
141957095
142045680
142122842
142245688
142422848
142522850
142634278
142734281
142822856
142945716
143034290
143122862
143222864
143434302
143557175
143645744
143722874
143811438
144022880
144122882
144322886
144411444
144511445
144611446
144734341
144811448
144911449
145011450
145122902
145211452
145345812
145422908
145534365
145634368
145734371
145857290
145957295
146057300
146145844
146257310
146357315
146445856
1465710255
14661116126
146745868
146811468
14691116159
147057350
147145884
147234416
147322946
147445896
147634428
1477811816
147822956
147922958
148034440
148111481
148222964
148322966
148422968
148611486
148722974
148845952
148911489
149022980
149211492
149311493
149434482
149545980
149645984
149822996
149934497
150057500
150111501
150334509
150423008
150511505
150611506
150734521
150811508
150946036
151257560
151323026
151411514
151623032
151723034
151834554
151911519
152023040
152134563
152211522
152311523
152411524
152723054
152823056
152911529
153011530
153146124
153211532
153311533
153411534
153611536
154146164
154223084
154311543
154423088
154611546
154723094
154811548
154911549
155011550
155123102
155234656
157211572
157411574
157811578
157923158
158011580
158134743
158211582
158534755
158711587
158923178
159011590
159111591
159311593
159511595
159723194
159923198
160058000
160123202
160234806
160334809
160411604
160523210
160611606
160846432
160911609
161246448
161311613
161411614
161511615
161711617
162023240
162123242
162211622
162311623
162534875
162623252
162811628
162934887
163011630
163111631
163211632
163311633
163611636
163811638
Total10021377957
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21020
31133
41560
5840
61060
7642
8540
91199
10330
11555
12896
1310130
148112
1510150
168128
178136
189162
1911209
2014280
2111231
2215330
238184
248192
256150
268208
278216
287196
298232
306180
315155
326192
335165
345170
355175
36272
375185
38276
395195
40280
41141
425210
434172
443132
456270
46292
47294
483144
494196
504200
513153
524208
532106
544216
552110
572114
583174
593177
60160
612122
622124
634252
642128
656390
662132
67167
696414
706420
712142
737511
744296
75175
762152
773231
783234
793237
805400
812162
82182
83183
842168
856510
863258
875435
887616
893267
903270
914364
924368
942188
95195
963288
97197
983294
995495
1003300
1012202
1023306
1036618
1041104
1054420
1062212
1072214
1086648
1094436
1104440
1111111
1124448
1134452
1143342
1154460
1162232
1172234
1193357
1203360
1213363
1223366
1232246
1242248
1262252
1272254
1301130
1312262
1321132
1336798
1342268
1351135
1363408
1374548
1381138
1391139
1401140
1414564
1422284
1432286
1441144
1452290
1461146
1474588
1492298
1512302
1524608
1541154
1551155
1563468
1572314
1594636
1601160
1612322
1622324
1641164
1664664
1672334
1681168
1692338
1701170
1712342
1722344
1732346
1743522
1752350
1762352
1772354
1791179
1802360
1811181
1821182
1832366
1841184
1853555
1862372
1872374
1882376
1894756
1904760
19161146
1923576
1932386
1942388
1951195
1962392
1973591
1983594
1992398
2002400
2011201
2021202
2033609
2044816
20561230
2063618
2072414
2084832
2093627
2102420
2111211
2124848
2133639
2142428
21551075
21661296
2171217
2183654
2191219
2204880
22161326
2223666
2232446
2244896
2253675
2264904
2273681
2284912
2293687
2304920
2313693
2324928
23361398
23451170
2353705
2362472
23771659
23892142
23951195
24071680
2412482
242102420
2434972
2444976
24581960
24661476
24871736
249133237
25041000
251112761
25261512
253102530
254102540
255102550
256164096
257133341
258184644
259143626
26051161330160
3061306
Total61181454543
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05116
11000
81
Total6117
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343736266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882db8d5defd865
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6462386435646566
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_13.json b/autobahn/client/tungstenite_case_13_5_13.json new file mode 100644 index 0000000..86b1554 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_13.json @@ -0,0 +1,750 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 476, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 2143, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=476&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pQB02t71Q+/T33PaOgwxEA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: CNBz3yJtxdlWYVIkFooMOyJ+uds=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1189": 1, + "1192": 1, + "1194": 1, + "1195": 2, + "1196": 1, + "1197": 4, + "1198": 1, + "1199": 2, + "1200": 4, + "1201": 2, + "1202": 1, + "1203": 3, + "1204": 3, + "1205": 5, + "1206": 3, + "1207": 1, + "1208": 3, + "1209": 4, + "1210": 1, + "1211": 3, + "1212": 3, + "1213": 4, + "1214": 3, + "1215": 2, + "1216": 5, + "1217": 5, + "1218": 6, + "1219": 6, + "1220": 3, + "1221": 6, + "1222": 2, + "1223": 3, + "1224": 3, + "1225": 5, + "1226": 4, + "1227": 1, + "1228": 3, + "1229": 6, + "1230": 8, + "1231": 3, + "1232": 5, + "1233": 6, + "1234": 4, + "1235": 7, + "1236": 6, + "1237": 9, + "1238": 12, + "1239": 4, + "1240": 3, + "1241": 2, + "1242": 4, + "1243": 6, + "1244": 6, + "1245": 3, + "1246": 3, + "1247": 3, + "1248": 7, + "1249": 6, + "1250": 1, + "1251": 2, + "1252": 2, + "1254": 1, + "1255": 4, + "1256": 1, + "1257": 1, + "1258": 2, + "1261": 1, + "1262": 1, + "1264": 2, + "1268": 4, + "1269": 2, + "1271": 2, + "1272": 1, + "1273": 3, + "1274": 1, + "1275": 2, + "1276": 2, + "1277": 1, + "1278": 1, + "1279": 1, + "1280": 1, + "1282": 1, + "1283": 2, + "1284": 1, + "1285": 1, + "1286": 1, + "1287": 1, + "1288": 1, + "1289": 1, + "1290": 1, + "1291": 3, + "1292": 2, + "1293": 3, + "1295": 3, + "1296": 1, + "1297": 1, + "1301": 3, + "1303": 4, + "1304": 1, + "1305": 2, + "1306": 1, + "1307": 3, + "1308": 4, + "1310": 3, + "1311": 3, + "1312": 5, + "1313": 3, + "1314": 1, + "1315": 5, + "1316": 1, + "1317": 1, + "1318": 3, + "1319": 4, + "1320": 1, + "1321": 2, + "1322": 1, + "1323": 1, + "1324": 4, + "1325": 1, + "1326": 3, + "1327": 6, + "1328": 5, + "1329": 3, + "1330": 4, + "1331": 4, + "1332": 3, + "1333": 1, + "1334": 5, + "1335": 5, + "1336": 2, + "1337": 2, + "1338": 1, + "1339": 6, + "1340": 6, + "1341": 8, + "1342": 4, + "1344": 5, + "1345": 2, + "1346": 4, + "1347": 7, + "1348": 7, + "1349": 4, + "1350": 3, + "1351": 4, + "1352": 4, + "1353": 5, + "1354": 2, + "1355": 8, + "1356": 2, + "1357": 3, + "1358": 5, + "1360": 4, + "1361": 5, + "1362": 3, + "1363": 3, + "1364": 1, + "1365": 4, + "1366": 2, + "1367": 4, + "1368": 2, + "1369": 3, + "1370": 3, + "1371": 3, + "1372": 1, + "1373": 6, + "1375": 3, + "1377": 1, + "1378": 2, + "1379": 4, + "1380": 3, + "1381": 4, + "1382": 2, + "1383": 2, + "1384": 2, + "1385": 1, + "1386": 1, + "1387": 2, + "1388": 3, + "1389": 2, + "1390": 1, + "1391": 1, + "1392": 2, + "1393": 1, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 3, + "1400": 3, + "1401": 1, + "1402": 2, + "1403": 1, + "1407": 1, + "1408": 3, + "1409": 5, + "1410": 3, + "1411": 4, + "1412": 2, + "1413": 8, + "1414": 4, + "1415": 1, + "1416": 8, + "1417": 4, + "1418": 5, + "1419": 5, + "1420": 4, + "1421": 2, + "1422": 4, + "1424": 2, + "1425": 2, + "1426": 3, + "1427": 3, + "1428": 2, + "1429": 4, + "1430": 3, + "1431": 2, + "1432": 2, + "1434": 3, + "1435": 5, + "1436": 4, + "1437": 2, + "1438": 1, + "1440": 2, + "1441": 2, + "1443": 2, + "1444": 1, + "1445": 1, + "1446": 1, + "1447": 3, + "1448": 1, + "1449": 1, + "1450": 1, + "1451": 2, + "1452": 1, + "1453": 4, + "1454": 2, + "1455": 3, + "1456": 3, + "1457": 3, + "1458": 5, + "1459": 5, + "1460": 5, + "1461": 4, + "1462": 5, + "1463": 5, + "1464": 4, + "1465": 7, + "1466": 11, + "1467": 4, + "1468": 1, + "1469": 11, + "1470": 5, + "1471": 4, + "1472": 3, + "1473": 2, + "1474": 4, + "1476": 3, + "1477": 8, + "1478": 2, + "1479": 2, + "1480": 3, + "1481": 1, + "1482": 2, + "1483": 2, + "1484": 2, + "1486": 1, + "1487": 2, + "1488": 4, + "1489": 1, + "1490": 2, + "1492": 1, + "1493": 1, + "1494": 3, + "1495": 4, + "1496": 4, + "1498": 2, + "1499": 3, + "1500": 5, + "1501": 1, + "1503": 3, + "1504": 2, + "1505": 1, + "1506": 1, + "1507": 3, + "1508": 1, + "1509": 4, + "1512": 5, + "1513": 2, + "1514": 1, + "1516": 2, + "1517": 2, + "1518": 3, + "1519": 1, + "1520": 2, + "1521": 3, + "1522": 1, + "1523": 1, + "1524": 1, + "1527": 2, + "1528": 2, + "1529": 1, + "1530": 1, + "1531": 4, + "1532": 1, + "1533": 1, + "1534": 1, + "1536": 1, + "1541": 4, + "1542": 2, + "1543": 1, + "1544": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 1, + "1550": 1, + "1551": 2, + "1552": 3, + "1572": 1, + "1574": 1, + "1578": 1, + "1579": 2, + "1580": 1, + "1581": 3, + "1582": 1, + "1585": 3, + "1587": 1, + "1589": 2, + "1590": 1, + "1591": 1, + "1593": 1, + "1595": 1, + "1597": 2, + "1599": 2, + "1600": 5, + "1601": 2, + "1602": 3, + "1603": 3, + "1604": 1, + "1605": 2, + "1606": 1, + "1608": 4, + "1609": 1, + "1612": 4, + "1613": 1, + "1614": 1, + "1615": 1, + "1617": 1, + "1620": 2, + "1621": 2, + "1622": 1, + "1623": 1, + "1625": 3, + "1626": 2, + "1628": 1, + "1629": 3, + "1630": 1, + "1631": 1, + "1632": 1, + "1633": 1, + "1636": 1, + "1638": 1 + }, + "started": "2025-09-11T20:13:44.675Z", + "trafficStats": { + "incomingCompressionRatio": 0.0417996826171875, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1369692, + "incomingOctetsWireLevel": 1377692, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.005840729156627913, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1454233, + "outgoingWebSocketFrames": 6116, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016331379969459034, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 5116, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 10, + "3": 11, + "4": 15, + "5": 8, + "6": 10, + "7": 6, + "8": 5, + "9": 11, + "10": 3, + "11": 5, + "12": 8, + "13": 10, + "14": 8, + "15": 10, + "16": 8, + "17": 8, + "18": 9, + "19": 11, + "20": 14, + "21": 11, + "22": 15, + "23": 8, + "24": 8, + "25": 6, + "26": 8, + "27": 8, + "28": 7, + "29": 8, + "30": 6, + "31": 5, + "32": 6, + "33": 5, + "34": 5, + "35": 5, + "36": 2, + "37": 5, + "38": 2, + "39": 5, + "40": 2, + "41": 1, + "42": 5, + "43": 4, + "44": 3, + "45": 6, + "46": 2, + "47": 2, + "48": 3, + "49": 4, + "50": 4, + "51": 3, + "52": 4, + "53": 2, + "54": 4, + "55": 2, + "57": 2, + "58": 3, + "59": 3, + "60": 1, + "61": 2, + "62": 2, + "63": 4, + "64": 2, + "65": 6, + "66": 2, + "67": 1, + "69": 6, + "70": 6, + "71": 2, + "73": 7, + "74": 4, + "75": 1, + "76": 2, + "77": 3, + "78": 3, + "79": 3, + "80": 5, + "81": 2, + "82": 1, + "83": 1, + "84": 2, + "85": 6, + "86": 3, + "87": 5, + "88": 7, + "89": 3, + "90": 3, + "91": 4, + "92": 4, + "94": 2, + "95": 1, + "96": 3, + "97": 1, + "98": 3, + "99": 5, + "100": 3, + "101": 2, + "102": 3, + "103": 6, + "104": 1, + "105": 4, + "106": 2, + "107": 2, + "108": 6, + "109": 4, + "110": 4, + "111": 1, + "112": 4, + "113": 4, + "114": 3, + "115": 4, + "116": 2, + "117": 2, + "119": 3, + "120": 3, + "121": 3, + "122": 3, + "123": 2, + "124": 2, + "126": 2, + "127": 2, + "130": 1, + "131": 2, + "132": 1, + "133": 6, + "134": 2, + "135": 1, + "136": 3, + "137": 4, + "138": 1, + "139": 1, + "140": 1, + "141": 4, + "142": 2, + "143": 2, + "144": 1, + "145": 2, + "146": 1, + "147": 4, + "149": 2, + "151": 2, + "152": 4, + "154": 1, + "155": 1, + "156": 3, + "157": 2, + "159": 4, + "160": 1, + "161": 2, + "162": 2, + "164": 1, + "166": 4, + "167": 2, + "168": 1, + "169": 2, + "170": 1, + "171": 2, + "172": 2, + "173": 2, + "174": 3, + "175": 2, + "176": 2, + "177": 2, + "179": 1, + "180": 2, + "181": 1, + "182": 1, + "183": 2, + "184": 1, + "185": 3, + "186": 2, + "187": 2, + "188": 2, + "189": 4, + "190": 4, + "191": 6, + "192": 3, + "193": 2, + "194": 2, + "195": 1, + "196": 2, + "197": 3, + "198": 3, + "199": 2, + "200": 2, + "201": 1, + "202": 1, + "203": 3, + "204": 4, + "205": 6, + "206": 3, + "207": 2, + "208": 4, + "209": 3, + "210": 2, + "211": 1, + "212": 4, + "213": 3, + "214": 2, + "215": 5, + "216": 6, + "217": 1, + "218": 3, + "219": 1, + "220": 4, + "221": 6, + "222": 3, + "223": 2, + "224": 4, + "225": 3, + "226": 4, + "227": 3, + "228": 4, + "229": 3, + "230": 4, + "231": 3, + "232": 4, + "233": 6, + "234": 5, + "235": 3, + "236": 2, + "237": 7, + "238": 9, + "239": 5, + "240": 7, + "241": 2, + "242": 10, + "243": 4, + "244": 4, + "245": 8, + "246": 6, + "248": 7, + "249": 13, + "250": 4, + "251": 11, + "252": 6, + "253": 10, + "254": 10, + "255": 10, + "256": 16, + "257": 13, + "258": 18, + "259": 14, + "260": 5116, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343736266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882db8d5defd865" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "db8d5def" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_14.html b/autobahn/client/tungstenite_case_13_5_14.html new file mode 100644 index 0000000..4e6d72b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_14.html @@ -0,0 +1,701 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.14 : Pass - 4595 ms @ 2025-09-11T20:13:46.820Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=477&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 3sOs+1h2Luoq6kqXTHt8fw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5fH9KTEYyLRkELKO5ndhFgGdEC4=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
244312443
244512445
244612446
244712447
244812448
244924898
245037350
245112451
245212452
245437362
245524910
245649824
245724914
245824916
245949836
246012460
246149844
246212462
246412464
246537395
2466922194
24671127137
2468922212
2469717283
2470717290
2471614826
2472717304
2473512365
247412474
247549900
247637428
2477614862
247824956
2479512395
2480614880
2481614886
2482717374
2483819864
2484819872
2485922365
2486819888
2487717409
2488717416
2489717423
24901024900
2491512455
24921229904
24931024930
2494922446
24951024950
2496819968
24971024970
2498512490
249949996
2500615000
25011332513
25021332526
2503922527
25041230048
25051127555
2506820048
2507512535
25081025080
25091127599
25101435140
2511820088
25121025120
2513717591
2514512570
2515512575
251612516
251737551
2518410072
251937557
252025040
252137563
252225044
252337569
252437572
2525410100
2527410108
252837584
252912529
253112531
253225064
253312533
253512535
2536512680
2537410148
253925078
254012540
254512545
254612546
254825096
255237656
255312553
2554410216
2555410220
255612556
255725114
2558615348
2559512795
2560820480
256137683
2562512810
2563923067
2564615384
25651230780
25661846188
25671025670
2568512840
256937707
257037710
2572410288
257325146
257437722
257537725
257612576
257712577
257825156
258325166
2586410344
258712587
258837764
258912589
259137773
259212592
259412594
259612596
259712597
259912599
260012600
260112601
260212602
260312603
260512605
260612606
260712607
260812608
260925218
261125222
261212612
261312613
261412614
261612616
261725234
261825236
2619513095
2621410484
262212622
262425248
2625513125
2626513130
262737881
2628615768
262925258
263225264
263312633
2634410536
263625272
263812638
264012640
264112641
264212642
264312643
2644513220
264525290
264625292
264712647
264812648
265012650
265112651
265212652
265412654
265812658
266112661
266225324
266437992
266537995
266612666
266738001
266825336
2669718683
2670821360
2671616026
267238016
2673821384
2674924066
267512675
267625352
267712677
2678410712
267938037
2680410720
268112681
2682616092
268325366
2684821472
268512685
268625372
268712687
268825376
2690718830
2691410764
269238076
2693410772
269425388
269525390
269625392
269912699
270212702
270425408
270512705
270612706
270812708
270925418
271025420
271125422
271212712
271312713
271625432
271812718
271912719
272012720
272125442
272225444
272312723
272425448
272512725
272612726
272725454
272812728
273012730
2731410924
273612736
273812738
273912739
274025480
274138223
274412744
274512745
274612746
275012750
275212752
275725514
275812758
276012760
276112761
276212762
276412764
2768411072
276912769
277038310
277138313
277612776
277912779
278112781
278238346
278312783
278412784
2785513925
278712787
2788411152
278938367
2790513950
2791513955
2792925128
27931439102
2794822352
2795616770
2796925164
2797719579
2798719586
2799616794
280025600
280112801
280212802
280325606
280525610
280912809
281112811
Total10022585814
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21734
32163
428112
525125
622132
726182
820160
934306
1020200
1114154
12896
139117
1417238
1516240
1617272
1716272
1810180
199171
205100
21363
22122
23369
24496
25250
28256
29129
31131
32132
33266
35135
36136
37274
393117
414164
42142
444176
453135
46292
48296
49149
50150
51151
52152
54154
60160
61161
642128
65165
66166
67167
682136
69169
702140
74174
77177
79179
813243
822164
832166
845420
858680
865430
877609
884352
898712
902180
913273
923276
935465
9410940
95111045
96161536
9710970
98111078
996594
100191900
101121212
1026612
1039927
104121248
105121260
106121272
1079963
1087756
1099981
1107770
1116666
1124448
1134452
1142228
1153345
1161116
1176702
118111298
1198952
120131560
121101210
12291098
1235615
1242248
1253375
1411141
2412482
2421242
2432486
24451220
2454980
24661476
24751235
24861488
249122988
250174250
251225522
252266552
253287084
254174318
255358925
256194864
257317967
258205160
259235957
260107192786940
3061306
Total117212897843
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
010719
11000
81
Total11720
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343737266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882146a7fe61782
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3134366137666536
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_14.json b/autobahn/client/tungstenite_case_13_5_14.json new file mode 100644 index 0000000..99a204b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_14.json @@ -0,0 +1,548 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 477, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 4595, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=477&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 3sOs+1h2Luoq6kqXTHt8fw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5fH9KTEYyLRkELKO5ndhFgGdEC4=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2443": 1, + "2445": 1, + "2446": 1, + "2447": 1, + "2448": 1, + "2449": 2, + "2450": 3, + "2451": 1, + "2452": 1, + "2454": 3, + "2455": 2, + "2456": 4, + "2457": 2, + "2458": 2, + "2459": 4, + "2460": 1, + "2461": 4, + "2462": 1, + "2464": 1, + "2465": 3, + "2466": 9, + "2467": 11, + "2468": 9, + "2469": 7, + "2470": 7, + "2471": 6, + "2472": 7, + "2473": 5, + "2474": 1, + "2475": 4, + "2476": 3, + "2477": 6, + "2478": 2, + "2479": 5, + "2480": 6, + "2481": 6, + "2482": 7, + "2483": 8, + "2484": 8, + "2485": 9, + "2486": 8, + "2487": 7, + "2488": 7, + "2489": 7, + "2490": 10, + "2491": 5, + "2492": 12, + "2493": 10, + "2494": 9, + "2495": 10, + "2496": 8, + "2497": 10, + "2498": 5, + "2499": 4, + "2500": 6, + "2501": 13, + "2502": 13, + "2503": 9, + "2504": 12, + "2505": 11, + "2506": 8, + "2507": 5, + "2508": 10, + "2509": 11, + "2510": 14, + "2511": 8, + "2512": 10, + "2513": 7, + "2514": 5, + "2515": 5, + "2516": 1, + "2517": 3, + "2518": 4, + "2519": 3, + "2520": 2, + "2521": 3, + "2522": 2, + "2523": 3, + "2524": 3, + "2525": 4, + "2527": 4, + "2528": 3, + "2529": 1, + "2531": 1, + "2532": 2, + "2533": 1, + "2535": 1, + "2536": 5, + "2537": 4, + "2539": 2, + "2540": 1, + "2545": 1, + "2546": 1, + "2548": 2, + "2552": 3, + "2553": 1, + "2554": 4, + "2555": 4, + "2556": 1, + "2557": 2, + "2558": 6, + "2559": 5, + "2560": 8, + "2561": 3, + "2562": 5, + "2563": 9, + "2564": 6, + "2565": 12, + "2566": 18, + "2567": 10, + "2568": 5, + "2569": 3, + "2570": 3, + "2572": 4, + "2573": 2, + "2574": 3, + "2575": 3, + "2576": 1, + "2577": 1, + "2578": 2, + "2583": 2, + "2586": 4, + "2587": 1, + "2588": 3, + "2589": 1, + "2591": 3, + "2592": 1, + "2594": 1, + "2596": 1, + "2597": 1, + "2599": 1, + "2600": 1, + "2601": 1, + "2602": 1, + "2603": 1, + "2605": 1, + "2606": 1, + "2607": 1, + "2608": 1, + "2609": 2, + "2611": 2, + "2612": 1, + "2613": 1, + "2614": 1, + "2616": 1, + "2617": 2, + "2618": 2, + "2619": 5, + "2621": 4, + "2622": 1, + "2624": 2, + "2625": 5, + "2626": 5, + "2627": 3, + "2628": 6, + "2629": 2, + "2632": 2, + "2633": 1, + "2634": 4, + "2636": 2, + "2638": 1, + "2640": 1, + "2641": 1, + "2642": 1, + "2643": 1, + "2644": 5, + "2645": 2, + "2646": 2, + "2647": 1, + "2648": 1, + "2650": 1, + "2651": 1, + "2652": 1, + "2654": 1, + "2658": 1, + "2661": 1, + "2662": 2, + "2664": 3, + "2665": 3, + "2666": 1, + "2667": 3, + "2668": 2, + "2669": 7, + "2670": 8, + "2671": 6, + "2672": 3, + "2673": 8, + "2674": 9, + "2675": 1, + "2676": 2, + "2677": 1, + "2678": 4, + "2679": 3, + "2680": 4, + "2681": 1, + "2682": 6, + "2683": 2, + "2684": 8, + "2685": 1, + "2686": 2, + "2687": 1, + "2688": 2, + "2690": 7, + "2691": 4, + "2692": 3, + "2693": 4, + "2694": 2, + "2695": 2, + "2696": 2, + "2699": 1, + "2702": 1, + "2704": 2, + "2705": 1, + "2706": 1, + "2708": 1, + "2709": 2, + "2710": 2, + "2711": 2, + "2712": 1, + "2713": 1, + "2716": 2, + "2718": 1, + "2719": 1, + "2720": 1, + "2721": 2, + "2722": 2, + "2723": 1, + "2724": 2, + "2725": 1, + "2726": 1, + "2727": 2, + "2728": 1, + "2730": 1, + "2731": 4, + "2736": 1, + "2738": 1, + "2739": 1, + "2740": 2, + "2741": 3, + "2744": 1, + "2745": 1, + "2746": 1, + "2750": 1, + "2752": 1, + "2757": 2, + "2758": 1, + "2760": 1, + "2761": 1, + "2762": 1, + "2764": 1, + "2768": 4, + "2769": 1, + "2770": 3, + "2771": 3, + "2776": 1, + "2779": 1, + "2781": 1, + "2782": 3, + "2783": 1, + "2784": 1, + "2785": 5, + "2787": 1, + "2788": 4, + "2789": 3, + "2790": 5, + "2791": 5, + "2792": 9, + "2793": 14, + "2794": 8, + "2795": 6, + "2796": 9, + "2797": 7, + "2798": 7, + "2799": 6, + "2800": 2, + "2801": 1, + "2802": 1, + "2803": 2, + "2805": 2, + "2809": 1, + "2811": 1 + }, + "started": "2025-09-11T20:13:46.820Z", + "trafficStats": { + "incomingCompressionRatio": 0.03933027648925781, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2577549, + "incomingOctetsWireLevel": 2585549, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0031037237313432256, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2897533, + "outgoingWebSocketFrames": 11719, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015932159294945854, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 10719, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 17, + "3": 21, + "4": 28, + "5": 25, + "6": 22, + "7": 26, + "8": 20, + "9": 34, + "10": 20, + "11": 14, + "12": 8, + "13": 9, + "14": 17, + "15": 16, + "16": 17, + "17": 16, + "18": 10, + "19": 9, + "20": 5, + "21": 3, + "22": 1, + "23": 3, + "24": 4, + "25": 2, + "28": 2, + "29": 1, + "31": 1, + "32": 1, + "33": 2, + "35": 1, + "36": 1, + "37": 2, + "39": 3, + "41": 4, + "42": 1, + "44": 4, + "45": 3, + "46": 2, + "48": 2, + "49": 1, + "50": 1, + "51": 1, + "52": 1, + "54": 1, + "60": 1, + "61": 1, + "64": 2, + "65": 1, + "66": 1, + "67": 1, + "68": 2, + "69": 1, + "70": 2, + "74": 1, + "77": 1, + "79": 1, + "81": 3, + "82": 2, + "83": 2, + "84": 5, + "85": 8, + "86": 5, + "87": 7, + "88": 4, + "89": 8, + "90": 2, + "91": 3, + "92": 3, + "93": 5, + "94": 10, + "95": 11, + "96": 16, + "97": 10, + "98": 11, + "99": 6, + "100": 19, + "101": 12, + "102": 6, + "103": 9, + "104": 12, + "105": 12, + "106": 12, + "107": 9, + "108": 7, + "109": 9, + "110": 7, + "111": 6, + "112": 4, + "113": 4, + "114": 2, + "115": 3, + "116": 1, + "117": 6, + "118": 11, + "119": 8, + "120": 13, + "121": 10, + "122": 9, + "123": 5, + "124": 2, + "125": 3, + "141": 1, + "241": 2, + "242": 1, + "243": 2, + "244": 5, + "245": 4, + "246": 6, + "247": 5, + "248": 6, + "249": 12, + "250": 17, + "251": 22, + "252": 26, + "253": 28, + "254": 17, + "255": 35, + "256": 19, + "257": 31, + "258": 20, + "259": 23, + "260": 10719, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343737266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882146a7fe61782" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "146a7fe6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_15.html b/autobahn/client/tungstenite_case_13_5_15.html new file mode 100644 index 0000000..8d8803f --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_15.html @@ -0,0 +1,736 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.15 : Pass - 7443 ms @ 2025-09-11T20:13:51.417Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=478&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 2zpfKk38TuHfHVav3+OIVw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 6C8s3vqdN9uYWnvmFN6arpcjAmc=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
326
4416
515
6212
7214
818
9218
10110
11333
12112
13339
14684
15230
16232
17234
23123
30130
31262
33133
34134
36136
37274
393117
40140
41141
42284
433129
449396
455225
463138
4710470
4810480
4915735
50201000
5114714
5216832
5314742
54211134
55261430
5617952
5711627
58251450
59211239
60241440
6116976
62251550
63241512
64241536
6512780
66171122
67191273
6813884
699621
70251750
71251775
72161152
7312876
7411814
758600
7610760
77131001
784312
796474
803240
81181
822164
832166
845420
853255
863258
875435
884352
89121068
9010900
917637
92111012
939837
942188
953285
972194
983294
99199
1121112
1131113
1141114
1163348
1172234
1191119
1271127
1302260
1992398
2001200
2011201
2021202
2032406
20451020
20571435
20651030
2074828
2081208
20961254
21081680
21161266
2124848
213112343
21481712
21571505
21661296
21761302
2184872
2194876
22051100
22151105
22271554
223173791
224163584
225143150
226132938
22761362
22861368
229102290
230163680
231133003
23292088
23361398
23461404
23561410
2362472
2374948
23851190
2394956
24061440
2413723
2432486
2442488
2462492
2481248
2491249
2513753
2533759
2542508
2561256
2582516
2591259
260217025642520
3061306
Total227045753816
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
021702
11000
81
Total22703
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343738266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888230be6a983356
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3330626536613938
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_15.json b/autobahn/client/tungstenite_case_13_5_15.json new file mode 100644 index 0000000..f51915e --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_15.json @@ -0,0 +1,583 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 478, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 7443, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=478&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 2zpfKk38TuHfHVav3+OIVw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 6C8s3vqdN9uYWnvmFN6arpcjAmc=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:13:51.417Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5753506, + "outgoingWebSocketFrames": 22702, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01578503761764009, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 21702, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 2, + "4": 4, + "5": 1, + "6": 2, + "7": 2, + "8": 1, + "9": 2, + "10": 1, + "11": 3, + "12": 1, + "13": 3, + "14": 6, + "15": 2, + "16": 2, + "17": 2, + "23": 1, + "30": 1, + "31": 2, + "33": 1, + "34": 1, + "36": 1, + "37": 2, + "39": 3, + "40": 1, + "41": 1, + "42": 2, + "43": 3, + "44": 9, + "45": 5, + "46": 3, + "47": 10, + "48": 10, + "49": 15, + "50": 20, + "51": 14, + "52": 16, + "53": 14, + "54": 21, + "55": 26, + "56": 17, + "57": 11, + "58": 25, + "59": 21, + "60": 24, + "61": 16, + "62": 25, + "63": 24, + "64": 24, + "65": 12, + "66": 17, + "67": 19, + "68": 13, + "69": 9, + "70": 25, + "71": 25, + "72": 16, + "73": 12, + "74": 11, + "75": 8, + "76": 10, + "77": 13, + "78": 4, + "79": 6, + "80": 3, + "81": 1, + "82": 2, + "83": 2, + "84": 5, + "85": 3, + "86": 3, + "87": 5, + "88": 4, + "89": 12, + "90": 10, + "91": 7, + "92": 11, + "93": 9, + "94": 2, + "95": 3, + "97": 2, + "98": 3, + "99": 1, + "112": 1, + "113": 1, + "114": 1, + "116": 3, + "117": 2, + "119": 1, + "127": 1, + "130": 2, + "199": 2, + "200": 1, + "201": 1, + "202": 1, + "203": 2, + "204": 5, + "205": 7, + "206": 5, + "207": 4, + "208": 1, + "209": 6, + "210": 8, + "211": 6, + "212": 4, + "213": 11, + "214": 8, + "215": 7, + "216": 6, + "217": 6, + "218": 4, + "219": 4, + "220": 5, + "221": 5, + "222": 7, + "223": 17, + "224": 16, + "225": 14, + "226": 13, + "227": 6, + "228": 6, + "229": 10, + "230": 16, + "231": 13, + "232": 9, + "233": 6, + "234": 6, + "235": 6, + "236": 2, + "237": 4, + "238": 5, + "239": 4, + "240": 6, + "241": 3, + "243": 2, + "244": 2, + "246": 2, + "248": 1, + "249": 1, + "251": 3, + "253": 3, + "254": 2, + "256": 1, + "258": 2, + "259": 1, + "260": 21702, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343738266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888230be6a983356" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "30be6a98" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_16.html b/autobahn/client/tungstenite_case_13_5_16.html new file mode 100644 index 0000000..8dc2a76 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_16.html @@ -0,0 +1,737 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.16 : Pass - 6203 ms @ 2025-09-11T20:13:58.862Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=479&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: AkvDUFJfCeFdYH+q1wAcCQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: CWVFEkQOVAPUO77xajH7HVk7QBA=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
4552910
4561456
4571457
4581458
4592918
46052300
46173227
46252310
46341852
4641464
46562790
46683728
46762802
46841872
469115159
47083760
47173297
47262832
47362838
47441896
47541900
47652380
47752385
47873346
479178143
480167680
481146734
482136266
48362898
48462904
485104850
486167776
487136331
48894392
48962934
49062940
49162946
4922984
49341972
49452470
49541980
49662976
49731491
4992998
50021000
50221004
5041504
5051505
50731521
50931527
51021020
5121512
51421028
5151515
51721034
51831554
5191519
52021040
52121042
5221522
52321046
5241524
52531575
5261526
52731581
52863168
52921058
53021060
53121062
5371537
5441544
54521090
5471547
5481548
5501550
55121102
55331659
5541554
5551555
55621112
55731671
55895022
55952795
56031680
561105610
562105620
563158445
5642011280
565147910
566169056
567147938
5682111928
5692614794
570179690
571116281
5722514300
5732112033
5742413776
575169200
5762514400
5772413848
5782413872
579126948
580179860
5811911039
582137566
58395247
5842514600
5852514625
586169376
587127044
588116468
58984712
590105900
591137683
59242368
59363558
59431782
5951595
59621192
59721194
59852990
59931797
60031800
60153005
60242408
603127236
604106040
60574235
606116666
60795463
60821216
60931827
61121222
61231836
6131613
6261626
6271627
6281628
63031890
63121262
6331633
6411641
64221284
102850005140000
Total60025688408
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05000
11000
81
Total6001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343739266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888290d6dace933e
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3930643664616365
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_16.json b/autobahn/client/tungstenite_case_13_5_16.json new file mode 100644 index 0000000..3f9dc4a --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_16.json @@ -0,0 +1,584 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 479, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 6203, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=479&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: AkvDUFJfCeFdYH+q1wAcCQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: CWVFEkQOVAPUO77xajH7HVk7QBA=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:13:58.862Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5688098, + "outgoingWebSocketFrames": 6000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0042372148222011696, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 5000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "455": 2, + "456": 1, + "457": 1, + "458": 1, + "459": 2, + "460": 5, + "461": 7, + "462": 5, + "463": 4, + "464": 1, + "465": 6, + "466": 8, + "467": 6, + "468": 4, + "469": 11, + "470": 8, + "471": 7, + "472": 6, + "473": 6, + "474": 4, + "475": 4, + "476": 5, + "477": 5, + "478": 7, + "479": 17, + "480": 16, + "481": 14, + "482": 13, + "483": 6, + "484": 6, + "485": 10, + "486": 16, + "487": 13, + "488": 9, + "489": 6, + "490": 6, + "491": 6, + "492": 2, + "493": 4, + "494": 5, + "495": 4, + "496": 6, + "497": 3, + "499": 2, + "500": 2, + "502": 2, + "504": 1, + "505": 1, + "507": 3, + "509": 3, + "510": 2, + "512": 1, + "514": 2, + "515": 1, + "517": 2, + "518": 3, + "519": 1, + "520": 2, + "521": 2, + "522": 1, + "523": 2, + "524": 1, + "525": 3, + "526": 1, + "527": 3, + "528": 6, + "529": 2, + "530": 2, + "531": 2, + "537": 1, + "544": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "551": 2, + "553": 3, + "554": 1, + "555": 1, + "556": 2, + "557": 3, + "558": 9, + "559": 5, + "560": 3, + "561": 10, + "562": 10, + "563": 15, + "564": 20, + "565": 14, + "566": 16, + "567": 14, + "568": 21, + "569": 26, + "570": 17, + "571": 11, + "572": 25, + "573": 21, + "574": 24, + "575": 16, + "576": 25, + "577": 24, + "578": 24, + "579": 12, + "580": 17, + "581": 19, + "582": 13, + "583": 9, + "584": 25, + "585": 25, + "586": 16, + "587": 12, + "588": 11, + "589": 8, + "590": 10, + "591": 13, + "592": 4, + "593": 6, + "594": 3, + "595": 1, + "596": 2, + "597": 2, + "598": 5, + "599": 3, + "600": 3, + "601": 5, + "602": 4, + "603": 12, + "604": 10, + "605": 7, + "606": 11, + "607": 9, + "608": 2, + "609": 3, + "611": 2, + "612": 3, + "613": 1, + "626": 1, + "627": 1, + "628": 1, + "630": 3, + "631": 2, + "633": 1, + "641": 1, + "642": 2, + "1028": 5000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343739266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888290d6dace933e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "90d6dace" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_17.html b/autobahn/client/tungstenite_case_13_5_17.html new file mode 100644 index 0000000..4b12449 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_17.html @@ -0,0 +1,737 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.17 : Pass - 6721 ms @ 2025-09-11T20:14:05.066Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=480&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: wn76ErVYwo/fAQf7nduZRQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UKBr7lk2hccibnaqEJ2kDpqZVcU=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
147922958
148011480
148111481
148211482
148322966
148457420
1485710395
148657430
148745948
148811488
148968934
1490811920
149168946
149245968
14931116423
1494811952
1495710465
149668976
149768982
149845992
149945996
150057500
150157505
1502710514
15031725551
15041624064
15051421070
15061319578
150769042
150869048
15091015090
15101624160
15111319643
1512913608
151369078
151469084
151569090
151623032
151746068
151857590
151946076
152069120
152134563
152323046
152423048
152623052
152811528
152911529
153134593
153334599
153423068
153611536
153823076
153911539
154123082
154234626
154311543
154423088
154523090
154611546
154723094
154811548
154934647
155011550
155134653
155269312
155323106
155423108
155523110
156111561
156811568
156923138
157111571
157211572
157411574
157523150
157734731
157811578
157911579
158023160
158134743
1582914238
158357915
158434752
15851015850
15861015860
15871523805
15882031760
15891422246
15901625440
15911422274
15922133432
15932641418
15941727098
15951117545
15962539900
15972133537
15982438352
15991625584
16002540000
16012438424
16022438448
16031219236
16041727268
16051930495
16061320878
1607914463
16082540200
16092540225
16101625760
16111219332
16121117732
1613812904
16141016140
16151320995
161646464
161769702
161834854
161911619
162023240
162123242
162258110
162334869
162434872
162558125
162646504
16271219524
16281016280
1629711403
16301117930
1631914679
163223264
163334899
163523270
163634908
163711637
165011650
165111651
165211652
165434962
165523310
165711657
166511665
166623332
410010004100000
Total20025672408
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343830266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820a4ee59109a6
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3061346565353931
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_17.json b/autobahn/client/tungstenite_case_13_5_17.json new file mode 100644 index 0000000..977746f --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_17.json @@ -0,0 +1,584 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 480, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 6721, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=480&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: wn76ErVYwo/fAQf7nduZRQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UKBr7lk2hccibnaqEJ2kDpqZVcU=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:14:05.066Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5672098, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014124049407337233, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "1479": 2, + "1480": 1, + "1481": 1, + "1482": 1, + "1483": 2, + "1484": 5, + "1485": 7, + "1486": 5, + "1487": 4, + "1488": 1, + "1489": 6, + "1490": 8, + "1491": 6, + "1492": 4, + "1493": 11, + "1494": 8, + "1495": 7, + "1496": 6, + "1497": 6, + "1498": 4, + "1499": 4, + "1500": 5, + "1501": 5, + "1502": 7, + "1503": 17, + "1504": 16, + "1505": 14, + "1506": 13, + "1507": 6, + "1508": 6, + "1509": 10, + "1510": 16, + "1511": 13, + "1512": 9, + "1513": 6, + "1514": 6, + "1515": 6, + "1516": 2, + "1517": 4, + "1518": 5, + "1519": 4, + "1520": 6, + "1521": 3, + "1523": 2, + "1524": 2, + "1526": 2, + "1528": 1, + "1529": 1, + "1531": 3, + "1533": 3, + "1534": 2, + "1536": 1, + "1538": 2, + "1539": 1, + "1541": 2, + "1542": 3, + "1543": 1, + "1544": 2, + "1545": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 3, + "1550": 1, + "1551": 3, + "1552": 6, + "1553": 2, + "1554": 2, + "1555": 2, + "1561": 1, + "1568": 1, + "1569": 2, + "1571": 1, + "1572": 1, + "1574": 1, + "1575": 2, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 3, + "1582": 9, + "1583": 5, + "1584": 3, + "1585": 10, + "1586": 10, + "1587": 15, + "1588": 20, + "1589": 14, + "1590": 16, + "1591": 14, + "1592": 21, + "1593": 26, + "1594": 17, + "1595": 11, + "1596": 25, + "1597": 21, + "1598": 24, + "1599": 16, + "1600": 25, + "1601": 24, + "1602": 24, + "1603": 12, + "1604": 17, + "1605": 19, + "1606": 13, + "1607": 9, + "1608": 25, + "1609": 25, + "1610": 16, + "1611": 12, + "1612": 11, + "1613": 8, + "1614": 10, + "1615": 13, + "1616": 4, + "1617": 6, + "1618": 3, + "1619": 1, + "1620": 2, + "1621": 2, + "1622": 5, + "1623": 3, + "1624": 3, + "1625": 5, + "1626": 4, + "1627": 12, + "1628": 10, + "1629": 7, + "1630": 11, + "1631": 9, + "1632": 2, + "1633": 3, + "1635": 2, + "1636": 3, + "1637": 1, + "1650": 1, + "1651": 1, + "1652": 1, + "1654": 3, + "1655": 2, + "1657": 1, + "1665": 1, + "1666": 2, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343830266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820a4ee59109a6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0a4ee591" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_18.html b/autobahn/client/tungstenite_case_13_5_18.html new file mode 100644 index 0000000..52ac4e9 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_18.html @@ -0,0 +1,735 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.18 : Pass - 7174 ms @ 2025-09-11T20:14:11.789Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=481&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pP7QUy0kQn6uWO2bFlKO1g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dfTgVbGUWhwXpvrIsJ3GzM5kZ58=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668408
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343831266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888206a3c551054b
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3036613363353531
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_18.json b/autobahn/client/tungstenite_case_13_5_18.json new file mode 100644 index 0000000..a864629 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_18.json @@ -0,0 +1,582 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 481, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 7174, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=481&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pP7QUy0kQn6uWO2bFlKO1g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dfTgVbGUWhwXpvrIsJ3GzM5kZ58=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:14:11.789Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343831266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888206a3c551054b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "06a3c551" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_2.html b/autobahn/client/tungstenite_case_13_5_2.html new file mode 100644 index 0000000..eff02c5 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_2.html @@ -0,0 +1,342 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.2 : Pass - 180 ms @ 2025-09-11T20:13:24.602Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=465&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: DwAKiVucOvBzO+0UVKhD6g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2Xh7nub1iuZ26tF1m81ccKKsohY=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
395195
408320
41311271
42351470
4311473
4415660
4517765
4620920
47221034
48562688
49542646
5016800
51502550
52763952
53834399
54844536
55613355
56402240
57211197
5811638
5916944
6011660
61301830
62895518
63684284
64362304
6514910
6615990
675335
2571257
Total100254149
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
74413087
81080
91431287
101741740
1136396
1268816
13781014
1428392
1516240
19119
24124
32132
37137
38138
51151
3061306
Total10029563
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343635266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882943278bb97da
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3934333237386262
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_2.json b/autobahn/client/tungstenite_case_13_5_2.json new file mode 100644 index 0000000..a2b58c5 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_2.json @@ -0,0 +1,189 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 465, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 180, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=465&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: DwAKiVucOvBzO+0UVKhD6g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2Xh7nub1iuZ26tF1m81ccKKsohY=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "39": 5, + "40": 8, + "41": 31, + "42": 35, + "43": 11, + "44": 15, + "45": 17, + "46": 20, + "47": 22, + "48": 56, + "49": 54, + "50": 16, + "51": 50, + "52": 76, + "53": 83, + "54": 84, + "55": 61, + "56": 40, + "57": 21, + "58": 11, + "59": 16, + "60": 11, + "61": 30, + "62": 89, + "63": 68, + "64": 36, + "65": 14, + "66": 15, + "67": 5, + "257": 1 + }, + "started": "2025-09-11T20:13:24.602Z", + "trafficStats": { + "incomingCompressionRatio": 0.7481875, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 47884, + "incomingOctetsWireLevel": 53884, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.12530281513658006, + "outgoingCompressionRatio": 0.113328125, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 7253, + "outgoingOctetsWireLevel": 9253, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.2757479663587481, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 441, + "8": 10, + "9": 143, + "10": 174, + "11": 36, + "12": 68, + "13": 78, + "14": 28, + "15": 16, + "19": 1, + "24": 1, + "32": 1, + "37": 1, + "38": 1, + "51": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343635266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882943278bb97da" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "943278bb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_3.html b/autobahn/client/tungstenite_case_13_5_3.html new file mode 100644 index 0000000..291b89d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_3.html @@ -0,0 +1,361 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.3 : Pass - 168 ms @ 2025-09-11T20:13:24.784Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=466&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: FPlwdT105mN+E7XULHC4RQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Kpa9rDqpTQ0hwuXHrQSwvx+Bcfo=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1271127
1282256
130131690
131101310
134212814
135283780
136364896
137699453
1388111178
13911015290
14010214280
1418812408
1429813916
1438211726
144699936
145628990
146304380
147253675
148162368
149121788
1504600
1515755
1524608
1534612
1544616
1552310
1566936
1573471
1584632
1592318
1602320
1612322
1623486
2571257
Total1002141512
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1342546
1470980
1542630
161382208
171051785
18991782
191252375
20721440
21761596
22541188
23531219
2438912
2529725
2622572
2710270
284112
295145
30130
31262
32132
33266
34134
36136
37137
39139
41282
43143
61161
66166
1471147
3061306
Total100219530
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343636266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882283c7c442bd4
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3238336337633434
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_3.json b/autobahn/client/tungstenite_case_13_5_3.json new file mode 100644 index 0000000..ea18a60 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_3.json @@ -0,0 +1,208 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 466, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 168, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=466&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: FPlwdT105mN+E7XULHC4RQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Kpa9rDqpTQ0hwuXHrQSwvx+Bcfo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "127": 1, + "128": 2, + "130": 13, + "131": 10, + "134": 21, + "135": 28, + "136": 36, + "137": 69, + "138": 81, + "139": 110, + "140": 102, + "141": 88, + "142": 98, + "143": 82, + "144": 69, + "145": 62, + "146": 30, + "147": 25, + "148": 16, + "149": 12, + "150": 4, + "151": 5, + "152": 4, + "153": 4, + "154": 4, + "155": 2, + "156": 6, + "157": 3, + "158": 4, + "159": 2, + "160": 2, + "161": 2, + "162": 3, + "257": 1 + }, + "started": "2025-09-11T20:13:24.784Z", + "trafficStats": { + "incomingCompressionRatio": 0.52069921875, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 133299, + "incomingOctetsWireLevel": 141247, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0596253535285336, + "outgoingCompressionRatio": 0.0672578125, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 17218, + "outgoingOctetsWireLevel": 19220, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11627366709257754, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 42, + "14": 70, + "15": 42, + "16": 138, + "17": 105, + "18": 99, + "19": 125, + "20": 72, + "21": 76, + "22": 54, + "23": 53, + "24": 38, + "25": 29, + "26": 22, + "27": 10, + "28": 4, + "29": 5, + "30": 1, + "31": 2, + "32": 1, + "33": 2, + "34": 1, + "36": 1, + "37": 1, + "39": 1, + "41": 2, + "43": 1, + "61": 1, + "66": 1, + "147": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343636266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882283c7c442bd4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "283c7c44" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_4.html b/autobahn/client/tungstenite_case_13_5_4.html new file mode 100644 index 0000000..ee7ab46 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_4.html @@ -0,0 +1,423 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.4 : Pass - 294 ms @ 2025-09-11T20:13:24.954Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=467&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: SI4nHADRzNCWVpTpC5LrBQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: O2TJv3M4e/HAqFCcmQeV8oPzH34=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1631163
1641164
1652330
1666996
1673501
1684672
16991521
170152550
171193249
172244128
173396747
174468004
175508750
176569856
1776210974
178519078
1796411456
180498820
181498869
182468372
183285124
184448096
185356475
186397254
187366732
188387144
189295481
190264940
191112101
192183456
19391737
194112134
19581560
1965980
1975985
1984792
19971393
20051000
2013603
2022404
2032406
2043612
2051205
2063618
2071207
2084832
2102420
2111211
2122424
2131213
2141214
2152430
2172434
2204880
2222444
2232446
2242448
2252450
2261226
2272454
2301230
2571257
Total1002182660
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
39139
40140
414164
445220
45145
464184
479423
48221056
49331617
50321600
51391989
52683536
53482544
54633402
55603300
56673752
57663762
58271566
59492891
60291740
61181098
6216992
63311953
64181152
65161040
668528
67191273
68211428
69161104
70292030
71181278
72282016
73312263
7410740
7511825
76181368
7710770
788624
794316
803240
82182
832166
843252
863258
87187
88188
893267
912182
922184
944376
96196
97197
992198
1001100
1011101
1041104
1052210
1061106
1071107
1081108
1092218
1101110
1141114
1701170
3061306
Total100260999
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343637266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882e23bc978e1d3
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6532336263393738
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_4.json b/autobahn/client/tungstenite_case_13_5_4.json new file mode 100644 index 0000000..b59e042 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_4.json @@ -0,0 +1,270 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 467, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 294, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=467&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: SI4nHADRzNCWVpTpC5LrBQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: O2TJv3M4e/HAqFCcmQeV8oPzH34=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "163": 1, + "164": 1, + "165": 2, + "166": 6, + "167": 3, + "168": 4, + "169": 9, + "170": 15, + "171": 19, + "172": 24, + "173": 39, + "174": 46, + "175": 50, + "176": 56, + "177": 62, + "178": 51, + "179": 64, + "180": 49, + "181": 49, + "182": 46, + "183": 28, + "184": 44, + "185": 35, + "186": 39, + "187": 36, + "188": 38, + "189": 29, + "190": 26, + "191": 11, + "192": 18, + "193": 9, + "194": 11, + "195": 8, + "196": 5, + "197": 5, + "198": 4, + "199": 7, + "200": 5, + "201": 3, + "202": 2, + "203": 2, + "204": 3, + "205": 1, + "206": 3, + "207": 1, + "208": 4, + "210": 2, + "211": 1, + "212": 2, + "213": 1, + "214": 1, + "215": 2, + "217": 2, + "220": 4, + "222": 2, + "223": 2, + "224": 2, + "225": 2, + "226": 1, + "227": 2, + "230": 1, + "257": 1 + }, + "started": "2025-09-11T20:13:24.954Z", + "trafficStats": { + "incomingCompressionRatio": 0.1703076171875, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 174395, + "incomingOctetsWireLevel": 182395, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.04587287479572236, + "outgoingCompressionRatio": 0.0573115234375, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 58687, + "outgoingOctetsWireLevel": 60689, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.034113176683081434, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "39": 1, + "40": 1, + "41": 4, + "44": 5, + "45": 1, + "46": 4, + "47": 9, + "48": 22, + "49": 33, + "50": 32, + "51": 39, + "52": 68, + "53": 48, + "54": 63, + "55": 60, + "56": 67, + "57": 66, + "58": 27, + "59": 49, + "60": 29, + "61": 18, + "62": 16, + "63": 31, + "64": 18, + "65": 16, + "66": 8, + "67": 19, + "68": 21, + "69": 16, + "70": 29, + "71": 18, + "72": 28, + "73": 31, + "74": 10, + "75": 11, + "76": 18, + "77": 10, + "78": 8, + "79": 4, + "80": 3, + "82": 1, + "83": 2, + "84": 3, + "86": 3, + "87": 1, + "88": 1, + "89": 3, + "91": 2, + "92": 2, + "94": 4, + "96": 1, + "97": 1, + "99": 2, + "100": 1, + "101": 1, + "104": 1, + "105": 2, + "106": 1, + "107": 1, + "108": 1, + "109": 2, + "110": 1, + "114": 1, + "170": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343637266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e23bc978e1d3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e23bc978" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_5.html b/autobahn/client/tungstenite_case_13_5_5.html new file mode 100644 index 0000000..5ff70da --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_5.html @@ -0,0 +1,535 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.5 : Pass - 503 ms @ 2025-09-11T20:13:25.250Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=468&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: uhkOGSH1vPPeLfQNkia9hQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /QbNnhY/oJJe4S2clHlj1lKyfYU=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
2621262
2632526
2641264
2652530
2661266
2671267
2682536
26941076
27082160
27182168
2723816
27382184
27451370
27571925
276143864
27761662
27871946
279195301
280215880
281215901
282287896
283226226
284164544
285205700
286185148
287164592
288123456
289123468
290113190
291164656
292102920
29392637
294154410
29592655
296133848
29792673
298144172
299144186
300185400
301133913
302154530
303133939
304133952
305164880
306103060
307123684
30882464
309113399
310103100
311154665
312185616
313154695
314123768
315185670
316226952
317165072
318154770
319144466
320237360
321144494
322123864
323134199
324134212
325175525
32692934
32772289
32851640
3293987
33092970
33192979
33261992
3333999
33451670
335103350
33651680
33751685
33851690
33962034
34093060
34131023
34262052
34362058
34462064
34562070
34651730
34772429
34851740
3491349
35082800
3511351
35251760
35362118
35431062
3551355
35682848
35762142
3582716
3592718
36041440
36141444
36231086
3641364
3651365
3671367
3691369
3701370
3721372
37531125
3771377
3861386
38851940
3892778
3901390
39131173
3921392
3931393
3941394
Total1002309064
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1481148
1492298
1502300
1514604
1533459
1542308
1552310
1563468
1571157
1582316
1591159
1606960
1615805
1621162
16371141
16471148
165101650
166132158
167101670
168132184
169142366
170193230
171203420
172162752
173284844
174203480
175244200
176234048
177234071
178234094
179285012
180203600
181193439
182173094
183122196
184224048
185264810
186122232
187132431
188152820
189112079
190112090
191163056
192112112
19391737
19471358
195101950
1963588
19791773
198112178
1995995
2004800
201102010
202102020
2034812
20471428
2051205
2063618
20751035
20851040
20951045
210102100
211112321
212102120
213122556
214102140
21571505
2164864
21791953
218112398
219102190
220173740
22161326
222122664
223143122
22471568
225132925
226112486
22792043
228112508
229153435
230122760
231163696
23271624
23361398
2343702
2352470
2361236
2402480
24251210
2432486
2444976
2452490
2464984
2471247
2484992
2491249
2512502
2523756
25341012
2541254
2551255
25641024
2572514
2583774
2591259
26061560
2613783
26261572
26351315
26451320
26592385
26651330
26741068
2681268
2693807
2701270
2721272
2811281
2851285
3062612
Total1002198967
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343638266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88827ee895897d00
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3765653839353839
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_5.json b/autobahn/client/tungstenite_case_13_5_5.json new file mode 100644 index 0000000..39b30b0 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_5.json @@ -0,0 +1,382 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 468, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 503, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=468&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: uhkOGSH1vPPeLfQNkia9hQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /QbNnhY/oJJe4S2clHlj1lKyfYU=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "262": 1, + "263": 2, + "264": 1, + "265": 2, + "266": 1, + "267": 1, + "268": 2, + "269": 4, + "270": 8, + "271": 8, + "272": 3, + "273": 8, + "274": 5, + "275": 7, + "276": 14, + "277": 6, + "278": 7, + "279": 19, + "280": 21, + "281": 21, + "282": 28, + "283": 22, + "284": 16, + "285": 20, + "286": 18, + "287": 16, + "288": 12, + "289": 12, + "290": 11, + "291": 16, + "292": 10, + "293": 9, + "294": 15, + "295": 9, + "296": 13, + "297": 9, + "298": 14, + "299": 14, + "300": 18, + "301": 13, + "302": 15, + "303": 13, + "304": 13, + "305": 16, + "306": 10, + "307": 12, + "308": 8, + "309": 11, + "310": 10, + "311": 15, + "312": 18, + "313": 15, + "314": 12, + "315": 18, + "316": 22, + "317": 16, + "318": 15, + "319": 14, + "320": 23, + "321": 14, + "322": 12, + "323": 13, + "324": 13, + "325": 17, + "326": 9, + "327": 7, + "328": 5, + "329": 3, + "330": 9, + "331": 9, + "332": 6, + "333": 3, + "334": 5, + "335": 10, + "336": 5, + "337": 5, + "338": 5, + "339": 6, + "340": 9, + "341": 3, + "342": 6, + "343": 6, + "344": 6, + "345": 6, + "346": 5, + "347": 7, + "348": 5, + "349": 1, + "350": 8, + "351": 1, + "352": 5, + "353": 6, + "354": 3, + "355": 1, + "356": 8, + "357": 6, + "358": 2, + "359": 2, + "360": 4, + "361": 4, + "362": 3, + "364": 1, + "365": 1, + "367": 1, + "369": 1, + "370": 1, + "372": 1, + "375": 3, + "377": 1, + "386": 1, + "388": 5, + "389": 2, + "390": 1, + "391": 3, + "392": 1, + "393": 1, + "394": 1 + }, + "started": "2025-09-11T20:13:25.250Z", + "trafficStats": { + "incomingCompressionRatio": 0.073437255859375, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 300799, + "incomingOctetsWireLevel": 308799, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.026595833097849395, + "outgoingCompressionRatio": 0.047523681640625, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 194657, + "outgoingOctetsWireLevel": 198657, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.02054896561644328, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "148": 1, + "149": 2, + "150": 2, + "151": 4, + "153": 3, + "154": 2, + "155": 2, + "156": 3, + "157": 1, + "158": 2, + "159": 1, + "160": 6, + "161": 5, + "162": 1, + "163": 7, + "164": 7, + "165": 10, + "166": 13, + "167": 10, + "168": 13, + "169": 14, + "170": 19, + "171": 20, + "172": 16, + "173": 28, + "174": 20, + "175": 24, + "176": 23, + "177": 23, + "178": 23, + "179": 28, + "180": 20, + "181": 19, + "182": 17, + "183": 12, + "184": 22, + "185": 26, + "186": 12, + "187": 13, + "188": 15, + "189": 11, + "190": 11, + "191": 16, + "192": 11, + "193": 9, + "194": 7, + "195": 10, + "196": 3, + "197": 9, + "198": 11, + "199": 5, + "200": 4, + "201": 10, + "202": 10, + "203": 4, + "204": 7, + "205": 1, + "206": 3, + "207": 5, + "208": 5, + "209": 5, + "210": 10, + "211": 11, + "212": 10, + "213": 12, + "214": 10, + "215": 7, + "216": 4, + "217": 9, + "218": 11, + "219": 10, + "220": 17, + "221": 6, + "222": 12, + "223": 14, + "224": 7, + "225": 13, + "226": 11, + "227": 9, + "228": 11, + "229": 15, + "230": 12, + "231": 16, + "232": 7, + "233": 6, + "234": 3, + "235": 2, + "236": 1, + "240": 2, + "242": 5, + "243": 2, + "244": 4, + "245": 2, + "246": 4, + "247": 1, + "248": 4, + "249": 1, + "251": 2, + "252": 3, + "253": 4, + "254": 1, + "255": 1, + "256": 4, + "257": 2, + "258": 3, + "259": 1, + "260": 6, + "261": 3, + "262": 6, + "263": 5, + "264": 5, + "265": 9, + "266": 5, + "267": 4, + "268": 1, + "269": 3, + "270": 1, + "272": 1, + "281": 1, + "285": 1, + "306": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343638266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827ee895897d00" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7ee89589" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_6.html b/autobahn/client/tungstenite_case_13_5_6.html new file mode 100644 index 0000000..bac579b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_6.html @@ -0,0 +1,653 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.6 : Pass - 813 ms @ 2025-09-11T20:13:25.754Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=469&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: MdoWmzzQZPnpBp7Nb/5uiA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1lYejLrRyjyHfWhuVlUYhNNdMcY=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
3911391
3922784
39331179
39431182
39551975
3961396
39751985
39841592
39931197
40141604
40262412
40341612
40462424
40572835
40662436
407104070
408124896
409114499
41083280
41193699
412124944
413114543
414124968
41593735
416124992
41783336
418145852
419125028
420135460
42183368
42272954
42393807
42462544
42572975
42683408
42783416
42862568
42973003
43052150
43141724
43231296
43352165
43473038
43552175
43652180
43741748
43883504
43983512
440125280
44152205
44252210
443114873
444125328
44531335
446125352
447114917
448114928
449156735
450146300
45194059
45262712
45373171
454125448
455125460
45652280
45752285
45894122
45941836
46062760
46152305
46273234
46394167
46431392
465104650
46652330
46773269
46841872
46941876
47041880
4712942
47352365
47441896
47562850
476104760
477104770
47831434
47973353
48052400
48152405
48283856
483125796
48483872
48541940
48683888
48773409
48883904
48973423
49083920
49152455
49241968
49362958
49473458
4952990
49683968
49762982
49841992
49941996
50021000
5011501
50252510
50331509
50442016
50594545
50652530
50742028
508105080
50984072
51073570
51173577
51284096
51321026
514105140
51573605
5161516
51752585
518126216
51973633
52063120
52184168
52284176
52363138
52494716
52563150
52673682
52752635
52873696
52921058
5301530
53142124
53242128
53321066
53442136
53531605
5361536
53831614
5421542
5461546
54821096
5491549
55021100
5551555
55731671
56031680
5611561
5641564
5651565
5671567
5681568
56921138
5711571
57231716
5731573
57421148
57642304
57731731
57821156
5801580
58121162
5821582
5841584
5901590
5911591
5991599
6011601
6021602
Total1002465452
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
30151505
30261812
3032606
30451520
30561830
306123672
307103070
3083924
3091309
31051550
3111311
3123936
3131313
31451570
31572205
31641264
31761902
318123816
31941276
320123840
321113531
322103220
323134199
324103240
325185850
326165216
327154905
328103280
329216909
330216930
331196289
332134316
333165328
33472338
33572345
336124032
337113707
338103380
33951695
34072380
34141364
34251710
34351715
34431032
3451345
34651730
34751735
34862088
34993141
35093150
35193159
35282816
353103530
35482832
355144970
35693204
357103570
358124296
35993231
36082880
361124332
36282896
363103630
36441456
36562190
36662196
3672734
3682736
369114059
37072590
3712742
372114092
37372611
37482992
37531125
37672632
37783016
37862268
379103790
38062280
38141524
3822764
38372681
3842768
38531155
38631158
38741548
38831164
38931167
39051950
3912782
39241568
39331179
39441576
39531185
39631188
39762382
39841592
39931197
4001400
4011401
40241608
40331209
40431212
4051405
40641624
40783256
40831224
4092818
41072870
41162466
4122824
4131413
4141414
41541660
416124992
41752085
41831254
41931257
4202840
4212842
42272954
42341692
42431272
42531275
42652130
4272854
42931287
43031290
43131293
4321432
4331433
43431302
4361436
4371437
4412882
4421442
44331329
4451445
4471447
44831344
4491449
45031350
45131353
4521452
45394077
45483632
4552910
45673192
457104570
45894122
4592918
46073220
461135993
46262772
46383704
46452320
46583720
46694194
46762802
46883744
4692938
47041880
4711471
4722944
4732946
4741474
4751475
4762952
4771477
4781478
47931437
4801480
4821482
4841484
4872974
4881488
48931467
4901490
4921492
4931493
Total1002373584
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343639266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828e0f337d8de7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3865306633333764
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_6.json b/autobahn/client/tungstenite_case_13_5_6.json new file mode 100644 index 0000000..399e3cf --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_6.json @@ -0,0 +1,500 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 469, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 813, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=469&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: MdoWmzzQZPnpBp7Nb/5uiA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1lYejLrRyjyHfWhuVlUYhNNdMcY=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "391": 1, + "392": 2, + "393": 3, + "394": 3, + "395": 5, + "396": 1, + "397": 5, + "398": 4, + "399": 3, + "401": 4, + "402": 6, + "403": 4, + "404": 6, + "405": 7, + "406": 6, + "407": 10, + "408": 12, + "409": 11, + "410": 8, + "411": 9, + "412": 12, + "413": 11, + "414": 12, + "415": 9, + "416": 12, + "417": 8, + "418": 14, + "419": 12, + "420": 13, + "421": 8, + "422": 7, + "423": 9, + "424": 6, + "425": 7, + "426": 8, + "427": 8, + "428": 6, + "429": 7, + "430": 5, + "431": 4, + "432": 3, + "433": 5, + "434": 7, + "435": 5, + "436": 5, + "437": 4, + "438": 8, + "439": 8, + "440": 12, + "441": 5, + "442": 5, + "443": 11, + "444": 12, + "445": 3, + "446": 12, + "447": 11, + "448": 11, + "449": 15, + "450": 14, + "451": 9, + "452": 6, + "453": 7, + "454": 12, + "455": 12, + "456": 5, + "457": 5, + "458": 9, + "459": 4, + "460": 6, + "461": 5, + "462": 7, + "463": 9, + "464": 3, + "465": 10, + "466": 5, + "467": 7, + "468": 4, + "469": 4, + "470": 4, + "471": 2, + "473": 5, + "474": 4, + "475": 6, + "476": 10, + "477": 10, + "478": 3, + "479": 7, + "480": 5, + "481": 5, + "482": 8, + "483": 12, + "484": 8, + "485": 4, + "486": 8, + "487": 7, + "488": 8, + "489": 7, + "490": 8, + "491": 5, + "492": 4, + "493": 6, + "494": 7, + "495": 2, + "496": 8, + "497": 6, + "498": 4, + "499": 4, + "500": 2, + "501": 1, + "502": 5, + "503": 3, + "504": 4, + "505": 9, + "506": 5, + "507": 4, + "508": 10, + "509": 8, + "510": 7, + "511": 7, + "512": 8, + "513": 2, + "514": 10, + "515": 7, + "516": 1, + "517": 5, + "518": 12, + "519": 7, + "520": 6, + "521": 8, + "522": 8, + "523": 6, + "524": 9, + "525": 6, + "526": 7, + "527": 5, + "528": 7, + "529": 2, + "530": 1, + "531": 4, + "532": 4, + "533": 2, + "534": 4, + "535": 3, + "536": 1, + "538": 3, + "542": 1, + "546": 1, + "548": 2, + "549": 1, + "550": 2, + "555": 1, + "557": 3, + "560": 3, + "561": 1, + "564": 1, + "565": 1, + "567": 1, + "568": 1, + "569": 2, + "571": 1, + "572": 3, + "573": 1, + "574": 2, + "576": 4, + "577": 3, + "578": 2, + "580": 1, + "581": 2, + "582": 1, + "584": 1, + "590": 1, + "591": 1, + "599": 1, + "601": 1, + "602": 1 + }, + "started": "2025-09-11T20:13:25.754Z", + "trafficStats": { + "incomingCompressionRatio": 0.0558089599609375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 457187, + "incomingOctetsWireLevel": 465187, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.017498310319409783, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 373274, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.010832065079046995, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "301": 5, + "302": 6, + "303": 2, + "304": 5, + "305": 6, + "306": 12, + "307": 10, + "308": 3, + "309": 1, + "310": 5, + "311": 1, + "312": 3, + "313": 1, + "314": 5, + "315": 7, + "316": 4, + "317": 6, + "318": 12, + "319": 4, + "320": 12, + "321": 11, + "322": 10, + "323": 13, + "324": 10, + "325": 18, + "326": 16, + "327": 15, + "328": 10, + "329": 21, + "330": 21, + "331": 19, + "332": 13, + "333": 16, + "334": 7, + "335": 7, + "336": 12, + "337": 11, + "338": 10, + "339": 5, + "340": 7, + "341": 4, + "342": 5, + "343": 5, + "344": 3, + "345": 1, + "346": 5, + "347": 5, + "348": 6, + "349": 9, + "350": 9, + "351": 9, + "352": 8, + "353": 10, + "354": 8, + "355": 14, + "356": 9, + "357": 10, + "358": 12, + "359": 9, + "360": 8, + "361": 12, + "362": 8, + "363": 10, + "364": 4, + "365": 6, + "366": 6, + "367": 2, + "368": 2, + "369": 11, + "370": 7, + "371": 2, + "372": 11, + "373": 7, + "374": 8, + "375": 3, + "376": 7, + "377": 8, + "378": 6, + "379": 10, + "380": 6, + "381": 4, + "382": 2, + "383": 7, + "384": 2, + "385": 3, + "386": 3, + "387": 4, + "388": 3, + "389": 3, + "390": 5, + "391": 2, + "392": 4, + "393": 3, + "394": 4, + "395": 3, + "396": 3, + "397": 6, + "398": 4, + "399": 3, + "400": 1, + "401": 1, + "402": 4, + "403": 3, + "404": 3, + "405": 1, + "406": 4, + "407": 8, + "408": 3, + "409": 2, + "410": 7, + "411": 6, + "412": 2, + "413": 1, + "414": 1, + "415": 4, + "416": 12, + "417": 5, + "418": 3, + "419": 3, + "420": 2, + "421": 2, + "422": 7, + "423": 4, + "424": 3, + "425": 3, + "426": 5, + "427": 2, + "429": 3, + "430": 3, + "431": 3, + "432": 1, + "433": 1, + "434": 3, + "436": 1, + "437": 1, + "441": 2, + "442": 1, + "443": 3, + "445": 1, + "447": 1, + "448": 3, + "449": 1, + "450": 3, + "451": 3, + "452": 1, + "453": 9, + "454": 8, + "455": 2, + "456": 7, + "457": 10, + "458": 9, + "459": 2, + "460": 7, + "461": 13, + "462": 6, + "463": 8, + "464": 5, + "465": 8, + "466": 9, + "467": 6, + "468": 8, + "469": 2, + "470": 4, + "471": 1, + "472": 2, + "473": 2, + "474": 1, + "475": 1, + "476": 2, + "477": 1, + "478": 1, + "479": 3, + "480": 1, + "482": 1, + "484": 1, + "487": 2, + "488": 1, + "489": 3, + "490": 1, + "492": 1, + "493": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343639266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828e0f337d8de7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8e0f337d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_7.html b/autobahn/client/tungstenite_case_13_5_7.html new file mode 100644 index 0000000..9403367 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_7.html @@ -0,0 +1,850 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.7 : Pass - 1280 ms @ 2025-09-11T20:13:26.569Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=470&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: fZT/vySpDQPPTgw6ygkmHg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: h8dwDQczJq68WlBOZrBSUOyAPMo=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
63821276
6401640
64121282
64231926
64331929
64421288
64521290
6461646
64731941
64821296
64921298
65042600
65131953
6521652
6531653
6561656
65853290
65931977
66063960
66142644
66274634
66342652
66421328
66542660
66621332
66753335
66885344
66932007
6701670
6711671
67232016
67353365
67421348
67564050
67653380
67774739
67842712
679106790
68064080
68164086
68242728
68374781
68453420
68585480
68674802
687106870
68842752
68953445
690117590
69185528
69253460
69396237
69453470
6951695
69621392
69732091
69842792
69942796
7001700
70142804
70232106
70332109
704107040
70553525
7061706
70721414
70821416
70953545
71032130
71121422
7121712
71321426
71432142
71575005
71642864
71753585
7181718
71942876
72032160
72175047
72264332
72375061
72464344
72553625
72632178
72721454
72832184
72953645
73042920
73132193
73275124
73321466
73432202
73621472
73732211
73842952
73932217
74032220
74153705
74232226
74353715
7441744
74532235
74642984
74721494
74864488
74964494
75053750
75186008
75286016
75396777
75443016
755107550
75664536
75743028
75896822
75964554
76021520
76175327
76286096
76343052
76453820
76532295
76632298
76721534
76832304
76921538
77132313
77221544
77321546
7741774
7751775
7761776
77743108
77853890
77921558
78021560
78121562
78232346
78332349
78421568
78532355
78821576
78932367
79053950
7911791
79232376
7931793
79453970
79564770
79697164
79743188
79853990
79953995
80097200
80243208
80364818
8041804
80532415
80664836
80743228
80843232
80964854
81032430
81143244
81221624
81354065
81454070
81543260
81654080
81743268
81843272
81943276
82086560
82132463
82243288
82354115
82454120
82543300
8261826
82764962
82854140
82964974
83021660
83143324
83232496
83375831
83497506
83532505
83643344
83743348
838108380
83975873
84054200
84154205
84254210
84354215
84497596
84532535
8461846
84754235
84821696
84965094
85043400
85143404
85254260
8531853
8541854
85532565
8561856
85743428
85843432
8601860
86121722
86221724
86532595
86643464
86721734
86854340
86932607
8701870
87121742
87221744
8741874
87532625
87621752
8771877
8781878
8791879
88021760
88921778
8921892
8951895
9081908
90932727
9101910
91132733
91221824
91454570
9161916
9171917
9181918
91921838
9231923
92632778
9281928
92921858
9301930
93132793
93243728
9331933
93476538
9351935
93632808
93732811
93832814
93921878
94043760
9411941
94221884
9431943
9441944
9451945
9461946
94754735
9481948
9491949
95121902
9521952
95321906
9561956
9641964
9671967
Total1002771375
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
60121202
60231806
6031603
60421208
6051605
6061606
6071607
6081608
6091609
61021220
61131833
61274284
61342452
61463684
615106150
61674312
61753085
61831854
619106190
62053100
6211621
62242488
62374361
62495616
62585000
626116886
62795643
628106280
629159435
63095670
631159465
63274424
63363798
63485072
63585080
63674452
63731911
63853190
63942556
64074480
64153205
64242568
64353215
64453220
64574515
64642584
64721294
6481648
64963894
65031950
65121302
65221304
65342612
65463924
65553275
65685248
65763942
65874606
65921318
66074620
66195949
662117282
663106630
664117304
66585320
66674662
66785336
66874676
66942676
67085360
67164026
67242688
67353365
67442696
67521350
67621352
67742708
6781678
67942716
68042720
68142724
68221364
6831683
68442736
68542740
6861686
68721374
68842752
68921378
69032070
69132073
6921692
69332079
69432082
69553475
69642784
69732091
69842792
69942796
70032100
70121402
70232106
70321406
70464224
70532115
70685648
70721414
7081708
7091709
71032130
71132133
7121712
7131713
71421428
71532145
71621432
71721434
71842872
71921438
72032160
72121442
72253610
72321446
72421448
72553625
72621452
72721454
7281728
7291729
73032190
73232196
7331733
73442936
73521470
73653680
73721474
73932217
74032220
74153705
74332229
74432232
74521490
74621492
7471747
7481748
74975243
7501750
7511751
7521752
7531753
7541754
75543020
75643024
75732271
75853790
75932277
76021520
76221524
76332289
76443056
7651765
7661766
76732301
7691769
7701770
77132313
7721772
77321546
7741774
77532325
7761776
7771777
7781778
7801780
7831783
78621572
78721574
78832364
7891789
79043160
79121582
79221584
7941794
79543180
79753985
79821596
8001800
80121602
80221604
8031803
8041804
80532415
80675642
80764842
80821616
80964854
81043240
81154055
81232436
81321626
81421628
81521630
81643264
81732451
81843272
81932457
82021640
82132463
82354115
82421648
82564950
82754135
82843312
82943316
83043320
83143324
83221664
8331833
83486672
83521670
83621672
83743348
83843352
83921678
84054200
84121682
84275894
84332529
84465064
84521690
8461846
84721694
84821696
8491849
85054250
851108510
85254260
85343412
85454270
85554275
8561856
85754285
85832574
85932577
86043440
86143444
86232586
86376041
86432592
86543460
86665196
86765202
86876076
86932607
87021740
8711871
8721872
87332619
87432622
87521750
87721754
8781878
8791879
88121762
88221764
88421768
88621772
8871887
88821776
8901890
8931893
8941894
8991899
9001900
9041904
9061906
90743628
9081908
9101910
Total1002725592
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343730266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882cce74dd4cf0f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6363653734646434
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_7.json b/autobahn/client/tungstenite_case_13_5_7.json new file mode 100644 index 0000000..6ff7dbd --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_7.json @@ -0,0 +1,697 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 470, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 1280, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=470&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: fZT/vySpDQPPTgw6ygkmHg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: h8dwDQczJq68WlBOZrBSUOyAPMo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "638": 2, + "640": 1, + "641": 2, + "642": 3, + "643": 3, + "644": 2, + "645": 2, + "646": 1, + "647": 3, + "648": 2, + "649": 2, + "650": 4, + "651": 3, + "652": 1, + "653": 1, + "656": 1, + "658": 5, + "659": 3, + "660": 6, + "661": 4, + "662": 7, + "663": 4, + "664": 2, + "665": 4, + "666": 2, + "667": 5, + "668": 8, + "669": 3, + "670": 1, + "671": 1, + "672": 3, + "673": 5, + "674": 2, + "675": 6, + "676": 5, + "677": 7, + "678": 4, + "679": 10, + "680": 6, + "681": 6, + "682": 4, + "683": 7, + "684": 5, + "685": 8, + "686": 7, + "687": 10, + "688": 4, + "689": 5, + "690": 11, + "691": 8, + "692": 5, + "693": 9, + "694": 5, + "695": 1, + "696": 2, + "697": 3, + "698": 4, + "699": 4, + "700": 1, + "701": 4, + "702": 3, + "703": 3, + "704": 10, + "705": 5, + "706": 1, + "707": 2, + "708": 2, + "709": 5, + "710": 3, + "711": 2, + "712": 1, + "713": 2, + "714": 3, + "715": 7, + "716": 4, + "717": 5, + "718": 1, + "719": 4, + "720": 3, + "721": 7, + "722": 6, + "723": 7, + "724": 6, + "725": 5, + "726": 3, + "727": 2, + "728": 3, + "729": 5, + "730": 4, + "731": 3, + "732": 7, + "733": 2, + "734": 3, + "736": 2, + "737": 3, + "738": 4, + "739": 3, + "740": 3, + "741": 5, + "742": 3, + "743": 5, + "744": 1, + "745": 3, + "746": 4, + "747": 2, + "748": 6, + "749": 6, + "750": 5, + "751": 8, + "752": 8, + "753": 9, + "754": 4, + "755": 10, + "756": 6, + "757": 4, + "758": 9, + "759": 6, + "760": 2, + "761": 7, + "762": 8, + "763": 4, + "764": 5, + "765": 3, + "766": 3, + "767": 2, + "768": 3, + "769": 2, + "771": 3, + "772": 2, + "773": 2, + "774": 1, + "775": 1, + "776": 1, + "777": 4, + "778": 5, + "779": 2, + "780": 2, + "781": 2, + "782": 3, + "783": 3, + "784": 2, + "785": 3, + "788": 2, + "789": 3, + "790": 5, + "791": 1, + "792": 3, + "793": 1, + "794": 5, + "795": 6, + "796": 9, + "797": 4, + "798": 5, + "799": 5, + "800": 9, + "802": 4, + "803": 6, + "804": 1, + "805": 3, + "806": 6, + "807": 4, + "808": 4, + "809": 6, + "810": 3, + "811": 4, + "812": 2, + "813": 5, + "814": 5, + "815": 4, + "816": 5, + "817": 4, + "818": 4, + "819": 4, + "820": 8, + "821": 3, + "822": 4, + "823": 5, + "824": 5, + "825": 4, + "826": 1, + "827": 6, + "828": 5, + "829": 6, + "830": 2, + "831": 4, + "832": 3, + "833": 7, + "834": 9, + "835": 3, + "836": 4, + "837": 4, + "838": 10, + "839": 7, + "840": 5, + "841": 5, + "842": 5, + "843": 5, + "844": 9, + "845": 3, + "846": 1, + "847": 5, + "848": 2, + "849": 6, + "850": 4, + "851": 4, + "852": 5, + "853": 1, + "854": 1, + "855": 3, + "856": 1, + "857": 4, + "858": 4, + "860": 1, + "861": 2, + "862": 2, + "865": 3, + "866": 4, + "867": 2, + "868": 5, + "869": 3, + "870": 1, + "871": 2, + "872": 2, + "874": 1, + "875": 3, + "876": 2, + "877": 1, + "878": 1, + "879": 1, + "880": 2, + "889": 2, + "892": 1, + "895": 1, + "908": 1, + "909": 3, + "910": 1, + "911": 3, + "912": 2, + "914": 5, + "916": 1, + "917": 1, + "918": 1, + "919": 2, + "923": 1, + "926": 3, + "928": 1, + "929": 2, + "930": 1, + "931": 3, + "932": 4, + "933": 1, + "934": 7, + "935": 1, + "936": 3, + "937": 3, + "938": 3, + "939": 2, + "940": 4, + "941": 1, + "942": 2, + "943": 1, + "944": 1, + "945": 1, + "946": 1, + "947": 5, + "948": 1, + "949": 1, + "951": 2, + "952": 1, + "953": 2, + "956": 1, + "964": 1, + "967": 1 + }, + "started": "2025-09-11T20:13:26.569Z", + "trafficStats": { + "incomingCompressionRatio": 0.0465765380859375, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 763110, + "incomingOctetsWireLevel": 771110, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.010483416545452163, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 725282, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.005545681162152944, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "601": 2, + "602": 3, + "603": 1, + "604": 2, + "605": 1, + "606": 1, + "607": 1, + "608": 1, + "609": 1, + "610": 2, + "611": 3, + "612": 7, + "613": 4, + "614": 6, + "615": 10, + "616": 7, + "617": 5, + "618": 3, + "619": 10, + "620": 5, + "621": 1, + "622": 4, + "623": 7, + "624": 9, + "625": 8, + "626": 11, + "627": 9, + "628": 10, + "629": 15, + "630": 9, + "631": 15, + "632": 7, + "633": 6, + "634": 8, + "635": 8, + "636": 7, + "637": 3, + "638": 5, + "639": 4, + "640": 7, + "641": 5, + "642": 4, + "643": 5, + "644": 5, + "645": 7, + "646": 4, + "647": 2, + "648": 1, + "649": 6, + "650": 3, + "651": 2, + "652": 2, + "653": 4, + "654": 6, + "655": 5, + "656": 8, + "657": 6, + "658": 7, + "659": 2, + "660": 7, + "661": 9, + "662": 11, + "663": 10, + "664": 11, + "665": 8, + "666": 7, + "667": 8, + "668": 7, + "669": 4, + "670": 8, + "671": 6, + "672": 4, + "673": 5, + "674": 4, + "675": 2, + "676": 2, + "677": 4, + "678": 1, + "679": 4, + "680": 4, + "681": 4, + "682": 2, + "683": 1, + "684": 4, + "685": 4, + "686": 1, + "687": 2, + "688": 4, + "689": 2, + "690": 3, + "691": 3, + "692": 1, + "693": 3, + "694": 3, + "695": 5, + "696": 4, + "697": 3, + "698": 4, + "699": 4, + "700": 3, + "701": 2, + "702": 3, + "703": 2, + "704": 6, + "705": 3, + "706": 8, + "707": 2, + "708": 1, + "709": 1, + "710": 3, + "711": 3, + "712": 1, + "713": 1, + "714": 2, + "715": 3, + "716": 2, + "717": 2, + "718": 4, + "719": 2, + "720": 3, + "721": 2, + "722": 5, + "723": 2, + "724": 2, + "725": 5, + "726": 2, + "727": 2, + "728": 1, + "729": 1, + "730": 3, + "732": 3, + "733": 1, + "734": 4, + "735": 2, + "736": 5, + "737": 2, + "739": 3, + "740": 3, + "741": 5, + "743": 3, + "744": 3, + "745": 2, + "746": 2, + "747": 1, + "748": 1, + "749": 7, + "750": 1, + "751": 1, + "752": 1, + "753": 1, + "754": 1, + "755": 4, + "756": 4, + "757": 3, + "758": 5, + "759": 3, + "760": 2, + "762": 2, + "763": 3, + "764": 4, + "765": 1, + "766": 1, + "767": 3, + "769": 1, + "770": 1, + "771": 3, + "772": 1, + "773": 2, + "774": 1, + "775": 3, + "776": 1, + "777": 1, + "778": 1, + "780": 1, + "783": 1, + "786": 2, + "787": 2, + "788": 3, + "789": 1, + "790": 4, + "791": 2, + "792": 2, + "794": 1, + "795": 4, + "797": 5, + "798": 2, + "800": 1, + "801": 2, + "802": 2, + "803": 1, + "804": 1, + "805": 3, + "806": 7, + "807": 6, + "808": 2, + "809": 6, + "810": 4, + "811": 5, + "812": 3, + "813": 2, + "814": 2, + "815": 2, + "816": 4, + "817": 3, + "818": 4, + "819": 3, + "820": 2, + "821": 3, + "823": 5, + "824": 2, + "825": 6, + "827": 5, + "828": 4, + "829": 4, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 8, + "835": 2, + "836": 2, + "837": 4, + "838": 4, + "839": 2, + "840": 5, + "841": 2, + "842": 7, + "843": 3, + "844": 6, + "845": 2, + "846": 1, + "847": 2, + "848": 2, + "849": 1, + "850": 5, + "851": 10, + "852": 5, + "853": 4, + "854": 5, + "855": 5, + "856": 1, + "857": 5, + "858": 3, + "859": 3, + "860": 4, + "861": 4, + "862": 3, + "863": 7, + "864": 3, + "865": 4, + "866": 6, + "867": 6, + "868": 7, + "869": 3, + "870": 2, + "871": 1, + "872": 1, + "873": 3, + "874": 3, + "875": 2, + "877": 2, + "878": 1, + "879": 1, + "881": 2, + "882": 2, + "884": 2, + "886": 2, + "887": 1, + "888": 2, + "890": 1, + "893": 1, + "894": 1, + "899": 1, + "900": 1, + "904": 1, + "906": 1, + "907": 4, + "908": 1, + "910": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343730266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882cce74dd4cf0f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "cce74dd4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_8.html b/autobahn/client/tungstenite_case_13_5_8.html new file mode 100644 index 0000000..dcaa942 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_8.html @@ -0,0 +1,1020 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.8 : Pass - 2638 ms @ 2025-09-11T20:13:27.850Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=471&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Z4JGVFnnKHrr3Cy9Chtu/Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: AiTeut/gWLAdTlG9i3uIXSERtQo=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
118911189
119211192
119411194
119522390
119611196
119744788
119811198
119922398
120044800
120122402
120211202
120333609
120433612
120556025
120633618
120711207
120833624
120944836
121011210
121133633
121233636
121344852
121433642
121522430
121656080
121756085
121867308
121967314
122033660
122167326
122222444
122333669
122433672
122556125
122644904
122711227
122833684
122967374
123089840
123133693
123256160
123367398
123444936
123578645
123667416
1237911133
12381214856
123944956
124033720
124122482
124244968
124367458
124467464
124533735
124633738
124733741
124878736
124967494
125011250
125122502
125222504
125411254
125545020
125611256
125711257
125822516
126111261
126211262
126422528
126845072
126922538
127122542
127211272
127333819
127411274
127522550
127622552
127711277
127811278
127911279
128011280
128211282
128322566
128411284
128511285
128611286
128711287
128811288
128911289
129011290
129133873
129222584
129333879
129533885
129611296
129711297
130133903
130345212
130411304
130522610
130611306
130733921
130845232
131033930
131133933
131256560
131333939
131411314
131556575
131611316
131711317
131833954
131945276
132011320
132122642
132211322
132311323
132445296
132511325
132633978
132767962
132856640
132933987
133045320
133145324
133233996
133311333
133456670
133556675
133622672
133722674
133811338
133968034
134068040
1341810728
134245368
134456720
134522690
134645384
134779429
134879436
134945396
135034050
135145404
135245408
135356765
135422708
1355810840
135622712
135734071
135856790
136045440
136156805
136234086
136334089
136411364
136545460
136622732
136745468
136822736
136934107
137034110
137134113
137211372
137368238
137534125
137711377
137822756
137945516
138034140
138145524
138222764
138322766
138422768
138511385
138611386
138722774
138834164
138922778
139011390
139111391
139222784
139311393
139534185
139622792
139711397
139822796
139934197
140034200
140111401
140222804
140311403
140711407
140834224
140957045
141034230
141145644
141222824
1413811304
141445656
141511415
1416811328
141745668
141857090
141957095
142045680
142122842
142245688
142422848
142522850
142634278
142734281
142822856
142945716
143034290
143122862
143222864
143434302
143557175
143645744
143722874
143811438
144022880
144122882
144322886
144411444
144511445
144611446
144734341
144811448
144911449
145011450
145122902
145211452
145345812
145422908
145534365
145634368
145734371
145857290
145957295
146057300
146145844
146257310
146357315
146445856
1465710255
14661116126
146745868
146811468
14691116159
147057350
147145884
147234416
147322946
147445896
147634428
1477811816
147822956
147922958
148034440
148111481
148222964
148322966
148422968
148611486
148722974
148845952
148911489
149022980
149211492
149311493
149434482
149545980
149645984
149822996
149934497
150057500
150111501
150334509
150423008
150511505
150611506
150734521
150811508
150946036
151257560
151323026
151411514
151623032
151723034
151834554
151911519
152023040
152134563
152211522
152311523
152411524
152723054
152823056
152911529
153011530
153146124
153211532
153311533
153411534
153611536
154146164
154223084
154311543
154423088
154611546
154723094
154811548
154911549
155011550
155123102
155234656
157211572
157411574
157811578
157923158
158011580
158134743
158211582
158534755
158711587
158923178
159011590
159111591
159311593
159511595
159723194
159923198
160058000
160123202
160234806
160334809
160411604
160523210
160611606
160846432
160911609
161246448
161311613
161411614
161511615
161711617
162023240
162123242
162211622
162311623
162534875
162623252
162811628
162934887
163011630
163111631
163211632
163311633
163611636
163811638
Total10021377957
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
123611236
123922478
124011240
124111241
124211242
124311243
124411244
124544980
124611246
124822496
125022500
125122502
125211252
125311253
125433762
125511255
125645024
125711257
125833774
125911259
126011260
126133783
126256310
126322526
126433792
126522530
126645064
126745068
126822536
126978883
127056350
127245088
1273810184
127445096
1275911475
127633828
1277911493
127867668
127967674
12801114080
1281810248
1282911538
1283911547
128445136
128545140
1286810288
128756435
128856440
128956445
129022580
129145164
129211292
129333879
129456470
129545180
129633888
129745188
129856490
129956495
130033900
130167806
130267812
130345212
130445216
130511305
130611306
130745228
130822616
130933927
131022620
131133933
131245248
131322626
131411314
131622632
131722634
131811318
131945276
132133963
132211322
132311323
132422648
132522650
132745308
132822656
132911329
133011330
133122662
133222664
133311333
133422668
133634008
133711337
133922678
134034020
134122682
134211342
134322686
134422688
134545380
134622692
134768082
134811348
134911349
135156755
135245408
135322706
135556775
135645424
135811358
135934077
136034080
136122722
136211362
136322726
136411364
136622732
136745468
136811368
136945476
137011370
137222744
137322746
137434122
137711377
137822756
137911379
138011380
138134143
138234146
138311383
138434152
138534155
138611386
138711387
138922778
139134173
139222784
139311393
139422788
139522790
139611396
139722794
139811398
140111401
140222804
140311403
140411404
140511405
140622812
140922818
141011410
141122822
141211412
141368478
141422828
141511415
141634248
141745668
141811418
141911419
142011420
142145684
142222844
142322846
142411424
142522850
142611426
142745708
142922858
143122862
143245728
143411434
143511435
143634308
143722874
143945756
144011440
144122882
144222884
144411444
144645784
144722894
144811448
144922898
145011450
145122902
145222904
145322906
145434362
145522910
145622912
145722914
145911459
146022920
146111461
146211462
146322926
146411464
146534395
146622932
146722934
146822936
146945876
147045880
147168826
147234416
147322946
147422948
147511475
147622952
147734431
147834434
147922958
148022960
148111481
148211482
148334449
148445936
148568910
148634458
148722974
148845952
148934467
149022980
149111491
149234476
149334479
149422988
149534485
149657480
149822996
150034500
150123002
150223004
150323006
150423008
150534515
150623012
150711507
150834524
150923018
151011510
151123022
151357565
151423028
151523030
151611516
151746068
151846072
151934557
152046080
152269132
152423048
152511525
152611526
152834584
152957645
153123062
153234596
153311533
153446136
153546140
153657680
153757685
1538913842
153957695
154069240
1541710787
154269252
154334629
154457720
154511545
154634638
1547710829
154823096
154923098
155034650
155169306
155257760
155369318
155434662
155534665
155669336
155757785
1558812464
1559710913
15601117160
1561710927
1562710934
156323126
156469384
156557825
156657830
156757835
156823136
156934707
157057850
157157855
157234716
157334719
157411574
157511575
157623152
157723154
157811578
158034740
158123162
158234746
158323166
158511585
158623172
158723174
158823176
158923178
159023180
159123182
159211592
159311593
159711597
160411604
160711607
160823216
161123222
161311613
161411614
161711617
161846472
162111621
162323246
162423248
162511625
162669756
162734881
162811628
162923258
163011630
163223264
163411634
163623272
163723274
163911639
164134923
164334929
164423288
164669876
164711647
164823296
165023300
165123302
165223304
165323306
165411654
165523310
165723314
165811658
165923318
166023320
166111661
166423328
Total10021435175
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343731266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88826f1e4b2f6cf6
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3666316534623266
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_8.json b/autobahn/client/tungstenite_case_13_5_8.json new file mode 100644 index 0000000..cd44710 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_8.json @@ -0,0 +1,867 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 471, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 2638, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=471&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Z4JGVFnnKHrr3Cy9Chtu/Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: AiTeut/gWLAdTlG9i3uIXSERtQo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1189": 1, + "1192": 1, + "1194": 1, + "1195": 2, + "1196": 1, + "1197": 4, + "1198": 1, + "1199": 2, + "1200": 4, + "1201": 2, + "1202": 1, + "1203": 3, + "1204": 3, + "1205": 5, + "1206": 3, + "1207": 1, + "1208": 3, + "1209": 4, + "1210": 1, + "1211": 3, + "1212": 3, + "1213": 4, + "1214": 3, + "1215": 2, + "1216": 5, + "1217": 5, + "1218": 6, + "1219": 6, + "1220": 3, + "1221": 6, + "1222": 2, + "1223": 3, + "1224": 3, + "1225": 5, + "1226": 4, + "1227": 1, + "1228": 3, + "1229": 6, + "1230": 8, + "1231": 3, + "1232": 5, + "1233": 6, + "1234": 4, + "1235": 7, + "1236": 6, + "1237": 9, + "1238": 12, + "1239": 4, + "1240": 3, + "1241": 2, + "1242": 4, + "1243": 6, + "1244": 6, + "1245": 3, + "1246": 3, + "1247": 3, + "1248": 7, + "1249": 6, + "1250": 1, + "1251": 2, + "1252": 2, + "1254": 1, + "1255": 4, + "1256": 1, + "1257": 1, + "1258": 2, + "1261": 1, + "1262": 1, + "1264": 2, + "1268": 4, + "1269": 2, + "1271": 2, + "1272": 1, + "1273": 3, + "1274": 1, + "1275": 2, + "1276": 2, + "1277": 1, + "1278": 1, + "1279": 1, + "1280": 1, + "1282": 1, + "1283": 2, + "1284": 1, + "1285": 1, + "1286": 1, + "1287": 1, + "1288": 1, + "1289": 1, + "1290": 1, + "1291": 3, + "1292": 2, + "1293": 3, + "1295": 3, + "1296": 1, + "1297": 1, + "1301": 3, + "1303": 4, + "1304": 1, + "1305": 2, + "1306": 1, + "1307": 3, + "1308": 4, + "1310": 3, + "1311": 3, + "1312": 5, + "1313": 3, + "1314": 1, + "1315": 5, + "1316": 1, + "1317": 1, + "1318": 3, + "1319": 4, + "1320": 1, + "1321": 2, + "1322": 1, + "1323": 1, + "1324": 4, + "1325": 1, + "1326": 3, + "1327": 6, + "1328": 5, + "1329": 3, + "1330": 4, + "1331": 4, + "1332": 3, + "1333": 1, + "1334": 5, + "1335": 5, + "1336": 2, + "1337": 2, + "1338": 1, + "1339": 6, + "1340": 6, + "1341": 8, + "1342": 4, + "1344": 5, + "1345": 2, + "1346": 4, + "1347": 7, + "1348": 7, + "1349": 4, + "1350": 3, + "1351": 4, + "1352": 4, + "1353": 5, + "1354": 2, + "1355": 8, + "1356": 2, + "1357": 3, + "1358": 5, + "1360": 4, + "1361": 5, + "1362": 3, + "1363": 3, + "1364": 1, + "1365": 4, + "1366": 2, + "1367": 4, + "1368": 2, + "1369": 3, + "1370": 3, + "1371": 3, + "1372": 1, + "1373": 6, + "1375": 3, + "1377": 1, + "1378": 2, + "1379": 4, + "1380": 3, + "1381": 4, + "1382": 2, + "1383": 2, + "1384": 2, + "1385": 1, + "1386": 1, + "1387": 2, + "1388": 3, + "1389": 2, + "1390": 1, + "1391": 1, + "1392": 2, + "1393": 1, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 3, + "1400": 3, + "1401": 1, + "1402": 2, + "1403": 1, + "1407": 1, + "1408": 3, + "1409": 5, + "1410": 3, + "1411": 4, + "1412": 2, + "1413": 8, + "1414": 4, + "1415": 1, + "1416": 8, + "1417": 4, + "1418": 5, + "1419": 5, + "1420": 4, + "1421": 2, + "1422": 4, + "1424": 2, + "1425": 2, + "1426": 3, + "1427": 3, + "1428": 2, + "1429": 4, + "1430": 3, + "1431": 2, + "1432": 2, + "1434": 3, + "1435": 5, + "1436": 4, + "1437": 2, + "1438": 1, + "1440": 2, + "1441": 2, + "1443": 2, + "1444": 1, + "1445": 1, + "1446": 1, + "1447": 3, + "1448": 1, + "1449": 1, + "1450": 1, + "1451": 2, + "1452": 1, + "1453": 4, + "1454": 2, + "1455": 3, + "1456": 3, + "1457": 3, + "1458": 5, + "1459": 5, + "1460": 5, + "1461": 4, + "1462": 5, + "1463": 5, + "1464": 4, + "1465": 7, + "1466": 11, + "1467": 4, + "1468": 1, + "1469": 11, + "1470": 5, + "1471": 4, + "1472": 3, + "1473": 2, + "1474": 4, + "1476": 3, + "1477": 8, + "1478": 2, + "1479": 2, + "1480": 3, + "1481": 1, + "1482": 2, + "1483": 2, + "1484": 2, + "1486": 1, + "1487": 2, + "1488": 4, + "1489": 1, + "1490": 2, + "1492": 1, + "1493": 1, + "1494": 3, + "1495": 4, + "1496": 4, + "1498": 2, + "1499": 3, + "1500": 5, + "1501": 1, + "1503": 3, + "1504": 2, + "1505": 1, + "1506": 1, + "1507": 3, + "1508": 1, + "1509": 4, + "1512": 5, + "1513": 2, + "1514": 1, + "1516": 2, + "1517": 2, + "1518": 3, + "1519": 1, + "1520": 2, + "1521": 3, + "1522": 1, + "1523": 1, + "1524": 1, + "1527": 2, + "1528": 2, + "1529": 1, + "1530": 1, + "1531": 4, + "1532": 1, + "1533": 1, + "1534": 1, + "1536": 1, + "1541": 4, + "1542": 2, + "1543": 1, + "1544": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 1, + "1550": 1, + "1551": 2, + "1552": 3, + "1572": 1, + "1574": 1, + "1578": 1, + "1579": 2, + "1580": 1, + "1581": 3, + "1582": 1, + "1585": 3, + "1587": 1, + "1589": 2, + "1590": 1, + "1591": 1, + "1593": 1, + "1595": 1, + "1597": 2, + "1599": 2, + "1600": 5, + "1601": 2, + "1602": 3, + "1603": 3, + "1604": 1, + "1605": 2, + "1606": 1, + "1608": 4, + "1609": 1, + "1612": 4, + "1613": 1, + "1614": 1, + "1615": 1, + "1617": 1, + "1620": 2, + "1621": 2, + "1622": 1, + "1623": 1, + "1625": 3, + "1626": 2, + "1628": 1, + "1629": 3, + "1630": 1, + "1631": 1, + "1632": 1, + "1633": 1, + "1636": 1, + "1638": 1 + }, + "started": "2025-09-11T20:13:27.850Z", + "trafficStats": { + "incomingCompressionRatio": 0.0417996826171875, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1369692, + "incomingOctetsWireLevel": 1377692, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.005840729156627913, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1434865, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0027955118057957948, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "1236": 1, + "1239": 2, + "1240": 1, + "1241": 1, + "1242": 1, + "1243": 1, + "1244": 1, + "1245": 4, + "1246": 1, + "1248": 2, + "1250": 2, + "1251": 2, + "1252": 1, + "1253": 1, + "1254": 3, + "1255": 1, + "1256": 4, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 1, + "1261": 3, + "1262": 5, + "1263": 2, + "1264": 3, + "1265": 2, + "1266": 4, + "1267": 4, + "1268": 2, + "1269": 7, + "1270": 5, + "1272": 4, + "1273": 8, + "1274": 4, + "1275": 9, + "1276": 3, + "1277": 9, + "1278": 6, + "1279": 6, + "1280": 11, + "1281": 8, + "1282": 9, + "1283": 9, + "1284": 4, + "1285": 4, + "1286": 8, + "1287": 5, + "1288": 5, + "1289": 5, + "1290": 2, + "1291": 4, + "1292": 1, + "1293": 3, + "1294": 5, + "1295": 4, + "1296": 3, + "1297": 4, + "1298": 5, + "1299": 5, + "1300": 3, + "1301": 6, + "1302": 6, + "1303": 4, + "1304": 4, + "1305": 1, + "1306": 1, + "1307": 4, + "1308": 2, + "1309": 3, + "1310": 2, + "1311": 3, + "1312": 4, + "1313": 2, + "1314": 1, + "1316": 2, + "1317": 2, + "1318": 1, + "1319": 4, + "1321": 3, + "1322": 1, + "1323": 1, + "1324": 2, + "1325": 2, + "1327": 4, + "1328": 2, + "1329": 1, + "1330": 1, + "1331": 2, + "1332": 2, + "1333": 1, + "1334": 2, + "1336": 3, + "1337": 1, + "1339": 2, + "1340": 3, + "1341": 2, + "1342": 1, + "1343": 2, + "1344": 2, + "1345": 4, + "1346": 2, + "1347": 6, + "1348": 1, + "1349": 1, + "1351": 5, + "1352": 4, + "1353": 2, + "1355": 5, + "1356": 4, + "1358": 1, + "1359": 3, + "1360": 3, + "1361": 2, + "1362": 1, + "1363": 2, + "1364": 1, + "1366": 2, + "1367": 4, + "1368": 1, + "1369": 4, + "1370": 1, + "1372": 2, + "1373": 2, + "1374": 3, + "1377": 1, + "1378": 2, + "1379": 1, + "1380": 1, + "1381": 3, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 3, + "1386": 1, + "1387": 1, + "1389": 2, + "1391": 3, + "1392": 2, + "1393": 1, + "1394": 2, + "1395": 2, + "1396": 1, + "1397": 2, + "1398": 1, + "1401": 1, + "1402": 2, + "1403": 1, + "1404": 1, + "1405": 1, + "1406": 2, + "1409": 2, + "1410": 1, + "1411": 2, + "1412": 1, + "1413": 6, + "1414": 2, + "1415": 1, + "1416": 3, + "1417": 4, + "1418": 1, + "1419": 1, + "1420": 1, + "1421": 4, + "1422": 2, + "1423": 2, + "1424": 1, + "1425": 2, + "1426": 1, + "1427": 4, + "1429": 2, + "1431": 2, + "1432": 4, + "1434": 1, + "1435": 1, + "1436": 3, + "1437": 2, + "1439": 4, + "1440": 1, + "1441": 2, + "1442": 2, + "1444": 1, + "1446": 4, + "1447": 2, + "1448": 1, + "1449": 2, + "1450": 1, + "1451": 2, + "1452": 2, + "1453": 2, + "1454": 3, + "1455": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 2, + "1461": 1, + "1462": 1, + "1463": 2, + "1464": 1, + "1465": 3, + "1466": 2, + "1467": 2, + "1468": 2, + "1469": 4, + "1470": 4, + "1471": 6, + "1472": 3, + "1473": 2, + "1474": 2, + "1475": 1, + "1476": 2, + "1477": 3, + "1478": 3, + "1479": 2, + "1480": 2, + "1481": 1, + "1482": 1, + "1483": 3, + "1484": 4, + "1485": 6, + "1486": 3, + "1487": 2, + "1488": 4, + "1489": 3, + "1490": 2, + "1491": 1, + "1492": 3, + "1493": 3, + "1494": 2, + "1495": 3, + "1496": 5, + "1498": 2, + "1500": 3, + "1501": 2, + "1502": 2, + "1503": 2, + "1504": 2, + "1505": 3, + "1506": 2, + "1507": 1, + "1508": 3, + "1509": 2, + "1510": 1, + "1511": 2, + "1513": 5, + "1514": 2, + "1515": 2, + "1516": 1, + "1517": 4, + "1518": 4, + "1519": 3, + "1520": 4, + "1522": 6, + "1524": 2, + "1525": 1, + "1526": 1, + "1528": 3, + "1529": 5, + "1531": 2, + "1532": 3, + "1533": 1, + "1534": 4, + "1535": 4, + "1536": 5, + "1537": 5, + "1538": 9, + "1539": 5, + "1540": 6, + "1541": 7, + "1542": 6, + "1543": 3, + "1544": 5, + "1545": 1, + "1546": 3, + "1547": 7, + "1548": 2, + "1549": 2, + "1550": 3, + "1551": 6, + "1552": 5, + "1553": 6, + "1554": 3, + "1555": 3, + "1556": 6, + "1557": 5, + "1558": 8, + "1559": 7, + "1560": 11, + "1561": 7, + "1562": 7, + "1563": 2, + "1564": 6, + "1565": 5, + "1566": 5, + "1567": 5, + "1568": 2, + "1569": 3, + "1570": 5, + "1571": 5, + "1572": 3, + "1573": 3, + "1574": 1, + "1575": 1, + "1576": 2, + "1577": 2, + "1578": 1, + "1580": 3, + "1581": 2, + "1582": 3, + "1583": 2, + "1585": 1, + "1586": 2, + "1587": 2, + "1588": 2, + "1589": 2, + "1590": 2, + "1591": 2, + "1592": 1, + "1593": 1, + "1597": 1, + "1604": 1, + "1607": 1, + "1608": 2, + "1611": 2, + "1613": 1, + "1614": 1, + "1617": 1, + "1618": 4, + "1621": 1, + "1623": 2, + "1624": 2, + "1625": 1, + "1626": 6, + "1627": 3, + "1628": 1, + "1629": 2, + "1630": 1, + "1632": 2, + "1634": 1, + "1636": 2, + "1637": 2, + "1639": 1, + "1641": 3, + "1643": 3, + "1644": 2, + "1646": 6, + "1647": 1, + "1648": 2, + "1650": 2, + "1651": 2, + "1652": 2, + "1653": 2, + "1654": 1, + "1655": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1660": 2, + "1661": 1, + "1664": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343731266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826f1e4b2f6cf6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6f1e4b2f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_5_9.html b/autobahn/client/tungstenite_case_13_5_9.html new file mode 100644 index 0000000..3d41bf1 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_9.html @@ -0,0 +1,700 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.5.9 : Pass - 4586 ms @ 2025-09-11T20:13:30.490Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=472&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: K2BqNbWScOfwVmSJ+uM73w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: eOJbcosDv/ufnO9GAX1rEfhhBEs=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
244312443
244512445
244612446
244712447
244812448
244924898
245037350
245112451
245212452
245437362
245524910
245649824
245724914
245824916
245949836
246012460
246149844
246212462
246412464
246537395
2466922194
24671127137
2468922212
2469717283
2470717290
2471614826
2472717304
2473512365
247412474
247549900
247637428
2477614862
247824956
2479512395
2480614880
2481614886
2482717374
2483819864
2484819872
2485922365
2486819888
2487717409
2488717416
2489717423
24901024900
2491512455
24921229904
24931024930
2494922446
24951024950
2496819968
24971024970
2498512490
249949996
2500615000
25011332513
25021332526
2503922527
25041230048
25051127555
2506820048
2507512535
25081025080
25091127599
25101435140
2511820088
25121025120
2513717591
2514512570
2515512575
251612516
251737551
2518410072
251937557
252025040
252137563
252225044
252337569
252437572
2525410100
2527410108
252837584
252912529
253112531
253225064
253312533
253512535
2536512680
2537410148
253925078
254012540
254512545
254612546
254825096
255237656
255312553
2554410216
2555410220
255612556
255725114
2558615348
2559512795
2560820480
256137683
2562512810
2563923067
2564615384
25651230780
25661846188
25671025670
2568512840
256937707
257037710
2572410288
257325146
257437722
257537725
257612576
257712577
257825156
258325166
2586410344
258712587
258837764
258912589
259137773
259212592
259412594
259612596
259712597
259912599
260012600
260112601
260212602
260312603
260512605
260612606
260712607
260812608
260925218
261125222
261212612
261312613
261412614
261612616
261725234
261825236
2619513095
2621410484
262212622
262425248
2625513125
2626513130
262737881
2628615768
262925258
263225264
263312633
2634410536
263625272
263812638
264012640
264112641
264212642
264312643
2644513220
264525290
264625292
264712647
264812648
265012650
265112651
265212652
265412654
265812658
266112661
266225324
266437992
266537995
266612666
266738001
266825336
2669718683
2670821360
2671616026
267238016
2673821384
2674924066
267512675
267625352
267712677
2678410712
267938037
2680410720
268112681
2682616092
268325366
2684821472
268512685
268625372
268712687
268825376
2690718830
2691410764
269238076
2693410772
269425388
269525390
269625392
269912699
270212702
270425408
270512705
270612706
270812708
270925418
271025420
271125422
271212712
271312713
271625432
271812718
271912719
272012720
272125442
272225444
272312723
272425448
272512725
272612726
272725454
272812728
273012730
2731410924
273612736
273812738
273912739
274025480
274138223
274412744
274512745
274612746
275012750
275212752
275725514
275812758
276012760
276112761
276212762
276412764
2768411072
276912769
277038310
277138313
277612776
277912779
278112781
278238346
278312783
278412784
2785513925
278712787
2788411152
278938367
2790513950
2791513955
2792925128
27931439102
2794822352
2795616770
2796925164
2797719579
2798719586
2799616794
280025600
280112801
280212802
280325606
280525610
280912809
281112811
Total10022585814
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
280125602
280212802
280325606
2804514020
2805411220
2806616836
2807514035
2808616848
28091233708
28101747770
28112261842
28122673112
28132878764
28141747838
28153598525
28161953504
28173187327
28182056360
28192364837
28201747940
28212159241
28222776194
28232570575
28242262128
28252673450
28262056520
28273496118
28282056560
28291439606
2830822640
2831925479
28321748144
28331645328
28341748178
28351645360
28361028360
2837925533
2838514190
283938517
284012840
284138523
2842411368
284325686
284625692
284712847
284912849
285012850
285125702
285312853
285412854
285525710
285738571
2859411436
286012860
2862411448
286338589
286425728
286625732
286712867
286812868
286912869
287012870
287212872
287812878
287912879
288225764
288312883
288412884
288512885
288625772
288712887
288825776
289212892
289512895
289712897
289938697
290025800
290125802
2902514510
2903823224
2904514520
2905720335
2906411624
2907823256
290825816
290938727
291038730
2911514555
29121029120
29131132043
29141646624
29151029150
29161132076
2917617502
29181955442
29191235028
2920617520
2921926289
29221235064
29231235076
29241235088
2925926325
2926720482
2927926343
2928720496
2929617574
2930411720
2931411724
293225864
293338799
293412934
2935617610
29361132296
2937823496
29381338194
29391029390
2940926460
2941514705
294225884
294338829
295712957
Total10022856403
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343732266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88827ac086e07928
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3761633038366530
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_5_9.json b/autobahn/client/tungstenite_case_13_5_9.json new file mode 100644 index 0000000..67a0a33 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_5_9.json @@ -0,0 +1,547 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 472, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9)]", + "droppedByMe": true, + "duration": 4586, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=472&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: K2BqNbWScOfwVmSJ+uM73w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: eOJbcosDv/ufnO9GAX1rEfhhBEs=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.5.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2443": 1, + "2445": 1, + "2446": 1, + "2447": 1, + "2448": 1, + "2449": 2, + "2450": 3, + "2451": 1, + "2452": 1, + "2454": 3, + "2455": 2, + "2456": 4, + "2457": 2, + "2458": 2, + "2459": 4, + "2460": 1, + "2461": 4, + "2462": 1, + "2464": 1, + "2465": 3, + "2466": 9, + "2467": 11, + "2468": 9, + "2469": 7, + "2470": 7, + "2471": 6, + "2472": 7, + "2473": 5, + "2474": 1, + "2475": 4, + "2476": 3, + "2477": 6, + "2478": 2, + "2479": 5, + "2480": 6, + "2481": 6, + "2482": 7, + "2483": 8, + "2484": 8, + "2485": 9, + "2486": 8, + "2487": 7, + "2488": 7, + "2489": 7, + "2490": 10, + "2491": 5, + "2492": 12, + "2493": 10, + "2494": 9, + "2495": 10, + "2496": 8, + "2497": 10, + "2498": 5, + "2499": 4, + "2500": 6, + "2501": 13, + "2502": 13, + "2503": 9, + "2504": 12, + "2505": 11, + "2506": 8, + "2507": 5, + "2508": 10, + "2509": 11, + "2510": 14, + "2511": 8, + "2512": 10, + "2513": 7, + "2514": 5, + "2515": 5, + "2516": 1, + "2517": 3, + "2518": 4, + "2519": 3, + "2520": 2, + "2521": 3, + "2522": 2, + "2523": 3, + "2524": 3, + "2525": 4, + "2527": 4, + "2528": 3, + "2529": 1, + "2531": 1, + "2532": 2, + "2533": 1, + "2535": 1, + "2536": 5, + "2537": 4, + "2539": 2, + "2540": 1, + "2545": 1, + "2546": 1, + "2548": 2, + "2552": 3, + "2553": 1, + "2554": 4, + "2555": 4, + "2556": 1, + "2557": 2, + "2558": 6, + "2559": 5, + "2560": 8, + "2561": 3, + "2562": 5, + "2563": 9, + "2564": 6, + "2565": 12, + "2566": 18, + "2567": 10, + "2568": 5, + "2569": 3, + "2570": 3, + "2572": 4, + "2573": 2, + "2574": 3, + "2575": 3, + "2576": 1, + "2577": 1, + "2578": 2, + "2583": 2, + "2586": 4, + "2587": 1, + "2588": 3, + "2589": 1, + "2591": 3, + "2592": 1, + "2594": 1, + "2596": 1, + "2597": 1, + "2599": 1, + "2600": 1, + "2601": 1, + "2602": 1, + "2603": 1, + "2605": 1, + "2606": 1, + "2607": 1, + "2608": 1, + "2609": 2, + "2611": 2, + "2612": 1, + "2613": 1, + "2614": 1, + "2616": 1, + "2617": 2, + "2618": 2, + "2619": 5, + "2621": 4, + "2622": 1, + "2624": 2, + "2625": 5, + "2626": 5, + "2627": 3, + "2628": 6, + "2629": 2, + "2632": 2, + "2633": 1, + "2634": 4, + "2636": 2, + "2638": 1, + "2640": 1, + "2641": 1, + "2642": 1, + "2643": 1, + "2644": 5, + "2645": 2, + "2646": 2, + "2647": 1, + "2648": 1, + "2650": 1, + "2651": 1, + "2652": 1, + "2654": 1, + "2658": 1, + "2661": 1, + "2662": 2, + "2664": 3, + "2665": 3, + "2666": 1, + "2667": 3, + "2668": 2, + "2669": 7, + "2670": 8, + "2671": 6, + "2672": 3, + "2673": 8, + "2674": 9, + "2675": 1, + "2676": 2, + "2677": 1, + "2678": 4, + "2679": 3, + "2680": 4, + "2681": 1, + "2682": 6, + "2683": 2, + "2684": 8, + "2685": 1, + "2686": 2, + "2687": 1, + "2688": 2, + "2690": 7, + "2691": 4, + "2692": 3, + "2693": 4, + "2694": 2, + "2695": 2, + "2696": 2, + "2699": 1, + "2702": 1, + "2704": 2, + "2705": 1, + "2706": 1, + "2708": 1, + "2709": 2, + "2710": 2, + "2711": 2, + "2712": 1, + "2713": 1, + "2716": 2, + "2718": 1, + "2719": 1, + "2720": 1, + "2721": 2, + "2722": 2, + "2723": 1, + "2724": 2, + "2725": 1, + "2726": 1, + "2727": 2, + "2728": 1, + "2730": 1, + "2731": 4, + "2736": 1, + "2738": 1, + "2739": 1, + "2740": 2, + "2741": 3, + "2744": 1, + "2745": 1, + "2746": 1, + "2750": 1, + "2752": 1, + "2757": 2, + "2758": 1, + "2760": 1, + "2761": 1, + "2762": 1, + "2764": 1, + "2768": 4, + "2769": 1, + "2770": 3, + "2771": 3, + "2776": 1, + "2779": 1, + "2781": 1, + "2782": 3, + "2783": 1, + "2784": 1, + "2785": 5, + "2787": 1, + "2788": 4, + "2789": 3, + "2790": 5, + "2791": 5, + "2792": 9, + "2793": 14, + "2794": 8, + "2795": 6, + "2796": 9, + "2797": 7, + "2798": 7, + "2799": 6, + "2800": 2, + "2801": 1, + "2802": 1, + "2803": 2, + "2805": 2, + "2809": 1, + "2811": 1 + }, + "started": "2025-09-11T20:13:30.490Z", + "trafficStats": { + "incomingCompressionRatio": 0.03933027648925781, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2577549, + "incomingOctetsWireLevel": 2585549, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0031037237313432256, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2856093, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014024788111748109, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "2801": 2, + "2802": 1, + "2803": 2, + "2804": 5, + "2805": 4, + "2806": 6, + "2807": 5, + "2808": 6, + "2809": 12, + "2810": 17, + "2811": 22, + "2812": 26, + "2813": 28, + "2814": 17, + "2815": 35, + "2816": 19, + "2817": 31, + "2818": 20, + "2819": 23, + "2820": 17, + "2821": 21, + "2822": 27, + "2823": 25, + "2824": 22, + "2825": 26, + "2826": 20, + "2827": 34, + "2828": 20, + "2829": 14, + "2830": 8, + "2831": 9, + "2832": 17, + "2833": 16, + "2834": 17, + "2835": 16, + "2836": 10, + "2837": 9, + "2838": 5, + "2839": 3, + "2840": 1, + "2841": 3, + "2842": 4, + "2843": 2, + "2846": 2, + "2847": 1, + "2849": 1, + "2850": 1, + "2851": 2, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 3, + "2859": 4, + "2860": 1, + "2862": 4, + "2863": 3, + "2864": 2, + "2866": 2, + "2867": 1, + "2868": 1, + "2869": 1, + "2870": 1, + "2872": 1, + "2878": 1, + "2879": 1, + "2882": 2, + "2883": 1, + "2884": 1, + "2885": 1, + "2886": 2, + "2887": 1, + "2888": 2, + "2892": 1, + "2895": 1, + "2897": 1, + "2899": 3, + "2900": 2, + "2901": 2, + "2902": 5, + "2903": 8, + "2904": 5, + "2905": 7, + "2906": 4, + "2907": 8, + "2908": 2, + "2909": 3, + "2910": 3, + "2911": 5, + "2912": 10, + "2913": 11, + "2914": 16, + "2915": 10, + "2916": 11, + "2917": 6, + "2918": 19, + "2919": 12, + "2920": 6, + "2921": 9, + "2922": 12, + "2923": 12, + "2924": 12, + "2925": 9, + "2926": 7, + "2927": 9, + "2928": 7, + "2929": 6, + "2930": 4, + "2931": 4, + "2932": 2, + "2933": 3, + "2934": 1, + "2935": 6, + "2936": 11, + "2937": 8, + "2938": 13, + "2939": 10, + "2940": 9, + "2941": 5, + "2942": 2, + "2943": 3, + "2957": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343732266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827ac086e07928" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7ac086e0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_1.html b/autobahn/client/tungstenite_case_13_6_1.html new file mode 100644 index 0000000..7abc8e5 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_1.html @@ -0,0 +1,320 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.1 : Pass - 133 ms @ 2025-09-11T20:14:18.965Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=482&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: uEIt7aptl0EOvi91Jgvzbg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ceWWGbR9pxiNoee8UdY3udfndDo=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1610160
176102
181793222
19581102
20521040
211112331
22571254
23962208
2443110344
2571257
Total100222028
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
67554530
766462
837296
9103927
1024240
11444
12224
14114
15345
16116
17117
18118
20240
3071307
Total10026984
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343832266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882ad3c7b84aed4
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6164336337623834
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_1.json b/autobahn/client/tungstenite_case_13_6_1.json new file mode 100644 index 0000000..7e35f54 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_1.json @@ -0,0 +1,167 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 482, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 133, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=482&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: uEIt7aptl0EOvi91Jgvzbg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ceWWGbR9pxiNoee8UdY3udfndDo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "16": 10, + "17": 6, + "18": 179, + "19": 58, + "20": 52, + "21": 111, + "22": 57, + "23": 96, + "24": 431, + "257": 1 + }, + "started": "2025-09-11T20:14:18.965Z", + "trafficStats": { + "incomingCompressionRatio": 0.9851875, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 15763, + "incomingOctetsWireLevel": 21763, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.38063820338768, + "outgoingCompressionRatio": 0.2920625, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 4673, + "outgoingOctetsWireLevel": 6673, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.4279905842071474, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 755, + "7": 66, + "8": 37, + "9": 103, + "10": 24, + "11": 4, + "12": 2, + "14": 1, + "15": 3, + "16": 1, + "17": 1, + "18": 1, + "20": 2, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343832266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ad3c7b84aed4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ad3c7b84" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_10.html b/autobahn/client/tungstenite_case_13_6_10.html new file mode 100644 index 0000000..d5f8100 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_10.html @@ -0,0 +1,607 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.10 : Pass - 2972 ms @ 2025-09-11T20:14:23.989Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=491&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1SEvNEqy4kGH0lxuZO14Og==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: k28snIAGzHBgsgsCXNZu/uXwLDo=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3071307
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668409
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343931266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888267ed44fb6405
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3637656434346662
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_10.json b/autobahn/client/tungstenite_case_13_6_10.json new file mode 100644 index 0000000..cc9f76d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_10.json @@ -0,0 +1,454 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 491, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 2972, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=491&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1SEvNEqy4kGH0lxuZO14Og==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: k28snIAGzHBgsgsCXNZu/uXwLDo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:14:23.989Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "307": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343931266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888267ed44fb6405" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "67ed44fb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_11.html b/autobahn/client/tungstenite_case_13_6_11.html new file mode 100644 index 0000000..0e7c6f1 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_11.html @@ -0,0 +1,662 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.11 : Pass - 934 ms @ 2025-09-11T20:14:26.963Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=492&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: T0/d8pPjpqRgtPzTVp2Z4g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: L7DqCiCLJbh1ZVv2bgSX0/UAOkk=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
4101410
41152055
4132826
41452070
41531245
41652080
4172834
41852090
41972933
42062520
42162526
42293798
42393807
42452120
42572975
426114686
42783416
42831284
429135577
430104300
431125172
43273024
43383464
434104340
43552175
43683488
43783496
43883504
4392878
44073080
441135733
44262652
44373101
444114884
44562670
44641784
44731341
44841792
449104490
45041800
45152255
45262712
45362718
45462724
45562730
45662736
457115027
45831374
45962754
46094140
46173227
4621462
46362778
46441856
46541860
46662796
46752335
46894212
46994221
4701470
47183768
47252360
47341892
47473318
47562850
47652380
47783816
478115258
479115269
48073360
481104810
48273374
48352415
48452420
485104850
48673402
48773409
48852440
48983912
490115390
49152455
49262952
493115423
49473458
49573465
496125952
49783976
498104980
49952495
50073500
501105010
502136526
503157545
50431512
505126060
50642024
50773549
50821016
50963054
51021020
51173577
51263072
51321026
51421028
51552575
51642064
51752585
51884144
519115709
52073640
52152605
522105220
52342092
52431572
52573675
526105260
52742108
52842112
52921058
53021060
53152655
53273724
53342132
53473738
5351535
5361536
53731611
53842152
53921078
5401540
54121082
54221084
54321086
54721094
54821096
5491549
55031650
55163306
55221104
55342212
554126648
55563330
55673892
55763342
55842232
55931677
56042240
56184488
56242248
56331689
56431692
56542260
5661566
56742268
56852840
56973983
57021140
57173997
57242288
57352865
57442296
57531725
57631728
57721154
57831734
57931737
58021160
58131743
58221164
58331749
58421168
58574095
58631758
5871587
58831764
5891589
59021180
59121182
5921592
5931593
5951595
Total1002489861
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
435215
446264
45290
465230
476282
4811528
4910490
503150
51151
525260
53153
543162
55155
565280
577399
584232
596354
6012720
614244
6212744
6311693
6410640
6513845
6610660
67181206
68161088
69151035
7010700
71211491
72211512
73191387
7413962
75161200
767532
777539
7812936
7911869
8010800
815405
827574
834332
845420
855425
863258
87187
885440
895445
906540
919819
929828
939837
948752
9510950
968768
97141358
989882
9910990
100121200
1019909
1028816
103121236
1048832
105101050
1064424
1076642
1086648
1092218
1102220
111111221
1127784
1132226
114111254
1157805
1168928
1173351
1187826
1198952
1206720
121101210
1226732
1234492
1242248
1257875
1262252
1273381
1303390
1314524
1323396
1333399
1345670
1352270
1364544
1373411
1384552
1393417
1403420
1416846
1424568
1433429
1441144
1451145
1464584
1473441
1483444
1491149
1504600
15181208
1523456
1532306
15471078
1556930
1562312
1571157
1581158
1594636
160121920
1615805
1623486
1633489
1642328
1652330
16671162
1674668
1683504
1693507
1705850
1712342
1733519
1743522
1753525
1761176
1771177
1783534
1801180
1811181
1852370
1861186
1873561
1891189
1911191
1923576
1931193
1943582
1953585
1961196
19791773
19881584
1992398
20071400
201102010
20291818
2032406
20471428
205132665
20661236
20781656
20851040
20981672
21091890
21161266
21281696
2132426
2144856
2151215
2162432
2172434
2181218
2191219
2202440
2211221
2221222
2233669
2241224
2261226
2281228
2312462
2321232
2333699
2341234
2361236
2371237
2601000260000
3071307
Total2002376257
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343932266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882b6a1f8ecb549
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6236613166386563
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_11.json b/autobahn/client/tungstenite_case_13_6_11.json new file mode 100644 index 0000000..8604a33 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_11.json @@ -0,0 +1,509 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 492, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 934, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=492&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: T0/d8pPjpqRgtPzTVp2Z4g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: L7DqCiCLJbh1ZVv2bgSX0/UAOkk=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "410": 1, + "411": 5, + "413": 2, + "414": 5, + "415": 3, + "416": 5, + "417": 2, + "418": 5, + "419": 7, + "420": 6, + "421": 6, + "422": 9, + "423": 9, + "424": 5, + "425": 7, + "426": 11, + "427": 8, + "428": 3, + "429": 13, + "430": 10, + "431": 12, + "432": 7, + "433": 8, + "434": 10, + "435": 5, + "436": 8, + "437": 8, + "438": 8, + "439": 2, + "440": 7, + "441": 13, + "442": 6, + "443": 7, + "444": 11, + "445": 6, + "446": 4, + "447": 3, + "448": 4, + "449": 10, + "450": 4, + "451": 5, + "452": 6, + "453": 6, + "454": 6, + "455": 6, + "456": 6, + "457": 11, + "458": 3, + "459": 6, + "460": 9, + "461": 7, + "462": 1, + "463": 6, + "464": 4, + "465": 4, + "466": 6, + "467": 5, + "468": 9, + "469": 9, + "470": 1, + "471": 8, + "472": 5, + "473": 4, + "474": 7, + "475": 6, + "476": 5, + "477": 8, + "478": 11, + "479": 11, + "480": 7, + "481": 10, + "482": 7, + "483": 5, + "484": 5, + "485": 10, + "486": 7, + "487": 7, + "488": 5, + "489": 8, + "490": 11, + "491": 5, + "492": 6, + "493": 11, + "494": 7, + "495": 7, + "496": 12, + "497": 8, + "498": 10, + "499": 5, + "500": 7, + "501": 10, + "502": 13, + "503": 15, + "504": 3, + "505": 12, + "506": 4, + "507": 7, + "508": 2, + "509": 6, + "510": 2, + "511": 7, + "512": 6, + "513": 2, + "514": 2, + "515": 5, + "516": 4, + "517": 5, + "518": 8, + "519": 11, + "520": 7, + "521": 5, + "522": 10, + "523": 4, + "524": 3, + "525": 7, + "526": 10, + "527": 4, + "528": 4, + "529": 2, + "530": 2, + "531": 5, + "532": 7, + "533": 4, + "534": 7, + "535": 1, + "536": 1, + "537": 3, + "538": 4, + "539": 2, + "540": 1, + "541": 2, + "542": 2, + "543": 2, + "547": 2, + "548": 2, + "549": 1, + "550": 3, + "551": 6, + "552": 2, + "553": 4, + "554": 12, + "555": 6, + "556": 7, + "557": 6, + "558": 4, + "559": 3, + "560": 4, + "561": 8, + "562": 4, + "563": 3, + "564": 3, + "565": 4, + "566": 1, + "567": 4, + "568": 5, + "569": 7, + "570": 2, + "571": 7, + "572": 4, + "573": 5, + "574": 4, + "575": 3, + "576": 3, + "577": 2, + "578": 3, + "579": 3, + "580": 2, + "581": 3, + "582": 2, + "583": 3, + "584": 2, + "585": 7, + "586": 3, + "587": 1, + "588": 3, + "589": 1, + "590": 2, + "591": 2, + "592": 1, + "593": 1, + "595": 1 + }, + "started": "2025-09-11T20:14:26.963Z", + "trafficStats": { + "incomingCompressionRatio": 0.05878857421875, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 481596, + "incomingOctetsWireLevel": 489596, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.016611433649781144, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 375946, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.018067884551850388, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "43": 5, + "44": 6, + "45": 2, + "46": 5, + "47": 6, + "48": 11, + "49": 10, + "50": 3, + "51": 1, + "52": 5, + "53": 1, + "54": 3, + "55": 1, + "56": 5, + "57": 7, + "58": 4, + "59": 6, + "60": 12, + "61": 4, + "62": 12, + "63": 11, + "64": 10, + "65": 13, + "66": 10, + "67": 18, + "68": 16, + "69": 15, + "70": 10, + "71": 21, + "72": 21, + "73": 19, + "74": 13, + "75": 16, + "76": 7, + "77": 7, + "78": 12, + "79": 11, + "80": 10, + "81": 5, + "82": 7, + "83": 4, + "84": 5, + "85": 5, + "86": 3, + "87": 1, + "88": 5, + "89": 5, + "90": 6, + "91": 9, + "92": 9, + "93": 9, + "94": 8, + "95": 10, + "96": 8, + "97": 14, + "98": 9, + "99": 10, + "100": 12, + "101": 9, + "102": 8, + "103": 12, + "104": 8, + "105": 10, + "106": 4, + "107": 6, + "108": 6, + "109": 2, + "110": 2, + "111": 11, + "112": 7, + "113": 2, + "114": 11, + "115": 7, + "116": 8, + "117": 3, + "118": 7, + "119": 8, + "120": 6, + "121": 10, + "122": 6, + "123": 4, + "124": 2, + "125": 7, + "126": 2, + "127": 3, + "130": 3, + "131": 4, + "132": 3, + "133": 3, + "134": 5, + "135": 2, + "136": 4, + "137": 3, + "138": 4, + "139": 3, + "140": 3, + "141": 6, + "142": 4, + "143": 3, + "144": 1, + "145": 1, + "146": 4, + "147": 3, + "148": 3, + "149": 1, + "150": 4, + "151": 8, + "152": 3, + "153": 2, + "154": 7, + "155": 6, + "156": 2, + "157": 1, + "158": 1, + "159": 4, + "160": 12, + "161": 5, + "162": 3, + "163": 3, + "164": 2, + "165": 2, + "166": 7, + "167": 4, + "168": 3, + "169": 3, + "170": 5, + "171": 2, + "173": 3, + "174": 3, + "175": 3, + "176": 1, + "177": 1, + "178": 3, + "180": 1, + "181": 1, + "185": 2, + "186": 1, + "187": 3, + "189": 1, + "191": 1, + "192": 3, + "193": 1, + "194": 3, + "195": 3, + "196": 1, + "197": 9, + "198": 8, + "199": 2, + "200": 7, + "201": 10, + "202": 9, + "203": 2, + "204": 7, + "205": 13, + "206": 6, + "207": 8, + "208": 5, + "209": 8, + "210": 9, + "211": 6, + "212": 8, + "213": 2, + "214": 4, + "215": 1, + "216": 2, + "217": 2, + "218": 1, + "219": 1, + "220": 2, + "221": 1, + "222": 1, + "223": 3, + "224": 1, + "226": 1, + "228": 1, + "231": 2, + "232": 1, + "233": 3, + "234": 1, + "236": 1, + "237": 1, + "260": 1000, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343932266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b6a1f8ecb549" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b6a1f8ec" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_12.html b/autobahn/client/tungstenite_case_13_6_12.html new file mode 100644 index 0000000..4ff33df --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_12.html @@ -0,0 +1,813 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.12 : Pass - 1080 ms @ 2025-09-11T20:14:27.900Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=493&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 0/21ABQcEhlVJGybWwSjKQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Wb8zhQ+ys3dYO8+MNPOZAyeOVSE=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
7141714
7181718
72021440
72153605
72232166
72342892
72442896
72553625
72642904
72796543
72864368
729118019
730107300
73196579
732139516
73364398
73475138
7351511025
7361410304
737118107
73853690
739118129
74042960
74185928
74253710
74332229
74475208
74542980
74632238
74842992
74921498
75032250
75121502
75243008
75332259
75421508
75521510
75621512
75753785
75821516
75921518
76021520
76175327
76232286
76353815
76443056
76553825
76643064
76764602
76853840
76943076
77075390
77164626
77264632
77396957
77486192
77521550
77632328
77775439
77875446
77975453
78021560
78175467
78275474
78353915
78486272
78521570
78632358
78721574
78832364
78932367
7901790
79175537
79232376
79321586
79421588
7951795
79632388
79753985
79832394
79932397
80032400
80132403
8021802
8031803
80421608
80554025
80654030
8071807
80832424
80932427
81021620
8111811
8121812
8131813
8141814
81543260
81643264
81832454
81943276
8211821
82264932
82321646
82421648
82532475
82632478
82721654
82821656
8291829
83043320
83143324
83221664
8331833
83443336
83521670
83643344
83754185
83843352
83932517
84054200
84165046
84265052
84365058
84486752
84565070
84675922
84721694
84854240
84943396
85032550
85143404
85232556
85332559
85421708
8551855
8561856
85721714
85821716
85921718
86143444
86254310
86454320
86521730
86621732
86743468
86843472
8691869
87076090
87132613
87232616
87365238
8741874
87543500
87621752
87743508
87921758
88054400
8821882
8831883
88465304
88543540
88621772
8871887
8881888
8891889
89032670
89121782
8921892
89321786
89421788
8951895
89632688
8971897
8981898
8991899
90032700
90121802
90221804
90332709
90465424
90532715
90632718
90732721
90921818
9101910
9111911
91221824
91321826
91454570
91532745
91676412
91754585
91865508
91932757
92021840
92132763
92232766
92365538
92465544
92543700
92643704
92754635
92865568
92932787
93054650
93187448
93232796
93343732
93432802
93554675
93665616
93732811
93854690
93943756
94032820
94187528
94254710
94376601
94443776
94532835
94632838
94754735
94876636
94943796
95043800
95143804
95232856
95354765
95421908
95543820
9561956
95765742
95865748
95965754
9601960
96132883
96265772
9631963
96432892
96543860
96643864
96765802
96843872
96943876
9711971
9721972
9731973
9741974
9751975
97621952
97754885
9781978
9801980
98121962
9821982
9831983
9841984
98521970
98632958
9891989
99021980
9911991
9921992
9931993
9941994
99521990
9971997
9991999
100322006
100422008
100811008
101122022
101911019
Total1002841109
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
428
5315
616
717
818
10110
13113
16232
17234
18354
19119
20480
21242
22244
24124
254100
275135
28256
30130
31262
32264
33133
34134
353105
367252
376222
38276
396234
404160
415205
423126
43286
44288
45290
464184
473141
484192
493147
502100
513153
535265
542108
556330
575285
584232
594236
604240
614244
622124
63163
648512
652130
662132
674268
684272
692138
705350
712142
727504
733219
746444
752150
76176
772154
782156
79179
805400
8110810
825410
834332
845420
855425
86186
877609
886528
894356
906540
915455
924368
938744
944376
955475
968768
979873
98141372
997693
1008800
101111111
1028816
1038824
1046624
105121260
1065530
1073321
1085540
1098872
1109990
111101110
112131456
11391017
114121368
115151725
116111276
117161872
11891062
1196714
12091080
1218968
1227854
1234492
1246744
1254500
1267882
1275635
1304520
1316786
1326792
1337931
1344536
1352270
1362272
1376822
1384552
1396834
1403420
1414564
1427994
1435715
14481152
1456870
14671022
1472294
14871036
14991341
150111650
151101510
152111672
15381224
15471078
15581240
15671092
1574628
15881264
1596954
1604640
1615805
1624648
1632326
1642328
1654660
1661166
1674668
1684672
1694676
1702340
1711171
1724688
1734692
1741174
1752350
1764704
1772354
1783534
1793537
1801180
1813543
1823546
1835915
1844736
1853555
1864744
1874748
1883564
1892378
1903570
1912382
19261152
1933579
19481552
1952390
1961196
1971197
1983594
1993597
2001200
2011201
2022404
2033609
2042408
2052410
2064824
2072414
2083624
2092418
21051050
2112422
2122424
21351065
2142428
2152430
2161216
2171217
2183654
2203660
2211221
2224888
2232446
22451120
2252450
2273681
2283684
22951145
2313693
2323696
2332466
2342468
2351235
2361236
23771659
2381238
2391239
2401240
2411241
2421242
2434972
2444976
2453735
24651230
2473741
2482496
2502500
2513753
25241008
2531253
2541254
2553765
2571257
2581258
2593777
2602331606060
3071307
Total3333733809
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02331
11000
81
Total3332
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343933266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88823a0c37ec39e4
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3361306333376563
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_12.json b/autobahn/client/tungstenite_case_13_6_12.json new file mode 100644 index 0000000..13d1600 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_12.json @@ -0,0 +1,660 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 493, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 1080, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=493&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 0/21ABQcEhlVJGybWwSjKQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Wb8zhQ+ys3dYO8+MNPOZAyeOVSE=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "714": 1, + "718": 1, + "720": 2, + "721": 5, + "722": 3, + "723": 4, + "724": 4, + "725": 5, + "726": 4, + "727": 9, + "728": 6, + "729": 11, + "730": 10, + "731": 9, + "732": 13, + "733": 6, + "734": 7, + "735": 15, + "736": 14, + "737": 11, + "738": 5, + "739": 11, + "740": 4, + "741": 8, + "742": 5, + "743": 3, + "744": 7, + "745": 4, + "746": 3, + "748": 4, + "749": 2, + "750": 3, + "751": 2, + "752": 4, + "753": 3, + "754": 2, + "755": 2, + "756": 2, + "757": 5, + "758": 2, + "759": 2, + "760": 2, + "761": 7, + "762": 3, + "763": 5, + "764": 4, + "765": 5, + "766": 4, + "767": 6, + "768": 5, + "769": 4, + "770": 7, + "771": 6, + "772": 6, + "773": 9, + "774": 8, + "775": 2, + "776": 3, + "777": 7, + "778": 7, + "779": 7, + "780": 2, + "781": 7, + "782": 7, + "783": 5, + "784": 8, + "785": 2, + "786": 3, + "787": 2, + "788": 3, + "789": 3, + "790": 1, + "791": 7, + "792": 3, + "793": 2, + "794": 2, + "795": 1, + "796": 3, + "797": 5, + "798": 3, + "799": 3, + "800": 3, + "801": 3, + "802": 1, + "803": 1, + "804": 2, + "805": 5, + "806": 5, + "807": 1, + "808": 3, + "809": 3, + "810": 2, + "811": 1, + "812": 1, + "813": 1, + "814": 1, + "815": 4, + "816": 4, + "818": 3, + "819": 4, + "821": 1, + "822": 6, + "823": 2, + "824": 2, + "825": 3, + "826": 3, + "827": 2, + "828": 2, + "829": 1, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 4, + "835": 2, + "836": 4, + "837": 5, + "838": 4, + "839": 3, + "840": 5, + "841": 6, + "842": 6, + "843": 6, + "844": 8, + "845": 6, + "846": 7, + "847": 2, + "848": 5, + "849": 4, + "850": 3, + "851": 4, + "852": 3, + "853": 3, + "854": 2, + "855": 1, + "856": 1, + "857": 2, + "858": 2, + "859": 2, + "861": 4, + "862": 5, + "864": 5, + "865": 2, + "866": 2, + "867": 4, + "868": 4, + "869": 1, + "870": 7, + "871": 3, + "872": 3, + "873": 6, + "874": 1, + "875": 4, + "876": 2, + "877": 4, + "879": 2, + "880": 5, + "882": 1, + "883": 1, + "884": 6, + "885": 4, + "886": 2, + "887": 1, + "888": 1, + "889": 1, + "890": 3, + "891": 2, + "892": 1, + "893": 2, + "894": 2, + "895": 1, + "896": 3, + "897": 1, + "898": 1, + "899": 1, + "900": 3, + "901": 2, + "902": 2, + "903": 3, + "904": 6, + "905": 3, + "906": 3, + "907": 3, + "909": 2, + "910": 1, + "911": 1, + "912": 2, + "913": 2, + "914": 5, + "915": 3, + "916": 7, + "917": 5, + "918": 6, + "919": 3, + "920": 2, + "921": 3, + "922": 3, + "923": 6, + "924": 6, + "925": 4, + "926": 4, + "927": 5, + "928": 6, + "929": 3, + "930": 5, + "931": 8, + "932": 3, + "933": 4, + "934": 3, + "935": 5, + "936": 6, + "937": 3, + "938": 5, + "939": 4, + "940": 3, + "941": 8, + "942": 5, + "943": 7, + "944": 4, + "945": 3, + "946": 3, + "947": 5, + "948": 7, + "949": 4, + "950": 4, + "951": 4, + "952": 3, + "953": 5, + "954": 2, + "955": 4, + "956": 1, + "957": 6, + "958": 6, + "959": 6, + "960": 1, + "961": 3, + "962": 6, + "963": 1, + "964": 3, + "965": 4, + "966": 4, + "967": 6, + "968": 4, + "969": 4, + "971": 1, + "972": 1, + "973": 1, + "974": 1, + "975": 1, + "976": 2, + "977": 5, + "978": 1, + "980": 1, + "981": 2, + "982": 1, + "983": 1, + "984": 1, + "985": 2, + "986": 3, + "989": 1, + "990": 2, + "991": 1, + "992": 1, + "993": 1, + "994": 1, + "995": 2, + "997": 1, + "999": 1, + "1003": 2, + "1004": 2, + "1008": 1, + "1011": 2, + "1019": 1 + }, + "started": "2025-09-11T20:14:27.900Z", + "trafficStats": { + "incomingCompressionRatio": 0.050832763671875, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 832844, + "incomingOctetsWireLevel": 840844, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.009605640432061706, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 733498, + "outgoingWebSocketFrames": 3331, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016936510269215093, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "0": 2331, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 2, + "5": 3, + "6": 1, + "7": 1, + "8": 1, + "10": 1, + "13": 1, + "16": 2, + "17": 2, + "18": 3, + "19": 1, + "20": 4, + "21": 2, + "22": 2, + "24": 1, + "25": 4, + "27": 5, + "28": 2, + "30": 1, + "31": 2, + "32": 2, + "33": 1, + "34": 1, + "35": 3, + "36": 7, + "37": 6, + "38": 2, + "39": 6, + "40": 4, + "41": 5, + "42": 3, + "43": 2, + "44": 2, + "45": 2, + "46": 4, + "47": 3, + "48": 4, + "49": 3, + "50": 2, + "51": 3, + "53": 5, + "54": 2, + "55": 6, + "57": 5, + "58": 4, + "59": 4, + "60": 4, + "61": 4, + "62": 2, + "63": 1, + "64": 8, + "65": 2, + "66": 2, + "67": 4, + "68": 4, + "69": 2, + "70": 5, + "71": 2, + "72": 7, + "73": 3, + "74": 6, + "75": 2, + "76": 1, + "77": 2, + "78": 2, + "79": 1, + "80": 5, + "81": 10, + "82": 5, + "83": 4, + "84": 5, + "85": 5, + "86": 1, + "87": 7, + "88": 6, + "89": 4, + "90": 6, + "91": 5, + "92": 4, + "93": 8, + "94": 4, + "95": 5, + "96": 8, + "97": 9, + "98": 14, + "99": 7, + "100": 8, + "101": 11, + "102": 8, + "103": 8, + "104": 6, + "105": 12, + "106": 5, + "107": 3, + "108": 5, + "109": 8, + "110": 9, + "111": 10, + "112": 13, + "113": 9, + "114": 12, + "115": 15, + "116": 11, + "117": 16, + "118": 9, + "119": 6, + "120": 9, + "121": 8, + "122": 7, + "123": 4, + "124": 6, + "125": 4, + "126": 7, + "127": 5, + "130": 4, + "131": 6, + "132": 6, + "133": 7, + "134": 4, + "135": 2, + "136": 2, + "137": 6, + "138": 4, + "139": 6, + "140": 3, + "141": 4, + "142": 7, + "143": 5, + "144": 8, + "145": 6, + "146": 7, + "147": 2, + "148": 7, + "149": 9, + "150": 11, + "151": 10, + "152": 11, + "153": 8, + "154": 7, + "155": 8, + "156": 7, + "157": 4, + "158": 8, + "159": 6, + "160": 4, + "161": 5, + "162": 4, + "163": 2, + "164": 2, + "165": 4, + "166": 1, + "167": 4, + "168": 4, + "169": 4, + "170": 2, + "171": 1, + "172": 4, + "173": 4, + "174": 1, + "175": 2, + "176": 4, + "177": 2, + "178": 3, + "179": 3, + "180": 1, + "181": 3, + "182": 3, + "183": 5, + "184": 4, + "185": 3, + "186": 4, + "187": 4, + "188": 3, + "189": 2, + "190": 3, + "191": 2, + "192": 6, + "193": 3, + "194": 8, + "195": 2, + "196": 1, + "197": 1, + "198": 3, + "199": 3, + "200": 1, + "201": 1, + "202": 2, + "203": 3, + "204": 2, + "205": 2, + "206": 4, + "207": 2, + "208": 3, + "209": 2, + "210": 5, + "211": 2, + "212": 2, + "213": 5, + "214": 2, + "215": 2, + "216": 1, + "217": 1, + "218": 3, + "220": 3, + "221": 1, + "222": 4, + "223": 2, + "224": 5, + "225": 2, + "227": 3, + "228": 3, + "229": 5, + "231": 3, + "232": 3, + "233": 2, + "234": 2, + "235": 1, + "236": 1, + "237": 7, + "238": 1, + "239": 1, + "240": 1, + "241": 1, + "242": 1, + "243": 4, + "244": 4, + "245": 3, + "246": 5, + "247": 3, + "248": 2, + "250": 2, + "251": 3, + "252": 4, + "253": 1, + "254": 1, + "255": 3, + "257": 1, + "258": 1, + "259": 3, + "260": 2331, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343933266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823a0c37ec39e4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3a0c37ec" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_13.html b/autobahn/client/tungstenite_case_13_6_13.html new file mode 100644 index 0000000..8da095b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_13.html @@ -0,0 +1,910 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.13 : Pass - 1631 ms @ 2025-09-11T20:14:28.982Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=494&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: jleo/temBoFO0KuwVE/MHQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: g7z6h2zamiSq8GBkKcXWQQEcgVA=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
134611346
135022700
135211352
135611356
135711357
135911359
136145444
136311363
136622732
136711367
136811368
136911369
137022740
137122742
137222744
137334119
137434122
137545500
137668256
137734131
137922758
138056900
138156905
138234146
138356915
138468304
138534155
138645544
138711387
138856940
138922778
139045560
139134173
139268352
139356965
139468364
139556975
139622792
139779779
139811398
139968394
140045600
140134203
140357015
140468424
140534215
140645624
140722814
140811408
140945636
141045640
141145644
141234236
141322826
141434242
141534245
141645664
141734251
141834254
141922838
142034260
142134263
142245688
142311423
142457120
142545700
142634278
142722854
142822856
142957145
143145724
143222864
143311433
143445736
143522870
143645744
143734311
1438811504
143934317
144034320
144234326
144311443
144411444
144522890
144668676
144711447
144911449
145211452
145422908
145522910
145622912
145834374
145922918
146022920
146111461
146222924
146322926
146445856
146545860
146622932
146745868
146822936
146945876
147034410
147111471
147234416
147311473
147411474
147522950
147611476
147734431
147822956
147945916
148045920
148145924
148222964
148311483
148434452
148522970
148645944
148722974
148822976
148922978
149022980
149122982
149234476
149345972
149411494
149568970
149668976
149745988
149822996
149911499
150023000
150169006
150269012
150311503
150523010
150634518
150711507
150811508
150923018
151023020
151123022
151211512
151323026
151511515
151611516
151723034
151911519
152223044
152323046
152434572
152557625
152611526
152723054
152823056
152911529
153123062
153323066
153423068
153723074
153811538
153923078
154011540
154123082
154211542
154323086
154446176
154534635
154623092
154746188
154846192
154911549
155057750
155423108
155511555
155634668
155711557
155811558
155911559
156011560
156111561
156211562
156334689
156446256
156511565
156611566
156723134
156811568
156923138
157034710
157123142
157234716
157323146
157423148
157534725
157646304
157723154
157846312
157911579
158023160
158111581
158211582
158311583
158423168
158523170
158723174
158811588
158911589
159046360
159111591
159234776
159323186
159434782
159511595
159657980
159711597
159846392
159934797
160023200
160134803
160223204
160323206
160423208
160523210
160611606
160758035
160834824
160911609
161034830
161111611
161258060
161323226
161411614
161534845
161623232
161746468
161846472
161923238
162034860
162234866
162458120
162534875
162634878
162746508
162811628
162911629
163011630
163134893
163211632
163334899
163411634
163558175
163623272
163734911
163834914
163958195
164023280
164146564
164223284
164323286
164458220
164511645
164634938
164746588
164834944
164946596
165058250
165146604
165234956
1653711571
165434962
165558275
165646624
165734971
165846632
165958295
166058300
166158305
166234986
166311663
166423328
16651118315
166634998
1667711669
1668813344
1669813352
167058350
167123342
167246688
1673610038
1674711718
1675610050
167658380
167735031
167846712
1679610074
168058400
168135043
168211682
168335049
168446736
1685711795
168658430
168723374
168823376
168935067
169023380
169158455
169235076
169423388
170535115
170811708
170911709
171123422
171223424
171411714
171511715
171611716
171711717
171923438
172011720
172311723
172511725
172711727
172811728
172911729
173111731
173435202
173511735
173711737
173835214
174011740
174123482
174246968
174323486
174546980
174635238
174811748
175123502
175223504
175323506
175411754
175611756
175711757
175823516
175935277
176011760
176123522
176211762
176335289
176423528
176547060
176635298
176747068
176811768
176935307
177135313
177235316
177511775
177623552
177747108
177811778
177911779
178111781
178211782
178611786
178711787
Total10021555992
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21020
31133
41560
5840
61060
7642
8540
91199
10330
11555
12896
1310130
148112
1510150
168128
178136
189162
1911209
2014280
2111231
2215330
238184
248192
256150
268208
278216
287196
298232
306180
315155
326192
335165
345170
355175
36272
375185
38276
395195
40280
41141
425210
434172
443132
456270
46292
47294
483144
494196
504200
513153
524208
532106
544216
552110
572114
583174
593177
60160
612122
622124
634252
642128
656390
662132
67167
696414
706420
712142
737511
744296
75175
762152
773231
783234
793237
805400
812162
82182
83183
842168
856510
863258
875435
887616
893267
903270
914364
924368
942188
95195
963288
97197
983294
995495
1003300
1012202
1023306
1036618
1041104
1054420
1062212
1072214
1086648
1094436
1104440
1111111
1124448
1134452
1143342
1154460
1162232
1172234
1193357
1203360
1213363
1223366
1232246
1242248
1262252
1272254
1301130
1312262
1321132
1336798
1342268
1351135
1363408
1374548
1381138
1391139
1401140
1414564
1422284
1432286
1441144
1452290
1461146
1474588
1492298
1512302
1524608
1541154
1551155
1563468
1572314
1594636
1601160
1612322
1622324
1641164
1664664
1672334
1681168
1692338
1701170
1712342
1722344
1732346
1743522
1752350
1762352
1772354
1791179
1802360
1811181
1821182
1832366
1841184
1853555
1862372
1872374
1882376
1894756
1904760
19161146
1923576
1932386
1942388
1951195
1962392
1973591
1983594
1992398
2002400
2011201
2021202
2033609
2044816
20561230
2063618
2072414
2084832
2093627
2102420
2111211
2124848
2133639
2142428
21551075
21661296
2171217
2183654
2191219
2204880
22161326
2223666
2232446
2244896
2253675
2264904
2273681
2284912
2293687
2304920
2313693
2324928
23361398
23451170
2353705
2362472
23771659
23892142
23951195
24071680
2412482
242102420
2434972
2444976
24581960
24661476
24871736
249133237
25041000
251112761
25261512
253102530
254102540
255102550
256164096
257133341
258184644
259143626
26051161330160
3071307
Total61181454544
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05116
11000
81
Total6117
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343934266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888283af620e8047
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3833616636323065
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_13.json b/autobahn/client/tungstenite_case_13_6_13.json new file mode 100644 index 0000000..ddccf12 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_13.json @@ -0,0 +1,757 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 494, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 1631, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=494&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: jleo/temBoFO0KuwVE/MHQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: g7z6h2zamiSq8GBkKcXWQQEcgVA=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1346": 1, + "1350": 2, + "1352": 1, + "1356": 1, + "1357": 1, + "1359": 1, + "1361": 4, + "1363": 1, + "1366": 2, + "1367": 1, + "1368": 1, + "1369": 1, + "1370": 2, + "1371": 2, + "1372": 2, + "1373": 3, + "1374": 3, + "1375": 4, + "1376": 6, + "1377": 3, + "1379": 2, + "1380": 5, + "1381": 5, + "1382": 3, + "1383": 5, + "1384": 6, + "1385": 3, + "1386": 4, + "1387": 1, + "1388": 5, + "1389": 2, + "1390": 4, + "1391": 3, + "1392": 6, + "1393": 5, + "1394": 6, + "1395": 5, + "1396": 2, + "1397": 7, + "1398": 1, + "1399": 6, + "1400": 4, + "1401": 3, + "1403": 5, + "1404": 6, + "1405": 3, + "1406": 4, + "1407": 2, + "1408": 1, + "1409": 4, + "1410": 4, + "1411": 4, + "1412": 3, + "1413": 2, + "1414": 3, + "1415": 3, + "1416": 4, + "1417": 3, + "1418": 3, + "1419": 2, + "1420": 3, + "1421": 3, + "1422": 4, + "1423": 1, + "1424": 5, + "1425": 4, + "1426": 3, + "1427": 2, + "1428": 2, + "1429": 5, + "1431": 4, + "1432": 2, + "1433": 1, + "1434": 4, + "1435": 2, + "1436": 4, + "1437": 3, + "1438": 8, + "1439": 3, + "1440": 3, + "1442": 3, + "1443": 1, + "1444": 1, + "1445": 2, + "1446": 6, + "1447": 1, + "1449": 1, + "1452": 1, + "1454": 2, + "1455": 2, + "1456": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 1, + "1462": 2, + "1463": 2, + "1464": 4, + "1465": 4, + "1466": 2, + "1467": 4, + "1468": 2, + "1469": 4, + "1470": 3, + "1471": 1, + "1472": 3, + "1473": 1, + "1474": 1, + "1475": 2, + "1476": 1, + "1477": 3, + "1478": 2, + "1479": 4, + "1480": 4, + "1481": 4, + "1482": 2, + "1483": 1, + "1484": 3, + "1485": 2, + "1486": 4, + "1487": 2, + "1488": 2, + "1489": 2, + "1490": 2, + "1491": 2, + "1492": 3, + "1493": 4, + "1494": 1, + "1495": 6, + "1496": 6, + "1497": 4, + "1498": 2, + "1499": 1, + "1500": 2, + "1501": 6, + "1502": 6, + "1503": 1, + "1505": 2, + "1506": 3, + "1507": 1, + "1508": 1, + "1509": 2, + "1510": 2, + "1511": 2, + "1512": 1, + "1513": 2, + "1515": 1, + "1516": 1, + "1517": 2, + "1519": 1, + "1522": 2, + "1523": 2, + "1524": 3, + "1525": 5, + "1526": 1, + "1527": 2, + "1528": 2, + "1529": 1, + "1531": 2, + "1533": 2, + "1534": 2, + "1537": 2, + "1538": 1, + "1539": 2, + "1540": 1, + "1541": 2, + "1542": 1, + "1543": 2, + "1544": 4, + "1545": 3, + "1546": 2, + "1547": 4, + "1548": 4, + "1549": 1, + "1550": 5, + "1554": 2, + "1555": 1, + "1556": 3, + "1557": 1, + "1558": 1, + "1559": 1, + "1560": 1, + "1561": 1, + "1562": 1, + "1563": 3, + "1564": 4, + "1565": 1, + "1566": 1, + "1567": 2, + "1568": 1, + "1569": 2, + "1570": 3, + "1571": 2, + "1572": 3, + "1573": 2, + "1574": 2, + "1575": 3, + "1576": 4, + "1577": 2, + "1578": 4, + "1579": 1, + "1580": 2, + "1581": 1, + "1582": 1, + "1583": 1, + "1584": 2, + "1585": 2, + "1587": 2, + "1588": 1, + "1589": 1, + "1590": 4, + "1591": 1, + "1592": 3, + "1593": 2, + "1594": 3, + "1595": 1, + "1596": 5, + "1597": 1, + "1598": 4, + "1599": 3, + "1600": 2, + "1601": 3, + "1602": 2, + "1603": 2, + "1604": 2, + "1605": 2, + "1606": 1, + "1607": 5, + "1608": 3, + "1609": 1, + "1610": 3, + "1611": 1, + "1612": 5, + "1613": 2, + "1614": 1, + "1615": 3, + "1616": 2, + "1617": 4, + "1618": 4, + "1619": 2, + "1620": 3, + "1622": 3, + "1624": 5, + "1625": 3, + "1626": 3, + "1627": 4, + "1628": 1, + "1629": 1, + "1630": 1, + "1631": 3, + "1632": 1, + "1633": 3, + "1634": 1, + "1635": 5, + "1636": 2, + "1637": 3, + "1638": 3, + "1639": 5, + "1640": 2, + "1641": 4, + "1642": 2, + "1643": 2, + "1644": 5, + "1645": 1, + "1646": 3, + "1647": 4, + "1648": 3, + "1649": 4, + "1650": 5, + "1651": 4, + "1652": 3, + "1653": 7, + "1654": 3, + "1655": 5, + "1656": 4, + "1657": 3, + "1658": 4, + "1659": 5, + "1660": 5, + "1661": 5, + "1662": 3, + "1663": 1, + "1664": 2, + "1665": 11, + "1666": 3, + "1667": 7, + "1668": 8, + "1669": 8, + "1670": 5, + "1671": 2, + "1672": 4, + "1673": 6, + "1674": 7, + "1675": 6, + "1676": 5, + "1677": 3, + "1678": 4, + "1679": 6, + "1680": 5, + "1681": 3, + "1682": 1, + "1683": 3, + "1684": 4, + "1685": 7, + "1686": 5, + "1687": 2, + "1688": 2, + "1689": 3, + "1690": 2, + "1691": 5, + "1692": 3, + "1694": 2, + "1705": 3, + "1708": 1, + "1709": 1, + "1711": 2, + "1712": 2, + "1714": 1, + "1715": 1, + "1716": 1, + "1717": 1, + "1719": 2, + "1720": 1, + "1723": 1, + "1725": 1, + "1727": 1, + "1728": 1, + "1729": 1, + "1731": 1, + "1734": 3, + "1735": 1, + "1737": 1, + "1738": 3, + "1740": 1, + "1741": 2, + "1742": 4, + "1743": 2, + "1745": 4, + "1746": 3, + "1748": 1, + "1751": 2, + "1752": 2, + "1753": 2, + "1754": 1, + "1756": 1, + "1757": 1, + "1758": 2, + "1759": 3, + "1760": 1, + "1761": 2, + "1762": 1, + "1763": 3, + "1764": 2, + "1765": 4, + "1766": 3, + "1767": 4, + "1768": 1, + "1769": 3, + "1771": 3, + "1772": 3, + "1775": 1, + "1776": 2, + "1777": 4, + "1778": 1, + "1779": 1, + "1781": 1, + "1782": 1, + "1786": 1, + "1787": 1 + }, + "started": "2025-09-11T20:14:28.982Z", + "trafficStats": { + "incomingCompressionRatio": 0.04723287963867188, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1547727, + "incomingOctetsWireLevel": 1555727, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.005168870220652609, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1454233, + "outgoingWebSocketFrames": 6116, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016331379969459034, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "0": 5116, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 10, + "3": 11, + "4": 15, + "5": 8, + "6": 10, + "7": 6, + "8": 5, + "9": 11, + "10": 3, + "11": 5, + "12": 8, + "13": 10, + "14": 8, + "15": 10, + "16": 8, + "17": 8, + "18": 9, + "19": 11, + "20": 14, + "21": 11, + "22": 15, + "23": 8, + "24": 8, + "25": 6, + "26": 8, + "27": 8, + "28": 7, + "29": 8, + "30": 6, + "31": 5, + "32": 6, + "33": 5, + "34": 5, + "35": 5, + "36": 2, + "37": 5, + "38": 2, + "39": 5, + "40": 2, + "41": 1, + "42": 5, + "43": 4, + "44": 3, + "45": 6, + "46": 2, + "47": 2, + "48": 3, + "49": 4, + "50": 4, + "51": 3, + "52": 4, + "53": 2, + "54": 4, + "55": 2, + "57": 2, + "58": 3, + "59": 3, + "60": 1, + "61": 2, + "62": 2, + "63": 4, + "64": 2, + "65": 6, + "66": 2, + "67": 1, + "69": 6, + "70": 6, + "71": 2, + "73": 7, + "74": 4, + "75": 1, + "76": 2, + "77": 3, + "78": 3, + "79": 3, + "80": 5, + "81": 2, + "82": 1, + "83": 1, + "84": 2, + "85": 6, + "86": 3, + "87": 5, + "88": 7, + "89": 3, + "90": 3, + "91": 4, + "92": 4, + "94": 2, + "95": 1, + "96": 3, + "97": 1, + "98": 3, + "99": 5, + "100": 3, + "101": 2, + "102": 3, + "103": 6, + "104": 1, + "105": 4, + "106": 2, + "107": 2, + "108": 6, + "109": 4, + "110": 4, + "111": 1, + "112": 4, + "113": 4, + "114": 3, + "115": 4, + "116": 2, + "117": 2, + "119": 3, + "120": 3, + "121": 3, + "122": 3, + "123": 2, + "124": 2, + "126": 2, + "127": 2, + "130": 1, + "131": 2, + "132": 1, + "133": 6, + "134": 2, + "135": 1, + "136": 3, + "137": 4, + "138": 1, + "139": 1, + "140": 1, + "141": 4, + "142": 2, + "143": 2, + "144": 1, + "145": 2, + "146": 1, + "147": 4, + "149": 2, + "151": 2, + "152": 4, + "154": 1, + "155": 1, + "156": 3, + "157": 2, + "159": 4, + "160": 1, + "161": 2, + "162": 2, + "164": 1, + "166": 4, + "167": 2, + "168": 1, + "169": 2, + "170": 1, + "171": 2, + "172": 2, + "173": 2, + "174": 3, + "175": 2, + "176": 2, + "177": 2, + "179": 1, + "180": 2, + "181": 1, + "182": 1, + "183": 2, + "184": 1, + "185": 3, + "186": 2, + "187": 2, + "188": 2, + "189": 4, + "190": 4, + "191": 6, + "192": 3, + "193": 2, + "194": 2, + "195": 1, + "196": 2, + "197": 3, + "198": 3, + "199": 2, + "200": 2, + "201": 1, + "202": 1, + "203": 3, + "204": 4, + "205": 6, + "206": 3, + "207": 2, + "208": 4, + "209": 3, + "210": 2, + "211": 1, + "212": 4, + "213": 3, + "214": 2, + "215": 5, + "216": 6, + "217": 1, + "218": 3, + "219": 1, + "220": 4, + "221": 6, + "222": 3, + "223": 2, + "224": 4, + "225": 3, + "226": 4, + "227": 3, + "228": 4, + "229": 3, + "230": 4, + "231": 3, + "232": 4, + "233": 6, + "234": 5, + "235": 3, + "236": 2, + "237": 7, + "238": 9, + "239": 5, + "240": 7, + "241": 2, + "242": 10, + "243": 4, + "244": 4, + "245": 8, + "246": 6, + "248": 7, + "249": 13, + "250": 4, + "251": 11, + "252": 6, + "253": 10, + "254": 10, + "255": 10, + "256": 16, + "257": 13, + "258": 18, + "259": 14, + "260": 5116, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343934266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888283af620e8047" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "83af620e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_14.html b/autobahn/client/tungstenite_case_13_6_14.html new file mode 100644 index 0000000..7aaa0b9 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_14.html @@ -0,0 +1,589 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.14 : Pass - 2490 ms @ 2025-09-11T20:14:30.617Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=495&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: eAHcrZoZzpFMezU7RAxjvg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: q4sroxxTtS8d4SWqHmSt2FZeQw4=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
290012900
290812908
290912909
291025820
291212912
291425828
291538745
2916411664
291738751
2918514590
291925838
2920514600
2921514605
292238766
2923617538
2924617544
2925617550
2926617556
2927823416
2928617568
2929617574
2930617580
2931823448
2932617592
29331029330
29341235208
29351441090
29362058720
29371441118
29382367574
29392779353
29402264680
29412676466
29421441188
29431852974
29441647104
29451853010
29461955974
29471132417
29481956012
29491750133
2950926550
29511647216
2952720664
29531029530
29541441356
29551235460
29561132516
2957720699
29581647328
2959720713
29601132560
296138883
29621853316
29631132593
2964720748
2965514825
2966926694
29671235604
2968617808
2969514845
297038910
297125942
2972411888
297338919
297425948
2975617850
2976514880
2977514885
297925958
298025960
2982514910
298325966
298425968
298525970
298638958
298738961
298838964
298912989
299012990
299112991
299312993
299425988
299612996
299812998
300113001
300313003
3004412016
300513005
300626012
300739021
301113011
301213012
301513015
301613016
301713017
301826036
301913019
302013020
302213022
302313023
302426048
302526050
302626052
3028412112
302939087
303026060
3031618186
303226064
3033618198
3034927306
3035721245
3036721252
303739111
3038412152
3039412156
3040618240
304139123
3042412168
304313043
3044412176
304539135
304639138
304713047
3048412192
304913049
3050721350
3051618306
305239156
3053515265
3054412216
3055515275
3056618336
3057927513
3058515290
3059824472
30601236720
306139183
30621545930
3063824504
3064618384
30651030650
3066515330
3067927603
3068824544
3069721483
30701442980
3071927639
3072515360
3073824584
3074515370
3075412300
307613076
3077618462
3078515390
307926158
308013080
3081412324
308526170
308613086
308713087
308826176
309026180
309113091
309239276
309326186
309413094
309539285
309613096
Total10022984107
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21734
32163
428112
525125
622132
726182
820160
934306
1020200
1114154
12896
139117
1417238
1516240
1617272
1716272
1810180
199171
205100
21363
22122
23369
24496
25250
28256
29129
31131
32132
33266
35135
36136
37274
393117
414164
42142
444176
453135
46292
48296
49149
50150
51151
52152
54154
60160
61161
642128
65165
66166
67167
682136
69169
702140
74174
77177
79179
813243
822164
832166
845420
858680
865430
877609
884352
898712
902180
913273
923276
935465
9410940
95111045
96161536
9710970
98111078
996594
100191900
101121212
1026612
1039927
104121248
105121260
106121272
1079963
1087756
1099981
1107770
1116666
1124448
1134452
1142228
1153345
1161116
1176702
118111298
1198952
120131560
121101210
12291098
1235615
1242248
1253375
1411141
2412482
2421242
2432486
24451220
2454980
24661476
24751235
24861488
249122988
250174250
251225522
252266552
253287084
254174318
255358925
256194864
257317967
258205160
259235957
260107192786940
3071307
Total117212897844
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
010719
11000
81
Total11720
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343935266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828e805b178d68
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3865383035623137
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_14.json b/autobahn/client/tungstenite_case_13_6_14.json new file mode 100644 index 0000000..b01deb4 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_14.json @@ -0,0 +1,436 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 495, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 2490, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=495&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: eAHcrZoZzpFMezU7RAxjvg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: q4sroxxTtS8d4SWqHmSt2FZeQw4=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2900": 1, + "2908": 1, + "2909": 1, + "2910": 2, + "2912": 1, + "2914": 2, + "2915": 3, + "2916": 4, + "2917": 3, + "2918": 5, + "2919": 2, + "2920": 5, + "2921": 5, + "2922": 3, + "2923": 6, + "2924": 6, + "2925": 6, + "2926": 6, + "2927": 8, + "2928": 6, + "2929": 6, + "2930": 6, + "2931": 8, + "2932": 6, + "2933": 10, + "2934": 12, + "2935": 14, + "2936": 20, + "2937": 14, + "2938": 23, + "2939": 27, + "2940": 22, + "2941": 26, + "2942": 14, + "2943": 18, + "2944": 16, + "2945": 18, + "2946": 19, + "2947": 11, + "2948": 19, + "2949": 17, + "2950": 9, + "2951": 16, + "2952": 7, + "2953": 10, + "2954": 14, + "2955": 12, + "2956": 11, + "2957": 7, + "2958": 16, + "2959": 7, + "2960": 11, + "2961": 3, + "2962": 18, + "2963": 11, + "2964": 7, + "2965": 5, + "2966": 9, + "2967": 12, + "2968": 6, + "2969": 5, + "2970": 3, + "2971": 2, + "2972": 4, + "2973": 3, + "2974": 2, + "2975": 6, + "2976": 5, + "2977": 5, + "2979": 2, + "2980": 2, + "2982": 5, + "2983": 2, + "2984": 2, + "2985": 2, + "2986": 3, + "2987": 3, + "2988": 3, + "2989": 1, + "2990": 1, + "2991": 1, + "2993": 1, + "2994": 2, + "2996": 1, + "2998": 1, + "3001": 1, + "3003": 1, + "3004": 4, + "3005": 1, + "3006": 2, + "3007": 3, + "3011": 1, + "3012": 1, + "3015": 1, + "3016": 1, + "3017": 1, + "3018": 2, + "3019": 1, + "3020": 1, + "3022": 1, + "3023": 1, + "3024": 2, + "3025": 2, + "3026": 2, + "3028": 4, + "3029": 3, + "3030": 2, + "3031": 6, + "3032": 2, + "3033": 6, + "3034": 9, + "3035": 7, + "3036": 7, + "3037": 3, + "3038": 4, + "3039": 4, + "3040": 6, + "3041": 3, + "3042": 4, + "3043": 1, + "3044": 4, + "3045": 3, + "3046": 3, + "3047": 1, + "3048": 4, + "3049": 1, + "3050": 7, + "3051": 6, + "3052": 3, + "3053": 5, + "3054": 4, + "3055": 5, + "3056": 6, + "3057": 9, + "3058": 5, + "3059": 8, + "3060": 12, + "3061": 3, + "3062": 15, + "3063": 8, + "3064": 6, + "3065": 10, + "3066": 5, + "3067": 9, + "3068": 8, + "3069": 7, + "3070": 14, + "3071": 9, + "3072": 5, + "3073": 8, + "3074": 5, + "3075": 4, + "3076": 1, + "3077": 6, + "3078": 5, + "3079": 2, + "3080": 1, + "3081": 4, + "3085": 2, + "3086": 1, + "3087": 1, + "3088": 2, + "3090": 2, + "3091": 1, + "3092": 3, + "3093": 2, + "3094": 1, + "3095": 3, + "3096": 1 + }, + "started": "2025-09-11T20:14:30.617Z", + "trafficStats": { + "incomingCompressionRatio": 0.045407745361328126, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2975842, + "incomingOctetsWireLevel": 2983842, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0026883147693997195, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2897533, + "outgoingWebSocketFrames": 11719, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015932159294945854, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "0": 10719, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 17, + "3": 21, + "4": 28, + "5": 25, + "6": 22, + "7": 26, + "8": 20, + "9": 34, + "10": 20, + "11": 14, + "12": 8, + "13": 9, + "14": 17, + "15": 16, + "16": 17, + "17": 16, + "18": 10, + "19": 9, + "20": 5, + "21": 3, + "22": 1, + "23": 3, + "24": 4, + "25": 2, + "28": 2, + "29": 1, + "31": 1, + "32": 1, + "33": 2, + "35": 1, + "36": 1, + "37": 2, + "39": 3, + "41": 4, + "42": 1, + "44": 4, + "45": 3, + "46": 2, + "48": 2, + "49": 1, + "50": 1, + "51": 1, + "52": 1, + "54": 1, + "60": 1, + "61": 1, + "64": 2, + "65": 1, + "66": 1, + "67": 1, + "68": 2, + "69": 1, + "70": 2, + "74": 1, + "77": 1, + "79": 1, + "81": 3, + "82": 2, + "83": 2, + "84": 5, + "85": 8, + "86": 5, + "87": 7, + "88": 4, + "89": 8, + "90": 2, + "91": 3, + "92": 3, + "93": 5, + "94": 10, + "95": 11, + "96": 16, + "97": 10, + "98": 11, + "99": 6, + "100": 19, + "101": 12, + "102": 6, + "103": 9, + "104": 12, + "105": 12, + "106": 12, + "107": 9, + "108": 7, + "109": 9, + "110": 7, + "111": 6, + "112": 4, + "113": 4, + "114": 2, + "115": 3, + "116": 1, + "117": 6, + "118": 11, + "119": 8, + "120": 13, + "121": 10, + "122": 9, + "123": 5, + "124": 2, + "125": 3, + "141": 1, + "241": 2, + "242": 1, + "243": 2, + "244": 5, + "245": 4, + "246": 6, + "247": 5, + "248": 6, + "249": 12, + "250": 17, + "251": 22, + "252": 26, + "253": 28, + "254": 17, + "255": 35, + "256": 19, + "257": 31, + "258": 20, + "259": 23, + "260": 10719, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343935266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828e805b178d68" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8e805b17" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_15.html b/autobahn/client/tungstenite_case_13_6_15.html new file mode 100644 index 0000000..ed9a723 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_15.html @@ -0,0 +1,608 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.15 : Pass - 3386 ms @ 2025-09-11T20:14:33.108Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=496&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Ks4Jphg9QD6H8wZTKh7Iqg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Y5aVkU3shkCBtA7m/Fki4RrhI8w=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
326
4416
515
6212
7214
818
9218
10110
11333
12112
13339
14684
15230
16232
17234
23123
30130
31262
33133
34134
36136
37274
393117
40140
41141
42284
433129
449396
455225
463138
4710470
4810480
4915735
50201000
5114714
5216832
5314742
54211134
55261430
5617952
5711627
58251450
59211239
60241440
6116976
62251550
63241512
64241536
6512780
66171122
67191273
6813884
699621
70251750
71251775
72161152
7312876
7411814
758600
7610760
77131001
784312
796474
803240
81181
822164
832166
845420
853255
863258
875435
884352
89121068
9010900
917637
92111012
939837
942188
953285
972194
983294
99199
1121112
1131113
1141114
1163348
1172234
1191119
1271127
1302260
1992398
2001200
2011201
2021202
2032406
20451020
20571435
20651030
2074828
2081208
20961254
21081680
21161266
2124848
213112343
21481712
21571505
21661296
21761302
2184872
2194876
22051100
22151105
22271554
223173791
224163584
225143150
226132938
22761362
22861368
229102290
230163680
231133003
23292088
23361398
23461404
23561410
2362472
2374948
23851190
2394956
24061440
2413723
2432486
2442488
2462492
2481248
2491249
2513753
2533759
2542508
2561256
2582516
2591259
260217025642520
3071307
Total227045753817
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
021702
11000
81
Total22703
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343936266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820a1b609d09f3
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3061316236303964
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_15.json b/autobahn/client/tungstenite_case_13_6_15.json new file mode 100644 index 0000000..d3d1d81 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_15.json @@ -0,0 +1,455 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 496, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 3386, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=496&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Ks4Jphg9QD6H8wZTKh7Iqg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Y5aVkU3shkCBtA7m/Fki4RrhI8w=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:14:33.108Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5753506, + "outgoingWebSocketFrames": 22702, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01578503761764009, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "0": 21702, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 2, + "4": 4, + "5": 1, + "6": 2, + "7": 2, + "8": 1, + "9": 2, + "10": 1, + "11": 3, + "12": 1, + "13": 3, + "14": 6, + "15": 2, + "16": 2, + "17": 2, + "23": 1, + "30": 1, + "31": 2, + "33": 1, + "34": 1, + "36": 1, + "37": 2, + "39": 3, + "40": 1, + "41": 1, + "42": 2, + "43": 3, + "44": 9, + "45": 5, + "46": 3, + "47": 10, + "48": 10, + "49": 15, + "50": 20, + "51": 14, + "52": 16, + "53": 14, + "54": 21, + "55": 26, + "56": 17, + "57": 11, + "58": 25, + "59": 21, + "60": 24, + "61": 16, + "62": 25, + "63": 24, + "64": 24, + "65": 12, + "66": 17, + "67": 19, + "68": 13, + "69": 9, + "70": 25, + "71": 25, + "72": 16, + "73": 12, + "74": 11, + "75": 8, + "76": 10, + "77": 13, + "78": 4, + "79": 6, + "80": 3, + "81": 1, + "82": 2, + "83": 2, + "84": 5, + "85": 3, + "86": 3, + "87": 5, + "88": 4, + "89": 12, + "90": 10, + "91": 7, + "92": 11, + "93": 9, + "94": 2, + "95": 3, + "97": 2, + "98": 3, + "99": 1, + "112": 1, + "113": 1, + "114": 1, + "116": 3, + "117": 2, + "119": 1, + "127": 1, + "130": 2, + "199": 2, + "200": 1, + "201": 1, + "202": 1, + "203": 2, + "204": 5, + "205": 7, + "206": 5, + "207": 4, + "208": 1, + "209": 6, + "210": 8, + "211": 6, + "212": 4, + "213": 11, + "214": 8, + "215": 7, + "216": 6, + "217": 6, + "218": 4, + "219": 4, + "220": 5, + "221": 5, + "222": 7, + "223": 17, + "224": 16, + "225": 14, + "226": 13, + "227": 6, + "228": 6, + "229": 10, + "230": 16, + "231": 13, + "232": 9, + "233": 6, + "234": 6, + "235": 6, + "236": 2, + "237": 4, + "238": 5, + "239": 4, + "240": 6, + "241": 3, + "243": 2, + "244": 2, + "246": 2, + "248": 1, + "249": 1, + "251": 3, + "253": 3, + "254": 2, + "256": 1, + "258": 2, + "259": 1, + "260": 21702, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343936266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820a1b609d09f3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0a1b609d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_16.html b/autobahn/client/tungstenite_case_13_6_16.html new file mode 100644 index 0000000..852ff6b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_16.html @@ -0,0 +1,609 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.16 : Pass - 3301 ms @ 2025-09-11T20:14:36.496Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=497&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: XMCikcnQ4Xbj8+fRCnAtNw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: nMDGf9G0blAU9ZvCaDg/WhfQc/4=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3071307
4552910
4561456
4571457
4581458
4592918
46052300
46173227
46252310
46341852
4641464
46562790
46683728
46762802
46841872
469115159
47083760
47173297
47262832
47362838
47441896
47541900
47652380
47752385
47873346
479178143
480167680
481146734
482136266
48362898
48462904
485104850
486167776
487136331
48894392
48962934
49062940
49162946
4922984
49341972
49452470
49541980
49662976
49731491
4992998
50021000
50221004
5041504
5051505
50731521
50931527
51021020
5121512
51421028
5151515
51721034
51831554
5191519
52021040
52121042
5221522
52321046
5241524
52531575
5261526
52731581
52863168
52921058
53021060
53121062
5371537
5441544
54521090
5471547
5481548
5501550
55121102
55331659
5541554
5551555
55621112
55731671
55895022
55952795
56031680
561105610
562105620
563158445
5642011280
565147910
566169056
567147938
5682111928
5692614794
570179690
571116281
5722514300
5732112033
5742413776
575169200
5762514400
5772413848
5782413872
579126948
580179860
5811911039
582137566
58395247
5842514600
5852514625
586169376
587127044
588116468
58984712
590105900
591137683
59242368
59363558
59431782
5951595
59621192
59721194
59852990
59931797
60031800
60153005
60242408
603127236
604106040
60574235
606116666
60795463
60821216
60931827
61121222
61231836
6131613
6261626
6271627
6281628
63031890
63121262
6331633
6411641
64221284
102850005140000
Total60025688409
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05000
11000
81
Total6001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343937266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888279423acf7aaa
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3739343233616366
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_16.json b/autobahn/client/tungstenite_case_13_6_16.json new file mode 100644 index 0000000..64a0952 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_16.json @@ -0,0 +1,456 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 497, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 3301, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=497&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: XMCikcnQ4Xbj8+fRCnAtNw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: nMDGf9G0blAU9ZvCaDg/WhfQc/4=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:14:36.496Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5688098, + "outgoingWebSocketFrames": 6000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0042372148222011696, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "0": 5000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "307": 1, + "455": 2, + "456": 1, + "457": 1, + "458": 1, + "459": 2, + "460": 5, + "461": 7, + "462": 5, + "463": 4, + "464": 1, + "465": 6, + "466": 8, + "467": 6, + "468": 4, + "469": 11, + "470": 8, + "471": 7, + "472": 6, + "473": 6, + "474": 4, + "475": 4, + "476": 5, + "477": 5, + "478": 7, + "479": 17, + "480": 16, + "481": 14, + "482": 13, + "483": 6, + "484": 6, + "485": 10, + "486": 16, + "487": 13, + "488": 9, + "489": 6, + "490": 6, + "491": 6, + "492": 2, + "493": 4, + "494": 5, + "495": 4, + "496": 6, + "497": 3, + "499": 2, + "500": 2, + "502": 2, + "504": 1, + "505": 1, + "507": 3, + "509": 3, + "510": 2, + "512": 1, + "514": 2, + "515": 1, + "517": 2, + "518": 3, + "519": 1, + "520": 2, + "521": 2, + "522": 1, + "523": 2, + "524": 1, + "525": 3, + "526": 1, + "527": 3, + "528": 6, + "529": 2, + "530": 2, + "531": 2, + "537": 1, + "544": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "551": 2, + "553": 3, + "554": 1, + "555": 1, + "556": 2, + "557": 3, + "558": 9, + "559": 5, + "560": 3, + "561": 10, + "562": 10, + "563": 15, + "564": 20, + "565": 14, + "566": 16, + "567": 14, + "568": 21, + "569": 26, + "570": 17, + "571": 11, + "572": 25, + "573": 21, + "574": 24, + "575": 16, + "576": 25, + "577": 24, + "578": 24, + "579": 12, + "580": 17, + "581": 19, + "582": 13, + "583": 9, + "584": 25, + "585": 25, + "586": 16, + "587": 12, + "588": 11, + "589": 8, + "590": 10, + "591": 13, + "592": 4, + "593": 6, + "594": 3, + "595": 1, + "596": 2, + "597": 2, + "598": 5, + "599": 3, + "600": 3, + "601": 5, + "602": 4, + "603": 12, + "604": 10, + "605": 7, + "606": 11, + "607": 9, + "608": 2, + "609": 3, + "611": 2, + "612": 3, + "613": 1, + "626": 1, + "627": 1, + "628": 1, + "630": 3, + "631": 2, + "633": 1, + "641": 1, + "642": 2, + "1028": 5000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343937266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888279423acf7aaa" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "79423acf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_17.html b/autobahn/client/tungstenite_case_13_6_17.html new file mode 100644 index 0000000..b2d2172 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_17.html @@ -0,0 +1,609 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.17 : Pass - 3161 ms @ 2025-09-11T20:14:39.799Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=498&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: I92El6Bxg9HsrGQOOffGLw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xBQTFAbHP+CLgKsTFgMRE/JKwFs=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3071307
147922958
148011480
148111481
148211482
148322966
148457420
1485710395
148657430
148745948
148811488
148968934
1490811920
149168946
149245968
14931116423
1494811952
1495710465
149668976
149768982
149845992
149945996
150057500
150157505
1502710514
15031725551
15041624064
15051421070
15061319578
150769042
150869048
15091015090
15101624160
15111319643
1512913608
151369078
151469084
151569090
151623032
151746068
151857590
151946076
152069120
152134563
152323046
152423048
152623052
152811528
152911529
153134593
153334599
153423068
153611536
153823076
153911539
154123082
154234626
154311543
154423088
154523090
154611546
154723094
154811548
154934647
155011550
155134653
155269312
155323106
155423108
155523110
156111561
156811568
156923138
157111571
157211572
157411574
157523150
157734731
157811578
157911579
158023160
158134743
1582914238
158357915
158434752
15851015850
15861015860
15871523805
15882031760
15891422246
15901625440
15911422274
15922133432
15932641418
15941727098
15951117545
15962539900
15972133537
15982438352
15991625584
16002540000
16012438424
16022438448
16031219236
16041727268
16051930495
16061320878
1607914463
16082540200
16092540225
16101625760
16111219332
16121117732
1613812904
16141016140
16151320995
161646464
161769702
161834854
161911619
162023240
162123242
162258110
162334869
162434872
162558125
162646504
16271219524
16281016280
1629711403
16301117930
1631914679
163223264
163334899
163523270
163634908
163711637
165011650
165111651
165211652
165434962
165523310
165711657
166511665
166623332
410010004100000
Total20025672409
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343938266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828c261ce78fce
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3863323631636537
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_17.json b/autobahn/client/tungstenite_case_13_6_17.json new file mode 100644 index 0000000..2919f26 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_17.json @@ -0,0 +1,456 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 498, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 3161, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=498&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: I92El6Bxg9HsrGQOOffGLw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xBQTFAbHP+CLgKsTFgMRE/JKwFs=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:14:39.799Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5672098, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014124049407337233, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "307": 1, + "1479": 2, + "1480": 1, + "1481": 1, + "1482": 1, + "1483": 2, + "1484": 5, + "1485": 7, + "1486": 5, + "1487": 4, + "1488": 1, + "1489": 6, + "1490": 8, + "1491": 6, + "1492": 4, + "1493": 11, + "1494": 8, + "1495": 7, + "1496": 6, + "1497": 6, + "1498": 4, + "1499": 4, + "1500": 5, + "1501": 5, + "1502": 7, + "1503": 17, + "1504": 16, + "1505": 14, + "1506": 13, + "1507": 6, + "1508": 6, + "1509": 10, + "1510": 16, + "1511": 13, + "1512": 9, + "1513": 6, + "1514": 6, + "1515": 6, + "1516": 2, + "1517": 4, + "1518": 5, + "1519": 4, + "1520": 6, + "1521": 3, + "1523": 2, + "1524": 2, + "1526": 2, + "1528": 1, + "1529": 1, + "1531": 3, + "1533": 3, + "1534": 2, + "1536": 1, + "1538": 2, + "1539": 1, + "1541": 2, + "1542": 3, + "1543": 1, + "1544": 2, + "1545": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 3, + "1550": 1, + "1551": 3, + "1552": 6, + "1553": 2, + "1554": 2, + "1555": 2, + "1561": 1, + "1568": 1, + "1569": 2, + "1571": 1, + "1572": 1, + "1574": 1, + "1575": 2, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 3, + "1582": 9, + "1583": 5, + "1584": 3, + "1585": 10, + "1586": 10, + "1587": 15, + "1588": 20, + "1589": 14, + "1590": 16, + "1591": 14, + "1592": 21, + "1593": 26, + "1594": 17, + "1595": 11, + "1596": 25, + "1597": 21, + "1598": 24, + "1599": 16, + "1600": 25, + "1601": 24, + "1602": 24, + "1603": 12, + "1604": 17, + "1605": 19, + "1606": 13, + "1607": 9, + "1608": 25, + "1609": 25, + "1610": 16, + "1611": 12, + "1612": 11, + "1613": 8, + "1614": 10, + "1615": 13, + "1616": 4, + "1617": 6, + "1618": 3, + "1619": 1, + "1620": 2, + "1621": 2, + "1622": 5, + "1623": 3, + "1624": 3, + "1625": 5, + "1626": 4, + "1627": 12, + "1628": 10, + "1629": 7, + "1630": 11, + "1631": 9, + "1632": 2, + "1633": 3, + "1635": 2, + "1636": 3, + "1637": 1, + "1650": 1, + "1651": 1, + "1652": 1, + "1654": 3, + "1655": 2, + "1657": 1, + "1665": 1, + "1666": 2, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343938266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828c261ce78fce" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8c261ce7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_18.html b/autobahn/client/tungstenite_case_13_6_18.html new file mode 100644 index 0000000..45860fb --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_18.html @@ -0,0 +1,607 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.18 : Pass - 2840 ms @ 2025-09-11T20:14:42.962Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=499&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: NnlviOJq/lC8L0SQ7lcatw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: RggbnjZP4C7xkG00Nvf9ar/pZ4s=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
569515695
569815698
570015700
570215702
570315703
570415704
5706634236
5707422828
5708211416
5709211418
5710317130
5711739977
5712739984
5713528565
5714528570
5715951435
5716951444
5717634302
57181268616
5719845752
5720951480
57211268652
5722845776
5723845784
5724317172
5725740075
5726528630
5727528635
5728634368
5729528645
5730211460
5731422924
5732528660
5733422932
5734951606
5735422940
5736528680
5737740159
5738317214
5739422956
5740634440
574115741
5742211484
5743740201
5744422976
5745317235
5746740222
5747528735
5748528740
5749211498
5750211500
5751423004
575215752
575315753
5754423016
5755317265
5756317268
5757211514
5758423032
5760634560
5761951849
5762317286
5763211526
5764317292
5765423060
5766211532
576715767
5768423072
5769211538
5770317310
5771528855
577315773
577415774
5775211550
5776317328
5777211554
577815778
577915779
578215782
5783211566
578415784
579015790
579515795
579815798
5799211598
580115801
5802211604
5804529020
5805529025
5806317418
5807740649
5808529040
5809740663
5810634860
58111058110
5812423248
58131058130
58141058140
5815952335
5816740712
5817740719
58181163998
58191693104
5820952380
58211164031
5822952398
58231269876
58241799008
58251481550
58261375738
58271375751
58281799076
58291269948
5830846640
5831952479
58321164152
58331375829
5834635004
5835740845
5836846688
58371270044
5838423352
5839952551
58401587600
58411587615
58421375946
58431693488
58441481816
584522128590
584631181226
584719111093
58481270176
58491376037
58501481900
58511270212
58521164372
58531693648
5854635124
58551058550
58561587840
58571164427
58581270296
5859741013
5860423440
5861317583
5862423448
586315863
5864317592
586515865
5867423468
5869211738
587015870
587215872
587315873
587415874
5875211750
587615876
5877211754
587815878
587915879
5880423520
588115881
588315883
588515885
588615886
Total10025803123
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3071307
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668409
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343939266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88828046083983ae
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3830343630383339
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_18.json b/autobahn/client/tungstenite_case_13_6_18.json new file mode 100644 index 0000000..3f37a02 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_18.json @@ -0,0 +1,454 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 499, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 2840, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=499&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: NnlviOJq/lC8L0SQ7lcatw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: RggbnjZP4C7xkG00Nvf9ar/pZ4s=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "5695": 1, + "5698": 1, + "5700": 1, + "5702": 1, + "5703": 1, + "5704": 1, + "5706": 6, + "5707": 4, + "5708": 2, + "5709": 2, + "5710": 3, + "5711": 7, + "5712": 7, + "5713": 5, + "5714": 5, + "5715": 9, + "5716": 9, + "5717": 6, + "5718": 12, + "5719": 8, + "5720": 9, + "5721": 12, + "5722": 8, + "5723": 8, + "5724": 3, + "5725": 7, + "5726": 5, + "5727": 5, + "5728": 6, + "5729": 5, + "5730": 2, + "5731": 4, + "5732": 5, + "5733": 4, + "5734": 9, + "5735": 4, + "5736": 5, + "5737": 7, + "5738": 3, + "5739": 4, + "5740": 6, + "5741": 1, + "5742": 2, + "5743": 7, + "5744": 4, + "5745": 3, + "5746": 7, + "5747": 5, + "5748": 5, + "5749": 2, + "5750": 2, + "5751": 4, + "5752": 1, + "5753": 1, + "5754": 4, + "5755": 3, + "5756": 3, + "5757": 2, + "5758": 4, + "5760": 6, + "5761": 9, + "5762": 3, + "5763": 2, + "5764": 3, + "5765": 4, + "5766": 2, + "5767": 1, + "5768": 4, + "5769": 2, + "5770": 3, + "5771": 5, + "5773": 1, + "5774": 1, + "5775": 2, + "5776": 3, + "5777": 2, + "5778": 1, + "5779": 1, + "5782": 1, + "5783": 2, + "5784": 1, + "5790": 1, + "5795": 1, + "5798": 1, + "5799": 2, + "5801": 1, + "5802": 2, + "5804": 5, + "5805": 5, + "5806": 3, + "5807": 7, + "5808": 5, + "5809": 7, + "5810": 6, + "5811": 10, + "5812": 4, + "5813": 10, + "5814": 10, + "5815": 9, + "5816": 7, + "5817": 7, + "5818": 11, + "5819": 16, + "5820": 9, + "5821": 11, + "5822": 9, + "5823": 12, + "5824": 17, + "5825": 14, + "5826": 13, + "5827": 13, + "5828": 17, + "5829": 12, + "5830": 8, + "5831": 9, + "5832": 11, + "5833": 13, + "5834": 6, + "5835": 7, + "5836": 8, + "5837": 12, + "5838": 4, + "5839": 9, + "5840": 15, + "5841": 15, + "5842": 13, + "5843": 16, + "5844": 14, + "5845": 22, + "5846": 31, + "5847": 19, + "5848": 12, + "5849": 13, + "5850": 14, + "5851": 12, + "5852": 11, + "5853": 16, + "5854": 6, + "5855": 10, + "5856": 15, + "5857": 11, + "5858": 12, + "5859": 7, + "5860": 4, + "5861": 3, + "5862": 4, + "5863": 1, + "5864": 3, + "5865": 1, + "5867": 4, + "5869": 2, + "5870": 1, + "5872": 1, + "5873": 1, + "5874": 1, + "5875": 2, + "5876": 1, + "5877": 2, + "5878": 1, + "5879": 1, + "5880": 4, + "5881": 1, + "5883": 1, + "5885": 1, + "5886": 1 + }, + "started": "2025-09-11T20:14:42.962Z", + "trafficStats": { + "incomingCompressionRatio": 0.044211257934570314, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 5794858, + "incomingOctetsWireLevel": 5802858, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.001380534259855893, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "307": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343939266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828046083983ae" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "80460839" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_2.html b/autobahn/client/tungstenite_case_13_6_2.html new file mode 100644 index 0000000..a9048c8 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_2.html @@ -0,0 +1,342 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.2 : Pass - 138 ms @ 2025-09-11T20:14:19.100Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=483&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: T33M3e8FcN1qVl3rA0U2gw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dUicJLbI+Ms7ZlW6B9hOOyxsN0c=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
395195
408320
41311271
42351470
4311473
4415660
4517765
4620920
47221034
48562688
49542646
5016800
51502550
52763952
53834399
54844536
55613355
56402240
57211197
5811638
5916944
6011660
61301830
62895518
63684284
64362304
6514910
6615990
675335
2571257
Total100254149
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
74413087
81080
91431287
101741740
1136396
1268816
13781014
1428392
1516240
19119
24124
32132
37137
38138
51151
3071307
Total10029564
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343833266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882380655103bee
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3338303635353130
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_2.json b/autobahn/client/tungstenite_case_13_6_2.json new file mode 100644 index 0000000..bf1aec9 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_2.json @@ -0,0 +1,189 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 483, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 138, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=483&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: T33M3e8FcN1qVl3rA0U2gw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dUicJLbI+Ms7ZlW6B9hOOyxsN0c=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "39": 5, + "40": 8, + "41": 31, + "42": 35, + "43": 11, + "44": 15, + "45": 17, + "46": 20, + "47": 22, + "48": 56, + "49": 54, + "50": 16, + "51": 50, + "52": 76, + "53": 83, + "54": 84, + "55": 61, + "56": 40, + "57": 21, + "58": 11, + "59": 16, + "60": 11, + "61": 30, + "62": 89, + "63": 68, + "64": 36, + "65": 14, + "66": 15, + "67": 5, + "257": 1 + }, + "started": "2025-09-11T20:14:19.100Z", + "trafficStats": { + "incomingCompressionRatio": 0.7481875, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 47884, + "incomingOctetsWireLevel": 53884, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.12530281513658006, + "outgoingCompressionRatio": 0.113328125, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 7253, + "outgoingOctetsWireLevel": 9253, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.2757479663587481, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 441, + "8": 10, + "9": 143, + "10": 174, + "11": 36, + "12": 68, + "13": 78, + "14": 28, + "15": 16, + "19": 1, + "24": 1, + "32": 1, + "37": 1, + "38": 1, + "51": 1, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343833266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882380655103bee" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "38065510" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_3.html b/autobahn/client/tungstenite_case_13_6_3.html new file mode 100644 index 0000000..f5abc40 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_3.html @@ -0,0 +1,361 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.3 : Pass - 185 ms @ 2025-09-11T20:14:19.239Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=484&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /JO9uR4zpZ2AFW/6F8oFDA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sl0evZ7kOxsWl+tRbPhArzsUgD0=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1271127
1282256
130131690
131101310
134212814
135283780
136364896
137699453
1388111178
13911015290
14010214280
1418812408
1429813916
1438211726
144699936
145628990
146304380
147253675
148162368
149121788
1504600
1515755
1524608
1534612
1544616
1552310
1566936
1573471
1584632
1592318
1602320
1612322
1623486
2571257
Total1002141512
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1342546
1470980
1542630
161382208
171051785
18991782
191252375
20721440
21761596
22541188
23531219
2438912
2529725
2622572
2710270
284112
295145
30130
31262
32132
33266
34134
36136
37137
39139
41282
43143
61161
66166
1471147
3071307
Total100219531
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343834266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d4ae0d91d746
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6434616530643931
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_3.json b/autobahn/client/tungstenite_case_13_6_3.json new file mode 100644 index 0000000..0e850d2 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_3.json @@ -0,0 +1,208 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 484, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 185, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=484&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /JO9uR4zpZ2AFW/6F8oFDA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sl0evZ7kOxsWl+tRbPhArzsUgD0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "127": 1, + "128": 2, + "130": 13, + "131": 10, + "134": 21, + "135": 28, + "136": 36, + "137": 69, + "138": 81, + "139": 110, + "140": 102, + "141": 88, + "142": 98, + "143": 82, + "144": 69, + "145": 62, + "146": 30, + "147": 25, + "148": 16, + "149": 12, + "150": 4, + "151": 5, + "152": 4, + "153": 4, + "154": 4, + "155": 2, + "156": 6, + "157": 3, + "158": 4, + "159": 2, + "160": 2, + "161": 2, + "162": 3, + "257": 1 + }, + "started": "2025-09-11T20:14:19.239Z", + "trafficStats": { + "incomingCompressionRatio": 0.52069921875, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 133299, + "incomingOctetsWireLevel": 141247, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0596253535285336, + "outgoingCompressionRatio": 0.0672578125, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 17218, + "outgoingOctetsWireLevel": 19220, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11627366709257754, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 42, + "14": 70, + "15": 42, + "16": 138, + "17": 105, + "18": 99, + "19": 125, + "20": 72, + "21": 76, + "22": 54, + "23": 53, + "24": 38, + "25": 29, + "26": 22, + "27": 10, + "28": 4, + "29": 5, + "30": 1, + "31": 2, + "32": 1, + "33": 2, + "34": 1, + "36": 1, + "37": 1, + "39": 1, + "41": 2, + "43": 1, + "61": 1, + "66": 1, + "147": 1, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343834266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d4ae0d91d746" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d4ae0d91" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_4.html b/autobahn/client/tungstenite_case_13_6_4.html new file mode 100644 index 0000000..41ecdf4 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_4.html @@ -0,0 +1,414 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.4 : Pass - 208 ms @ 2025-09-11T20:14:19.427Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=485&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ySWTlftuG3/wIRyoVH/G0w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Z1tIoo/AFkTF1Dk+iW4JUcJSGSc=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1601160
1633489
1643492
16671162
167101670
168101680
169142366
170264420
171244104
172417052
173406920
174468004
175457875
176559680
1776210974
178366408
1796010740
180437740
181519231
182295278
183397137
184386992
185285180
186244464
187427854
188336204
189356615
190295510
191142674
192142688
19391737
19481552
195112145
19681568
19771379
19961194
20051000
2024808
2053615
2061206
2074828
2081208
2094836
2101210
2112422
21251060
2133639
2153645
2214884
2234892
2253675
2272454
2571257
Total1002181985
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
39139
40140
414164
445220
45145
464184
479423
48221056
49331617
50321600
51391989
52683536
53482544
54633402
55603300
56673752
57663762
58271566
59492891
60291740
61181098
6216992
63311953
64181152
65161040
668528
67191273
68211428
69161104
70292030
71181278
72282016
73312263
7410740
7511825
76181368
7710770
788624
794316
803240
82182
832166
843252
863258
87187
88188
893267
912182
922184
944376
96196
97197
992198
1001100
1011101
1041104
1052210
1061106
1071107
1081108
1092218
1101110
1141114
1701170
3071307
Total100261000
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343835266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882119f968a1277
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3131396639363861
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_4.json b/autobahn/client/tungstenite_case_13_6_4.json new file mode 100644 index 0000000..5fa376f --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_4.json @@ -0,0 +1,261 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 485, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 208, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=485&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ySWTlftuG3/wIRyoVH/G0w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Z1tIoo/AFkTF1Dk+iW4JUcJSGSc=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "160": 1, + "163": 3, + "164": 3, + "166": 7, + "167": 10, + "168": 10, + "169": 14, + "170": 26, + "171": 24, + "172": 41, + "173": 40, + "174": 46, + "175": 45, + "176": 55, + "177": 62, + "178": 36, + "179": 60, + "180": 43, + "181": 51, + "182": 29, + "183": 39, + "184": 38, + "185": 28, + "186": 24, + "187": 42, + "188": 33, + "189": 35, + "190": 29, + "191": 14, + "192": 14, + "193": 9, + "194": 8, + "195": 11, + "196": 8, + "197": 7, + "199": 6, + "200": 5, + "202": 4, + "205": 3, + "206": 1, + "207": 4, + "208": 1, + "209": 4, + "210": 1, + "211": 2, + "212": 5, + "213": 3, + "215": 3, + "221": 4, + "223": 4, + "225": 3, + "227": 2, + "257": 1 + }, + "started": "2025-09-11T20:14:19.427Z", + "trafficStats": { + "incomingCompressionRatio": 0.1696484375, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 173720, + "incomingOctetsWireLevel": 181720, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.046051116739580934, + "outgoingCompressionRatio": 0.0573115234375, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 58687, + "outgoingOctetsWireLevel": 60689, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.034113176683081434, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "39": 1, + "40": 1, + "41": 4, + "44": 5, + "45": 1, + "46": 4, + "47": 9, + "48": 22, + "49": 33, + "50": 32, + "51": 39, + "52": 68, + "53": 48, + "54": 63, + "55": 60, + "56": 67, + "57": 66, + "58": 27, + "59": 49, + "60": 29, + "61": 18, + "62": 16, + "63": 31, + "64": 18, + "65": 16, + "66": 8, + "67": 19, + "68": 21, + "69": 16, + "70": 29, + "71": 18, + "72": 28, + "73": 31, + "74": 10, + "75": 11, + "76": 18, + "77": 10, + "78": 8, + "79": 4, + "80": 3, + "82": 1, + "83": 2, + "84": 3, + "86": 3, + "87": 1, + "88": 1, + "89": 3, + "91": 2, + "92": 2, + "94": 4, + "96": 1, + "97": 1, + "99": 2, + "100": 1, + "101": 1, + "104": 1, + "105": 2, + "106": 1, + "107": 1, + "108": 1, + "109": 2, + "110": 1, + "114": 1, + "170": 1, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343835266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882119f968a1277" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "119f968a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_5.html b/autobahn/client/tungstenite_case_13_6_5.html new file mode 100644 index 0000000..867f045 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_5.html @@ -0,0 +1,536 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.5 : Pass - 306 ms @ 2025-09-11T20:14:19.637Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=486&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: choBopIywOU1eMVP5WBuBA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: o3FOx/mwhiTGi/M8m38OxnBbHeg=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
2641264
2701270
2713813
2722544
27341092
2743822
27551375
276102760
27761662
27871946
27941116
28051400
281164496
282123384
283195377
28461704
285154275
28672002
287185166
288144032
289154335
290144060
291185238
292164672
293144102
294133822
295216195
296164736
297154455
298247152
29992691
300103000
301103010
302123624
303154545
304144256
305144270
306164896
307154605
308123696
309164944
310123720
31141244
312113432
313113443
314123768
315113465
316103160
31761902
318103180
319144466
320123840
32172247
32272254
32341292
32492916
325144550
32692934
327154905
328123936
329196251
330165280
331227282
332154980
333196327
334196346
335134355
336206720
337144718
338155070
339134407
34041360
34172387
34262052
34393087
34451720
34541380
3461346
34751735
34872436
34931047
35031050
35193159
3521352
3532706
35431062
35551775
3562712
3571357
35841432
3592718
3601360
3612722
3621362
36382904
36441456
36531095
3662732
36731101
36841472
36962214
37031110
37151855
37231116
37362238
37441496
3752750
3762752
37731131
37831134
3831383
3841384
3851385
3861386
3881388
3891389
39041560
Total1002316207
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1481148
1492298
1502300
1514604
1533459
1542308
1552310
1563468
1571157
1582316
1591159
1606960
1615805
1621162
16371141
16471148
165101650
166132158
167101670
168132184
169142366
170193230
171203420
172162752
173284844
174203480
175244200
176234048
177234071
178234094
179285012
180203600
181193439
182173094
183122196
184224048
185264810
186122232
187132431
188152820
189112079
190112090
191163056
192112112
19391737
19471358
195101950
1963588
19791773
198112178
1995995
2004800
201102010
202102020
2034812
20471428
2051205
2063618
20751035
20851040
20951045
210102100
211112321
212102120
213122556
214102140
21571505
2164864
21791953
218112398
219102190
220173740
22161326
222122664
223143122
22471568
225132925
226112486
22792043
228112508
229153435
230122760
231163696
23271624
23361398
2343702
2352470
2361236
2402480
24251210
2432486
2444976
2452490
2464984
2471247
2484992
2491249
2512502
2523756
25341012
2541254
2551255
25641024
2572514
2583774
2591259
26061560
2613783
26261572
26351315
26451320
26592385
26651330
26741068
2681268
2693807
2701270
2721272
2811281
2851285
3061306
3071307
Total1002198968
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343836266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88823d7009d53e98
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3364373030396435
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_5.json b/autobahn/client/tungstenite_case_13_6_5.json new file mode 100644 index 0000000..ef0f4ae --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_5.json @@ -0,0 +1,383 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 486, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 306, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=486&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: choBopIywOU1eMVP5WBuBA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: o3FOx/mwhiTGi/M8m38OxnBbHeg=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "264": 1, + "270": 1, + "271": 3, + "272": 2, + "273": 4, + "274": 3, + "275": 5, + "276": 10, + "277": 6, + "278": 7, + "279": 4, + "280": 5, + "281": 16, + "282": 12, + "283": 19, + "284": 6, + "285": 15, + "286": 7, + "287": 18, + "288": 14, + "289": 15, + "290": 14, + "291": 18, + "292": 16, + "293": 14, + "294": 13, + "295": 21, + "296": 16, + "297": 15, + "298": 24, + "299": 9, + "300": 10, + "301": 10, + "302": 12, + "303": 15, + "304": 14, + "305": 14, + "306": 16, + "307": 15, + "308": 12, + "309": 16, + "310": 12, + "311": 4, + "312": 11, + "313": 11, + "314": 12, + "315": 11, + "316": 10, + "317": 6, + "318": 10, + "319": 14, + "320": 12, + "321": 7, + "322": 7, + "323": 4, + "324": 9, + "325": 14, + "326": 9, + "327": 15, + "328": 12, + "329": 19, + "330": 16, + "331": 22, + "332": 15, + "333": 19, + "334": 19, + "335": 13, + "336": 20, + "337": 14, + "338": 15, + "339": 13, + "340": 4, + "341": 7, + "342": 6, + "343": 9, + "344": 5, + "345": 4, + "346": 1, + "347": 5, + "348": 7, + "349": 3, + "350": 3, + "351": 9, + "352": 1, + "353": 2, + "354": 3, + "355": 5, + "356": 2, + "357": 1, + "358": 4, + "359": 2, + "360": 1, + "361": 2, + "362": 1, + "363": 8, + "364": 4, + "365": 3, + "366": 2, + "367": 3, + "368": 4, + "369": 6, + "370": 3, + "371": 5, + "372": 3, + "373": 6, + "374": 4, + "375": 2, + "376": 2, + "377": 3, + "378": 3, + "383": 1, + "384": 1, + "385": 1, + "386": 1, + "388": 1, + "389": 1, + "390": 4 + }, + "started": "2025-09-11T20:14:19.637Z", + "trafficStats": { + "incomingCompressionRatio": 0.07518115234375, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 307942, + "incomingOctetsWireLevel": 315942, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.025978918107955395, + "outgoingCompressionRatio": 0.047523681640625, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 194657, + "outgoingOctetsWireLevel": 198657, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.02054896561644328, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "148": 1, + "149": 2, + "150": 2, + "151": 4, + "153": 3, + "154": 2, + "155": 2, + "156": 3, + "157": 1, + "158": 2, + "159": 1, + "160": 6, + "161": 5, + "162": 1, + "163": 7, + "164": 7, + "165": 10, + "166": 13, + "167": 10, + "168": 13, + "169": 14, + "170": 19, + "171": 20, + "172": 16, + "173": 28, + "174": 20, + "175": 24, + "176": 23, + "177": 23, + "178": 23, + "179": 28, + "180": 20, + "181": 19, + "182": 17, + "183": 12, + "184": 22, + "185": 26, + "186": 12, + "187": 13, + "188": 15, + "189": 11, + "190": 11, + "191": 16, + "192": 11, + "193": 9, + "194": 7, + "195": 10, + "196": 3, + "197": 9, + "198": 11, + "199": 5, + "200": 4, + "201": 10, + "202": 10, + "203": 4, + "204": 7, + "205": 1, + "206": 3, + "207": 5, + "208": 5, + "209": 5, + "210": 10, + "211": 11, + "212": 10, + "213": 12, + "214": 10, + "215": 7, + "216": 4, + "217": 9, + "218": 11, + "219": 10, + "220": 17, + "221": 6, + "222": 12, + "223": 14, + "224": 7, + "225": 13, + "226": 11, + "227": 9, + "228": 11, + "229": 15, + "230": 12, + "231": 16, + "232": 7, + "233": 6, + "234": 3, + "235": 2, + "236": 1, + "240": 2, + "242": 5, + "243": 2, + "244": 4, + "245": 2, + "246": 4, + "247": 1, + "248": 4, + "249": 1, + "251": 2, + "252": 3, + "253": 4, + "254": 1, + "255": 1, + "256": 4, + "257": 2, + "258": 3, + "259": 1, + "260": 6, + "261": 3, + "262": 6, + "263": 5, + "264": 5, + "265": 9, + "266": 5, + "267": 4, + "268": 1, + "269": 3, + "270": 1, + "272": 1, + "281": 1, + "285": 1, + "306": 1, + "307": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343836266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823d7009d53e98" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3d7009d5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_6.html b/autobahn/client/tungstenite_case_13_6_6.html new file mode 100644 index 0000000..b4a8312 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_6.html @@ -0,0 +1,659 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.6 : Pass - 446 ms @ 2025-09-11T20:14:19.945Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=487&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 0sgkDMeLB9WcwG/PJlk8Pg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YbbYh0PrRbyV6omerVuVeGWudqA=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
4101410
41152055
4132826
41452070
41531245
41652080
4172834
41852090
41972933
42062520
42162526
42293798
42393807
42452120
42572975
426114686
42783416
42831284
429135577
430104300
431125172
43273024
43383464
434104340
43552175
43683488
43783496
43883504
4392878
44073080
441135733
44262652
44373101
444114884
44562670
44641784
44731341
44841792
449104490
45041800
45152255
45262712
45362718
45462724
45562730
45662736
457115027
45831374
45962754
46094140
46173227
4621462
46362778
46441856
46541860
46662796
46752335
46894212
46994221
4701470
47183768
47252360
47341892
47473318
47562850
47652380
47783816
478115258
479115269
48073360
481104810
48273374
48352415
48452420
485104850
48673402
48773409
48852440
48983912
490115390
49152455
49262952
493115423
49473458
49573465
496125952
49783976
498104980
49952495
50073500
501105010
502136526
503157545
50431512
505126060
50642024
50773549
50821016
50963054
51021020
51173577
51263072
51321026
51421028
51552575
51642064
51752585
51884144
519115709
52073640
52152605
522105220
52342092
52431572
52573675
526105260
52742108
52842112
52921058
53021060
53152655
53273724
53342132
53473738
5351535
5361536
53731611
53842152
53921078
5401540
54121082
54221084
54321086
54721094
54821096
5491549
55031650
55163306
55221104
55342212
554126648
55563330
55673892
55763342
55842232
55931677
56042240
56184488
56242248
56331689
56431692
56542260
5661566
56742268
56852840
56973983
57021140
57173997
57242288
57352865
57442296
57531725
57631728
57721154
57831734
57931737
58021160
58131743
58221164
58331749
58421168
58574095
58631758
5871587
58831764
5891589
59021180
59121182
5921592
5931593
5951595
Total1002489861
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
30151505
30261812
3032606
30451520
30561830
306113366
307113377
3083924
3091309
31051550
3111311
3123936
3131313
31451570
31572205
31641264
31761902
318123816
31941276
320123840
321113531
322103220
323134199
324103240
325185850
326165216
327154905
328103280
329216909
330216930
331196289
332134316
333165328
33472338
33572345
336124032
337113707
338103380
33951695
34072380
34141364
34251710
34351715
34431032
3451345
34651730
34751735
34862088
34993141
35093150
35193159
35282816
353103530
35482832
355144970
35693204
357103570
358124296
35993231
36082880
361124332
36282896
363103630
36441456
36562190
36662196
3672734
3682736
369114059
37072590
3712742
372114092
37372611
37482992
37531125
37672632
37783016
37862268
379103790
38062280
38141524
3822764
38372681
3842768
38531155
38631158
38741548
38831164
38931167
39051950
3912782
39241568
39331179
39441576
39531185
39631188
39762382
39841592
39931197
4001400
4011401
40241608
40331209
40431212
4051405
40641624
40783256
40831224
4092818
41072870
41162466
4122824
4131413
4141414
41541660
416124992
41752085
41831254
41931257
4202840
4212842
42272954
42341692
42431272
42531275
42652130
4272854
42931287
43031290
43131293
4321432
4331433
43431302
4361436
4371437
4412882
4421442
44331329
4451445
4471447
44831344
4491449
45031350
45131353
4521452
45394077
45483632
4552910
45673192
457104570
45894122
4592918
46073220
461135993
46262772
46383704
46452320
46583720
46694194
46762802
46883744
4692938
47041880
4711471
4722944
4732946
4741474
4751475
4762952
4771477
4781478
47931437
4801480
4821482
4841484
4872974
4881488
48931467
4901490
4921492
4931493
Total1002373585
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343837266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88823e71e8783d99
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3365373165383738
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_6.json b/autobahn/client/tungstenite_case_13_6_6.json new file mode 100644 index 0000000..08cb16e --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_6.json @@ -0,0 +1,506 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 487, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 446, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=487&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 0sgkDMeLB9WcwG/PJlk8Pg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YbbYh0PrRbyV6omerVuVeGWudqA=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "410": 1, + "411": 5, + "413": 2, + "414": 5, + "415": 3, + "416": 5, + "417": 2, + "418": 5, + "419": 7, + "420": 6, + "421": 6, + "422": 9, + "423": 9, + "424": 5, + "425": 7, + "426": 11, + "427": 8, + "428": 3, + "429": 13, + "430": 10, + "431": 12, + "432": 7, + "433": 8, + "434": 10, + "435": 5, + "436": 8, + "437": 8, + "438": 8, + "439": 2, + "440": 7, + "441": 13, + "442": 6, + "443": 7, + "444": 11, + "445": 6, + "446": 4, + "447": 3, + "448": 4, + "449": 10, + "450": 4, + "451": 5, + "452": 6, + "453": 6, + "454": 6, + "455": 6, + "456": 6, + "457": 11, + "458": 3, + "459": 6, + "460": 9, + "461": 7, + "462": 1, + "463": 6, + "464": 4, + "465": 4, + "466": 6, + "467": 5, + "468": 9, + "469": 9, + "470": 1, + "471": 8, + "472": 5, + "473": 4, + "474": 7, + "475": 6, + "476": 5, + "477": 8, + "478": 11, + "479": 11, + "480": 7, + "481": 10, + "482": 7, + "483": 5, + "484": 5, + "485": 10, + "486": 7, + "487": 7, + "488": 5, + "489": 8, + "490": 11, + "491": 5, + "492": 6, + "493": 11, + "494": 7, + "495": 7, + "496": 12, + "497": 8, + "498": 10, + "499": 5, + "500": 7, + "501": 10, + "502": 13, + "503": 15, + "504": 3, + "505": 12, + "506": 4, + "507": 7, + "508": 2, + "509": 6, + "510": 2, + "511": 7, + "512": 6, + "513": 2, + "514": 2, + "515": 5, + "516": 4, + "517": 5, + "518": 8, + "519": 11, + "520": 7, + "521": 5, + "522": 10, + "523": 4, + "524": 3, + "525": 7, + "526": 10, + "527": 4, + "528": 4, + "529": 2, + "530": 2, + "531": 5, + "532": 7, + "533": 4, + "534": 7, + "535": 1, + "536": 1, + "537": 3, + "538": 4, + "539": 2, + "540": 1, + "541": 2, + "542": 2, + "543": 2, + "547": 2, + "548": 2, + "549": 1, + "550": 3, + "551": 6, + "552": 2, + "553": 4, + "554": 12, + "555": 6, + "556": 7, + "557": 6, + "558": 4, + "559": 3, + "560": 4, + "561": 8, + "562": 4, + "563": 3, + "564": 3, + "565": 4, + "566": 1, + "567": 4, + "568": 5, + "569": 7, + "570": 2, + "571": 7, + "572": 4, + "573": 5, + "574": 4, + "575": 3, + "576": 3, + "577": 2, + "578": 3, + "579": 3, + "580": 2, + "581": 3, + "582": 2, + "583": 3, + "584": 2, + "585": 7, + "586": 3, + "587": 1, + "588": 3, + "589": 1, + "590": 2, + "591": 2, + "592": 1, + "593": 1, + "595": 1 + }, + "started": "2025-09-11T20:14:19.945Z", + "trafficStats": { + "incomingCompressionRatio": 0.05878857421875, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 481596, + "incomingOctetsWireLevel": 489596, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.016611433649781144, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 373274, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.010832065079046995, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "301": 5, + "302": 6, + "303": 2, + "304": 5, + "305": 6, + "306": 11, + "307": 11, + "308": 3, + "309": 1, + "310": 5, + "311": 1, + "312": 3, + "313": 1, + "314": 5, + "315": 7, + "316": 4, + "317": 6, + "318": 12, + "319": 4, + "320": 12, + "321": 11, + "322": 10, + "323": 13, + "324": 10, + "325": 18, + "326": 16, + "327": 15, + "328": 10, + "329": 21, + "330": 21, + "331": 19, + "332": 13, + "333": 16, + "334": 7, + "335": 7, + "336": 12, + "337": 11, + "338": 10, + "339": 5, + "340": 7, + "341": 4, + "342": 5, + "343": 5, + "344": 3, + "345": 1, + "346": 5, + "347": 5, + "348": 6, + "349": 9, + "350": 9, + "351": 9, + "352": 8, + "353": 10, + "354": 8, + "355": 14, + "356": 9, + "357": 10, + "358": 12, + "359": 9, + "360": 8, + "361": 12, + "362": 8, + "363": 10, + "364": 4, + "365": 6, + "366": 6, + "367": 2, + "368": 2, + "369": 11, + "370": 7, + "371": 2, + "372": 11, + "373": 7, + "374": 8, + "375": 3, + "376": 7, + "377": 8, + "378": 6, + "379": 10, + "380": 6, + "381": 4, + "382": 2, + "383": 7, + "384": 2, + "385": 3, + "386": 3, + "387": 4, + "388": 3, + "389": 3, + "390": 5, + "391": 2, + "392": 4, + "393": 3, + "394": 4, + "395": 3, + "396": 3, + "397": 6, + "398": 4, + "399": 3, + "400": 1, + "401": 1, + "402": 4, + "403": 3, + "404": 3, + "405": 1, + "406": 4, + "407": 8, + "408": 3, + "409": 2, + "410": 7, + "411": 6, + "412": 2, + "413": 1, + "414": 1, + "415": 4, + "416": 12, + "417": 5, + "418": 3, + "419": 3, + "420": 2, + "421": 2, + "422": 7, + "423": 4, + "424": 3, + "425": 3, + "426": 5, + "427": 2, + "429": 3, + "430": 3, + "431": 3, + "432": 1, + "433": 1, + "434": 3, + "436": 1, + "437": 1, + "441": 2, + "442": 1, + "443": 3, + "445": 1, + "447": 1, + "448": 3, + "449": 1, + "450": 3, + "451": 3, + "452": 1, + "453": 9, + "454": 8, + "455": 2, + "456": 7, + "457": 10, + "458": 9, + "459": 2, + "460": 7, + "461": 13, + "462": 6, + "463": 8, + "464": 5, + "465": 8, + "466": 9, + "467": 6, + "468": 8, + "469": 2, + "470": 4, + "471": 1, + "472": 2, + "473": 2, + "474": 1, + "475": 1, + "476": 2, + "477": 1, + "478": 1, + "479": 3, + "480": 1, + "482": 1, + "484": 1, + "487": 2, + "488": 1, + "489": 3, + "490": 1, + "492": 1, + "493": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343837266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823e71e8783d99" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3e71e878" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_7.html b/autobahn/client/tungstenite_case_13_6_7.html new file mode 100644 index 0000000..54d422c --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_7.html @@ -0,0 +1,850 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.7 : Pass - 563 ms @ 2025-09-11T20:14:20.393Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=488&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ePWflODqpfDS+lHZ3jT8Qg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PdYN4fg9qQVxlPxoUwqAjooS+oI=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
7141714
7181718
72021440
72153605
72232166
72342892
72442896
72553625
72642904
72796543
72864368
729118019
730107300
73196579
732139516
73364398
73475138
7351511025
7361410304
737118107
73853690
739118129
74042960
74185928
74253710
74332229
74475208
74542980
74632238
74842992
74921498
75032250
75121502
75243008
75332259
75421508
75521510
75621512
75753785
75821516
75921518
76021520
76175327
76232286
76353815
76443056
76553825
76643064
76764602
76853840
76943076
77075390
77164626
77264632
77396957
77486192
77521550
77632328
77775439
77875446
77975453
78021560
78175467
78275474
78353915
78486272
78521570
78632358
78721574
78832364
78932367
7901790
79175537
79232376
79321586
79421588
7951795
79632388
79753985
79832394
79932397
80032400
80132403
8021802
8031803
80421608
80554025
80654030
8071807
80832424
80932427
81021620
8111811
8121812
8131813
8141814
81543260
81643264
81832454
81943276
8211821
82264932
82321646
82421648
82532475
82632478
82721654
82821656
8291829
83043320
83143324
83221664
8331833
83443336
83521670
83643344
83754185
83843352
83932517
84054200
84165046
84265052
84365058
84486752
84565070
84675922
84721694
84854240
84943396
85032550
85143404
85232556
85332559
85421708
8551855
8561856
85721714
85821716
85921718
86143444
86254310
86454320
86521730
86621732
86743468
86843472
8691869
87076090
87132613
87232616
87365238
8741874
87543500
87621752
87743508
87921758
88054400
8821882
8831883
88465304
88543540
88621772
8871887
8881888
8891889
89032670
89121782
8921892
89321786
89421788
8951895
89632688
8971897
8981898
8991899
90032700
90121802
90221804
90332709
90465424
90532715
90632718
90732721
90921818
9101910
9111911
91221824
91321826
91454570
91532745
91676412
91754585
91865508
91932757
92021840
92132763
92232766
92365538
92465544
92543700
92643704
92754635
92865568
92932787
93054650
93187448
93232796
93343732
93432802
93554675
93665616
93732811
93854690
93943756
94032820
94187528
94254710
94376601
94443776
94532835
94632838
94754735
94876636
94943796
95043800
95143804
95232856
95354765
95421908
95543820
9561956
95765742
95865748
95965754
9601960
96132883
96265772
9631963
96432892
96543860
96643864
96765802
96843872
96943876
9711971
9721972
9731973
9741974
9751975
97621952
97754885
9781978
9801980
98121962
9821982
9831983
9841984
98521970
98632958
9891989
99021980
9911991
9921992
9931993
9941994
99521990
9971997
9991999
100322006
100422008
100811008
101122022
101911019
Total1002841109
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3071307
60121202
60231806
6031603
60421208
6051605
6061606
6071607
6081608
6091609
61021220
61131833
61274284
61342452
61463684
615106150
61674312
61753085
61831854
619106190
62053100
6211621
62242488
62374361
62495616
62585000
626116886
62795643
628106280
629159435
63095670
631159465
63274424
63363798
63485072
63585080
63674452
63731911
63853190
63942556
64074480
64153205
64242568
64353215
64453220
64574515
64642584
64721294
6481648
64963894
65031950
65121302
65221304
65342612
65463924
65553275
65685248
65763942
65874606
65921318
66074620
66195949
662117282
663106630
664117304
66585320
66674662
66785336
66874676
66942676
67085360
67164026
67242688
67353365
67442696
67521350
67621352
67742708
6781678
67942716
68042720
68142724
68221364
6831683
68442736
68542740
6861686
68721374
68842752
68921378
69032070
69132073
6921692
69332079
69432082
69553475
69642784
69732091
69842792
69942796
70032100
70121402
70232106
70321406
70464224
70532115
70685648
70721414
7081708
7091709
71032130
71132133
7121712
7131713
71421428
71532145
71621432
71721434
71842872
71921438
72032160
72121442
72253610
72321446
72421448
72553625
72621452
72721454
7281728
7291729
73032190
73232196
7331733
73442936
73521470
73653680
73721474
73932217
74032220
74153705
74332229
74432232
74521490
74621492
7471747
7481748
74975243
7501750
7511751
7521752
7531753
7541754
75543020
75643024
75732271
75853790
75932277
76021520
76221524
76332289
76443056
7651765
7661766
76732301
7691769
7701770
77132313
7721772
77321546
7741774
77532325
7761776
7771777
7781778
7801780
7831783
78621572
78721574
78832364
7891789
79043160
79121582
79221584
7941794
79543180
79753985
79821596
8001800
80121602
80221604
8031803
8041804
80532415
80675642
80764842
80821616
80964854
81043240
81154055
81232436
81321626
81421628
81521630
81643264
81732451
81843272
81932457
82021640
82132463
82354115
82421648
82564950
82754135
82843312
82943316
83043320
83143324
83221664
8331833
83486672
83521670
83621672
83743348
83843352
83921678
84054200
84121682
84275894
84332529
84465064
84521690
8461846
84721694
84821696
8491849
85054250
851108510
85254260
85343412
85454270
85554275
8561856
85754285
85832574
85932577
86043440
86143444
86232586
86376041
86432592
86543460
86665196
86765202
86876076
86932607
87021740
8711871
8721872
87332619
87432622
87521750
87721754
8781878
8791879
88121762
88221764
88421768
88621772
8871887
88821776
8901890
8931893
8941894
8991899
9001900
9041904
9061906
90743628
9081908
9101910
Total1002725593
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343838266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88823c42f6b43faa
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3363343266366234
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_7.json b/autobahn/client/tungstenite_case_13_6_7.json new file mode 100644 index 0000000..3d01686 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_7.json @@ -0,0 +1,697 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 488, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 563, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=488&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ePWflODqpfDS+lHZ3jT8Qg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PdYN4fg9qQVxlPxoUwqAjooS+oI=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "714": 1, + "718": 1, + "720": 2, + "721": 5, + "722": 3, + "723": 4, + "724": 4, + "725": 5, + "726": 4, + "727": 9, + "728": 6, + "729": 11, + "730": 10, + "731": 9, + "732": 13, + "733": 6, + "734": 7, + "735": 15, + "736": 14, + "737": 11, + "738": 5, + "739": 11, + "740": 4, + "741": 8, + "742": 5, + "743": 3, + "744": 7, + "745": 4, + "746": 3, + "748": 4, + "749": 2, + "750": 3, + "751": 2, + "752": 4, + "753": 3, + "754": 2, + "755": 2, + "756": 2, + "757": 5, + "758": 2, + "759": 2, + "760": 2, + "761": 7, + "762": 3, + "763": 5, + "764": 4, + "765": 5, + "766": 4, + "767": 6, + "768": 5, + "769": 4, + "770": 7, + "771": 6, + "772": 6, + "773": 9, + "774": 8, + "775": 2, + "776": 3, + "777": 7, + "778": 7, + "779": 7, + "780": 2, + "781": 7, + "782": 7, + "783": 5, + "784": 8, + "785": 2, + "786": 3, + "787": 2, + "788": 3, + "789": 3, + "790": 1, + "791": 7, + "792": 3, + "793": 2, + "794": 2, + "795": 1, + "796": 3, + "797": 5, + "798": 3, + "799": 3, + "800": 3, + "801": 3, + "802": 1, + "803": 1, + "804": 2, + "805": 5, + "806": 5, + "807": 1, + "808": 3, + "809": 3, + "810": 2, + "811": 1, + "812": 1, + "813": 1, + "814": 1, + "815": 4, + "816": 4, + "818": 3, + "819": 4, + "821": 1, + "822": 6, + "823": 2, + "824": 2, + "825": 3, + "826": 3, + "827": 2, + "828": 2, + "829": 1, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 4, + "835": 2, + "836": 4, + "837": 5, + "838": 4, + "839": 3, + "840": 5, + "841": 6, + "842": 6, + "843": 6, + "844": 8, + "845": 6, + "846": 7, + "847": 2, + "848": 5, + "849": 4, + "850": 3, + "851": 4, + "852": 3, + "853": 3, + "854": 2, + "855": 1, + "856": 1, + "857": 2, + "858": 2, + "859": 2, + "861": 4, + "862": 5, + "864": 5, + "865": 2, + "866": 2, + "867": 4, + "868": 4, + "869": 1, + "870": 7, + "871": 3, + "872": 3, + "873": 6, + "874": 1, + "875": 4, + "876": 2, + "877": 4, + "879": 2, + "880": 5, + "882": 1, + "883": 1, + "884": 6, + "885": 4, + "886": 2, + "887": 1, + "888": 1, + "889": 1, + "890": 3, + "891": 2, + "892": 1, + "893": 2, + "894": 2, + "895": 1, + "896": 3, + "897": 1, + "898": 1, + "899": 1, + "900": 3, + "901": 2, + "902": 2, + "903": 3, + "904": 6, + "905": 3, + "906": 3, + "907": 3, + "909": 2, + "910": 1, + "911": 1, + "912": 2, + "913": 2, + "914": 5, + "915": 3, + "916": 7, + "917": 5, + "918": 6, + "919": 3, + "920": 2, + "921": 3, + "922": 3, + "923": 6, + "924": 6, + "925": 4, + "926": 4, + "927": 5, + "928": 6, + "929": 3, + "930": 5, + "931": 8, + "932": 3, + "933": 4, + "934": 3, + "935": 5, + "936": 6, + "937": 3, + "938": 5, + "939": 4, + "940": 3, + "941": 8, + "942": 5, + "943": 7, + "944": 4, + "945": 3, + "946": 3, + "947": 5, + "948": 7, + "949": 4, + "950": 4, + "951": 4, + "952": 3, + "953": 5, + "954": 2, + "955": 4, + "956": 1, + "957": 6, + "958": 6, + "959": 6, + "960": 1, + "961": 3, + "962": 6, + "963": 1, + "964": 3, + "965": 4, + "966": 4, + "967": 6, + "968": 4, + "969": 4, + "971": 1, + "972": 1, + "973": 1, + "974": 1, + "975": 1, + "976": 2, + "977": 5, + "978": 1, + "980": 1, + "981": 2, + "982": 1, + "983": 1, + "984": 1, + "985": 2, + "986": 3, + "989": 1, + "990": 2, + "991": 1, + "992": 1, + "993": 1, + "994": 1, + "995": 2, + "997": 1, + "999": 1, + "1003": 2, + "1004": 2, + "1008": 1, + "1011": 2, + "1019": 1 + }, + "started": "2025-09-11T20:14:20.393Z", + "trafficStats": { + "incomingCompressionRatio": 0.050832763671875, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 832844, + "incomingOctetsWireLevel": 840844, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.009605640432061706, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 725282, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.005545681162152944, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "307": 1, + "601": 2, + "602": 3, + "603": 1, + "604": 2, + "605": 1, + "606": 1, + "607": 1, + "608": 1, + "609": 1, + "610": 2, + "611": 3, + "612": 7, + "613": 4, + "614": 6, + "615": 10, + "616": 7, + "617": 5, + "618": 3, + "619": 10, + "620": 5, + "621": 1, + "622": 4, + "623": 7, + "624": 9, + "625": 8, + "626": 11, + "627": 9, + "628": 10, + "629": 15, + "630": 9, + "631": 15, + "632": 7, + "633": 6, + "634": 8, + "635": 8, + "636": 7, + "637": 3, + "638": 5, + "639": 4, + "640": 7, + "641": 5, + "642": 4, + "643": 5, + "644": 5, + "645": 7, + "646": 4, + "647": 2, + "648": 1, + "649": 6, + "650": 3, + "651": 2, + "652": 2, + "653": 4, + "654": 6, + "655": 5, + "656": 8, + "657": 6, + "658": 7, + "659": 2, + "660": 7, + "661": 9, + "662": 11, + "663": 10, + "664": 11, + "665": 8, + "666": 7, + "667": 8, + "668": 7, + "669": 4, + "670": 8, + "671": 6, + "672": 4, + "673": 5, + "674": 4, + "675": 2, + "676": 2, + "677": 4, + "678": 1, + "679": 4, + "680": 4, + "681": 4, + "682": 2, + "683": 1, + "684": 4, + "685": 4, + "686": 1, + "687": 2, + "688": 4, + "689": 2, + "690": 3, + "691": 3, + "692": 1, + "693": 3, + "694": 3, + "695": 5, + "696": 4, + "697": 3, + "698": 4, + "699": 4, + "700": 3, + "701": 2, + "702": 3, + "703": 2, + "704": 6, + "705": 3, + "706": 8, + "707": 2, + "708": 1, + "709": 1, + "710": 3, + "711": 3, + "712": 1, + "713": 1, + "714": 2, + "715": 3, + "716": 2, + "717": 2, + "718": 4, + "719": 2, + "720": 3, + "721": 2, + "722": 5, + "723": 2, + "724": 2, + "725": 5, + "726": 2, + "727": 2, + "728": 1, + "729": 1, + "730": 3, + "732": 3, + "733": 1, + "734": 4, + "735": 2, + "736": 5, + "737": 2, + "739": 3, + "740": 3, + "741": 5, + "743": 3, + "744": 3, + "745": 2, + "746": 2, + "747": 1, + "748": 1, + "749": 7, + "750": 1, + "751": 1, + "752": 1, + "753": 1, + "754": 1, + "755": 4, + "756": 4, + "757": 3, + "758": 5, + "759": 3, + "760": 2, + "762": 2, + "763": 3, + "764": 4, + "765": 1, + "766": 1, + "767": 3, + "769": 1, + "770": 1, + "771": 3, + "772": 1, + "773": 2, + "774": 1, + "775": 3, + "776": 1, + "777": 1, + "778": 1, + "780": 1, + "783": 1, + "786": 2, + "787": 2, + "788": 3, + "789": 1, + "790": 4, + "791": 2, + "792": 2, + "794": 1, + "795": 4, + "797": 5, + "798": 2, + "800": 1, + "801": 2, + "802": 2, + "803": 1, + "804": 1, + "805": 3, + "806": 7, + "807": 6, + "808": 2, + "809": 6, + "810": 4, + "811": 5, + "812": 3, + "813": 2, + "814": 2, + "815": 2, + "816": 4, + "817": 3, + "818": 4, + "819": 3, + "820": 2, + "821": 3, + "823": 5, + "824": 2, + "825": 6, + "827": 5, + "828": 4, + "829": 4, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 8, + "835": 2, + "836": 2, + "837": 4, + "838": 4, + "839": 2, + "840": 5, + "841": 2, + "842": 7, + "843": 3, + "844": 6, + "845": 2, + "846": 1, + "847": 2, + "848": 2, + "849": 1, + "850": 5, + "851": 10, + "852": 5, + "853": 4, + "854": 5, + "855": 5, + "856": 1, + "857": 5, + "858": 3, + "859": 3, + "860": 4, + "861": 4, + "862": 3, + "863": 7, + "864": 3, + "865": 4, + "866": 6, + "867": 6, + "868": 7, + "869": 3, + "870": 2, + "871": 1, + "872": 1, + "873": 3, + "874": 3, + "875": 2, + "877": 2, + "878": 1, + "879": 1, + "881": 2, + "882": 2, + "884": 2, + "886": 2, + "887": 1, + "888": 2, + "890": 1, + "893": 1, + "894": 1, + "899": 1, + "900": 1, + "904": 1, + "906": 1, + "907": 4, + "908": 1, + "910": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343838266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823c42f6b43faa" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3c42f6b4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_8.html b/autobahn/client/tungstenite_case_13_6_8.html new file mode 100644 index 0000000..5c52606 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_8.html @@ -0,0 +1,1027 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.8 : Pass - 1088 ms @ 2025-09-11T20:14:20.958Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=489&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: V7UVL33A9SZjzsOT2dK9Nw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1G6g6kh2dc7tdSHueBB6ch65Ufg=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
134611346
135022700
135211352
135611356
135711357
135911359
136145444
136311363
136622732
136711367
136811368
136911369
137022740
137122742
137222744
137334119
137434122
137545500
137668256
137734131
137922758
138056900
138156905
138234146
138356915
138468304
138534155
138645544
138711387
138856940
138922778
139045560
139134173
139268352
139356965
139468364
139556975
139622792
139779779
139811398
139968394
140045600
140134203
140357015
140468424
140534215
140645624
140722814
140811408
140945636
141045640
141145644
141234236
141322826
141434242
141534245
141645664
141734251
141834254
141922838
142034260
142134263
142245688
142311423
142457120
142545700
142634278
142722854
142822856
142957145
143145724
143222864
143311433
143445736
143522870
143645744
143734311
1438811504
143934317
144034320
144234326
144311443
144411444
144522890
144668676
144711447
144911449
145211452
145422908
145522910
145622912
145834374
145922918
146022920
146111461
146222924
146322926
146445856
146545860
146622932
146745868
146822936
146945876
147034410
147111471
147234416
147311473
147411474
147522950
147611476
147734431
147822956
147945916
148045920
148145924
148222964
148311483
148434452
148522970
148645944
148722974
148822976
148922978
149022980
149122982
149234476
149345972
149411494
149568970
149668976
149745988
149822996
149911499
150023000
150169006
150269012
150311503
150523010
150634518
150711507
150811508
150923018
151023020
151123022
151211512
151323026
151511515
151611516
151723034
151911519
152223044
152323046
152434572
152557625
152611526
152723054
152823056
152911529
153123062
153323066
153423068
153723074
153811538
153923078
154011540
154123082
154211542
154323086
154446176
154534635
154623092
154746188
154846192
154911549
155057750
155423108
155511555
155634668
155711557
155811558
155911559
156011560
156111561
156211562
156334689
156446256
156511565
156611566
156723134
156811568
156923138
157034710
157123142
157234716
157323146
157423148
157534725
157646304
157723154
157846312
157911579
158023160
158111581
158211582
158311583
158423168
158523170
158723174
158811588
158911589
159046360
159111591
159234776
159323186
159434782
159511595
159657980
159711597
159846392
159934797
160023200
160134803
160223204
160323206
160423208
160523210
160611606
160758035
160834824
160911609
161034830
161111611
161258060
161323226
161411614
161534845
161623232
161746468
161846472
161923238
162034860
162234866
162458120
162534875
162634878
162746508
162811628
162911629
163011630
163134893
163211632
163334899
163411634
163558175
163623272
163734911
163834914
163958195
164023280
164146564
164223284
164323286
164458220
164511645
164634938
164746588
164834944
164946596
165058250
165146604
165234956
1653711571
165434962
165558275
165646624
165734971
165846632
165958295
166058300
166158305
166234986
166311663
166423328
16651118315
166634998
1667711669
1668813344
1669813352
167058350
167123342
167246688
1673610038
1674711718
1675610050
167658380
167735031
167846712
1679610074
168058400
168135043
168211682
168335049
168446736
1685711795
168658430
168723374
168823376
168935067
169023380
169158455
169235076
169423388
170535115
170811708
170911709
171123422
171223424
171411714
171511715
171611716
171711717
171923438
172011720
172311723
172511725
172711727
172811728
172911729
173111731
173435202
173511735
173711737
173835214
174011740
174123482
174246968
174323486
174546980
174635238
174811748
175123502
175223504
175323506
175411754
175611756
175711757
175823516
175935277
176011760
176123522
176211762
176335289
176423528
176547060
176635298
176747068
176811768
176935307
177135313
177235316
177511775
177623552
177747108
177811778
177911779
178111781
178211782
178611786
178711787
Total10021555992
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3071307
123611236
123922478
124011240
124111241
124211242
124311243
124411244
124544980
124611246
124822496
125022500
125122502
125211252
125311253
125433762
125511255
125645024
125711257
125833774
125911259
126011260
126133783
126256310
126322526
126433792
126522530
126645064
126745068
126822536
126978883
127056350
127245088
1273810184
127445096
1275911475
127633828
1277911493
127867668
127967674
12801114080
1281810248
1282911538
1283911547
128445136
128545140
1286810288
128756435
128856440
128956445
129022580
129145164
129211292
129333879
129456470
129545180
129633888
129745188
129856490
129956495
130033900
130167806
130267812
130345212
130445216
130511305
130611306
130745228
130822616
130933927
131022620
131133933
131245248
131322626
131411314
131622632
131722634
131811318
131945276
132133963
132211322
132311323
132422648
132522650
132745308
132822656
132911329
133011330
133122662
133222664
133311333
133422668
133634008
133711337
133922678
134034020
134122682
134211342
134322686
134422688
134545380
134622692
134768082
134811348
134911349
135156755
135245408
135322706
135556775
135645424
135811358
135934077
136034080
136122722
136211362
136322726
136411364
136622732
136745468
136811368
136945476
137011370
137222744
137322746
137434122
137711377
137822756
137911379
138011380
138134143
138234146
138311383
138434152
138534155
138611386
138711387
138922778
139134173
139222784
139311393
139422788
139522790
139611396
139722794
139811398
140111401
140222804
140311403
140411404
140511405
140622812
140922818
141011410
141122822
141211412
141368478
141422828
141511415
141634248
141745668
141811418
141911419
142011420
142145684
142222844
142322846
142411424
142522850
142611426
142745708
142922858
143122862
143245728
143411434
143511435
143634308
143722874
143945756
144011440
144122882
144222884
144411444
144645784
144722894
144811448
144922898
145011450
145122902
145222904
145322906
145434362
145522910
145622912
145722914
145911459
146022920
146111461
146211462
146322926
146411464
146534395
146622932
146722934
146822936
146945876
147045880
147168826
147234416
147322946
147422948
147511475
147622952
147734431
147834434
147922958
148022960
148111481
148211482
148334449
148445936
148568910
148634458
148722974
148845952
148934467
149022980
149111491
149234476
149334479
149422988
149534485
149657480
149822996
150034500
150123002
150223004
150323006
150423008
150534515
150623012
150711507
150834524
150923018
151011510
151123022
151357565
151423028
151523030
151611516
151746068
151846072
151934557
152046080
152269132
152423048
152511525
152611526
152834584
152957645
153123062
153234596
153311533
153446136
153546140
153657680
153757685
1538913842
153957695
154069240
1541710787
154269252
154334629
154457720
154511545
154634638
1547710829
154823096
154923098
155034650
155169306
155257760
155369318
155434662
155534665
155669336
155757785
1558812464
1559710913
15601117160
1561710927
1562710934
156323126
156469384
156557825
156657830
156757835
156823136
156934707
157057850
157157855
157234716
157334719
157411574
157511575
157623152
157723154
157811578
158034740
158123162
158234746
158323166
158511585
158623172
158723174
158823176
158923178
159023180
159123182
159211592
159311593
159711597
160411604
160711607
160823216
161123222
161311613
161411614
161711617
161846472
162111621
162323246
162423248
162511625
162669756
162734881
162811628
162923258
163011630
163223264
163411634
163623272
163723274
163911639
164134923
164334929
164423288
164669876
164711647
164823296
165023300
165123302
165223304
165323306
165411654
165523310
165723314
165811658
165923318
166023320
166111661
166423328
Total10021435176
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343839266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d77178b2d499
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6437373137386232
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_8.json b/autobahn/client/tungstenite_case_13_6_8.json new file mode 100644 index 0000000..0ae6223 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_8.json @@ -0,0 +1,874 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 489, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 1088, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=489&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: V7UVL33A9SZjzsOT2dK9Nw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1G6g6kh2dc7tdSHueBB6ch65Ufg=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1346": 1, + "1350": 2, + "1352": 1, + "1356": 1, + "1357": 1, + "1359": 1, + "1361": 4, + "1363": 1, + "1366": 2, + "1367": 1, + "1368": 1, + "1369": 1, + "1370": 2, + "1371": 2, + "1372": 2, + "1373": 3, + "1374": 3, + "1375": 4, + "1376": 6, + "1377": 3, + "1379": 2, + "1380": 5, + "1381": 5, + "1382": 3, + "1383": 5, + "1384": 6, + "1385": 3, + "1386": 4, + "1387": 1, + "1388": 5, + "1389": 2, + "1390": 4, + "1391": 3, + "1392": 6, + "1393": 5, + "1394": 6, + "1395": 5, + "1396": 2, + "1397": 7, + "1398": 1, + "1399": 6, + "1400": 4, + "1401": 3, + "1403": 5, + "1404": 6, + "1405": 3, + "1406": 4, + "1407": 2, + "1408": 1, + "1409": 4, + "1410": 4, + "1411": 4, + "1412": 3, + "1413": 2, + "1414": 3, + "1415": 3, + "1416": 4, + "1417": 3, + "1418": 3, + "1419": 2, + "1420": 3, + "1421": 3, + "1422": 4, + "1423": 1, + "1424": 5, + "1425": 4, + "1426": 3, + "1427": 2, + "1428": 2, + "1429": 5, + "1431": 4, + "1432": 2, + "1433": 1, + "1434": 4, + "1435": 2, + "1436": 4, + "1437": 3, + "1438": 8, + "1439": 3, + "1440": 3, + "1442": 3, + "1443": 1, + "1444": 1, + "1445": 2, + "1446": 6, + "1447": 1, + "1449": 1, + "1452": 1, + "1454": 2, + "1455": 2, + "1456": 2, + "1458": 3, + "1459": 2, + "1460": 2, + "1461": 1, + "1462": 2, + "1463": 2, + "1464": 4, + "1465": 4, + "1466": 2, + "1467": 4, + "1468": 2, + "1469": 4, + "1470": 3, + "1471": 1, + "1472": 3, + "1473": 1, + "1474": 1, + "1475": 2, + "1476": 1, + "1477": 3, + "1478": 2, + "1479": 4, + "1480": 4, + "1481": 4, + "1482": 2, + "1483": 1, + "1484": 3, + "1485": 2, + "1486": 4, + "1487": 2, + "1488": 2, + "1489": 2, + "1490": 2, + "1491": 2, + "1492": 3, + "1493": 4, + "1494": 1, + "1495": 6, + "1496": 6, + "1497": 4, + "1498": 2, + "1499": 1, + "1500": 2, + "1501": 6, + "1502": 6, + "1503": 1, + "1505": 2, + "1506": 3, + "1507": 1, + "1508": 1, + "1509": 2, + "1510": 2, + "1511": 2, + "1512": 1, + "1513": 2, + "1515": 1, + "1516": 1, + "1517": 2, + "1519": 1, + "1522": 2, + "1523": 2, + "1524": 3, + "1525": 5, + "1526": 1, + "1527": 2, + "1528": 2, + "1529": 1, + "1531": 2, + "1533": 2, + "1534": 2, + "1537": 2, + "1538": 1, + "1539": 2, + "1540": 1, + "1541": 2, + "1542": 1, + "1543": 2, + "1544": 4, + "1545": 3, + "1546": 2, + "1547": 4, + "1548": 4, + "1549": 1, + "1550": 5, + "1554": 2, + "1555": 1, + "1556": 3, + "1557": 1, + "1558": 1, + "1559": 1, + "1560": 1, + "1561": 1, + "1562": 1, + "1563": 3, + "1564": 4, + "1565": 1, + "1566": 1, + "1567": 2, + "1568": 1, + "1569": 2, + "1570": 3, + "1571": 2, + "1572": 3, + "1573": 2, + "1574": 2, + "1575": 3, + "1576": 4, + "1577": 2, + "1578": 4, + "1579": 1, + "1580": 2, + "1581": 1, + "1582": 1, + "1583": 1, + "1584": 2, + "1585": 2, + "1587": 2, + "1588": 1, + "1589": 1, + "1590": 4, + "1591": 1, + "1592": 3, + "1593": 2, + "1594": 3, + "1595": 1, + "1596": 5, + "1597": 1, + "1598": 4, + "1599": 3, + "1600": 2, + "1601": 3, + "1602": 2, + "1603": 2, + "1604": 2, + "1605": 2, + "1606": 1, + "1607": 5, + "1608": 3, + "1609": 1, + "1610": 3, + "1611": 1, + "1612": 5, + "1613": 2, + "1614": 1, + "1615": 3, + "1616": 2, + "1617": 4, + "1618": 4, + "1619": 2, + "1620": 3, + "1622": 3, + "1624": 5, + "1625": 3, + "1626": 3, + "1627": 4, + "1628": 1, + "1629": 1, + "1630": 1, + "1631": 3, + "1632": 1, + "1633": 3, + "1634": 1, + "1635": 5, + "1636": 2, + "1637": 3, + "1638": 3, + "1639": 5, + "1640": 2, + "1641": 4, + "1642": 2, + "1643": 2, + "1644": 5, + "1645": 1, + "1646": 3, + "1647": 4, + "1648": 3, + "1649": 4, + "1650": 5, + "1651": 4, + "1652": 3, + "1653": 7, + "1654": 3, + "1655": 5, + "1656": 4, + "1657": 3, + "1658": 4, + "1659": 5, + "1660": 5, + "1661": 5, + "1662": 3, + "1663": 1, + "1664": 2, + "1665": 11, + "1666": 3, + "1667": 7, + "1668": 8, + "1669": 8, + "1670": 5, + "1671": 2, + "1672": 4, + "1673": 6, + "1674": 7, + "1675": 6, + "1676": 5, + "1677": 3, + "1678": 4, + "1679": 6, + "1680": 5, + "1681": 3, + "1682": 1, + "1683": 3, + "1684": 4, + "1685": 7, + "1686": 5, + "1687": 2, + "1688": 2, + "1689": 3, + "1690": 2, + "1691": 5, + "1692": 3, + "1694": 2, + "1705": 3, + "1708": 1, + "1709": 1, + "1711": 2, + "1712": 2, + "1714": 1, + "1715": 1, + "1716": 1, + "1717": 1, + "1719": 2, + "1720": 1, + "1723": 1, + "1725": 1, + "1727": 1, + "1728": 1, + "1729": 1, + "1731": 1, + "1734": 3, + "1735": 1, + "1737": 1, + "1738": 3, + "1740": 1, + "1741": 2, + "1742": 4, + "1743": 2, + "1745": 4, + "1746": 3, + "1748": 1, + "1751": 2, + "1752": 2, + "1753": 2, + "1754": 1, + "1756": 1, + "1757": 1, + "1758": 2, + "1759": 3, + "1760": 1, + "1761": 2, + "1762": 1, + "1763": 3, + "1764": 2, + "1765": 4, + "1766": 3, + "1767": 4, + "1768": 1, + "1769": 3, + "1771": 3, + "1772": 3, + "1775": 1, + "1776": 2, + "1777": 4, + "1778": 1, + "1779": 1, + "1781": 1, + "1782": 1, + "1786": 1, + "1787": 1 + }, + "started": "2025-09-11T20:14:20.958Z", + "trafficStats": { + "incomingCompressionRatio": 0.04723287963867188, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1547727, + "incomingOctetsWireLevel": 1555727, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.005168870220652609, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1434865, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0027955118057957948, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "307": 1, + "1236": 1, + "1239": 2, + "1240": 1, + "1241": 1, + "1242": 1, + "1243": 1, + "1244": 1, + "1245": 4, + "1246": 1, + "1248": 2, + "1250": 2, + "1251": 2, + "1252": 1, + "1253": 1, + "1254": 3, + "1255": 1, + "1256": 4, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 1, + "1261": 3, + "1262": 5, + "1263": 2, + "1264": 3, + "1265": 2, + "1266": 4, + "1267": 4, + "1268": 2, + "1269": 7, + "1270": 5, + "1272": 4, + "1273": 8, + "1274": 4, + "1275": 9, + "1276": 3, + "1277": 9, + "1278": 6, + "1279": 6, + "1280": 11, + "1281": 8, + "1282": 9, + "1283": 9, + "1284": 4, + "1285": 4, + "1286": 8, + "1287": 5, + "1288": 5, + "1289": 5, + "1290": 2, + "1291": 4, + "1292": 1, + "1293": 3, + "1294": 5, + "1295": 4, + "1296": 3, + "1297": 4, + "1298": 5, + "1299": 5, + "1300": 3, + "1301": 6, + "1302": 6, + "1303": 4, + "1304": 4, + "1305": 1, + "1306": 1, + "1307": 4, + "1308": 2, + "1309": 3, + "1310": 2, + "1311": 3, + "1312": 4, + "1313": 2, + "1314": 1, + "1316": 2, + "1317": 2, + "1318": 1, + "1319": 4, + "1321": 3, + "1322": 1, + "1323": 1, + "1324": 2, + "1325": 2, + "1327": 4, + "1328": 2, + "1329": 1, + "1330": 1, + "1331": 2, + "1332": 2, + "1333": 1, + "1334": 2, + "1336": 3, + "1337": 1, + "1339": 2, + "1340": 3, + "1341": 2, + "1342": 1, + "1343": 2, + "1344": 2, + "1345": 4, + "1346": 2, + "1347": 6, + "1348": 1, + "1349": 1, + "1351": 5, + "1352": 4, + "1353": 2, + "1355": 5, + "1356": 4, + "1358": 1, + "1359": 3, + "1360": 3, + "1361": 2, + "1362": 1, + "1363": 2, + "1364": 1, + "1366": 2, + "1367": 4, + "1368": 1, + "1369": 4, + "1370": 1, + "1372": 2, + "1373": 2, + "1374": 3, + "1377": 1, + "1378": 2, + "1379": 1, + "1380": 1, + "1381": 3, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 3, + "1386": 1, + "1387": 1, + "1389": 2, + "1391": 3, + "1392": 2, + "1393": 1, + "1394": 2, + "1395": 2, + "1396": 1, + "1397": 2, + "1398": 1, + "1401": 1, + "1402": 2, + "1403": 1, + "1404": 1, + "1405": 1, + "1406": 2, + "1409": 2, + "1410": 1, + "1411": 2, + "1412": 1, + "1413": 6, + "1414": 2, + "1415": 1, + "1416": 3, + "1417": 4, + "1418": 1, + "1419": 1, + "1420": 1, + "1421": 4, + "1422": 2, + "1423": 2, + "1424": 1, + "1425": 2, + "1426": 1, + "1427": 4, + "1429": 2, + "1431": 2, + "1432": 4, + "1434": 1, + "1435": 1, + "1436": 3, + "1437": 2, + "1439": 4, + "1440": 1, + "1441": 2, + "1442": 2, + "1444": 1, + "1446": 4, + "1447": 2, + "1448": 1, + "1449": 2, + "1450": 1, + "1451": 2, + "1452": 2, + "1453": 2, + "1454": 3, + "1455": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 2, + "1461": 1, + "1462": 1, + "1463": 2, + "1464": 1, + "1465": 3, + "1466": 2, + "1467": 2, + "1468": 2, + "1469": 4, + "1470": 4, + "1471": 6, + "1472": 3, + "1473": 2, + "1474": 2, + "1475": 1, + "1476": 2, + "1477": 3, + "1478": 3, + "1479": 2, + "1480": 2, + "1481": 1, + "1482": 1, + "1483": 3, + "1484": 4, + "1485": 6, + "1486": 3, + "1487": 2, + "1488": 4, + "1489": 3, + "1490": 2, + "1491": 1, + "1492": 3, + "1493": 3, + "1494": 2, + "1495": 3, + "1496": 5, + "1498": 2, + "1500": 3, + "1501": 2, + "1502": 2, + "1503": 2, + "1504": 2, + "1505": 3, + "1506": 2, + "1507": 1, + "1508": 3, + "1509": 2, + "1510": 1, + "1511": 2, + "1513": 5, + "1514": 2, + "1515": 2, + "1516": 1, + "1517": 4, + "1518": 4, + "1519": 3, + "1520": 4, + "1522": 6, + "1524": 2, + "1525": 1, + "1526": 1, + "1528": 3, + "1529": 5, + "1531": 2, + "1532": 3, + "1533": 1, + "1534": 4, + "1535": 4, + "1536": 5, + "1537": 5, + "1538": 9, + "1539": 5, + "1540": 6, + "1541": 7, + "1542": 6, + "1543": 3, + "1544": 5, + "1545": 1, + "1546": 3, + "1547": 7, + "1548": 2, + "1549": 2, + "1550": 3, + "1551": 6, + "1552": 5, + "1553": 6, + "1554": 3, + "1555": 3, + "1556": 6, + "1557": 5, + "1558": 8, + "1559": 7, + "1560": 11, + "1561": 7, + "1562": 7, + "1563": 2, + "1564": 6, + "1565": 5, + "1566": 5, + "1567": 5, + "1568": 2, + "1569": 3, + "1570": 5, + "1571": 5, + "1572": 3, + "1573": 3, + "1574": 1, + "1575": 1, + "1576": 2, + "1577": 2, + "1578": 1, + "1580": 3, + "1581": 2, + "1582": 3, + "1583": 2, + "1585": 1, + "1586": 2, + "1587": 2, + "1588": 2, + "1589": 2, + "1590": 2, + "1591": 2, + "1592": 1, + "1593": 1, + "1597": 1, + "1604": 1, + "1607": 1, + "1608": 2, + "1611": 2, + "1613": 1, + "1614": 1, + "1617": 1, + "1618": 4, + "1621": 1, + "1623": 2, + "1624": 2, + "1625": 1, + "1626": 6, + "1627": 3, + "1628": 1, + "1629": 2, + "1630": 1, + "1632": 2, + "1634": 1, + "1636": 2, + "1637": 2, + "1639": 1, + "1641": 3, + "1643": 3, + "1644": 2, + "1646": 6, + "1647": 1, + "1648": 2, + "1650": 2, + "1651": 2, + "1652": 2, + "1653": 2, + "1654": 1, + "1655": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1660": 2, + "1661": 1, + "1664": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343839266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d77178b2d499" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d77178b2" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_6_9.html b/autobahn/client/tungstenite_case_13_6_9.html new file mode 100644 index 0000000..771f0b3 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_9.html @@ -0,0 +1,588 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.6.9 : Pass - 1940 ms @ 2025-09-11T20:14:22.048Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=490&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: GdiyewZ8I739LgPAIJ+WRg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LjkzHtNvrbsYkkcoL80rnFdipHQ=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
290012900
290812908
290912909
291025820
291212912
291425828
291538745
2916411664
291738751
2918514590
291925838
2920514600
2921514605
292238766
2923617538
2924617544
2925617550
2926617556
2927823416
2928617568
2929617574
2930617580
2931823448
2932617592
29331029330
29341235208
29351441090
29362058720
29371441118
29382367574
29392779353
29402264680
29412676466
29421441188
29431852974
29441647104
29451853010
29461955974
29471132417
29481956012
29491750133
2950926550
29511647216
2952720664
29531029530
29541441356
29551235460
29561132516
2957720699
29581647328
2959720713
29601132560
296138883
29621853316
29631132593
2964720748
2965514825
2966926694
29671235604
2968617808
2969514845
297038910
297125942
2972411888
297338919
297425948
2975617850
2976514880
2977514885
297925958
298025960
2982514910
298325966
298425968
298525970
298638958
298738961
298838964
298912989
299012990
299112991
299312993
299425988
299612996
299812998
300113001
300313003
3004412016
300513005
300626012
300739021
301113011
301213012
301513015
301613016
301713017
301826036
301913019
302013020
302213022
302313023
302426048
302526050
302626052
3028412112
302939087
303026060
3031618186
303226064
3033618198
3034927306
3035721245
3036721252
303739111
3038412152
3039412156
3040618240
304139123
3042412168
304313043
3044412176
304539135
304639138
304713047
3048412192
304913049
3050721350
3051618306
305239156
3053515265
3054412216
3055515275
3056618336
3057927513
3058515290
3059824472
30601236720
306139183
30621545930
3063824504
3064618384
30651030650
3066515330
3067927603
3068824544
3069721483
30701442980
3071927639
3072515360
3073824584
3074515370
3075412300
307613076
3077618462
3078515390
307926158
308013080
3081412324
308526170
308613086
308713087
308826176
309026180
309113091
309239276
309326186
309413094
309539285
309613096
Total10022984107
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3071307
280125602
280212802
280325606
2804514020
2805411220
2806616836
2807514035
2808616848
28091233708
28101747770
28112261842
28122673112
28132878764
28141747838
28153598525
28161953504
28173187327
28182056360
28192364837
28201747940
28212159241
28222776194
28232570575
28242262128
28252673450
28262056520
28273496118
28282056560
28291439606
2830822640
2831925479
28321748144
28331645328
28341748178
28351645360
28361028360
2837925533
2838514190
283938517
284012840
284138523
2842411368
284325686
284625692
284712847
284912849
285012850
285125702
285312853
285412854
285525710
285738571
2859411436
286012860
2862411448
286338589
286425728
286625732
286712867
286812868
286912869
287012870
287212872
287812878
287912879
288225764
288312883
288412884
288512885
288625772
288712887
288825776
289212892
289512895
289712897
289938697
290025800
290125802
2902514510
2903823224
2904514520
2905720335
2906411624
2907823256
290825816
290938727
291038730
2911514555
29121029120
29131132043
29141646624
29151029150
29161132076
2917617502
29181955442
29191235028
2920617520
2921926289
29221235064
29231235076
29241235088
2925926325
2926720482
2927926343
2928720496
2929617574
2930411720
2931411724
293225864
293338799
293412934
2935617610
29361132296
2937823496
29381338194
29391029390
2940926460
2941514705
294225884
294338829
295712957
Total10022856404
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d343930266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882728ce0657164
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3732386365303635
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_6_9.json b/autobahn/client/tungstenite_case_13_6_9.json new file mode 100644 index 0000000..325eb2d --- /dev/null +++ b/autobahn/client/tungstenite_case_13_6_9.json @@ -0,0 +1,435 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 490, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 15)]", + "droppedByMe": true, + "duration": 1940, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=490&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: GdiyewZ8I739LgPAIJ+WRg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LjkzHtNvrbsYkkcoL80rnFdipHQ=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=15\r\n\r\n", + "id": "13.6.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2900": 1, + "2908": 1, + "2909": 1, + "2910": 2, + "2912": 1, + "2914": 2, + "2915": 3, + "2916": 4, + "2917": 3, + "2918": 5, + "2919": 2, + "2920": 5, + "2921": 5, + "2922": 3, + "2923": 6, + "2924": 6, + "2925": 6, + "2926": 6, + "2927": 8, + "2928": 6, + "2929": 6, + "2930": 6, + "2931": 8, + "2932": 6, + "2933": 10, + "2934": 12, + "2935": 14, + "2936": 20, + "2937": 14, + "2938": 23, + "2939": 27, + "2940": 22, + "2941": 26, + "2942": 14, + "2943": 18, + "2944": 16, + "2945": 18, + "2946": 19, + "2947": 11, + "2948": 19, + "2949": 17, + "2950": 9, + "2951": 16, + "2952": 7, + "2953": 10, + "2954": 14, + "2955": 12, + "2956": 11, + "2957": 7, + "2958": 16, + "2959": 7, + "2960": 11, + "2961": 3, + "2962": 18, + "2963": 11, + "2964": 7, + "2965": 5, + "2966": 9, + "2967": 12, + "2968": 6, + "2969": 5, + "2970": 3, + "2971": 2, + "2972": 4, + "2973": 3, + "2974": 2, + "2975": 6, + "2976": 5, + "2977": 5, + "2979": 2, + "2980": 2, + "2982": 5, + "2983": 2, + "2984": 2, + "2985": 2, + "2986": 3, + "2987": 3, + "2988": 3, + "2989": 1, + "2990": 1, + "2991": 1, + "2993": 1, + "2994": 2, + "2996": 1, + "2998": 1, + "3001": 1, + "3003": 1, + "3004": 4, + "3005": 1, + "3006": 2, + "3007": 3, + "3011": 1, + "3012": 1, + "3015": 1, + "3016": 1, + "3017": 1, + "3018": 2, + "3019": 1, + "3020": 1, + "3022": 1, + "3023": 1, + "3024": 2, + "3025": 2, + "3026": 2, + "3028": 4, + "3029": 3, + "3030": 2, + "3031": 6, + "3032": 2, + "3033": 6, + "3034": 9, + "3035": 7, + "3036": 7, + "3037": 3, + "3038": 4, + "3039": 4, + "3040": 6, + "3041": 3, + "3042": 4, + "3043": 1, + "3044": 4, + "3045": 3, + "3046": 3, + "3047": 1, + "3048": 4, + "3049": 1, + "3050": 7, + "3051": 6, + "3052": 3, + "3053": 5, + "3054": 4, + "3055": 5, + "3056": 6, + "3057": 9, + "3058": 5, + "3059": 8, + "3060": 12, + "3061": 3, + "3062": 15, + "3063": 8, + "3064": 6, + "3065": 10, + "3066": 5, + "3067": 9, + "3068": 8, + "3069": 7, + "3070": 14, + "3071": 9, + "3072": 5, + "3073": 8, + "3074": 5, + "3075": 4, + "3076": 1, + "3077": 6, + "3078": 5, + "3079": 2, + "3080": 1, + "3081": 4, + "3085": 2, + "3086": 1, + "3087": 1, + "3088": 2, + "3090": 2, + "3091": 1, + "3092": 3, + "3093": 2, + "3094": 1, + "3095": 3, + "3096": 1 + }, + "started": "2025-09-11T20:14:22.048Z", + "trafficStats": { + "incomingCompressionRatio": 0.045407745361328126, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2975842, + "incomingOctetsWireLevel": 2983842, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0026883147693997195, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2856093, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014024788111748109, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 307 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "307": 1, + "2801": 2, + "2802": 1, + "2803": 2, + "2804": 5, + "2805": 4, + "2806": 6, + "2807": 5, + "2808": 6, + "2809": 12, + "2810": 17, + "2811": 22, + "2812": 26, + "2813": 28, + "2814": 17, + "2815": 35, + "2816": 19, + "2817": 31, + "2818": 20, + "2819": 23, + "2820": 17, + "2821": 21, + "2822": 27, + "2823": 25, + "2824": 22, + "2825": 26, + "2826": 20, + "2827": 34, + "2828": 20, + "2829": 14, + "2830": 8, + "2831": 9, + "2832": 17, + "2833": 16, + "2834": 17, + "2835": 16, + "2836": 10, + "2837": 9, + "2838": 5, + "2839": 3, + "2840": 1, + "2841": 3, + "2842": 4, + "2843": 2, + "2846": 2, + "2847": 1, + "2849": 1, + "2850": 1, + "2851": 2, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 3, + "2859": 4, + "2860": 1, + "2862": 4, + "2863": 3, + "2864": 2, + "2866": 2, + "2867": 1, + "2868": 1, + "2869": 1, + "2870": 1, + "2872": 1, + "2878": 1, + "2879": 1, + "2882": 2, + "2883": 1, + "2884": 1, + "2885": 1, + "2886": 2, + "2887": 1, + "2888": 2, + "2892": 1, + "2895": 1, + "2897": 1, + "2899": 3, + "2900": 2, + "2901": 2, + "2902": 5, + "2903": 8, + "2904": 5, + "2905": 7, + "2906": 4, + "2907": 8, + "2908": 2, + "2909": 3, + "2910": 3, + "2911": 5, + "2912": 10, + "2913": 11, + "2914": 16, + "2915": 10, + "2916": 11, + "2917": 6, + "2918": 19, + "2919": 12, + "2920": 6, + "2921": 9, + "2922": 12, + "2923": 12, + "2924": 12, + "2925": 9, + "2926": 7, + "2927": 9, + "2928": 7, + "2929": 6, + "2930": 4, + "2931": 4, + "2932": 2, + "2933": 3, + "2934": 1, + "2935": 6, + "2936": 11, + "2937": 8, + "2938": 13, + "2939": 10, + "2940": 9, + "2941": 5, + "2942": 2, + "2943": 3, + "2957": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d343930266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 307, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882728ce0657164" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "728ce065" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_1.html b/autobahn/client/tungstenite_case_13_7_1.html new file mode 100644 index 0000000..578b4d2 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_1.html @@ -0,0 +1,320 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.1 : Pass - 170 ms @ 2025-09-11T20:14:45.803Z

+

Case Description

Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=500&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Nh8iPFV3hxt1N2ck8NKOdg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +YWUl3kJJ9UtkD5IB5hMSDPa828=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1610160
176102
181793222
19581102
20521040
211112331
22571254
23962208
2443110344
2571257
Total100222028
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
67554530
766462
837296
9103927
1024240
11444
12224
14114
15345
16116
17117
18118
20240
3061306
Total10026983
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353030266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882f4599c9bf7b1
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6634353939633962
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_1.json b/autobahn/client/tungstenite_case_13_7_1.json new file mode 100644 index 0000000..3e037d6 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_1.json @@ -0,0 +1,167 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 500, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 170, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=500&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Nh8iPFV3hxt1N2ck8NKOdg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +YWUl3kJJ9UtkD5IB5hMSDPa828=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "16": 10, + "17": 6, + "18": 179, + "19": 58, + "20": 52, + "21": 111, + "22": 57, + "23": 96, + "24": 431, + "257": 1 + }, + "started": "2025-09-11T20:14:45.803Z", + "trafficStats": { + "incomingCompressionRatio": 0.9851875, + "incomingOctetsAppLevel": 16000, + "incomingOctetsWebSocketLevel": 15763, + "incomingOctetsWireLevel": 21763, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.38063820338768, + "outgoingCompressionRatio": 0.2920625, + "outgoingOctetsAppLevel": 16000, + "outgoingOctetsWebSocketLevel": 4673, + "outgoingOctetsWireLevel": 6673, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.4279905842071474, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 755, + "7": 66, + "8": 37, + "9": 103, + "10": 24, + "11": 4, + "12": 2, + "14": 1, + "15": 3, + "16": 1, + "17": 1, + "18": 1, + "20": 2, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353030266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f4599c9bf7b1" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f4599c9b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_10.html b/autobahn/client/tungstenite_case_13_7_10.html new file mode 100644 index 0000000..cac7457 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_10.html @@ -0,0 +1,735 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.10 : Pass - 7383 ms @ 2025-09-11T20:14:55.454Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=509&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: to3amW97JKJmGHHhNIRS5Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: DDO59zSia1DhYHmcvfvO91o8ezs=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668408
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353039266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820f7181e00c99
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3066373138316530
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_10.json b/autobahn/client/tungstenite_case_13_7_10.json new file mode 100644 index 0000000..56ba68f --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_10.json @@ -0,0 +1,582 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 509, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 7383, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=509&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: to3amW97JKJmGHHhNIRS5Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: DDO59zSia1DhYHmcvfvO91o8ezs=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:14:55.454Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353039266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820f7181e00c99" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0f7181e0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_11.html b/autobahn/client/tungstenite_case_13_7_11.html new file mode 100644 index 0000000..87fde3b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_11.html @@ -0,0 +1,656 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.11 : Pass - 749 ms @ 2025-09-11T20:15:02.838Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=510&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 6N9QZ1OFeguRWg3d4ggbrg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PLg6PnFI4m1/T40C9FNEEshzr3Y=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
3911391
3922784
39331179
39431182
39551975
3961396
39751985
39841592
39931197
40141604
40262412
40341612
40462424
40572835
40662436
407104070
408124896
409114499
41083280
41193699
412124944
413114543
414124968
41593735
416124992
41783336
418145852
419125028
420135460
42183368
42272954
42393807
42462544
42572975
42683408
42783416
42862568
42973003
43052150
43141724
43231296
43352165
43473038
43552175
43652180
43741748
43883504
43983512
440125280
44152205
44252210
443114873
444125328
44531335
446125352
447114917
448114928
449156735
450146300
45194059
45262712
45373171
454125448
455125460
45652280
45752285
45894122
45941836
46062760
46152305
46273234
46394167
46431392
465104650
46652330
46773269
46841872
46941876
47041880
4712942
47352365
47441896
47562850
476104760
477104770
47831434
47973353
48052400
48152405
48283856
483125796
48483872
48541940
48683888
48773409
48883904
48973423
49083920
49152455
49241968
49362958
49473458
4952990
49683968
49762982
49841992
49941996
50021000
5011501
50252510
50331509
50442016
50594545
50652530
50742028
508105080
50984072
51073570
51173577
51284096
51321026
514105140
51573605
5161516
51752585
518126216
51973633
52063120
52184168
52284176
52363138
52494716
52563150
52673682
52752635
52873696
52921058
5301530
53142124
53242128
53321066
53442136
53531605
5361536
53831614
5421542
5461546
54821096
5491549
55021100
5551555
55731671
56031680
5611561
5641564
5651565
5671567
5681568
56921138
5711571
57231716
5731573
57421148
57642304
57731731
57821156
5801580
58121162
5821582
5841584
5901590
5911591
5991599
6011601
6021602
Total1002465452
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
435215
446264
45290
465230
476282
4811528
4910490
503150
51151
525260
53153
543162
55155
565280
577399
584232
596354
6012720
614244
6212744
6311693
6410640
6513845
6610660
67181206
68161088
69151035
7010700
71211491
72211512
73191387
7413962
75161200
767532
777539
7812936
7911869
8010800
815405
827574
834332
845420
855425
863258
87187
885440
895445
906540
919819
929828
939837
948752
9510950
968768
97141358
989882
9910990
100121200
1019909
1028816
103121236
1048832
105101050
1064424
1076642
1086648
1092218
1102220
111111221
1127784
1132226
114111254
1157805
1168928
1173351
1187826
1198952
1206720
121101210
1226732
1234492
1242248
1257875
1262252
1273381
1303390
1314524
1323396
1333399
1345670
1352270
1364544
1373411
1384552
1393417
1403420
1416846
1424568
1433429
1441144
1451145
1464584
1473441
1483444
1491149
1504600
15181208
1523456
1532306
15471078
1556930
1562312
1571157
1581158
1594636
160121920
1615805
1623486
1633489
1642328
1652330
16671162
1674668
1683504
1693507
1705850
1712342
1733519
1743522
1753525
1761176
1771177
1783534
1801180
1811181
1852370
1861186
1873561
1891189
1911191
1923576
1931193
1943582
1953585
1961196
19791773
19881584
1992398
20071400
201102010
20291818
2032406
20471428
205132665
20661236
20781656
20851040
20981672
21091890
21161266
21281696
2132426
2144856
2151215
2162432
2172434
2181218
2191219
2202440
2211221
2221222
2233669
2241224
2261226
2281228
2312462
2321232
2333699
2341234
2361236
2371237
2601000260000
3061306
Total2002376256
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353130266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882926b90309183
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3932366239303330
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_11.json b/autobahn/client/tungstenite_case_13_7_11.json new file mode 100644 index 0000000..5052063 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_11.json @@ -0,0 +1,503 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 510, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 749, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=510&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 6N9QZ1OFeguRWg3d4ggbrg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PLg6PnFI4m1/T40C9FNEEshzr3Y=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "391": 1, + "392": 2, + "393": 3, + "394": 3, + "395": 5, + "396": 1, + "397": 5, + "398": 4, + "399": 3, + "401": 4, + "402": 6, + "403": 4, + "404": 6, + "405": 7, + "406": 6, + "407": 10, + "408": 12, + "409": 11, + "410": 8, + "411": 9, + "412": 12, + "413": 11, + "414": 12, + "415": 9, + "416": 12, + "417": 8, + "418": 14, + "419": 12, + "420": 13, + "421": 8, + "422": 7, + "423": 9, + "424": 6, + "425": 7, + "426": 8, + "427": 8, + "428": 6, + "429": 7, + "430": 5, + "431": 4, + "432": 3, + "433": 5, + "434": 7, + "435": 5, + "436": 5, + "437": 4, + "438": 8, + "439": 8, + "440": 12, + "441": 5, + "442": 5, + "443": 11, + "444": 12, + "445": 3, + "446": 12, + "447": 11, + "448": 11, + "449": 15, + "450": 14, + "451": 9, + "452": 6, + "453": 7, + "454": 12, + "455": 12, + "456": 5, + "457": 5, + "458": 9, + "459": 4, + "460": 6, + "461": 5, + "462": 7, + "463": 9, + "464": 3, + "465": 10, + "466": 5, + "467": 7, + "468": 4, + "469": 4, + "470": 4, + "471": 2, + "473": 5, + "474": 4, + "475": 6, + "476": 10, + "477": 10, + "478": 3, + "479": 7, + "480": 5, + "481": 5, + "482": 8, + "483": 12, + "484": 8, + "485": 4, + "486": 8, + "487": 7, + "488": 8, + "489": 7, + "490": 8, + "491": 5, + "492": 4, + "493": 6, + "494": 7, + "495": 2, + "496": 8, + "497": 6, + "498": 4, + "499": 4, + "500": 2, + "501": 1, + "502": 5, + "503": 3, + "504": 4, + "505": 9, + "506": 5, + "507": 4, + "508": 10, + "509": 8, + "510": 7, + "511": 7, + "512": 8, + "513": 2, + "514": 10, + "515": 7, + "516": 1, + "517": 5, + "518": 12, + "519": 7, + "520": 6, + "521": 8, + "522": 8, + "523": 6, + "524": 9, + "525": 6, + "526": 7, + "527": 5, + "528": 7, + "529": 2, + "530": 1, + "531": 4, + "532": 4, + "533": 2, + "534": 4, + "535": 3, + "536": 1, + "538": 3, + "542": 1, + "546": 1, + "548": 2, + "549": 1, + "550": 2, + "555": 1, + "557": 3, + "560": 3, + "561": 1, + "564": 1, + "565": 1, + "567": 1, + "568": 1, + "569": 2, + "571": 1, + "572": 3, + "573": 1, + "574": 2, + "576": 4, + "577": 3, + "578": 2, + "580": 1, + "581": 2, + "582": 1, + "584": 1, + "590": 1, + "591": 1, + "599": 1, + "601": 1, + "602": 1 + }, + "started": "2025-09-11T20:15:02.838Z", + "trafficStats": { + "incomingCompressionRatio": 0.0558089599609375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 457187, + "incomingOctetsWireLevel": 465187, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.017498310319409783, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 375946, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.018067884551850388, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "43": 5, + "44": 6, + "45": 2, + "46": 5, + "47": 6, + "48": 11, + "49": 10, + "50": 3, + "51": 1, + "52": 5, + "53": 1, + "54": 3, + "55": 1, + "56": 5, + "57": 7, + "58": 4, + "59": 6, + "60": 12, + "61": 4, + "62": 12, + "63": 11, + "64": 10, + "65": 13, + "66": 10, + "67": 18, + "68": 16, + "69": 15, + "70": 10, + "71": 21, + "72": 21, + "73": 19, + "74": 13, + "75": 16, + "76": 7, + "77": 7, + "78": 12, + "79": 11, + "80": 10, + "81": 5, + "82": 7, + "83": 4, + "84": 5, + "85": 5, + "86": 3, + "87": 1, + "88": 5, + "89": 5, + "90": 6, + "91": 9, + "92": 9, + "93": 9, + "94": 8, + "95": 10, + "96": 8, + "97": 14, + "98": 9, + "99": 10, + "100": 12, + "101": 9, + "102": 8, + "103": 12, + "104": 8, + "105": 10, + "106": 4, + "107": 6, + "108": 6, + "109": 2, + "110": 2, + "111": 11, + "112": 7, + "113": 2, + "114": 11, + "115": 7, + "116": 8, + "117": 3, + "118": 7, + "119": 8, + "120": 6, + "121": 10, + "122": 6, + "123": 4, + "124": 2, + "125": 7, + "126": 2, + "127": 3, + "130": 3, + "131": 4, + "132": 3, + "133": 3, + "134": 5, + "135": 2, + "136": 4, + "137": 3, + "138": 4, + "139": 3, + "140": 3, + "141": 6, + "142": 4, + "143": 3, + "144": 1, + "145": 1, + "146": 4, + "147": 3, + "148": 3, + "149": 1, + "150": 4, + "151": 8, + "152": 3, + "153": 2, + "154": 7, + "155": 6, + "156": 2, + "157": 1, + "158": 1, + "159": 4, + "160": 12, + "161": 5, + "162": 3, + "163": 3, + "164": 2, + "165": 2, + "166": 7, + "167": 4, + "168": 3, + "169": 3, + "170": 5, + "171": 2, + "173": 3, + "174": 3, + "175": 3, + "176": 1, + "177": 1, + "178": 3, + "180": 1, + "181": 1, + "185": 2, + "186": 1, + "187": 3, + "189": 1, + "191": 1, + "192": 3, + "193": 1, + "194": 3, + "195": 3, + "196": 1, + "197": 9, + "198": 8, + "199": 2, + "200": 7, + "201": 10, + "202": 9, + "203": 2, + "204": 7, + "205": 13, + "206": 6, + "207": 8, + "208": 5, + "209": 8, + "210": 9, + "211": 6, + "212": 8, + "213": 2, + "214": 4, + "215": 1, + "216": 2, + "217": 2, + "218": 1, + "219": 1, + "220": 2, + "221": 1, + "222": 1, + "223": 3, + "224": 1, + "226": 1, + "228": 1, + "231": 2, + "232": 1, + "233": 3, + "234": 1, + "236": 1, + "237": 1, + "260": 1000, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353130266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882926b90309183" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "926b9030" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_12.html b/autobahn/client/tungstenite_case_13_7_12.html new file mode 100644 index 0000000..c81eccd --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_12.html @@ -0,0 +1,813 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.12 : Pass - 1360 ms @ 2025-09-11T20:15:03.589Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=511&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Tr00KFQODP9np2Hy6P8taA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: iWMbgnkiIgwIVT8wVZ2QgbMSL7g=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
63821276
6401640
64121282
64231926
64331929
64421288
64521290
6461646
64731941
64821296
64921298
65042600
65131953
6521652
6531653
6561656
65853290
65931977
66063960
66142644
66274634
66342652
66421328
66542660
66621332
66753335
66885344
66932007
6701670
6711671
67232016
67353365
67421348
67564050
67653380
67774739
67842712
679106790
68064080
68164086
68242728
68374781
68453420
68585480
68674802
687106870
68842752
68953445
690117590
69185528
69253460
69396237
69453470
6951695
69621392
69732091
69842792
69942796
7001700
70142804
70232106
70332109
704107040
70553525
7061706
70721414
70821416
70953545
71032130
71121422
7121712
71321426
71432142
71575005
71642864
71753585
7181718
71942876
72032160
72175047
72264332
72375061
72464344
72553625
72632178
72721454
72832184
72953645
73042920
73132193
73275124
73321466
73432202
73621472
73732211
73842952
73932217
74032220
74153705
74232226
74353715
7441744
74532235
74642984
74721494
74864488
74964494
75053750
75186008
75286016
75396777
75443016
755107550
75664536
75743028
75896822
75964554
76021520
76175327
76286096
76343052
76453820
76532295
76632298
76721534
76832304
76921538
77132313
77221544
77321546
7741774
7751775
7761776
77743108
77853890
77921558
78021560
78121562
78232346
78332349
78421568
78532355
78821576
78932367
79053950
7911791
79232376
7931793
79453970
79564770
79697164
79743188
79853990
79953995
80097200
80243208
80364818
8041804
80532415
80664836
80743228
80843232
80964854
81032430
81143244
81221624
81354065
81454070
81543260
81654080
81743268
81843272
81943276
82086560
82132463
82243288
82354115
82454120
82543300
8261826
82764962
82854140
82964974
83021660
83143324
83232496
83375831
83497506
83532505
83643344
83743348
838108380
83975873
84054200
84154205
84254210
84354215
84497596
84532535
8461846
84754235
84821696
84965094
85043400
85143404
85254260
8531853
8541854
85532565
8561856
85743428
85843432
8601860
86121722
86221724
86532595
86643464
86721734
86854340
86932607
8701870
87121742
87221744
8741874
87532625
87621752
8771877
8781878
8791879
88021760
88921778
8921892
8951895
9081908
90932727
9101910
91132733
91221824
91454570
9161916
9171917
9181918
91921838
9231923
92632778
9281928
92921858
9301930
93132793
93243728
9331933
93476538
9351935
93632808
93732811
93832814
93921878
94043760
9411941
94221884
9431943
9441944
9451945
9461946
94754735
9481948
9491949
95121902
9521952
95321906
9561956
9641964
9671967
Total1002771375
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
212
326
428
5315
616
717
818
10110
13113
16232
17234
18354
19119
20480
21242
22244
24124
254100
275135
28256
30130
31262
32264
33133
34134
353105
367252
376222
38276
396234
404160
415205
423126
43286
44288
45290
464184
473141
484192
493147
502100
513153
535265
542108
556330
575285
584232
594236
604240
614244
622124
63163
648512
652130
662132
674268
684272
692138
705350
712142
727504
733219
746444
752150
76176
772154
782156
79179
805400
8110810
825410
834332
845420
855425
86186
877609
886528
894356
906540
915455
924368
938744
944376
955475
968768
979873
98141372
997693
1008800
101111111
1028816
1038824
1046624
105121260
1065530
1073321
1085540
1098872
1109990
111101110
112131456
11391017
114121368
115151725
116111276
117161872
11891062
1196714
12091080
1218968
1227854
1234492
1246744
1254500
1267882
1275635
1304520
1316786
1326792
1337931
1344536
1352270
1362272
1376822
1384552
1396834
1403420
1414564
1427994
1435715
14481152
1456870
14671022
1472294
14871036
14991341
150111650
151101510
152111672
15381224
15471078
15581240
15671092
1574628
15881264
1596954
1604640
1615805
1624648
1632326
1642328
1654660
1661166
1674668
1684672
1694676
1702340
1711171
1724688
1734692
1741174
1752350
1764704
1772354
1783534
1793537
1801180
1813543
1823546
1835915
1844736
1853555
1864744
1874748
1883564
1892378
1903570
1912382
19261152
1933579
19481552
1952390
1961196
1971197
1983594
1993597
2001200
2011201
2022404
2033609
2042408
2052410
2064824
2072414
2083624
2092418
21051050
2112422
2122424
21351065
2142428
2152430
2161216
2171217
2183654
2203660
2211221
2224888
2232446
22451120
2252450
2273681
2283684
22951145
2313693
2323696
2332466
2342468
2351235
2361236
23771659
2381238
2391239
2401240
2411241
2421242
2434972
2444976
2453735
24651230
2473741
2482496
2502500
2513753
25241008
2531253
2541254
2553765
2571257
2581258
2593777
2602331606060
3061306
Total3333733808
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02331
11000
81
Total3332
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353131266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882b67acaf8b592
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6236376163616638
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_12.json b/autobahn/client/tungstenite_case_13_7_12.json new file mode 100644 index 0000000..bb840c1 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_12.json @@ -0,0 +1,660 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 511, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 1360, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=511&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Tr00KFQODP9np2Hy6P8taA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: iWMbgnkiIgwIVT8wVZ2QgbMSL7g=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "638": 2, + "640": 1, + "641": 2, + "642": 3, + "643": 3, + "644": 2, + "645": 2, + "646": 1, + "647": 3, + "648": 2, + "649": 2, + "650": 4, + "651": 3, + "652": 1, + "653": 1, + "656": 1, + "658": 5, + "659": 3, + "660": 6, + "661": 4, + "662": 7, + "663": 4, + "664": 2, + "665": 4, + "666": 2, + "667": 5, + "668": 8, + "669": 3, + "670": 1, + "671": 1, + "672": 3, + "673": 5, + "674": 2, + "675": 6, + "676": 5, + "677": 7, + "678": 4, + "679": 10, + "680": 6, + "681": 6, + "682": 4, + "683": 7, + "684": 5, + "685": 8, + "686": 7, + "687": 10, + "688": 4, + "689": 5, + "690": 11, + "691": 8, + "692": 5, + "693": 9, + "694": 5, + "695": 1, + "696": 2, + "697": 3, + "698": 4, + "699": 4, + "700": 1, + "701": 4, + "702": 3, + "703": 3, + "704": 10, + "705": 5, + "706": 1, + "707": 2, + "708": 2, + "709": 5, + "710": 3, + "711": 2, + "712": 1, + "713": 2, + "714": 3, + "715": 7, + "716": 4, + "717": 5, + "718": 1, + "719": 4, + "720": 3, + "721": 7, + "722": 6, + "723": 7, + "724": 6, + "725": 5, + "726": 3, + "727": 2, + "728": 3, + "729": 5, + "730": 4, + "731": 3, + "732": 7, + "733": 2, + "734": 3, + "736": 2, + "737": 3, + "738": 4, + "739": 3, + "740": 3, + "741": 5, + "742": 3, + "743": 5, + "744": 1, + "745": 3, + "746": 4, + "747": 2, + "748": 6, + "749": 6, + "750": 5, + "751": 8, + "752": 8, + "753": 9, + "754": 4, + "755": 10, + "756": 6, + "757": 4, + "758": 9, + "759": 6, + "760": 2, + "761": 7, + "762": 8, + "763": 4, + "764": 5, + "765": 3, + "766": 3, + "767": 2, + "768": 3, + "769": 2, + "771": 3, + "772": 2, + "773": 2, + "774": 1, + "775": 1, + "776": 1, + "777": 4, + "778": 5, + "779": 2, + "780": 2, + "781": 2, + "782": 3, + "783": 3, + "784": 2, + "785": 3, + "788": 2, + "789": 3, + "790": 5, + "791": 1, + "792": 3, + "793": 1, + "794": 5, + "795": 6, + "796": 9, + "797": 4, + "798": 5, + "799": 5, + "800": 9, + "802": 4, + "803": 6, + "804": 1, + "805": 3, + "806": 6, + "807": 4, + "808": 4, + "809": 6, + "810": 3, + "811": 4, + "812": 2, + "813": 5, + "814": 5, + "815": 4, + "816": 5, + "817": 4, + "818": 4, + "819": 4, + "820": 8, + "821": 3, + "822": 4, + "823": 5, + "824": 5, + "825": 4, + "826": 1, + "827": 6, + "828": 5, + "829": 6, + "830": 2, + "831": 4, + "832": 3, + "833": 7, + "834": 9, + "835": 3, + "836": 4, + "837": 4, + "838": 10, + "839": 7, + "840": 5, + "841": 5, + "842": 5, + "843": 5, + "844": 9, + "845": 3, + "846": 1, + "847": 5, + "848": 2, + "849": 6, + "850": 4, + "851": 4, + "852": 5, + "853": 1, + "854": 1, + "855": 3, + "856": 1, + "857": 4, + "858": 4, + "860": 1, + "861": 2, + "862": 2, + "865": 3, + "866": 4, + "867": 2, + "868": 5, + "869": 3, + "870": 1, + "871": 2, + "872": 2, + "874": 1, + "875": 3, + "876": 2, + "877": 1, + "878": 1, + "879": 1, + "880": 2, + "889": 2, + "892": 1, + "895": 1, + "908": 1, + "909": 3, + "910": 1, + "911": 3, + "912": 2, + "914": 5, + "916": 1, + "917": 1, + "918": 1, + "919": 2, + "923": 1, + "926": 3, + "928": 1, + "929": 2, + "930": 1, + "931": 3, + "932": 4, + "933": 1, + "934": 7, + "935": 1, + "936": 3, + "937": 3, + "938": 3, + "939": 2, + "940": 4, + "941": 1, + "942": 2, + "943": 1, + "944": 1, + "945": 1, + "946": 1, + "947": 5, + "948": 1, + "949": 1, + "951": 2, + "952": 1, + "953": 2, + "956": 1, + "964": 1, + "967": 1 + }, + "started": "2025-09-11T20:15:03.589Z", + "trafficStats": { + "incomingCompressionRatio": 0.0465765380859375, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 763110, + "incomingOctetsWireLevel": 771110, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.010483416545452163, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 733498, + "outgoingWebSocketFrames": 3331, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016936510269215093, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 2331, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 2, + "4": 2, + "5": 3, + "6": 1, + "7": 1, + "8": 1, + "10": 1, + "13": 1, + "16": 2, + "17": 2, + "18": 3, + "19": 1, + "20": 4, + "21": 2, + "22": 2, + "24": 1, + "25": 4, + "27": 5, + "28": 2, + "30": 1, + "31": 2, + "32": 2, + "33": 1, + "34": 1, + "35": 3, + "36": 7, + "37": 6, + "38": 2, + "39": 6, + "40": 4, + "41": 5, + "42": 3, + "43": 2, + "44": 2, + "45": 2, + "46": 4, + "47": 3, + "48": 4, + "49": 3, + "50": 2, + "51": 3, + "53": 5, + "54": 2, + "55": 6, + "57": 5, + "58": 4, + "59": 4, + "60": 4, + "61": 4, + "62": 2, + "63": 1, + "64": 8, + "65": 2, + "66": 2, + "67": 4, + "68": 4, + "69": 2, + "70": 5, + "71": 2, + "72": 7, + "73": 3, + "74": 6, + "75": 2, + "76": 1, + "77": 2, + "78": 2, + "79": 1, + "80": 5, + "81": 10, + "82": 5, + "83": 4, + "84": 5, + "85": 5, + "86": 1, + "87": 7, + "88": 6, + "89": 4, + "90": 6, + "91": 5, + "92": 4, + "93": 8, + "94": 4, + "95": 5, + "96": 8, + "97": 9, + "98": 14, + "99": 7, + "100": 8, + "101": 11, + "102": 8, + "103": 8, + "104": 6, + "105": 12, + "106": 5, + "107": 3, + "108": 5, + "109": 8, + "110": 9, + "111": 10, + "112": 13, + "113": 9, + "114": 12, + "115": 15, + "116": 11, + "117": 16, + "118": 9, + "119": 6, + "120": 9, + "121": 8, + "122": 7, + "123": 4, + "124": 6, + "125": 4, + "126": 7, + "127": 5, + "130": 4, + "131": 6, + "132": 6, + "133": 7, + "134": 4, + "135": 2, + "136": 2, + "137": 6, + "138": 4, + "139": 6, + "140": 3, + "141": 4, + "142": 7, + "143": 5, + "144": 8, + "145": 6, + "146": 7, + "147": 2, + "148": 7, + "149": 9, + "150": 11, + "151": 10, + "152": 11, + "153": 8, + "154": 7, + "155": 8, + "156": 7, + "157": 4, + "158": 8, + "159": 6, + "160": 4, + "161": 5, + "162": 4, + "163": 2, + "164": 2, + "165": 4, + "166": 1, + "167": 4, + "168": 4, + "169": 4, + "170": 2, + "171": 1, + "172": 4, + "173": 4, + "174": 1, + "175": 2, + "176": 4, + "177": 2, + "178": 3, + "179": 3, + "180": 1, + "181": 3, + "182": 3, + "183": 5, + "184": 4, + "185": 3, + "186": 4, + "187": 4, + "188": 3, + "189": 2, + "190": 3, + "191": 2, + "192": 6, + "193": 3, + "194": 8, + "195": 2, + "196": 1, + "197": 1, + "198": 3, + "199": 3, + "200": 1, + "201": 1, + "202": 2, + "203": 3, + "204": 2, + "205": 2, + "206": 4, + "207": 2, + "208": 3, + "209": 2, + "210": 5, + "211": 2, + "212": 2, + "213": 5, + "214": 2, + "215": 2, + "216": 1, + "217": 1, + "218": 3, + "220": 3, + "221": 1, + "222": 4, + "223": 2, + "224": 5, + "225": 2, + "227": 3, + "228": 3, + "229": 5, + "231": 3, + "232": 3, + "233": 2, + "234": 2, + "235": 1, + "236": 1, + "237": 7, + "238": 1, + "239": 1, + "240": 1, + "241": 1, + "242": 1, + "243": 4, + "244": 4, + "245": 3, + "246": 5, + "247": 3, + "248": 2, + "250": 2, + "251": 3, + "252": 4, + "253": 1, + "254": 1, + "255": 3, + "257": 1, + "258": 1, + "259": 3, + "260": 2331, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353131266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b67acaf8b592" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b67acaf8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_13.html b/autobahn/client/tungstenite_case_13_7_13.html new file mode 100644 index 0000000..e3bd395 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_13.html @@ -0,0 +1,903 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.13 : Pass - 2370 ms @ 2025-09-11T20:15:04.951Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=512&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: WfoQSjlDwdNIqZu4TtLKRQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: gFcx90Lo1lZobaShAku5RKx106Y=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
118911189
119211192
119411194
119522390
119611196
119744788
119811198
119922398
120044800
120122402
120211202
120333609
120433612
120556025
120633618
120711207
120833624
120944836
121011210
121133633
121233636
121344852
121433642
121522430
121656080
121756085
121867308
121967314
122033660
122167326
122222444
122333669
122433672
122556125
122644904
122711227
122833684
122967374
123089840
123133693
123256160
123367398
123444936
123578645
123667416
1237911133
12381214856
123944956
124033720
124122482
124244968
124367458
124467464
124533735
124633738
124733741
124878736
124967494
125011250
125122502
125222504
125411254
125545020
125611256
125711257
125822516
126111261
126211262
126422528
126845072
126922538
127122542
127211272
127333819
127411274
127522550
127622552
127711277
127811278
127911279
128011280
128211282
128322566
128411284
128511285
128611286
128711287
128811288
128911289
129011290
129133873
129222584
129333879
129533885
129611296
129711297
130133903
130345212
130411304
130522610
130611306
130733921
130845232
131033930
131133933
131256560
131333939
131411314
131556575
131611316
131711317
131833954
131945276
132011320
132122642
132211322
132311323
132445296
132511325
132633978
132767962
132856640
132933987
133045320
133145324
133233996
133311333
133456670
133556675
133622672
133722674
133811338
133968034
134068040
1341810728
134245368
134456720
134522690
134645384
134779429
134879436
134945396
135034050
135145404
135245408
135356765
135422708
1355810840
135622712
135734071
135856790
136045440
136156805
136234086
136334089
136411364
136545460
136622732
136745468
136822736
136934107
137034110
137134113
137211372
137368238
137534125
137711377
137822756
137945516
138034140
138145524
138222764
138322766
138422768
138511385
138611386
138722774
138834164
138922778
139011390
139111391
139222784
139311393
139534185
139622792
139711397
139822796
139934197
140034200
140111401
140222804
140311403
140711407
140834224
140957045
141034230
141145644
141222824
1413811304
141445656
141511415
1416811328
141745668
141857090
141957095
142045680
142122842
142245688
142422848
142522850
142634278
142734281
142822856
142945716
143034290
143122862
143222864
143434302
143557175
143645744
143722874
143811438
144022880
144122882
144322886
144411444
144511445
144611446
144734341
144811448
144911449
145011450
145122902
145211452
145345812
145422908
145534365
145634368
145734371
145857290
145957295
146057300
146145844
146257310
146357315
146445856
1465710255
14661116126
146745868
146811468
14691116159
147057350
147145884
147234416
147322946
147445896
147634428
1477811816
147822956
147922958
148034440
148111481
148222964
148322966
148422968
148611486
148722974
148845952
148911489
149022980
149211492
149311493
149434482
149545980
149645984
149822996
149934497
150057500
150111501
150334509
150423008
150511505
150611506
150734521
150811508
150946036
151257560
151323026
151411514
151623032
151723034
151834554
151911519
152023040
152134563
152211522
152311523
152411524
152723054
152823056
152911529
153011530
153146124
153211532
153311533
153411534
153611536
154146164
154223084
154311543
154423088
154611546
154723094
154811548
154911549
155011550
155123102
155234656
157211572
157411574
157811578
157923158
158011580
158134743
158211582
158534755
158711587
158923178
159011590
159111591
159311593
159511595
159723194
159923198
160058000
160123202
160234806
160334809
160411604
160523210
160611606
160846432
160911609
161246448
161311613
161411614
161511615
161711617
162023240
162123242
162211622
162311623
162534875
162623252
162811628
162934887
163011630
163111631
163211632
163311633
163611636
163811638
Total10021377957
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21020
31133
41560
5840
61060
7642
8540
91199
10330
11555
12896
1310130
148112
1510150
168128
178136
189162
1911209
2014280
2111231
2215330
238184
248192
256150
268208
278216
287196
298232
306180
315155
326192
335165
345170
355175
36272
375185
38276
395195
40280
41141
425210
434172
443132
456270
46292
47294
483144
494196
504200
513153
524208
532106
544216
552110
572114
583174
593177
60160
612122
622124
634252
642128
656390
662132
67167
696414
706420
712142
737511
744296
75175
762152
773231
783234
793237
805400
812162
82182
83183
842168
856510
863258
875435
887616
893267
903270
914364
924368
942188
95195
963288
97197
983294
995495
1003300
1012202
1023306
1036618
1041104
1054420
1062212
1072214
1086648
1094436
1104440
1111111
1124448
1134452
1143342
1154460
1162232
1172234
1193357
1203360
1213363
1223366
1232246
1242248
1262252
1272254
1301130
1312262
1321132
1336798
1342268
1351135
1363408
1374548
1381138
1391139
1401140
1414564
1422284
1432286
1441144
1452290
1461146
1474588
1492298
1512302
1524608
1541154
1551155
1563468
1572314
1594636
1601160
1612322
1622324
1641164
1664664
1672334
1681168
1692338
1701170
1712342
1722344
1732346
1743522
1752350
1762352
1772354
1791179
1802360
1811181
1821182
1832366
1841184
1853555
1862372
1872374
1882376
1894756
1904760
19161146
1923576
1932386
1942388
1951195
1962392
1973591
1983594
1992398
2002400
2011201
2021202
2033609
2044816
20561230
2063618
2072414
2084832
2093627
2102420
2111211
2124848
2133639
2142428
21551075
21661296
2171217
2183654
2191219
2204880
22161326
2223666
2232446
2244896
2253675
2264904
2273681
2284912
2293687
2304920
2313693
2324928
23361398
23451170
2353705
2362472
23771659
23892142
23951195
24071680
2412482
242102420
2434972
2444976
24581960
24661476
24871736
249133237
25041000
251112761
25261512
253102530
254102540
255102550
256164096
257133341
258184644
259143626
26051161330160
3061306
Total61181454543
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05116
11000
81
Total6117
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353132266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888224c9a6922721
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3234633961363932
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_13.json b/autobahn/client/tungstenite_case_13_7_13.json new file mode 100644 index 0000000..e277a80 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_13.json @@ -0,0 +1,750 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 512, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 2370, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=512&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: WfoQSjlDwdNIqZu4TtLKRQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: gFcx90Lo1lZobaShAku5RKx106Y=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1189": 1, + "1192": 1, + "1194": 1, + "1195": 2, + "1196": 1, + "1197": 4, + "1198": 1, + "1199": 2, + "1200": 4, + "1201": 2, + "1202": 1, + "1203": 3, + "1204": 3, + "1205": 5, + "1206": 3, + "1207": 1, + "1208": 3, + "1209": 4, + "1210": 1, + "1211": 3, + "1212": 3, + "1213": 4, + "1214": 3, + "1215": 2, + "1216": 5, + "1217": 5, + "1218": 6, + "1219": 6, + "1220": 3, + "1221": 6, + "1222": 2, + "1223": 3, + "1224": 3, + "1225": 5, + "1226": 4, + "1227": 1, + "1228": 3, + "1229": 6, + "1230": 8, + "1231": 3, + "1232": 5, + "1233": 6, + "1234": 4, + "1235": 7, + "1236": 6, + "1237": 9, + "1238": 12, + "1239": 4, + "1240": 3, + "1241": 2, + "1242": 4, + "1243": 6, + "1244": 6, + "1245": 3, + "1246": 3, + "1247": 3, + "1248": 7, + "1249": 6, + "1250": 1, + "1251": 2, + "1252": 2, + "1254": 1, + "1255": 4, + "1256": 1, + "1257": 1, + "1258": 2, + "1261": 1, + "1262": 1, + "1264": 2, + "1268": 4, + "1269": 2, + "1271": 2, + "1272": 1, + "1273": 3, + "1274": 1, + "1275": 2, + "1276": 2, + "1277": 1, + "1278": 1, + "1279": 1, + "1280": 1, + "1282": 1, + "1283": 2, + "1284": 1, + "1285": 1, + "1286": 1, + "1287": 1, + "1288": 1, + "1289": 1, + "1290": 1, + "1291": 3, + "1292": 2, + "1293": 3, + "1295": 3, + "1296": 1, + "1297": 1, + "1301": 3, + "1303": 4, + "1304": 1, + "1305": 2, + "1306": 1, + "1307": 3, + "1308": 4, + "1310": 3, + "1311": 3, + "1312": 5, + "1313": 3, + "1314": 1, + "1315": 5, + "1316": 1, + "1317": 1, + "1318": 3, + "1319": 4, + "1320": 1, + "1321": 2, + "1322": 1, + "1323": 1, + "1324": 4, + "1325": 1, + "1326": 3, + "1327": 6, + "1328": 5, + "1329": 3, + "1330": 4, + "1331": 4, + "1332": 3, + "1333": 1, + "1334": 5, + "1335": 5, + "1336": 2, + "1337": 2, + "1338": 1, + "1339": 6, + "1340": 6, + "1341": 8, + "1342": 4, + "1344": 5, + "1345": 2, + "1346": 4, + "1347": 7, + "1348": 7, + "1349": 4, + "1350": 3, + "1351": 4, + "1352": 4, + "1353": 5, + "1354": 2, + "1355": 8, + "1356": 2, + "1357": 3, + "1358": 5, + "1360": 4, + "1361": 5, + "1362": 3, + "1363": 3, + "1364": 1, + "1365": 4, + "1366": 2, + "1367": 4, + "1368": 2, + "1369": 3, + "1370": 3, + "1371": 3, + "1372": 1, + "1373": 6, + "1375": 3, + "1377": 1, + "1378": 2, + "1379": 4, + "1380": 3, + "1381": 4, + "1382": 2, + "1383": 2, + "1384": 2, + "1385": 1, + "1386": 1, + "1387": 2, + "1388": 3, + "1389": 2, + "1390": 1, + "1391": 1, + "1392": 2, + "1393": 1, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 3, + "1400": 3, + "1401": 1, + "1402": 2, + "1403": 1, + "1407": 1, + "1408": 3, + "1409": 5, + "1410": 3, + "1411": 4, + "1412": 2, + "1413": 8, + "1414": 4, + "1415": 1, + "1416": 8, + "1417": 4, + "1418": 5, + "1419": 5, + "1420": 4, + "1421": 2, + "1422": 4, + "1424": 2, + "1425": 2, + "1426": 3, + "1427": 3, + "1428": 2, + "1429": 4, + "1430": 3, + "1431": 2, + "1432": 2, + "1434": 3, + "1435": 5, + "1436": 4, + "1437": 2, + "1438": 1, + "1440": 2, + "1441": 2, + "1443": 2, + "1444": 1, + "1445": 1, + "1446": 1, + "1447": 3, + "1448": 1, + "1449": 1, + "1450": 1, + "1451": 2, + "1452": 1, + "1453": 4, + "1454": 2, + "1455": 3, + "1456": 3, + "1457": 3, + "1458": 5, + "1459": 5, + "1460": 5, + "1461": 4, + "1462": 5, + "1463": 5, + "1464": 4, + "1465": 7, + "1466": 11, + "1467": 4, + "1468": 1, + "1469": 11, + "1470": 5, + "1471": 4, + "1472": 3, + "1473": 2, + "1474": 4, + "1476": 3, + "1477": 8, + "1478": 2, + "1479": 2, + "1480": 3, + "1481": 1, + "1482": 2, + "1483": 2, + "1484": 2, + "1486": 1, + "1487": 2, + "1488": 4, + "1489": 1, + "1490": 2, + "1492": 1, + "1493": 1, + "1494": 3, + "1495": 4, + "1496": 4, + "1498": 2, + "1499": 3, + "1500": 5, + "1501": 1, + "1503": 3, + "1504": 2, + "1505": 1, + "1506": 1, + "1507": 3, + "1508": 1, + "1509": 4, + "1512": 5, + "1513": 2, + "1514": 1, + "1516": 2, + "1517": 2, + "1518": 3, + "1519": 1, + "1520": 2, + "1521": 3, + "1522": 1, + "1523": 1, + "1524": 1, + "1527": 2, + "1528": 2, + "1529": 1, + "1530": 1, + "1531": 4, + "1532": 1, + "1533": 1, + "1534": 1, + "1536": 1, + "1541": 4, + "1542": 2, + "1543": 1, + "1544": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 1, + "1550": 1, + "1551": 2, + "1552": 3, + "1572": 1, + "1574": 1, + "1578": 1, + "1579": 2, + "1580": 1, + "1581": 3, + "1582": 1, + "1585": 3, + "1587": 1, + "1589": 2, + "1590": 1, + "1591": 1, + "1593": 1, + "1595": 1, + "1597": 2, + "1599": 2, + "1600": 5, + "1601": 2, + "1602": 3, + "1603": 3, + "1604": 1, + "1605": 2, + "1606": 1, + "1608": 4, + "1609": 1, + "1612": 4, + "1613": 1, + "1614": 1, + "1615": 1, + "1617": 1, + "1620": 2, + "1621": 2, + "1622": 1, + "1623": 1, + "1625": 3, + "1626": 2, + "1628": 1, + "1629": 3, + "1630": 1, + "1631": 1, + "1632": 1, + "1633": 1, + "1636": 1, + "1638": 1 + }, + "started": "2025-09-11T20:15:04.951Z", + "trafficStats": { + "incomingCompressionRatio": 0.0417996826171875, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1369692, + "incomingOctetsWireLevel": 1377692, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.005840729156627913, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1454233, + "outgoingWebSocketFrames": 6116, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.016331379969459034, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 5116, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 10, + "3": 11, + "4": 15, + "5": 8, + "6": 10, + "7": 6, + "8": 5, + "9": 11, + "10": 3, + "11": 5, + "12": 8, + "13": 10, + "14": 8, + "15": 10, + "16": 8, + "17": 8, + "18": 9, + "19": 11, + "20": 14, + "21": 11, + "22": 15, + "23": 8, + "24": 8, + "25": 6, + "26": 8, + "27": 8, + "28": 7, + "29": 8, + "30": 6, + "31": 5, + "32": 6, + "33": 5, + "34": 5, + "35": 5, + "36": 2, + "37": 5, + "38": 2, + "39": 5, + "40": 2, + "41": 1, + "42": 5, + "43": 4, + "44": 3, + "45": 6, + "46": 2, + "47": 2, + "48": 3, + "49": 4, + "50": 4, + "51": 3, + "52": 4, + "53": 2, + "54": 4, + "55": 2, + "57": 2, + "58": 3, + "59": 3, + "60": 1, + "61": 2, + "62": 2, + "63": 4, + "64": 2, + "65": 6, + "66": 2, + "67": 1, + "69": 6, + "70": 6, + "71": 2, + "73": 7, + "74": 4, + "75": 1, + "76": 2, + "77": 3, + "78": 3, + "79": 3, + "80": 5, + "81": 2, + "82": 1, + "83": 1, + "84": 2, + "85": 6, + "86": 3, + "87": 5, + "88": 7, + "89": 3, + "90": 3, + "91": 4, + "92": 4, + "94": 2, + "95": 1, + "96": 3, + "97": 1, + "98": 3, + "99": 5, + "100": 3, + "101": 2, + "102": 3, + "103": 6, + "104": 1, + "105": 4, + "106": 2, + "107": 2, + "108": 6, + "109": 4, + "110": 4, + "111": 1, + "112": 4, + "113": 4, + "114": 3, + "115": 4, + "116": 2, + "117": 2, + "119": 3, + "120": 3, + "121": 3, + "122": 3, + "123": 2, + "124": 2, + "126": 2, + "127": 2, + "130": 1, + "131": 2, + "132": 1, + "133": 6, + "134": 2, + "135": 1, + "136": 3, + "137": 4, + "138": 1, + "139": 1, + "140": 1, + "141": 4, + "142": 2, + "143": 2, + "144": 1, + "145": 2, + "146": 1, + "147": 4, + "149": 2, + "151": 2, + "152": 4, + "154": 1, + "155": 1, + "156": 3, + "157": 2, + "159": 4, + "160": 1, + "161": 2, + "162": 2, + "164": 1, + "166": 4, + "167": 2, + "168": 1, + "169": 2, + "170": 1, + "171": 2, + "172": 2, + "173": 2, + "174": 3, + "175": 2, + "176": 2, + "177": 2, + "179": 1, + "180": 2, + "181": 1, + "182": 1, + "183": 2, + "184": 1, + "185": 3, + "186": 2, + "187": 2, + "188": 2, + "189": 4, + "190": 4, + "191": 6, + "192": 3, + "193": 2, + "194": 2, + "195": 1, + "196": 2, + "197": 3, + "198": 3, + "199": 2, + "200": 2, + "201": 1, + "202": 1, + "203": 3, + "204": 4, + "205": 6, + "206": 3, + "207": 2, + "208": 4, + "209": 3, + "210": 2, + "211": 1, + "212": 4, + "213": 3, + "214": 2, + "215": 5, + "216": 6, + "217": 1, + "218": 3, + "219": 1, + "220": 4, + "221": 6, + "222": 3, + "223": 2, + "224": 4, + "225": 3, + "226": 4, + "227": 3, + "228": 4, + "229": 3, + "230": 4, + "231": 3, + "232": 4, + "233": 6, + "234": 5, + "235": 3, + "236": 2, + "237": 7, + "238": 9, + "239": 5, + "240": 7, + "241": 2, + "242": 10, + "243": 4, + "244": 4, + "245": 8, + "246": 6, + "248": 7, + "249": 13, + "250": 4, + "251": 11, + "252": 6, + "253": 10, + "254": 10, + "255": 10, + "256": 16, + "257": 13, + "258": 18, + "259": 14, + "260": 5116, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353132266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888224c9a6922721" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "24c9a692" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_14.html b/autobahn/client/tungstenite_case_13_7_14.html new file mode 100644 index 0000000..2e5f4da --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_14.html @@ -0,0 +1,701 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.14 : Pass - 4010 ms @ 2025-09-11T20:15:07.323Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=513&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: U7ExaaBqEgPs0JnnyCmtkg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: s/V1Irkndo3nKlJH0l4BdV1XwUs=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
244312443
244512445
244612446
244712447
244812448
244924898
245037350
245112451
245212452
245437362
245524910
245649824
245724914
245824916
245949836
246012460
246149844
246212462
246412464
246537395
2466922194
24671127137
2468922212
2469717283
2470717290
2471614826
2472717304
2473512365
247412474
247549900
247637428
2477614862
247824956
2479512395
2480614880
2481614886
2482717374
2483819864
2484819872
2485922365
2486819888
2487717409
2488717416
2489717423
24901024900
2491512455
24921229904
24931024930
2494922446
24951024950
2496819968
24971024970
2498512490
249949996
2500615000
25011332513
25021332526
2503922527
25041230048
25051127555
2506820048
2507512535
25081025080
25091127599
25101435140
2511820088
25121025120
2513717591
2514512570
2515512575
251612516
251737551
2518410072
251937557
252025040
252137563
252225044
252337569
252437572
2525410100
2527410108
252837584
252912529
253112531
253225064
253312533
253512535
2536512680
2537410148
253925078
254012540
254512545
254612546
254825096
255237656
255312553
2554410216
2555410220
255612556
255725114
2558615348
2559512795
2560820480
256137683
2562512810
2563923067
2564615384
25651230780
25661846188
25671025670
2568512840
256937707
257037710
2572410288
257325146
257437722
257537725
257612576
257712577
257825156
258325166
2586410344
258712587
258837764
258912589
259137773
259212592
259412594
259612596
259712597
259912599
260012600
260112601
260212602
260312603
260512605
260612606
260712607
260812608
260925218
261125222
261212612
261312613
261412614
261612616
261725234
261825236
2619513095
2621410484
262212622
262425248
2625513125
2626513130
262737881
2628615768
262925258
263225264
263312633
2634410536
263625272
263812638
264012640
264112641
264212642
264312643
2644513220
264525290
264625292
264712647
264812648
265012650
265112651
265212652
265412654
265812658
266112661
266225324
266437992
266537995
266612666
266738001
266825336
2669718683
2670821360
2671616026
267238016
2673821384
2674924066
267512675
267625352
267712677
2678410712
267938037
2680410720
268112681
2682616092
268325366
2684821472
268512685
268625372
268712687
268825376
2690718830
2691410764
269238076
2693410772
269425388
269525390
269625392
269912699
270212702
270425408
270512705
270612706
270812708
270925418
271025420
271125422
271212712
271312713
271625432
271812718
271912719
272012720
272125442
272225444
272312723
272425448
272512725
272612726
272725454
272812728
273012730
2731410924
273612736
273812738
273912739
274025480
274138223
274412744
274512745
274612746
275012750
275212752
275725514
275812758
276012760
276112761
276212762
276412764
2768411072
276912769
277038310
277138313
277612776
277912779
278112781
278238346
278312783
278412784
2785513925
278712787
2788411152
278938367
2790513950
2791513955
2792925128
27931439102
2794822352
2795616770
2796925164
2797719579
2798719586
2799616794
280025600
280112801
280212802
280325606
280525610
280912809
281112811
Total10022585814
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
21734
32163
428112
525125
622132
726182
820160
934306
1020200
1114154
12896
139117
1417238
1516240
1617272
1716272
1810180
199171
205100
21363
22122
23369
24496
25250
28256
29129
31131
32132
33266
35135
36136
37274
393117
414164
42142
444176
453135
46292
48296
49149
50150
51151
52152
54154
60160
61161
642128
65165
66166
67167
682136
69169
702140
74174
77177
79179
813243
822164
832166
845420
858680
865430
877609
884352
898712
902180
913273
923276
935465
9410940
95111045
96161536
9710970
98111078
996594
100191900
101121212
1026612
1039927
104121248
105121260
106121272
1079963
1087756
1099981
1107770
1116666
1124448
1134452
1142228
1153345
1161116
1176702
118111298
1198952
120131560
121101210
12291098
1235615
1242248
1253375
1411141
2412482
2421242
2432486
24451220
2454980
24661476
24751235
24861488
249122988
250174250
251225522
252266552
253287084
254174318
255358925
256194864
257317967
258205160
259235957
260107192786940
3061306
Total117212897843
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
010719
11000
81
Total11720
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353133266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88824caa25cf4f42
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3463616132356366
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_14.json b/autobahn/client/tungstenite_case_13_7_14.json new file mode 100644 index 0000000..d98e9b5 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_14.json @@ -0,0 +1,548 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 513, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 4010, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=513&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: U7ExaaBqEgPs0JnnyCmtkg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: s/V1Irkndo3nKlJH0l4BdV1XwUs=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2443": 1, + "2445": 1, + "2446": 1, + "2447": 1, + "2448": 1, + "2449": 2, + "2450": 3, + "2451": 1, + "2452": 1, + "2454": 3, + "2455": 2, + "2456": 4, + "2457": 2, + "2458": 2, + "2459": 4, + "2460": 1, + "2461": 4, + "2462": 1, + "2464": 1, + "2465": 3, + "2466": 9, + "2467": 11, + "2468": 9, + "2469": 7, + "2470": 7, + "2471": 6, + "2472": 7, + "2473": 5, + "2474": 1, + "2475": 4, + "2476": 3, + "2477": 6, + "2478": 2, + "2479": 5, + "2480": 6, + "2481": 6, + "2482": 7, + "2483": 8, + "2484": 8, + "2485": 9, + "2486": 8, + "2487": 7, + "2488": 7, + "2489": 7, + "2490": 10, + "2491": 5, + "2492": 12, + "2493": 10, + "2494": 9, + "2495": 10, + "2496": 8, + "2497": 10, + "2498": 5, + "2499": 4, + "2500": 6, + "2501": 13, + "2502": 13, + "2503": 9, + "2504": 12, + "2505": 11, + "2506": 8, + "2507": 5, + "2508": 10, + "2509": 11, + "2510": 14, + "2511": 8, + "2512": 10, + "2513": 7, + "2514": 5, + "2515": 5, + "2516": 1, + "2517": 3, + "2518": 4, + "2519": 3, + "2520": 2, + "2521": 3, + "2522": 2, + "2523": 3, + "2524": 3, + "2525": 4, + "2527": 4, + "2528": 3, + "2529": 1, + "2531": 1, + "2532": 2, + "2533": 1, + "2535": 1, + "2536": 5, + "2537": 4, + "2539": 2, + "2540": 1, + "2545": 1, + "2546": 1, + "2548": 2, + "2552": 3, + "2553": 1, + "2554": 4, + "2555": 4, + "2556": 1, + "2557": 2, + "2558": 6, + "2559": 5, + "2560": 8, + "2561": 3, + "2562": 5, + "2563": 9, + "2564": 6, + "2565": 12, + "2566": 18, + "2567": 10, + "2568": 5, + "2569": 3, + "2570": 3, + "2572": 4, + "2573": 2, + "2574": 3, + "2575": 3, + "2576": 1, + "2577": 1, + "2578": 2, + "2583": 2, + "2586": 4, + "2587": 1, + "2588": 3, + "2589": 1, + "2591": 3, + "2592": 1, + "2594": 1, + "2596": 1, + "2597": 1, + "2599": 1, + "2600": 1, + "2601": 1, + "2602": 1, + "2603": 1, + "2605": 1, + "2606": 1, + "2607": 1, + "2608": 1, + "2609": 2, + "2611": 2, + "2612": 1, + "2613": 1, + "2614": 1, + "2616": 1, + "2617": 2, + "2618": 2, + "2619": 5, + "2621": 4, + "2622": 1, + "2624": 2, + "2625": 5, + "2626": 5, + "2627": 3, + "2628": 6, + "2629": 2, + "2632": 2, + "2633": 1, + "2634": 4, + "2636": 2, + "2638": 1, + "2640": 1, + "2641": 1, + "2642": 1, + "2643": 1, + "2644": 5, + "2645": 2, + "2646": 2, + "2647": 1, + "2648": 1, + "2650": 1, + "2651": 1, + "2652": 1, + "2654": 1, + "2658": 1, + "2661": 1, + "2662": 2, + "2664": 3, + "2665": 3, + "2666": 1, + "2667": 3, + "2668": 2, + "2669": 7, + "2670": 8, + "2671": 6, + "2672": 3, + "2673": 8, + "2674": 9, + "2675": 1, + "2676": 2, + "2677": 1, + "2678": 4, + "2679": 3, + "2680": 4, + "2681": 1, + "2682": 6, + "2683": 2, + "2684": 8, + "2685": 1, + "2686": 2, + "2687": 1, + "2688": 2, + "2690": 7, + "2691": 4, + "2692": 3, + "2693": 4, + "2694": 2, + "2695": 2, + "2696": 2, + "2699": 1, + "2702": 1, + "2704": 2, + "2705": 1, + "2706": 1, + "2708": 1, + "2709": 2, + "2710": 2, + "2711": 2, + "2712": 1, + "2713": 1, + "2716": 2, + "2718": 1, + "2719": 1, + "2720": 1, + "2721": 2, + "2722": 2, + "2723": 1, + "2724": 2, + "2725": 1, + "2726": 1, + "2727": 2, + "2728": 1, + "2730": 1, + "2731": 4, + "2736": 1, + "2738": 1, + "2739": 1, + "2740": 2, + "2741": 3, + "2744": 1, + "2745": 1, + "2746": 1, + "2750": 1, + "2752": 1, + "2757": 2, + "2758": 1, + "2760": 1, + "2761": 1, + "2762": 1, + "2764": 1, + "2768": 4, + "2769": 1, + "2770": 3, + "2771": 3, + "2776": 1, + "2779": 1, + "2781": 1, + "2782": 3, + "2783": 1, + "2784": 1, + "2785": 5, + "2787": 1, + "2788": 4, + "2789": 3, + "2790": 5, + "2791": 5, + "2792": 9, + "2793": 14, + "2794": 8, + "2795": 6, + "2796": 9, + "2797": 7, + "2798": 7, + "2799": 6, + "2800": 2, + "2801": 1, + "2802": 1, + "2803": 2, + "2805": 2, + "2809": 1, + "2811": 1 + }, + "started": "2025-09-11T20:15:07.323Z", + "trafficStats": { + "incomingCompressionRatio": 0.03933027648925781, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2577549, + "incomingOctetsWireLevel": 2585549, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0031037237313432256, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2897533, + "outgoingWebSocketFrames": 11719, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.015932159294945854, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 10719, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 17, + "3": 21, + "4": 28, + "5": 25, + "6": 22, + "7": 26, + "8": 20, + "9": 34, + "10": 20, + "11": 14, + "12": 8, + "13": 9, + "14": 17, + "15": 16, + "16": 17, + "17": 16, + "18": 10, + "19": 9, + "20": 5, + "21": 3, + "22": 1, + "23": 3, + "24": 4, + "25": 2, + "28": 2, + "29": 1, + "31": 1, + "32": 1, + "33": 2, + "35": 1, + "36": 1, + "37": 2, + "39": 3, + "41": 4, + "42": 1, + "44": 4, + "45": 3, + "46": 2, + "48": 2, + "49": 1, + "50": 1, + "51": 1, + "52": 1, + "54": 1, + "60": 1, + "61": 1, + "64": 2, + "65": 1, + "66": 1, + "67": 1, + "68": 2, + "69": 1, + "70": 2, + "74": 1, + "77": 1, + "79": 1, + "81": 3, + "82": 2, + "83": 2, + "84": 5, + "85": 8, + "86": 5, + "87": 7, + "88": 4, + "89": 8, + "90": 2, + "91": 3, + "92": 3, + "93": 5, + "94": 10, + "95": 11, + "96": 16, + "97": 10, + "98": 11, + "99": 6, + "100": 19, + "101": 12, + "102": 6, + "103": 9, + "104": 12, + "105": 12, + "106": 12, + "107": 9, + "108": 7, + "109": 9, + "110": 7, + "111": 6, + "112": 4, + "113": 4, + "114": 2, + "115": 3, + "116": 1, + "117": 6, + "118": 11, + "119": 8, + "120": 13, + "121": 10, + "122": 9, + "123": 5, + "124": 2, + "125": 3, + "141": 1, + "241": 2, + "242": 1, + "243": 2, + "244": 5, + "245": 4, + "246": 6, + "247": 5, + "248": 6, + "249": 12, + "250": 17, + "251": 22, + "252": 26, + "253": 28, + "254": 17, + "255": 35, + "256": 19, + "257": 31, + "258": 20, + "259": 23, + "260": 10719, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353133266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824caa25cf4f42" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4caa25cf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_15.html b/autobahn/client/tungstenite_case_13_7_15.html new file mode 100644 index 0000000..efcb5a1 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_15.html @@ -0,0 +1,736 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.15 : Pass - 7205 ms @ 2025-09-11T20:15:11.335Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=514&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: wxZmfsx3tEPwq17HZ1Fa9g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8+OEYj9uQxlKTksU6jImBVY24qk=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
326
4416
515
6212
7214
818
9218
10110
11333
12112
13339
14684
15230
16232
17234
23123
30130
31262
33133
34134
36136
37274
393117
40140
41141
42284
433129
449396
455225
463138
4710470
4810480
4915735
50201000
5114714
5216832
5314742
54211134
55261430
5617952
5711627
58251450
59211239
60241440
6116976
62251550
63241512
64241536
6512780
66171122
67191273
6813884
699621
70251750
71251775
72161152
7312876
7411814
758600
7610760
77131001
784312
796474
803240
81181
822164
832166
845420
853255
863258
875435
884352
89121068
9010900
917637
92111012
939837
942188
953285
972194
983294
99199
1121112
1131113
1141114
1163348
1172234
1191119
1271127
1302260
1992398
2001200
2011201
2021202
2032406
20451020
20571435
20651030
2074828
2081208
20961254
21081680
21161266
2124848
213112343
21481712
21571505
21661296
21761302
2184872
2194876
22051100
22151105
22271554
223173791
224163584
225143150
226132938
22761362
22861368
229102290
230163680
231133003
23292088
23361398
23461404
23561410
2362472
2374948
23851190
2394956
24061440
2413723
2432486
2442488
2462492
2481248
2491249
2513753
2533759
2542508
2561256
2582516
2591259
260217025642520
3061306
Total227045753816
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
021702
11000
81
Total22703
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353134266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882266c0d4d2584
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3236366330643464
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_15.json b/autobahn/client/tungstenite_case_13_7_15.json new file mode 100644 index 0000000..06dba60 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_15.json @@ -0,0 +1,583 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 514, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 256 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 7205, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=514&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: wxZmfsx3tEPwq17HZ1Fa9g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8+OEYj9uQxlKTksU6jImBVY24qk=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:15:11.335Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5753506, + "outgoingWebSocketFrames": 22702, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.01578503761764009, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 21702, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "3": 2, + "4": 4, + "5": 1, + "6": 2, + "7": 2, + "8": 1, + "9": 2, + "10": 1, + "11": 3, + "12": 1, + "13": 3, + "14": 6, + "15": 2, + "16": 2, + "17": 2, + "23": 1, + "30": 1, + "31": 2, + "33": 1, + "34": 1, + "36": 1, + "37": 2, + "39": 3, + "40": 1, + "41": 1, + "42": 2, + "43": 3, + "44": 9, + "45": 5, + "46": 3, + "47": 10, + "48": 10, + "49": 15, + "50": 20, + "51": 14, + "52": 16, + "53": 14, + "54": 21, + "55": 26, + "56": 17, + "57": 11, + "58": 25, + "59": 21, + "60": 24, + "61": 16, + "62": 25, + "63": 24, + "64": 24, + "65": 12, + "66": 17, + "67": 19, + "68": 13, + "69": 9, + "70": 25, + "71": 25, + "72": 16, + "73": 12, + "74": 11, + "75": 8, + "76": 10, + "77": 13, + "78": 4, + "79": 6, + "80": 3, + "81": 1, + "82": 2, + "83": 2, + "84": 5, + "85": 3, + "86": 3, + "87": 5, + "88": 4, + "89": 12, + "90": 10, + "91": 7, + "92": 11, + "93": 9, + "94": 2, + "95": 3, + "97": 2, + "98": 3, + "99": 1, + "112": 1, + "113": 1, + "114": 1, + "116": 3, + "117": 2, + "119": 1, + "127": 1, + "130": 2, + "199": 2, + "200": 1, + "201": 1, + "202": 1, + "203": 2, + "204": 5, + "205": 7, + "206": 5, + "207": 4, + "208": 1, + "209": 6, + "210": 8, + "211": 6, + "212": 4, + "213": 11, + "214": 8, + "215": 7, + "216": 6, + "217": 6, + "218": 4, + "219": 4, + "220": 5, + "221": 5, + "222": 7, + "223": 17, + "224": 16, + "225": 14, + "226": 13, + "227": 6, + "228": 6, + "229": 10, + "230": 16, + "231": 13, + "232": 9, + "233": 6, + "234": 6, + "235": 6, + "236": 2, + "237": 4, + "238": 5, + "239": 4, + "240": 6, + "241": 3, + "243": 2, + "244": 2, + "246": 2, + "248": 1, + "249": 1, + "251": 3, + "253": 3, + "254": 2, + "256": 1, + "258": 2, + "259": 1, + "260": 21702, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353134266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882266c0d4d2584" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "266c0d4d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_16.html b/autobahn/client/tungstenite_case_13_7_16.html new file mode 100644 index 0000000..6318672 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_16.html @@ -0,0 +1,737 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.16 : Pass - 6813 ms @ 2025-09-11T20:15:18.541Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=515&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: FduU4jcOU6sWpWziPVskfQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: jpxn4FtEZA/B+qVLVzoiMkX8gFI=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
4552910
4561456
4571457
4581458
4592918
46052300
46173227
46252310
46341852
4641464
46562790
46683728
46762802
46841872
469115159
47083760
47173297
47262832
47362838
47441896
47541900
47652380
47752385
47873346
479178143
480167680
481146734
482136266
48362898
48462904
485104850
486167776
487136331
48894392
48962934
49062940
49162946
4922984
49341972
49452470
49541980
49662976
49731491
4992998
50021000
50221004
5041504
5051505
50731521
50931527
51021020
5121512
51421028
5151515
51721034
51831554
5191519
52021040
52121042
5221522
52321046
5241524
52531575
5261526
52731581
52863168
52921058
53021060
53121062
5371537
5441544
54521090
5471547
5481548
5501550
55121102
55331659
5541554
5551555
55621112
55731671
55895022
55952795
56031680
561105610
562105620
563158445
5642011280
565147910
566169056
567147938
5682111928
5692614794
570179690
571116281
5722514300
5732112033
5742413776
575169200
5762514400
5772413848
5782413872
579126948
580179860
5811911039
582137566
58395247
5842514600
5852514625
586169376
587127044
588116468
58984712
590105900
591137683
59242368
59363558
59431782
5951595
59621192
59721194
59852990
59931797
60031800
60153005
60242408
603127236
604106040
60574235
606116666
60795463
60821216
60931827
61121222
61231836
6131613
6261626
6271627
6281628
63031890
63121262
6331633
6411641
64221284
102850005140000
Total60025688408
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
05000
11000
81
Total6001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353135266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d3dd542dd035
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6433646435343264
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_16.json b/autobahn/client/tungstenite_case_13_7_16.json new file mode 100644 index 0000000..6c6f907 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_16.json @@ -0,0 +1,584 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 515, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 1024 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 6813, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=515&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: FduU4jcOU6sWpWziPVskfQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: jpxn4FtEZA/B+qVLVzoiMkX8gFI=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:15:18.541Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5688098, + "outgoingWebSocketFrames": 6000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0042372148222011696, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 5000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "455": 2, + "456": 1, + "457": 1, + "458": 1, + "459": 2, + "460": 5, + "461": 7, + "462": 5, + "463": 4, + "464": 1, + "465": 6, + "466": 8, + "467": 6, + "468": 4, + "469": 11, + "470": 8, + "471": 7, + "472": 6, + "473": 6, + "474": 4, + "475": 4, + "476": 5, + "477": 5, + "478": 7, + "479": 17, + "480": 16, + "481": 14, + "482": 13, + "483": 6, + "484": 6, + "485": 10, + "486": 16, + "487": 13, + "488": 9, + "489": 6, + "490": 6, + "491": 6, + "492": 2, + "493": 4, + "494": 5, + "495": 4, + "496": 6, + "497": 3, + "499": 2, + "500": 2, + "502": 2, + "504": 1, + "505": 1, + "507": 3, + "509": 3, + "510": 2, + "512": 1, + "514": 2, + "515": 1, + "517": 2, + "518": 3, + "519": 1, + "520": 2, + "521": 2, + "522": 1, + "523": 2, + "524": 1, + "525": 3, + "526": 1, + "527": 3, + "528": 6, + "529": 2, + "530": 2, + "531": 2, + "537": 1, + "544": 1, + "545": 2, + "547": 1, + "548": 1, + "550": 1, + "551": 2, + "553": 3, + "554": 1, + "555": 1, + "556": 2, + "557": 3, + "558": 9, + "559": 5, + "560": 3, + "561": 10, + "562": 10, + "563": 15, + "564": 20, + "565": 14, + "566": 16, + "567": 14, + "568": 21, + "569": 26, + "570": 17, + "571": 11, + "572": 25, + "573": 21, + "574": 24, + "575": 16, + "576": 25, + "577": 24, + "578": 24, + "579": 12, + "580": 17, + "581": 19, + "582": 13, + "583": 9, + "584": 25, + "585": 25, + "586": 16, + "587": 12, + "588": 11, + "589": 8, + "590": 10, + "591": 13, + "592": 4, + "593": 6, + "594": 3, + "595": 1, + "596": 2, + "597": 2, + "598": 5, + "599": 3, + "600": 3, + "601": 5, + "602": 4, + "603": 12, + "604": 10, + "605": 7, + "606": 11, + "607": 9, + "608": 2, + "609": 3, + "611": 2, + "612": 3, + "613": 1, + "626": 1, + "627": 1, + "628": 1, + "630": 3, + "631": 2, + "633": 1, + "641": 1, + "642": 2, + "1028": 5000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353135266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d3dd542dd035" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d3dd542d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_17.html b/autobahn/client/tungstenite_case_13_7_17.html new file mode 100644 index 0000000..193457b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_17.html @@ -0,0 +1,737 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.17 : Pass - 6182 ms @ 2025-09-11T20:15:25.356Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=516&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 8stnjTLN+fG1huf1y8KJwQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UCvWQCTlUS0lAi9P6ekgjgDRDTo=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
147922958
148011480
148111481
148211482
148322966
148457420
1485710395
148657430
148745948
148811488
148968934
1490811920
149168946
149245968
14931116423
1494811952
1495710465
149668976
149768982
149845992
149945996
150057500
150157505
1502710514
15031725551
15041624064
15051421070
15061319578
150769042
150869048
15091015090
15101624160
15111319643
1512913608
151369078
151469084
151569090
151623032
151746068
151857590
151946076
152069120
152134563
152323046
152423048
152623052
152811528
152911529
153134593
153334599
153423068
153611536
153823076
153911539
154123082
154234626
154311543
154423088
154523090
154611546
154723094
154811548
154934647
155011550
155134653
155269312
155323106
155423108
155523110
156111561
156811568
156923138
157111571
157211572
157411574
157523150
157734731
157811578
157911579
158023160
158134743
1582914238
158357915
158434752
15851015850
15861015860
15871523805
15882031760
15891422246
15901625440
15911422274
15922133432
15932641418
15941727098
15951117545
15962539900
15972133537
15982438352
15991625584
16002540000
16012438424
16022438448
16031219236
16041727268
16051930495
16061320878
1607914463
16082540200
16092540225
16101625760
16111219332
16121117732
1613812904
16141016140
16151320995
161646464
161769702
161834854
161911619
162023240
162123242
162258110
162334869
162434872
162558125
162646504
16271219524
16281016280
1629711403
16301117930
1631914679
163223264
163334899
163523270
163634908
163711637
165011650
165111651
165211652
165434962
165523310
165711657
166511665
166623332
410010004100000
Total20025672408
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01000
11000
81
Total2001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353136266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88826e4f96846da7
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3665346639363834
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_17.json b/autobahn/client/tungstenite_case_13_7_17.json new file mode 100644 index 0000000..99e9542 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_17.json @@ -0,0 +1,584 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 516, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 4096 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 6182, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=516&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 8stnjTLN+fG1huf1y8KJwQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UCvWQCTlUS0lAi9P6ekgjgDRDTo=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:15:25.356Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5672098, + "outgoingWebSocketFrames": 2000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014124049407337233, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "0": 1000, + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "1479": 2, + "1480": 1, + "1481": 1, + "1482": 1, + "1483": 2, + "1484": 5, + "1485": 7, + "1486": 5, + "1487": 4, + "1488": 1, + "1489": 6, + "1490": 8, + "1491": 6, + "1492": 4, + "1493": 11, + "1494": 8, + "1495": 7, + "1496": 6, + "1497": 6, + "1498": 4, + "1499": 4, + "1500": 5, + "1501": 5, + "1502": 7, + "1503": 17, + "1504": 16, + "1505": 14, + "1506": 13, + "1507": 6, + "1508": 6, + "1509": 10, + "1510": 16, + "1511": 13, + "1512": 9, + "1513": 6, + "1514": 6, + "1515": 6, + "1516": 2, + "1517": 4, + "1518": 5, + "1519": 4, + "1520": 6, + "1521": 3, + "1523": 2, + "1524": 2, + "1526": 2, + "1528": 1, + "1529": 1, + "1531": 3, + "1533": 3, + "1534": 2, + "1536": 1, + "1538": 2, + "1539": 1, + "1541": 2, + "1542": 3, + "1543": 1, + "1544": 2, + "1545": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 3, + "1550": 1, + "1551": 3, + "1552": 6, + "1553": 2, + "1554": 2, + "1555": 2, + "1561": 1, + "1568": 1, + "1569": 2, + "1571": 1, + "1572": 1, + "1574": 1, + "1575": 2, + "1577": 3, + "1578": 1, + "1579": 1, + "1580": 2, + "1581": 3, + "1582": 9, + "1583": 5, + "1584": 3, + "1585": 10, + "1586": 10, + "1587": 15, + "1588": 20, + "1589": 14, + "1590": 16, + "1591": 14, + "1592": 21, + "1593": 26, + "1594": 17, + "1595": 11, + "1596": 25, + "1597": 21, + "1598": 24, + "1599": 16, + "1600": 25, + "1601": 24, + "1602": 24, + "1603": 12, + "1604": 17, + "1605": 19, + "1606": 13, + "1607": 9, + "1608": 25, + "1609": 25, + "1610": 16, + "1611": 12, + "1612": 11, + "1613": 8, + "1614": 10, + "1615": 13, + "1616": 4, + "1617": 6, + "1618": 3, + "1619": 1, + "1620": 2, + "1621": 2, + "1622": 5, + "1623": 3, + "1624": 3, + "1625": 5, + "1626": 4, + "1627": 12, + "1628": 10, + "1629": 7, + "1630": 11, + "1631": 9, + "1632": 2, + "1633": 3, + "1635": 2, + "1636": 3, + "1637": 1, + "1650": 1, + "1651": 1, + "1652": 1, + "1654": 3, + "1655": 2, + "1657": 1, + "1665": 1, + "1666": 2, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353136266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826e4f96846da7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6e4f9684" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_18.html b/autobahn/client/tungstenite_case_13_7_18.html new file mode 100644 index 0000000..cac244a --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_18.html @@ -0,0 +1,735 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.18 : Pass - 6561 ms @ 2025-09-11T20:15:31.540Z

+

Case Description

Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=517&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: +fkpuWjimyjBdrKbsoVkzw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NmM26EoVgFKAargRebvKCJtS4x4=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
475929518
476129522
476429528
476529530
4766838128
4767419068
4768523840
4769628614
477029540
4771419084
477229544
4773523865
4774733418
4775314325
477614776
4778314334
477929558
4780314340
4781314343
478529570
478614786
4787314361
478814788
4789419156
479429588
479729594
479814798
479914799
480029600
480129602
4803628818
480529610
480614806
480814808
481014810
4811314433
481414814
481614816
481714817
481814818
4820314460
482129642
4822419288
482314823
482429648
482629652
482729654
482814828
482914829
483114831
483214832
483429668
483514835
483714837
483814838
483914839
484114841
485014850
485129702
485329706
485414854
4857314571
485829716
4859419436
4860314580
4863314589
4864419456
486529730
4866629196
4867314601
4868314604
4869419476
4870314610
487114871
487229744
487329746
4874419496
487514875
487629752
487729754
487929758
4880314640
4881629286
4882734174
488314883
4884314652
488529770
4887314661
4888419552
4889524445
4890524450
48911048910
4892944028
4893419572
4894419576
4895524475
4896524480
4898314694
4899314697
4900314700
490114901
490214902
491414914
491714917
491829836
492029840
492114921
492214922
492314923
492714927
492814928
493014930
493114931
493214932
493414934
493629872
493714937
493814938
493914939
4942314826
494314943
494514945
4946419784
494714947
494814948
4949314847
4950419800
495129902
495229904
495329906
495414954
495629912
495714957
495814958
495914959
496029920
496114961
496229924
4963314889
496414964
496614966
496714967
496829936
496929938
4970314910
497114971
497329946
497514975
497614976
497829956
498014980
4981314943
498214982
498314983
498429968
4985419940
4986419944
498714987
498829976
4990314970
499114991
4992314976
4998314994
499929998
5000525000
5001210002
5002945018
5003315009
50041155044
5005735035
5006840048
50071050070
5008630048
5009630054
5010315030
5011315033
5012735084
5013630078
5014315042
5016315048
5017420068
5018630108
5019420076
5020420080
502115021
5023210046
5024315072
5026420104
502715027
503015030
503215032
503315033
503515035
503715037
503815038
5039210078
504015040
5041315123
5042315126
504415044
504515045
504615046
504715047
504915049
5051210102
5052315156
5053315159
505415054
5055315165
5056525280
5057525285
5058630348
50591155649
5060735420
5061945549
50621155682
5063315189
5064315192
5065525325
50661260792
5067945603
5068630408
5069630414
5070525350
5071525355
5072630432
5073420292
5074420296
5075315225
5076210152
5077525385
5078420312
5079420316
5080420320
5081735567
5082525410
50831366079
5084840672
50851261020
5086420344
5087840696
50881155968
5089630534
5090735630
5091630546
5092840736
5093735651
5094315282
5095630570
509615096
509715097
5098525490
5099315297
5100630600
5101420404
5102420408
5103315309
5104735728
5105735735
5106735742
51071576605
51081156188
51091997071
51101261320
51111156221
51121471568
51131261356
51141261368
51151156265
5116525580
5117210234
5118525590
5119315357
5120210240
512215122
512315123
512615126
512915129
5130210260
513215132
5133210266
513615136
513815138
514015140
514215142
514415144
514715147
5148210296
5149210298
515015150
515115151
515215152
515515155
Total10024995698
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
5575211150
557615576
557715577
557815578
5579211158
5580527900
5581739067
5582527910
5583422332
558415584
5585633510
5586844688
5587633522
5588422352
55891161479
5590844720
5591739137
5592633552
5593633558
5594422376
5595422380
5596527980
5597527985
5598739186
55991795183
56001689600
56011478414
56021372826
5603633618
5604633624
56051056050
56061689696
56071372891
5608950472
5609633654
5610633660
5611633666
5612211224
5613422452
5614528070
5615422460
5616633696
5617316851
5619211238
5620211240
5622211244
562415624
562515625
5627316881
5629316887
5630211260
563215632
5634211268
563515635
5637211274
5638316914
563915639
5640211280
5641211282
564215642
5643211286
564415644
5645316935
564615646
5647316941
5648633888
5649211298
5650211300
5651211302
565715657
566415664
5665211330
566715667
566815668
567015670
5671211342
5673317019
567415674
567515675
5676211352
5677317031
5678951102
5679528395
5680317040
56811056810
56821056820
56831585245
568420113680
56851479590
56861690976
56871479618
568821119448
568926147914
56901796730
56911162601
569225142300
569321119553
569424136656
56951691120
569625142400
569724136728
569824136752
56991268388
57001796900
570119108319
57021374126
5703951327
570425142600
570525142625
57061691296
57071268484
57081162788
5709845672
57101057100
57111374243
5712422848
5713634278
5714317142
571515715
5716211432
5717211434
5718528590
5719317157
5720317160
5721528605
5722422888
57231268676
57241057240
5725740075
57261162986
5727951543
5728211456
5729317187
5731211462
5732317196
573315733
574615746
574715747
574815748
5750317250
5751211502
575315753
576115761
5762211524
Total10025668408
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353137266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88825c08f3585fe0
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3563303866333538
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_18.json b/autobahn/client/tungstenite_case_13_7_18.json new file mode 100644 index 0000000..4dd6621 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_18.json @@ -0,0 +1,582 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 517, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 131072, auto-fragment to 32768 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 6561, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=517&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: +fkpuWjimyjBdrKbsoVkzw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NmM26EoVgFKAargRebvKCJtS4x4=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4759": 2, + "4761": 2, + "4764": 2, + "4765": 2, + "4766": 8, + "4767": 4, + "4768": 5, + "4769": 6, + "4770": 2, + "4771": 4, + "4772": 2, + "4773": 5, + "4774": 7, + "4775": 3, + "4776": 1, + "4778": 3, + "4779": 2, + "4780": 3, + "4781": 3, + "4785": 2, + "4786": 1, + "4787": 3, + "4788": 1, + "4789": 4, + "4794": 2, + "4797": 2, + "4798": 1, + "4799": 1, + "4800": 2, + "4801": 2, + "4803": 6, + "4805": 2, + "4806": 1, + "4808": 1, + "4810": 1, + "4811": 3, + "4814": 1, + "4816": 1, + "4817": 1, + "4818": 1, + "4820": 3, + "4821": 2, + "4822": 4, + "4823": 1, + "4824": 2, + "4826": 2, + "4827": 2, + "4828": 1, + "4829": 1, + "4831": 1, + "4832": 1, + "4834": 2, + "4835": 1, + "4837": 1, + "4838": 1, + "4839": 1, + "4841": 1, + "4850": 1, + "4851": 2, + "4853": 2, + "4854": 1, + "4857": 3, + "4858": 2, + "4859": 4, + "4860": 3, + "4863": 3, + "4864": 4, + "4865": 2, + "4866": 6, + "4867": 3, + "4868": 3, + "4869": 4, + "4870": 3, + "4871": 1, + "4872": 2, + "4873": 2, + "4874": 4, + "4875": 1, + "4876": 2, + "4877": 2, + "4879": 2, + "4880": 3, + "4881": 6, + "4882": 7, + "4883": 1, + "4884": 3, + "4885": 2, + "4887": 3, + "4888": 4, + "4889": 5, + "4890": 5, + "4891": 10, + "4892": 9, + "4893": 4, + "4894": 4, + "4895": 5, + "4896": 5, + "4898": 3, + "4899": 3, + "4900": 3, + "4901": 1, + "4902": 1, + "4914": 1, + "4917": 1, + "4918": 2, + "4920": 2, + "4921": 1, + "4922": 1, + "4923": 1, + "4927": 1, + "4928": 1, + "4930": 1, + "4931": 1, + "4932": 1, + "4934": 1, + "4936": 2, + "4937": 1, + "4938": 1, + "4939": 1, + "4942": 3, + "4943": 1, + "4945": 1, + "4946": 4, + "4947": 1, + "4948": 1, + "4949": 3, + "4950": 4, + "4951": 2, + "4952": 2, + "4953": 2, + "4954": 1, + "4956": 2, + "4957": 1, + "4958": 1, + "4959": 1, + "4960": 2, + "4961": 1, + "4962": 2, + "4963": 3, + "4964": 1, + "4966": 1, + "4967": 1, + "4968": 2, + "4969": 2, + "4970": 3, + "4971": 1, + "4973": 2, + "4975": 1, + "4976": 1, + "4978": 2, + "4980": 1, + "4981": 3, + "4982": 1, + "4983": 1, + "4984": 2, + "4985": 4, + "4986": 4, + "4987": 1, + "4988": 2, + "4990": 3, + "4991": 1, + "4992": 3, + "4998": 3, + "4999": 2, + "5000": 5, + "5001": 2, + "5002": 9, + "5003": 3, + "5004": 11, + "5005": 7, + "5006": 8, + "5007": 10, + "5008": 6, + "5009": 6, + "5010": 3, + "5011": 3, + "5012": 7, + "5013": 6, + "5014": 3, + "5016": 3, + "5017": 4, + "5018": 6, + "5019": 4, + "5020": 4, + "5021": 1, + "5023": 2, + "5024": 3, + "5026": 4, + "5027": 1, + "5030": 1, + "5032": 1, + "5033": 1, + "5035": 1, + "5037": 1, + "5038": 1, + "5039": 2, + "5040": 1, + "5041": 3, + "5042": 3, + "5044": 1, + "5045": 1, + "5046": 1, + "5047": 1, + "5049": 1, + "5051": 2, + "5052": 3, + "5053": 3, + "5054": 1, + "5055": 3, + "5056": 5, + "5057": 5, + "5058": 6, + "5059": 11, + "5060": 7, + "5061": 9, + "5062": 11, + "5063": 3, + "5064": 3, + "5065": 5, + "5066": 12, + "5067": 9, + "5068": 6, + "5069": 6, + "5070": 5, + "5071": 5, + "5072": 6, + "5073": 4, + "5074": 4, + "5075": 3, + "5076": 2, + "5077": 5, + "5078": 4, + "5079": 4, + "5080": 4, + "5081": 7, + "5082": 5, + "5083": 13, + "5084": 8, + "5085": 12, + "5086": 4, + "5087": 8, + "5088": 11, + "5089": 6, + "5090": 7, + "5091": 6, + "5092": 8, + "5093": 7, + "5094": 3, + "5095": 6, + "5096": 1, + "5097": 1, + "5098": 5, + "5099": 3, + "5100": 6, + "5101": 4, + "5102": 4, + "5103": 3, + "5104": 7, + "5105": 7, + "5106": 7, + "5107": 15, + "5108": 11, + "5109": 19, + "5110": 12, + "5111": 11, + "5112": 14, + "5113": 12, + "5114": 12, + "5115": 11, + "5116": 5, + "5117": 2, + "5118": 5, + "5119": 3, + "5120": 2, + "5122": 1, + "5123": 1, + "5126": 1, + "5129": 1, + "5130": 2, + "5132": 1, + "5133": 2, + "5136": 1, + "5138": 1, + "5140": 1, + "5142": 1, + "5144": 1, + "5147": 1, + "5148": 2, + "5149": 2, + "5150": 1, + "5151": 1, + "5152": 1, + "5155": 1 + }, + "started": "2025-09-11T20:15:31.540Z", + "trafficStats": { + "incomingCompressionRatio": 0.03805109405517578, + "incomingOctetsAppLevel": 131072000, + "incomingOctetsWebSocketLevel": 4987433, + "incomingOctetsWireLevel": 4995433, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0016040315729554662, + "outgoingCompressionRatio": 0.04321363830566406, + "outgoingOctetsAppLevel": 131072000, + "outgoingOctetsWebSocketLevel": 5664098, + "outgoingOctetsWireLevel": 5668098, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0007062024703668616, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "5575": 2, + "5576": 1, + "5577": 1, + "5578": 1, + "5579": 2, + "5580": 5, + "5581": 7, + "5582": 5, + "5583": 4, + "5584": 1, + "5585": 6, + "5586": 8, + "5587": 6, + "5588": 4, + "5589": 11, + "5590": 8, + "5591": 7, + "5592": 6, + "5593": 6, + "5594": 4, + "5595": 4, + "5596": 5, + "5597": 5, + "5598": 7, + "5599": 17, + "5600": 16, + "5601": 14, + "5602": 13, + "5603": 6, + "5604": 6, + "5605": 10, + "5606": 16, + "5607": 13, + "5608": 9, + "5609": 6, + "5610": 6, + "5611": 6, + "5612": 2, + "5613": 4, + "5614": 5, + "5615": 4, + "5616": 6, + "5617": 3, + "5619": 2, + "5620": 2, + "5622": 2, + "5624": 1, + "5625": 1, + "5627": 3, + "5629": 3, + "5630": 2, + "5632": 1, + "5634": 2, + "5635": 1, + "5637": 2, + "5638": 3, + "5639": 1, + "5640": 2, + "5641": 2, + "5642": 1, + "5643": 2, + "5644": 1, + "5645": 3, + "5646": 1, + "5647": 3, + "5648": 6, + "5649": 2, + "5650": 2, + "5651": 2, + "5657": 1, + "5664": 1, + "5665": 2, + "5667": 1, + "5668": 1, + "5670": 1, + "5671": 2, + "5673": 3, + "5674": 1, + "5675": 1, + "5676": 2, + "5677": 3, + "5678": 9, + "5679": 5, + "5680": 3, + "5681": 10, + "5682": 10, + "5683": 15, + "5684": 20, + "5685": 14, + "5686": 16, + "5687": 14, + "5688": 21, + "5689": 26, + "5690": 17, + "5691": 11, + "5692": 25, + "5693": 21, + "5694": 24, + "5695": 16, + "5696": 25, + "5697": 24, + "5698": 24, + "5699": 12, + "5700": 17, + "5701": 19, + "5702": 13, + "5703": 9, + "5704": 25, + "5705": 25, + "5706": 16, + "5707": 12, + "5708": 11, + "5709": 8, + "5710": 10, + "5711": 13, + "5712": 4, + "5713": 6, + "5714": 3, + "5715": 1, + "5716": 2, + "5717": 2, + "5718": 5, + "5719": 3, + "5720": 3, + "5721": 5, + "5722": 4, + "5723": 12, + "5724": 10, + "5725": 7, + "5726": 11, + "5727": 9, + "5728": 2, + "5729": 3, + "5731": 2, + "5732": 3, + "5733": 1, + "5746": 1, + "5747": 1, + "5748": 1, + "5750": 3, + "5751": 2, + "5753": 1, + "5761": 1, + "5762": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353137266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825c08f3585fe0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5c08f358" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_2.html b/autobahn/client/tungstenite_case_13_7_2.html new file mode 100644 index 0000000..0f54a7b --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_2.html @@ -0,0 +1,342 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.2 : Pass - 196 ms @ 2025-09-11T20:14:45.974Z

+

Case Description

Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=501&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: YqkmeY//U/qnmMXRnZcx5A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZQcIO74VE8BtE6wOjTIssC1Ff+Y=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
395195
408320
41311271
42351470
4311473
4415660
4517765
4620920
47221034
48562688
49542646
5016800
51502550
52763952
53834399
54844536
55613355
56402240
57211197
5811638
5916944
6011660
61301830
62895518
63684284
64362304
6514910
6615990
675335
2571257
Total100254149
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
74413087
81080
91431287
101741740
1136396
1268816
13781014
1428392
1516240
19119
24124
32132
37137
38138
51151
3061306
Total10029563
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353031266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888214b16f091759
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3134623136663039
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_2.json b/autobahn/client/tungstenite_case_13_7_2.json new file mode 100644 index 0000000..6c30943 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_2.json @@ -0,0 +1,189 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 501, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 64, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 196, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=501&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: YqkmeY//U/qnmMXRnZcx5A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZQcIO74VE8BtE6wOjTIssC1Ff+Y=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "39": 5, + "40": 8, + "41": 31, + "42": 35, + "43": 11, + "44": 15, + "45": 17, + "46": 20, + "47": 22, + "48": 56, + "49": 54, + "50": 16, + "51": 50, + "52": 76, + "53": 83, + "54": 84, + "55": 61, + "56": 40, + "57": 21, + "58": 11, + "59": 16, + "60": 11, + "61": 30, + "62": 89, + "63": 68, + "64": 36, + "65": 14, + "66": 15, + "67": 5, + "257": 1 + }, + "started": "2025-09-11T20:14:45.974Z", + "trafficStats": { + "incomingCompressionRatio": 0.7481875, + "incomingOctetsAppLevel": 64000, + "incomingOctetsWebSocketLevel": 47884, + "incomingOctetsWireLevel": 53884, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.12530281513658006, + "outgoingCompressionRatio": 0.113328125, + "outgoingOctetsAppLevel": 64000, + "outgoingOctetsWebSocketLevel": 7253, + "outgoingOctetsWireLevel": 9253, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.2757479663587481, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 441, + "8": 10, + "9": 143, + "10": 174, + "11": 36, + "12": 68, + "13": 78, + "14": 28, + "15": 16, + "19": 1, + "24": 1, + "32": 1, + "37": 1, + "38": 1, + "51": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353031266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888214b16f091759" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "14b16f09" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_3.html b/autobahn/client/tungstenite_case_13_7_3.html new file mode 100644 index 0000000..6e5ba15 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_3.html @@ -0,0 +1,361 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.3 : Pass - 206 ms @ 2025-09-11T20:14:46.172Z

+

Case Description

Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=502&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Wag5uaKGWONKmFY6kIz5nQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: B950Q5Ph0EdOw5iE4ruxrGKg9S0=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1271127
1282256
130131690
131101310
134212814
135283780
136364896
137699453
1388111178
13911015290
14010214280
1418812408
1429813916
1438211726
144699936
145628990
146304380
147253675
148162368
149121788
1504600
1515755
1524608
1534612
1544616
1552310
1566936
1573471
1584632
1592318
1602320
1612322
1623486
2571257
Total1002141512
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1342546
1470980
1542630
161382208
171051785
18991782
191252375
20721440
21761596
22541188
23531219
2438912
2529725
2622572
2710270
284112
295145
30130
31262
32132
33266
34134
36136
37137
39139
41282
43143
61161
66166
1471147
3061306
Total100219530
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353032266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88824f278f3f4ccf
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3466323738663366
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_3.json b/autobahn/client/tungstenite_case_13_7_3.json new file mode 100644 index 0000000..98ed4bc --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_3.json @@ -0,0 +1,208 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 502, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 256, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 206, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=502&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Wag5uaKGWONKmFY6kIz5nQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: B950Q5Ph0EdOw5iE4ruxrGKg9S0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "127": 1, + "128": 2, + "130": 13, + "131": 10, + "134": 21, + "135": 28, + "136": 36, + "137": 69, + "138": 81, + "139": 110, + "140": 102, + "141": 88, + "142": 98, + "143": 82, + "144": 69, + "145": 62, + "146": 30, + "147": 25, + "148": 16, + "149": 12, + "150": 4, + "151": 5, + "152": 4, + "153": 4, + "154": 4, + "155": 2, + "156": 6, + "157": 3, + "158": 4, + "159": 2, + "160": 2, + "161": 2, + "162": 3, + "257": 1 + }, + "started": "2025-09-11T20:14:46.172Z", + "trafficStats": { + "incomingCompressionRatio": 0.52069921875, + "incomingOctetsAppLevel": 256000, + "incomingOctetsWebSocketLevel": 133299, + "incomingOctetsWireLevel": 141247, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0596253535285336, + "outgoingCompressionRatio": 0.0672578125, + "outgoingOctetsAppLevel": 256000, + "outgoingOctetsWebSocketLevel": 17218, + "outgoingOctetsWireLevel": 19220, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.11627366709257754, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 42, + "14": 70, + "15": 42, + "16": 138, + "17": 105, + "18": 99, + "19": 125, + "20": 72, + "21": 76, + "22": 54, + "23": 53, + "24": 38, + "25": 29, + "26": 22, + "27": 10, + "28": 4, + "29": 5, + "30": 1, + "31": 2, + "32": 1, + "33": 2, + "34": 1, + "36": 1, + "37": 1, + "39": 1, + "41": 2, + "43": 1, + "61": 1, + "66": 1, + "147": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353032266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824f278f3f4ccf" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4f278f3f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_4.html b/autobahn/client/tungstenite_case_13_7_4.html new file mode 100644 index 0000000..6362bb1 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_4.html @@ -0,0 +1,423 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.4 : Pass - 267 ms @ 2025-09-11T20:14:46.379Z

+

Case Description

Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=503&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: +V5RINNiFBXqmpEuZYroWA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: h/omwcFC2zdO9YRLWAYM987r6g4=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
1631163
1641164
1652330
1666996
1673501
1684672
16991521
170152550
171193249
172244128
173396747
174468004
175508750
176569856
1776210974
178519078
1796411456
180498820
181498869
182468372
183285124
184448096
185356475
186397254
187366732
188387144
189295481
190264940
191112101
192183456
19391737
194112134
19581560
1965980
1975985
1984792
19971393
20051000
2013603
2022404
2032406
2043612
2051205
2063618
2071207
2084832
2102420
2111211
2122424
2131213
2141214
2152430
2172434
2204880
2222444
2232446
2242448
2252450
2261226
2272454
2301230
2571257
Total1002182660
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
39139
40140
414164
445220
45145
464184
479423
48221056
49331617
50321600
51391989
52683536
53482544
54633402
55603300
56673752
57663762
58271566
59492891
60291740
61181098
6216992
63311953
64181152
65161040
668528
67191273
68211428
69161104
70292030
71181278
72282016
73312263
7410740
7511825
76181368
7710770
788624
794316
803240
82182
832166
843252
863258
87187
88188
893267
912182
922184
944376
96196
97197
992198
1001100
1011101
1041104
1052210
1061106
1071107
1081108
1092218
1101110
1141114
1701170
3061306
Total100260999
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353033266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88827b612d077889
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3762363132643037
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_4.json b/autobahn/client/tungstenite_case_13_7_4.json new file mode 100644 index 0000000..29f74a1 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_4.json @@ -0,0 +1,270 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 503, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 1024, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 267, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=503&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: +V5RINNiFBXqmpEuZYroWA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: h/omwcFC2zdO9YRLWAYM987r6g4=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "163": 1, + "164": 1, + "165": 2, + "166": 6, + "167": 3, + "168": 4, + "169": 9, + "170": 15, + "171": 19, + "172": 24, + "173": 39, + "174": 46, + "175": 50, + "176": 56, + "177": 62, + "178": 51, + "179": 64, + "180": 49, + "181": 49, + "182": 46, + "183": 28, + "184": 44, + "185": 35, + "186": 39, + "187": 36, + "188": 38, + "189": 29, + "190": 26, + "191": 11, + "192": 18, + "193": 9, + "194": 11, + "195": 8, + "196": 5, + "197": 5, + "198": 4, + "199": 7, + "200": 5, + "201": 3, + "202": 2, + "203": 2, + "204": 3, + "205": 1, + "206": 3, + "207": 1, + "208": 4, + "210": 2, + "211": 1, + "212": 2, + "213": 1, + "214": 1, + "215": 2, + "217": 2, + "220": 4, + "222": 2, + "223": 2, + "224": 2, + "225": 2, + "226": 1, + "227": 2, + "230": 1, + "257": 1 + }, + "started": "2025-09-11T20:14:46.379Z", + "trafficStats": { + "incomingCompressionRatio": 0.1703076171875, + "incomingOctetsAppLevel": 1024000, + "incomingOctetsWebSocketLevel": 174395, + "incomingOctetsWireLevel": 182395, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.04587287479572236, + "outgoingCompressionRatio": 0.0573115234375, + "outgoingOctetsAppLevel": 1024000, + "outgoingOctetsWebSocketLevel": 58687, + "outgoingOctetsWireLevel": 60689, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.034113176683081434, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "39": 1, + "40": 1, + "41": 4, + "44": 5, + "45": 1, + "46": 4, + "47": 9, + "48": 22, + "49": 33, + "50": 32, + "51": 39, + "52": 68, + "53": 48, + "54": 63, + "55": 60, + "56": 67, + "57": 66, + "58": 27, + "59": 49, + "60": 29, + "61": 18, + "62": 16, + "63": 31, + "64": 18, + "65": 16, + "66": 8, + "67": 19, + "68": 21, + "69": 16, + "70": 29, + "71": 18, + "72": 28, + "73": 31, + "74": 10, + "75": 11, + "76": 18, + "77": 10, + "78": 8, + "79": 4, + "80": 3, + "82": 1, + "83": 2, + "84": 3, + "86": 3, + "87": 1, + "88": 1, + "89": 3, + "91": 2, + "92": 2, + "94": 4, + "96": 1, + "97": 1, + "99": 2, + "100": 1, + "101": 1, + "104": 1, + "105": 2, + "106": 1, + "107": 1, + "108": 1, + "109": 2, + "110": 1, + "114": 1, + "170": 1, + "306": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353033266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827b612d077889" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7b612d07" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_5.html b/autobahn/client/tungstenite_case_13_7_5.html new file mode 100644 index 0000000..aee7644 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_5.html @@ -0,0 +1,535 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.5 : Pass - 508 ms @ 2025-09-11T20:14:46.649Z

+

Case Description

Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=504&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: k1wPQPVvOXqmn1ikThRlfw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 9VoZjLdb+KdqSP5j/RoieJoQH4A=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
2621262
2632526
2641264
2652530
2661266
2671267
2682536
26941076
27082160
27182168
2723816
27382184
27451370
27571925
276143864
27761662
27871946
279195301
280215880
281215901
282287896
283226226
284164544
285205700
286185148
287164592
288123456
289123468
290113190
291164656
292102920
29392637
294154410
29592655
296133848
29792673
298144172
299144186
300185400
301133913
302154530
303133939
304133952
305164880
306103060
307123684
30882464
309113399
310103100
311154665
312185616
313154695
314123768
315185670
316226952
317165072
318154770
319144466
320237360
321144494
322123864
323134199
324134212
325175525
32692934
32772289
32851640
3293987
33092970
33192979
33261992
3333999
33451670
335103350
33651680
33751685
33851690
33962034
34093060
34131023
34262052
34362058
34462064
34562070
34651730
34772429
34851740
3491349
35082800
3511351
35251760
35362118
35431062
3551355
35682848
35762142
3582716
3592718
36041440
36141444
36231086
3641364
3651365
3671367
3691369
3701370
3721372
37531125
3771377
3861386
38851940
3892778
3901390
39131173
3921392
3931393
3941394
Total1002309064
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
1481148
1492298
1502300
1514604
1533459
1542308
1552310
1563468
1571157
1582316
1591159
1606960
1615805
1621162
16371141
16471148
165101650
166132158
167101670
168132184
169142366
170193230
171203420
172162752
173284844
174203480
175244200
176234048
177234071
178234094
179285012
180203600
181193439
182173094
183122196
184224048
185264810
186122232
187132431
188152820
189112079
190112090
191163056
192112112
19391737
19471358
195101950
1963588
19791773
198112178
1995995
2004800
201102010
202102020
2034812
20471428
2051205
2063618
20751035
20851040
20951045
210102100
211112321
212102120
213122556
214102140
21571505
2164864
21791953
218112398
219102190
220173740
22161326
222122664
223143122
22471568
225132925
226112486
22792043
228112508
229153435
230122760
231163696
23271624
23361398
2343702
2352470
2361236
2402480
24251210
2432486
2444976
2452490
2464984
2471247
2484992
2491249
2512502
2523756
25341012
2541254
2551255
25641024
2572514
2583774
2591259
26061560
2613783
26261572
26351315
26451320
26592385
26651330
26741068
2681268
2693807
2701270
2721272
2811281
2851285
3062612
Total1002198967
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353034266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882e4072bf2e7ef
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6534303732626632
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_5.json b/autobahn/client/tungstenite_case_13_7_5.json new file mode 100644 index 0000000..507d5a2 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_5.json @@ -0,0 +1,382 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 504, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 4096, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 508, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=504&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: k1wPQPVvOXqmn1ikThRlfw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 9VoZjLdb+KdqSP5j/RoieJoQH4A=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "262": 1, + "263": 2, + "264": 1, + "265": 2, + "266": 1, + "267": 1, + "268": 2, + "269": 4, + "270": 8, + "271": 8, + "272": 3, + "273": 8, + "274": 5, + "275": 7, + "276": 14, + "277": 6, + "278": 7, + "279": 19, + "280": 21, + "281": 21, + "282": 28, + "283": 22, + "284": 16, + "285": 20, + "286": 18, + "287": 16, + "288": 12, + "289": 12, + "290": 11, + "291": 16, + "292": 10, + "293": 9, + "294": 15, + "295": 9, + "296": 13, + "297": 9, + "298": 14, + "299": 14, + "300": 18, + "301": 13, + "302": 15, + "303": 13, + "304": 13, + "305": 16, + "306": 10, + "307": 12, + "308": 8, + "309": 11, + "310": 10, + "311": 15, + "312": 18, + "313": 15, + "314": 12, + "315": 18, + "316": 22, + "317": 16, + "318": 15, + "319": 14, + "320": 23, + "321": 14, + "322": 12, + "323": 13, + "324": 13, + "325": 17, + "326": 9, + "327": 7, + "328": 5, + "329": 3, + "330": 9, + "331": 9, + "332": 6, + "333": 3, + "334": 5, + "335": 10, + "336": 5, + "337": 5, + "338": 5, + "339": 6, + "340": 9, + "341": 3, + "342": 6, + "343": 6, + "344": 6, + "345": 6, + "346": 5, + "347": 7, + "348": 5, + "349": 1, + "350": 8, + "351": 1, + "352": 5, + "353": 6, + "354": 3, + "355": 1, + "356": 8, + "357": 6, + "358": 2, + "359": 2, + "360": 4, + "361": 4, + "362": 3, + "364": 1, + "365": 1, + "367": 1, + "369": 1, + "370": 1, + "372": 1, + "375": 3, + "377": 1, + "386": 1, + "388": 5, + "389": 2, + "390": 1, + "391": 3, + "392": 1, + "393": 1, + "394": 1 + }, + "started": "2025-09-11T20:14:46.649Z", + "trafficStats": { + "incomingCompressionRatio": 0.073437255859375, + "incomingOctetsAppLevel": 4096000, + "incomingOctetsWebSocketLevel": 300799, + "incomingOctetsWireLevel": 308799, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.026595833097849395, + "outgoingCompressionRatio": 0.047523681640625, + "outgoingOctetsAppLevel": 4096000, + "outgoingOctetsWebSocketLevel": 194657, + "outgoingOctetsWireLevel": 198657, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.02054896561644328, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "148": 1, + "149": 2, + "150": 2, + "151": 4, + "153": 3, + "154": 2, + "155": 2, + "156": 3, + "157": 1, + "158": 2, + "159": 1, + "160": 6, + "161": 5, + "162": 1, + "163": 7, + "164": 7, + "165": 10, + "166": 13, + "167": 10, + "168": 13, + "169": 14, + "170": 19, + "171": 20, + "172": 16, + "173": 28, + "174": 20, + "175": 24, + "176": 23, + "177": 23, + "178": 23, + "179": 28, + "180": 20, + "181": 19, + "182": 17, + "183": 12, + "184": 22, + "185": 26, + "186": 12, + "187": 13, + "188": 15, + "189": 11, + "190": 11, + "191": 16, + "192": 11, + "193": 9, + "194": 7, + "195": 10, + "196": 3, + "197": 9, + "198": 11, + "199": 5, + "200": 4, + "201": 10, + "202": 10, + "203": 4, + "204": 7, + "205": 1, + "206": 3, + "207": 5, + "208": 5, + "209": 5, + "210": 10, + "211": 11, + "212": 10, + "213": 12, + "214": 10, + "215": 7, + "216": 4, + "217": 9, + "218": 11, + "219": 10, + "220": 17, + "221": 6, + "222": 12, + "223": 14, + "224": 7, + "225": 13, + "226": 11, + "227": 9, + "228": 11, + "229": 15, + "230": 12, + "231": 16, + "232": 7, + "233": 6, + "234": 3, + "235": 2, + "236": 1, + "240": 2, + "242": 5, + "243": 2, + "244": 4, + "245": 2, + "246": 4, + "247": 1, + "248": 4, + "249": 1, + "251": 2, + "252": 3, + "253": 4, + "254": 1, + "255": 1, + "256": 4, + "257": 2, + "258": 3, + "259": 1, + "260": 6, + "261": 3, + "262": 6, + "263": 5, + "264": 5, + "265": 9, + "266": 5, + "267": 4, + "268": 1, + "269": 3, + "270": 1, + "272": 1, + "281": 1, + "285": 1, + "306": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353034266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e4072bf2e7ef" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e4072bf2" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_6.html b/autobahn/client/tungstenite_case_13_7_6.html new file mode 100644 index 0000000..537364e --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_6.html @@ -0,0 +1,653 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.6 : Pass - 756 ms @ 2025-09-11T20:14:47.159Z

+

Case Description

Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=505&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: uXtgXaoqkCQOY4sf55/14Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: STzzcT7WUYgWhnrpSZwMn5CLrXA=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
3911391
3922784
39331179
39431182
39551975
3961396
39751985
39841592
39931197
40141604
40262412
40341612
40462424
40572835
40662436
407104070
408124896
409114499
41083280
41193699
412124944
413114543
414124968
41593735
416124992
41783336
418145852
419125028
420135460
42183368
42272954
42393807
42462544
42572975
42683408
42783416
42862568
42973003
43052150
43141724
43231296
43352165
43473038
43552175
43652180
43741748
43883504
43983512
440125280
44152205
44252210
443114873
444125328
44531335
446125352
447114917
448114928
449156735
450146300
45194059
45262712
45373171
454125448
455125460
45652280
45752285
45894122
45941836
46062760
46152305
46273234
46394167
46431392
465104650
46652330
46773269
46841872
46941876
47041880
4712942
47352365
47441896
47562850
476104760
477104770
47831434
47973353
48052400
48152405
48283856
483125796
48483872
48541940
48683888
48773409
48883904
48973423
49083920
49152455
49241968
49362958
49473458
4952990
49683968
49762982
49841992
49941996
50021000
5011501
50252510
50331509
50442016
50594545
50652530
50742028
508105080
50984072
51073570
51173577
51284096
51321026
514105140
51573605
5161516
51752585
518126216
51973633
52063120
52184168
52284176
52363138
52494716
52563150
52673682
52752635
52873696
52921058
5301530
53142124
53242128
53321066
53442136
53531605
5361536
53831614
5421542
5461546
54821096
5491549
55021100
5551555
55731671
56031680
5611561
5641564
5651565
5671567
5681568
56921138
5711571
57231716
5731573
57421148
57642304
57731731
57821156
5801580
58121162
5821582
5841584
5901590
5911591
5991599
6011601
6021602
Total1002465452
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
30151505
30261812
3032606
30451520
30561830
306123672
307103070
3083924
3091309
31051550
3111311
3123936
3131313
31451570
31572205
31641264
31761902
318123816
31941276
320123840
321113531
322103220
323134199
324103240
325185850
326165216
327154905
328103280
329216909
330216930
331196289
332134316
333165328
33472338
33572345
336124032
337113707
338103380
33951695
34072380
34141364
34251710
34351715
34431032
3451345
34651730
34751735
34862088
34993141
35093150
35193159
35282816
353103530
35482832
355144970
35693204
357103570
358124296
35993231
36082880
361124332
36282896
363103630
36441456
36562190
36662196
3672734
3682736
369114059
37072590
3712742
372114092
37372611
37482992
37531125
37672632
37783016
37862268
379103790
38062280
38141524
3822764
38372681
3842768
38531155
38631158
38741548
38831164
38931167
39051950
3912782
39241568
39331179
39441576
39531185
39631188
39762382
39841592
39931197
4001400
4011401
40241608
40331209
40431212
4051405
40641624
40783256
40831224
4092818
41072870
41162466
4122824
4131413
4141414
41541660
416124992
41752085
41831254
41931257
4202840
4212842
42272954
42341692
42431272
42531275
42652130
4272854
42931287
43031290
43131293
4321432
4331433
43431302
4361436
4371437
4412882
4421442
44331329
4451445
4471447
44831344
4491449
45031350
45131353
4521452
45394077
45483632
4552910
45673192
457104570
45894122
4592918
46073220
461135993
46262772
46383704
46452320
46583720
46694194
46762802
46883744
4692938
47041880
4711471
4722944
4732946
4741474
4751475
4762952
4771477
4781478
47931437
4801480
4821482
4841484
4872974
4881488
48931467
4901490
4921492
4931493
Total1002373584
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353035266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882cf819a08cc69
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6366383139613038
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_6.json b/autobahn/client/tungstenite_case_13_7_6.json new file mode 100644 index 0000000..8b29c8e --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_6.json @@ -0,0 +1,500 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 505, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 8192, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 756, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=505&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: uXtgXaoqkCQOY4sf55/14Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: STzzcT7WUYgWhnrpSZwMn5CLrXA=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "391": 1, + "392": 2, + "393": 3, + "394": 3, + "395": 5, + "396": 1, + "397": 5, + "398": 4, + "399": 3, + "401": 4, + "402": 6, + "403": 4, + "404": 6, + "405": 7, + "406": 6, + "407": 10, + "408": 12, + "409": 11, + "410": 8, + "411": 9, + "412": 12, + "413": 11, + "414": 12, + "415": 9, + "416": 12, + "417": 8, + "418": 14, + "419": 12, + "420": 13, + "421": 8, + "422": 7, + "423": 9, + "424": 6, + "425": 7, + "426": 8, + "427": 8, + "428": 6, + "429": 7, + "430": 5, + "431": 4, + "432": 3, + "433": 5, + "434": 7, + "435": 5, + "436": 5, + "437": 4, + "438": 8, + "439": 8, + "440": 12, + "441": 5, + "442": 5, + "443": 11, + "444": 12, + "445": 3, + "446": 12, + "447": 11, + "448": 11, + "449": 15, + "450": 14, + "451": 9, + "452": 6, + "453": 7, + "454": 12, + "455": 12, + "456": 5, + "457": 5, + "458": 9, + "459": 4, + "460": 6, + "461": 5, + "462": 7, + "463": 9, + "464": 3, + "465": 10, + "466": 5, + "467": 7, + "468": 4, + "469": 4, + "470": 4, + "471": 2, + "473": 5, + "474": 4, + "475": 6, + "476": 10, + "477": 10, + "478": 3, + "479": 7, + "480": 5, + "481": 5, + "482": 8, + "483": 12, + "484": 8, + "485": 4, + "486": 8, + "487": 7, + "488": 8, + "489": 7, + "490": 8, + "491": 5, + "492": 4, + "493": 6, + "494": 7, + "495": 2, + "496": 8, + "497": 6, + "498": 4, + "499": 4, + "500": 2, + "501": 1, + "502": 5, + "503": 3, + "504": 4, + "505": 9, + "506": 5, + "507": 4, + "508": 10, + "509": 8, + "510": 7, + "511": 7, + "512": 8, + "513": 2, + "514": 10, + "515": 7, + "516": 1, + "517": 5, + "518": 12, + "519": 7, + "520": 6, + "521": 8, + "522": 8, + "523": 6, + "524": 9, + "525": 6, + "526": 7, + "527": 5, + "528": 7, + "529": 2, + "530": 1, + "531": 4, + "532": 4, + "533": 2, + "534": 4, + "535": 3, + "536": 1, + "538": 3, + "542": 1, + "546": 1, + "548": 2, + "549": 1, + "550": 2, + "555": 1, + "557": 3, + "560": 3, + "561": 1, + "564": 1, + "565": 1, + "567": 1, + "568": 1, + "569": 2, + "571": 1, + "572": 3, + "573": 1, + "574": 2, + "576": 4, + "577": 3, + "578": 2, + "580": 1, + "581": 2, + "582": 1, + "584": 1, + "590": 1, + "591": 1, + "599": 1, + "601": 1, + "602": 1 + }, + "started": "2025-09-11T20:14:47.159Z", + "trafficStats": { + "incomingCompressionRatio": 0.0558089599609375, + "incomingOctetsAppLevel": 8192000, + "incomingOctetsWebSocketLevel": 457187, + "incomingOctetsWireLevel": 465187, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.017498310319409783, + "outgoingCompressionRatio": 0.045077392578125, + "outgoingOctetsAppLevel": 8192000, + "outgoingOctetsWebSocketLevel": 369274, + "outgoingOctetsWireLevel": 373274, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.010832065079046995, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "301": 5, + "302": 6, + "303": 2, + "304": 5, + "305": 6, + "306": 12, + "307": 10, + "308": 3, + "309": 1, + "310": 5, + "311": 1, + "312": 3, + "313": 1, + "314": 5, + "315": 7, + "316": 4, + "317": 6, + "318": 12, + "319": 4, + "320": 12, + "321": 11, + "322": 10, + "323": 13, + "324": 10, + "325": 18, + "326": 16, + "327": 15, + "328": 10, + "329": 21, + "330": 21, + "331": 19, + "332": 13, + "333": 16, + "334": 7, + "335": 7, + "336": 12, + "337": 11, + "338": 10, + "339": 5, + "340": 7, + "341": 4, + "342": 5, + "343": 5, + "344": 3, + "345": 1, + "346": 5, + "347": 5, + "348": 6, + "349": 9, + "350": 9, + "351": 9, + "352": 8, + "353": 10, + "354": 8, + "355": 14, + "356": 9, + "357": 10, + "358": 12, + "359": 9, + "360": 8, + "361": 12, + "362": 8, + "363": 10, + "364": 4, + "365": 6, + "366": 6, + "367": 2, + "368": 2, + "369": 11, + "370": 7, + "371": 2, + "372": 11, + "373": 7, + "374": 8, + "375": 3, + "376": 7, + "377": 8, + "378": 6, + "379": 10, + "380": 6, + "381": 4, + "382": 2, + "383": 7, + "384": 2, + "385": 3, + "386": 3, + "387": 4, + "388": 3, + "389": 3, + "390": 5, + "391": 2, + "392": 4, + "393": 3, + "394": 4, + "395": 3, + "396": 3, + "397": 6, + "398": 4, + "399": 3, + "400": 1, + "401": 1, + "402": 4, + "403": 3, + "404": 3, + "405": 1, + "406": 4, + "407": 8, + "408": 3, + "409": 2, + "410": 7, + "411": 6, + "412": 2, + "413": 1, + "414": 1, + "415": 4, + "416": 12, + "417": 5, + "418": 3, + "419": 3, + "420": 2, + "421": 2, + "422": 7, + "423": 4, + "424": 3, + "425": 3, + "426": 5, + "427": 2, + "429": 3, + "430": 3, + "431": 3, + "432": 1, + "433": 1, + "434": 3, + "436": 1, + "437": 1, + "441": 2, + "442": 1, + "443": 3, + "445": 1, + "447": 1, + "448": 3, + "449": 1, + "450": 3, + "451": 3, + "452": 1, + "453": 9, + "454": 8, + "455": 2, + "456": 7, + "457": 10, + "458": 9, + "459": 2, + "460": 7, + "461": 13, + "462": 6, + "463": 8, + "464": 5, + "465": 8, + "466": 9, + "467": 6, + "468": 8, + "469": 2, + "470": 4, + "471": 1, + "472": 2, + "473": 2, + "474": 1, + "475": 1, + "476": 2, + "477": 1, + "478": 1, + "479": 3, + "480": 1, + "482": 1, + "484": 1, + "487": 2, + "488": 1, + "489": 3, + "490": 1, + "492": 1, + "493": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353035266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882cf819a08cc69" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "cf819a08" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_7.html b/autobahn/client/tungstenite_case_13_7_7.html new file mode 100644 index 0000000..d249632 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_7.html @@ -0,0 +1,850 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.7 : Pass - 1293 ms @ 2025-09-11T20:14:47.916Z

+

Case Description

Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=506&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: heTlnOUVO00ywKk70J3zEQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: JvSUGLdaPZVaPkNFI29YSeFjUsg=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
63821276
6401640
64121282
64231926
64331929
64421288
64521290
6461646
64731941
64821296
64921298
65042600
65131953
6521652
6531653
6561656
65853290
65931977
66063960
66142644
66274634
66342652
66421328
66542660
66621332
66753335
66885344
66932007
6701670
6711671
67232016
67353365
67421348
67564050
67653380
67774739
67842712
679106790
68064080
68164086
68242728
68374781
68453420
68585480
68674802
687106870
68842752
68953445
690117590
69185528
69253460
69396237
69453470
6951695
69621392
69732091
69842792
69942796
7001700
70142804
70232106
70332109
704107040
70553525
7061706
70721414
70821416
70953545
71032130
71121422
7121712
71321426
71432142
71575005
71642864
71753585
7181718
71942876
72032160
72175047
72264332
72375061
72464344
72553625
72632178
72721454
72832184
72953645
73042920
73132193
73275124
73321466
73432202
73621472
73732211
73842952
73932217
74032220
74153705
74232226
74353715
7441744
74532235
74642984
74721494
74864488
74964494
75053750
75186008
75286016
75396777
75443016
755107550
75664536
75743028
75896822
75964554
76021520
76175327
76286096
76343052
76453820
76532295
76632298
76721534
76832304
76921538
77132313
77221544
77321546
7741774
7751775
7761776
77743108
77853890
77921558
78021560
78121562
78232346
78332349
78421568
78532355
78821576
78932367
79053950
7911791
79232376
7931793
79453970
79564770
79697164
79743188
79853990
79953995
80097200
80243208
80364818
8041804
80532415
80664836
80743228
80843232
80964854
81032430
81143244
81221624
81354065
81454070
81543260
81654080
81743268
81843272
81943276
82086560
82132463
82243288
82354115
82454120
82543300
8261826
82764962
82854140
82964974
83021660
83143324
83232496
83375831
83497506
83532505
83643344
83743348
838108380
83975873
84054200
84154205
84254210
84354215
84497596
84532535
8461846
84754235
84821696
84965094
85043400
85143404
85254260
8531853
8541854
85532565
8561856
85743428
85843432
8601860
86121722
86221724
86532595
86643464
86721734
86854340
86932607
8701870
87121742
87221744
8741874
87532625
87621752
8771877
8781878
8791879
88021760
88921778
8921892
8951895
9081908
90932727
9101910
91132733
91221824
91454570
9161916
9171917
9181918
91921838
9231923
92632778
9281928
92921858
9301930
93132793
93243728
9331933
93476538
9351935
93632808
93732811
93832814
93921878
94043760
9411941
94221884
9431943
9441944
9451945
9461946
94754735
9481948
9491949
95121902
9521952
95321906
9561956
9641964
9671967
Total1002771375
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
60121202
60231806
6031603
60421208
6051605
6061606
6071607
6081608
6091609
61021220
61131833
61274284
61342452
61463684
615106150
61674312
61753085
61831854
619106190
62053100
6211621
62242488
62374361
62495616
62585000
626116886
62795643
628106280
629159435
63095670
631159465
63274424
63363798
63485072
63585080
63674452
63731911
63853190
63942556
64074480
64153205
64242568
64353215
64453220
64574515
64642584
64721294
6481648
64963894
65031950
65121302
65221304
65342612
65463924
65553275
65685248
65763942
65874606
65921318
66074620
66195949
662117282
663106630
664117304
66585320
66674662
66785336
66874676
66942676
67085360
67164026
67242688
67353365
67442696
67521350
67621352
67742708
6781678
67942716
68042720
68142724
68221364
6831683
68442736
68542740
6861686
68721374
68842752
68921378
69032070
69132073
6921692
69332079
69432082
69553475
69642784
69732091
69842792
69942796
70032100
70121402
70232106
70321406
70464224
70532115
70685648
70721414
7081708
7091709
71032130
71132133
7121712
7131713
71421428
71532145
71621432
71721434
71842872
71921438
72032160
72121442
72253610
72321446
72421448
72553625
72621452
72721454
7281728
7291729
73032190
73232196
7331733
73442936
73521470
73653680
73721474
73932217
74032220
74153705
74332229
74432232
74521490
74621492
7471747
7481748
74975243
7501750
7511751
7521752
7531753
7541754
75543020
75643024
75732271
75853790
75932277
76021520
76221524
76332289
76443056
7651765
7661766
76732301
7691769
7701770
77132313
7721772
77321546
7741774
77532325
7761776
7771777
7781778
7801780
7831783
78621572
78721574
78832364
7891789
79043160
79121582
79221584
7941794
79543180
79753985
79821596
8001800
80121602
80221604
8031803
8041804
80532415
80675642
80764842
80821616
80964854
81043240
81154055
81232436
81321626
81421628
81521630
81643264
81732451
81843272
81932457
82021640
82132463
82354115
82421648
82564950
82754135
82843312
82943316
83043320
83143324
83221664
8331833
83486672
83521670
83621672
83743348
83843352
83921678
84054200
84121682
84275894
84332529
84465064
84521690
8461846
84721694
84821696
8491849
85054250
851108510
85254260
85343412
85454270
85554275
8561856
85754285
85832574
85932577
86043440
86143444
86232586
86376041
86432592
86543460
86665196
86765202
86876076
86932607
87021740
8711871
8721872
87332619
87432622
87521750
87721754
8781878
8791879
88121762
88221764
88421768
88621772
8871887
88821776
8901890
8931893
8941894
8991899
9001900
9041904
9061906
90743628
9081908
9101910
Total1002725592
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353036266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88825dada5135e45
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3564616461353133
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_7.json b/autobahn/client/tungstenite_case_13_7_7.json new file mode 100644 index 0000000..96e4adc --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_7.json @@ -0,0 +1,697 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 506, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 16384, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 1293, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=506&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: heTlnOUVO00ywKk70J3zEQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: JvSUGLdaPZVaPkNFI29YSeFjUsg=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "638": 2, + "640": 1, + "641": 2, + "642": 3, + "643": 3, + "644": 2, + "645": 2, + "646": 1, + "647": 3, + "648": 2, + "649": 2, + "650": 4, + "651": 3, + "652": 1, + "653": 1, + "656": 1, + "658": 5, + "659": 3, + "660": 6, + "661": 4, + "662": 7, + "663": 4, + "664": 2, + "665": 4, + "666": 2, + "667": 5, + "668": 8, + "669": 3, + "670": 1, + "671": 1, + "672": 3, + "673": 5, + "674": 2, + "675": 6, + "676": 5, + "677": 7, + "678": 4, + "679": 10, + "680": 6, + "681": 6, + "682": 4, + "683": 7, + "684": 5, + "685": 8, + "686": 7, + "687": 10, + "688": 4, + "689": 5, + "690": 11, + "691": 8, + "692": 5, + "693": 9, + "694": 5, + "695": 1, + "696": 2, + "697": 3, + "698": 4, + "699": 4, + "700": 1, + "701": 4, + "702": 3, + "703": 3, + "704": 10, + "705": 5, + "706": 1, + "707": 2, + "708": 2, + "709": 5, + "710": 3, + "711": 2, + "712": 1, + "713": 2, + "714": 3, + "715": 7, + "716": 4, + "717": 5, + "718": 1, + "719": 4, + "720": 3, + "721": 7, + "722": 6, + "723": 7, + "724": 6, + "725": 5, + "726": 3, + "727": 2, + "728": 3, + "729": 5, + "730": 4, + "731": 3, + "732": 7, + "733": 2, + "734": 3, + "736": 2, + "737": 3, + "738": 4, + "739": 3, + "740": 3, + "741": 5, + "742": 3, + "743": 5, + "744": 1, + "745": 3, + "746": 4, + "747": 2, + "748": 6, + "749": 6, + "750": 5, + "751": 8, + "752": 8, + "753": 9, + "754": 4, + "755": 10, + "756": 6, + "757": 4, + "758": 9, + "759": 6, + "760": 2, + "761": 7, + "762": 8, + "763": 4, + "764": 5, + "765": 3, + "766": 3, + "767": 2, + "768": 3, + "769": 2, + "771": 3, + "772": 2, + "773": 2, + "774": 1, + "775": 1, + "776": 1, + "777": 4, + "778": 5, + "779": 2, + "780": 2, + "781": 2, + "782": 3, + "783": 3, + "784": 2, + "785": 3, + "788": 2, + "789": 3, + "790": 5, + "791": 1, + "792": 3, + "793": 1, + "794": 5, + "795": 6, + "796": 9, + "797": 4, + "798": 5, + "799": 5, + "800": 9, + "802": 4, + "803": 6, + "804": 1, + "805": 3, + "806": 6, + "807": 4, + "808": 4, + "809": 6, + "810": 3, + "811": 4, + "812": 2, + "813": 5, + "814": 5, + "815": 4, + "816": 5, + "817": 4, + "818": 4, + "819": 4, + "820": 8, + "821": 3, + "822": 4, + "823": 5, + "824": 5, + "825": 4, + "826": 1, + "827": 6, + "828": 5, + "829": 6, + "830": 2, + "831": 4, + "832": 3, + "833": 7, + "834": 9, + "835": 3, + "836": 4, + "837": 4, + "838": 10, + "839": 7, + "840": 5, + "841": 5, + "842": 5, + "843": 5, + "844": 9, + "845": 3, + "846": 1, + "847": 5, + "848": 2, + "849": 6, + "850": 4, + "851": 4, + "852": 5, + "853": 1, + "854": 1, + "855": 3, + "856": 1, + "857": 4, + "858": 4, + "860": 1, + "861": 2, + "862": 2, + "865": 3, + "866": 4, + "867": 2, + "868": 5, + "869": 3, + "870": 1, + "871": 2, + "872": 2, + "874": 1, + "875": 3, + "876": 2, + "877": 1, + "878": 1, + "879": 1, + "880": 2, + "889": 2, + "892": 1, + "895": 1, + "908": 1, + "909": 3, + "910": 1, + "911": 3, + "912": 2, + "914": 5, + "916": 1, + "917": 1, + "918": 1, + "919": 2, + "923": 1, + "926": 3, + "928": 1, + "929": 2, + "930": 1, + "931": 3, + "932": 4, + "933": 1, + "934": 7, + "935": 1, + "936": 3, + "937": 3, + "938": 3, + "939": 2, + "940": 4, + "941": 1, + "942": 2, + "943": 1, + "944": 1, + "945": 1, + "946": 1, + "947": 5, + "948": 1, + "949": 1, + "951": 2, + "952": 1, + "953": 2, + "956": 1, + "964": 1, + "967": 1 + }, + "started": "2025-09-11T20:14:47.916Z", + "trafficStats": { + "incomingCompressionRatio": 0.0465765380859375, + "incomingOctetsAppLevel": 16384000, + "incomingOctetsWebSocketLevel": 763110, + "incomingOctetsWireLevel": 771110, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.010483416545452163, + "outgoingCompressionRatio": 0.0440235595703125, + "outgoingOctetsAppLevel": 16384000, + "outgoingOctetsWebSocketLevel": 721282, + "outgoingOctetsWireLevel": 725282, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.005545681162152944, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "601": 2, + "602": 3, + "603": 1, + "604": 2, + "605": 1, + "606": 1, + "607": 1, + "608": 1, + "609": 1, + "610": 2, + "611": 3, + "612": 7, + "613": 4, + "614": 6, + "615": 10, + "616": 7, + "617": 5, + "618": 3, + "619": 10, + "620": 5, + "621": 1, + "622": 4, + "623": 7, + "624": 9, + "625": 8, + "626": 11, + "627": 9, + "628": 10, + "629": 15, + "630": 9, + "631": 15, + "632": 7, + "633": 6, + "634": 8, + "635": 8, + "636": 7, + "637": 3, + "638": 5, + "639": 4, + "640": 7, + "641": 5, + "642": 4, + "643": 5, + "644": 5, + "645": 7, + "646": 4, + "647": 2, + "648": 1, + "649": 6, + "650": 3, + "651": 2, + "652": 2, + "653": 4, + "654": 6, + "655": 5, + "656": 8, + "657": 6, + "658": 7, + "659": 2, + "660": 7, + "661": 9, + "662": 11, + "663": 10, + "664": 11, + "665": 8, + "666": 7, + "667": 8, + "668": 7, + "669": 4, + "670": 8, + "671": 6, + "672": 4, + "673": 5, + "674": 4, + "675": 2, + "676": 2, + "677": 4, + "678": 1, + "679": 4, + "680": 4, + "681": 4, + "682": 2, + "683": 1, + "684": 4, + "685": 4, + "686": 1, + "687": 2, + "688": 4, + "689": 2, + "690": 3, + "691": 3, + "692": 1, + "693": 3, + "694": 3, + "695": 5, + "696": 4, + "697": 3, + "698": 4, + "699": 4, + "700": 3, + "701": 2, + "702": 3, + "703": 2, + "704": 6, + "705": 3, + "706": 8, + "707": 2, + "708": 1, + "709": 1, + "710": 3, + "711": 3, + "712": 1, + "713": 1, + "714": 2, + "715": 3, + "716": 2, + "717": 2, + "718": 4, + "719": 2, + "720": 3, + "721": 2, + "722": 5, + "723": 2, + "724": 2, + "725": 5, + "726": 2, + "727": 2, + "728": 1, + "729": 1, + "730": 3, + "732": 3, + "733": 1, + "734": 4, + "735": 2, + "736": 5, + "737": 2, + "739": 3, + "740": 3, + "741": 5, + "743": 3, + "744": 3, + "745": 2, + "746": 2, + "747": 1, + "748": 1, + "749": 7, + "750": 1, + "751": 1, + "752": 1, + "753": 1, + "754": 1, + "755": 4, + "756": 4, + "757": 3, + "758": 5, + "759": 3, + "760": 2, + "762": 2, + "763": 3, + "764": 4, + "765": 1, + "766": 1, + "767": 3, + "769": 1, + "770": 1, + "771": 3, + "772": 1, + "773": 2, + "774": 1, + "775": 3, + "776": 1, + "777": 1, + "778": 1, + "780": 1, + "783": 1, + "786": 2, + "787": 2, + "788": 3, + "789": 1, + "790": 4, + "791": 2, + "792": 2, + "794": 1, + "795": 4, + "797": 5, + "798": 2, + "800": 1, + "801": 2, + "802": 2, + "803": 1, + "804": 1, + "805": 3, + "806": 7, + "807": 6, + "808": 2, + "809": 6, + "810": 4, + "811": 5, + "812": 3, + "813": 2, + "814": 2, + "815": 2, + "816": 4, + "817": 3, + "818": 4, + "819": 3, + "820": 2, + "821": 3, + "823": 5, + "824": 2, + "825": 6, + "827": 5, + "828": 4, + "829": 4, + "830": 4, + "831": 4, + "832": 2, + "833": 1, + "834": 8, + "835": 2, + "836": 2, + "837": 4, + "838": 4, + "839": 2, + "840": 5, + "841": 2, + "842": 7, + "843": 3, + "844": 6, + "845": 2, + "846": 1, + "847": 2, + "848": 2, + "849": 1, + "850": 5, + "851": 10, + "852": 5, + "853": 4, + "854": 5, + "855": 5, + "856": 1, + "857": 5, + "858": 3, + "859": 3, + "860": 4, + "861": 4, + "862": 3, + "863": 7, + "864": 3, + "865": 4, + "866": 6, + "867": 6, + "868": 7, + "869": 3, + "870": 2, + "871": 1, + "872": 1, + "873": 3, + "874": 3, + "875": 2, + "877": 2, + "878": 1, + "879": 1, + "881": 2, + "882": 2, + "884": 2, + "886": 2, + "887": 1, + "888": 2, + "890": 1, + "893": 1, + "894": 1, + "899": 1, + "900": 1, + "904": 1, + "906": 1, + "907": 4, + "908": 1, + "910": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353036266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825dada5135e45" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5dada513" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_8.html b/autobahn/client/tungstenite_case_13_7_8.html new file mode 100644 index 0000000..0058342 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_8.html @@ -0,0 +1,1020 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.8 : Pass - 2466 ms @ 2025-09-11T20:14:49.211Z

+

Case Description

Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=507&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ym2jxkFxFmip90XjQbo3MQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: TN7d4u/oen8tf6SbWudbuZAkI/0=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
118911189
119211192
119411194
119522390
119611196
119744788
119811198
119922398
120044800
120122402
120211202
120333609
120433612
120556025
120633618
120711207
120833624
120944836
121011210
121133633
121233636
121344852
121433642
121522430
121656080
121756085
121867308
121967314
122033660
122167326
122222444
122333669
122433672
122556125
122644904
122711227
122833684
122967374
123089840
123133693
123256160
123367398
123444936
123578645
123667416
1237911133
12381214856
123944956
124033720
124122482
124244968
124367458
124467464
124533735
124633738
124733741
124878736
124967494
125011250
125122502
125222504
125411254
125545020
125611256
125711257
125822516
126111261
126211262
126422528
126845072
126922538
127122542
127211272
127333819
127411274
127522550
127622552
127711277
127811278
127911279
128011280
128211282
128322566
128411284
128511285
128611286
128711287
128811288
128911289
129011290
129133873
129222584
129333879
129533885
129611296
129711297
130133903
130345212
130411304
130522610
130611306
130733921
130845232
131033930
131133933
131256560
131333939
131411314
131556575
131611316
131711317
131833954
131945276
132011320
132122642
132211322
132311323
132445296
132511325
132633978
132767962
132856640
132933987
133045320
133145324
133233996
133311333
133456670
133556675
133622672
133722674
133811338
133968034
134068040
1341810728
134245368
134456720
134522690
134645384
134779429
134879436
134945396
135034050
135145404
135245408
135356765
135422708
1355810840
135622712
135734071
135856790
136045440
136156805
136234086
136334089
136411364
136545460
136622732
136745468
136822736
136934107
137034110
137134113
137211372
137368238
137534125
137711377
137822756
137945516
138034140
138145524
138222764
138322766
138422768
138511385
138611386
138722774
138834164
138922778
139011390
139111391
139222784
139311393
139534185
139622792
139711397
139822796
139934197
140034200
140111401
140222804
140311403
140711407
140834224
140957045
141034230
141145644
141222824
1413811304
141445656
141511415
1416811328
141745668
141857090
141957095
142045680
142122842
142245688
142422848
142522850
142634278
142734281
142822856
142945716
143034290
143122862
143222864
143434302
143557175
143645744
143722874
143811438
144022880
144122882
144322886
144411444
144511445
144611446
144734341
144811448
144911449
145011450
145122902
145211452
145345812
145422908
145534365
145634368
145734371
145857290
145957295
146057300
146145844
146257310
146357315
146445856
1465710255
14661116126
146745868
146811468
14691116159
147057350
147145884
147234416
147322946
147445896
147634428
1477811816
147822956
147922958
148034440
148111481
148222964
148322966
148422968
148611486
148722974
148845952
148911489
149022980
149211492
149311493
149434482
149545980
149645984
149822996
149934497
150057500
150111501
150334509
150423008
150511505
150611506
150734521
150811508
150946036
151257560
151323026
151411514
151623032
151723034
151834554
151911519
152023040
152134563
152211522
152311523
152411524
152723054
152823056
152911529
153011530
153146124
153211532
153311533
153411534
153611536
154146164
154223084
154311543
154423088
154611546
154723094
154811548
154911549
155011550
155123102
155234656
157211572
157411574
157811578
157923158
158011580
158134743
158211582
158534755
158711587
158923178
159011590
159111591
159311593
159511595
159723194
159923198
160058000
160123202
160234806
160334809
160411604
160523210
160611606
160846432
160911609
161246448
161311613
161411614
161511615
161711617
162023240
162123242
162211622
162311623
162534875
162623252
162811628
162934887
163011630
163111631
163211632
163311633
163611636
163811638
Total10021377957
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
123611236
123922478
124011240
124111241
124211242
124311243
124411244
124544980
124611246
124822496
125022500
125122502
125211252
125311253
125433762
125511255
125645024
125711257
125833774
125911259
126011260
126133783
126256310
126322526
126433792
126522530
126645064
126745068
126822536
126978883
127056350
127245088
1273810184
127445096
1275911475
127633828
1277911493
127867668
127967674
12801114080
1281810248
1282911538
1283911547
128445136
128545140
1286810288
128756435
128856440
128956445
129022580
129145164
129211292
129333879
129456470
129545180
129633888
129745188
129856490
129956495
130033900
130167806
130267812
130345212
130445216
130511305
130611306
130745228
130822616
130933927
131022620
131133933
131245248
131322626
131411314
131622632
131722634
131811318
131945276
132133963
132211322
132311323
132422648
132522650
132745308
132822656
132911329
133011330
133122662
133222664
133311333
133422668
133634008
133711337
133922678
134034020
134122682
134211342
134322686
134422688
134545380
134622692
134768082
134811348
134911349
135156755
135245408
135322706
135556775
135645424
135811358
135934077
136034080
136122722
136211362
136322726
136411364
136622732
136745468
136811368
136945476
137011370
137222744
137322746
137434122
137711377
137822756
137911379
138011380
138134143
138234146
138311383
138434152
138534155
138611386
138711387
138922778
139134173
139222784
139311393
139422788
139522790
139611396
139722794
139811398
140111401
140222804
140311403
140411404
140511405
140622812
140922818
141011410
141122822
141211412
141368478
141422828
141511415
141634248
141745668
141811418
141911419
142011420
142145684
142222844
142322846
142411424
142522850
142611426
142745708
142922858
143122862
143245728
143411434
143511435
143634308
143722874
143945756
144011440
144122882
144222884
144411444
144645784
144722894
144811448
144922898
145011450
145122902
145222904
145322906
145434362
145522910
145622912
145722914
145911459
146022920
146111461
146211462
146322926
146411464
146534395
146622932
146722934
146822936
146945876
147045880
147168826
147234416
147322946
147422948
147511475
147622952
147734431
147834434
147922958
148022960
148111481
148211482
148334449
148445936
148568910
148634458
148722974
148845952
148934467
149022980
149111491
149234476
149334479
149422988
149534485
149657480
149822996
150034500
150123002
150223004
150323006
150423008
150534515
150623012
150711507
150834524
150923018
151011510
151123022
151357565
151423028
151523030
151611516
151746068
151846072
151934557
152046080
152269132
152423048
152511525
152611526
152834584
152957645
153123062
153234596
153311533
153446136
153546140
153657680
153757685
1538913842
153957695
154069240
1541710787
154269252
154334629
154457720
154511545
154634638
1547710829
154823096
154923098
155034650
155169306
155257760
155369318
155434662
155534665
155669336
155757785
1558812464
1559710913
15601117160
1561710927
1562710934
156323126
156469384
156557825
156657830
156757835
156823136
156934707
157057850
157157855
157234716
157334719
157411574
157511575
157623152
157723154
157811578
158034740
158123162
158234746
158323166
158511585
158623172
158723174
158823176
158923178
159023180
159123182
159211592
159311593
159711597
160411604
160711607
160823216
161123222
161311613
161411614
161711617
161846472
162111621
162323246
162423248
162511625
162669756
162734881
162811628
162923258
163011630
163223264
163411634
163623272
163723274
163911639
164134923
164334929
164423288
164669876
164711647
164823296
165023300
165123302
165223304
165323306
165411654
165523310
165723314
165811658
165923318
166023320
166111661
166423328
Total10021435175
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353037266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888259cab55a5a22
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3539636162353561
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_8.json b/autobahn/client/tungstenite_case_13_7_8.json new file mode 100644 index 0000000..ee9cff6 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_8.json @@ -0,0 +1,867 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 507, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 32768, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 2466, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=507&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ym2jxkFxFmip90XjQbo3MQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: TN7d4u/oen8tf6SbWudbuZAkI/0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1189": 1, + "1192": 1, + "1194": 1, + "1195": 2, + "1196": 1, + "1197": 4, + "1198": 1, + "1199": 2, + "1200": 4, + "1201": 2, + "1202": 1, + "1203": 3, + "1204": 3, + "1205": 5, + "1206": 3, + "1207": 1, + "1208": 3, + "1209": 4, + "1210": 1, + "1211": 3, + "1212": 3, + "1213": 4, + "1214": 3, + "1215": 2, + "1216": 5, + "1217": 5, + "1218": 6, + "1219": 6, + "1220": 3, + "1221": 6, + "1222": 2, + "1223": 3, + "1224": 3, + "1225": 5, + "1226": 4, + "1227": 1, + "1228": 3, + "1229": 6, + "1230": 8, + "1231": 3, + "1232": 5, + "1233": 6, + "1234": 4, + "1235": 7, + "1236": 6, + "1237": 9, + "1238": 12, + "1239": 4, + "1240": 3, + "1241": 2, + "1242": 4, + "1243": 6, + "1244": 6, + "1245": 3, + "1246": 3, + "1247": 3, + "1248": 7, + "1249": 6, + "1250": 1, + "1251": 2, + "1252": 2, + "1254": 1, + "1255": 4, + "1256": 1, + "1257": 1, + "1258": 2, + "1261": 1, + "1262": 1, + "1264": 2, + "1268": 4, + "1269": 2, + "1271": 2, + "1272": 1, + "1273": 3, + "1274": 1, + "1275": 2, + "1276": 2, + "1277": 1, + "1278": 1, + "1279": 1, + "1280": 1, + "1282": 1, + "1283": 2, + "1284": 1, + "1285": 1, + "1286": 1, + "1287": 1, + "1288": 1, + "1289": 1, + "1290": 1, + "1291": 3, + "1292": 2, + "1293": 3, + "1295": 3, + "1296": 1, + "1297": 1, + "1301": 3, + "1303": 4, + "1304": 1, + "1305": 2, + "1306": 1, + "1307": 3, + "1308": 4, + "1310": 3, + "1311": 3, + "1312": 5, + "1313": 3, + "1314": 1, + "1315": 5, + "1316": 1, + "1317": 1, + "1318": 3, + "1319": 4, + "1320": 1, + "1321": 2, + "1322": 1, + "1323": 1, + "1324": 4, + "1325": 1, + "1326": 3, + "1327": 6, + "1328": 5, + "1329": 3, + "1330": 4, + "1331": 4, + "1332": 3, + "1333": 1, + "1334": 5, + "1335": 5, + "1336": 2, + "1337": 2, + "1338": 1, + "1339": 6, + "1340": 6, + "1341": 8, + "1342": 4, + "1344": 5, + "1345": 2, + "1346": 4, + "1347": 7, + "1348": 7, + "1349": 4, + "1350": 3, + "1351": 4, + "1352": 4, + "1353": 5, + "1354": 2, + "1355": 8, + "1356": 2, + "1357": 3, + "1358": 5, + "1360": 4, + "1361": 5, + "1362": 3, + "1363": 3, + "1364": 1, + "1365": 4, + "1366": 2, + "1367": 4, + "1368": 2, + "1369": 3, + "1370": 3, + "1371": 3, + "1372": 1, + "1373": 6, + "1375": 3, + "1377": 1, + "1378": 2, + "1379": 4, + "1380": 3, + "1381": 4, + "1382": 2, + "1383": 2, + "1384": 2, + "1385": 1, + "1386": 1, + "1387": 2, + "1388": 3, + "1389": 2, + "1390": 1, + "1391": 1, + "1392": 2, + "1393": 1, + "1395": 3, + "1396": 2, + "1397": 1, + "1398": 2, + "1399": 3, + "1400": 3, + "1401": 1, + "1402": 2, + "1403": 1, + "1407": 1, + "1408": 3, + "1409": 5, + "1410": 3, + "1411": 4, + "1412": 2, + "1413": 8, + "1414": 4, + "1415": 1, + "1416": 8, + "1417": 4, + "1418": 5, + "1419": 5, + "1420": 4, + "1421": 2, + "1422": 4, + "1424": 2, + "1425": 2, + "1426": 3, + "1427": 3, + "1428": 2, + "1429": 4, + "1430": 3, + "1431": 2, + "1432": 2, + "1434": 3, + "1435": 5, + "1436": 4, + "1437": 2, + "1438": 1, + "1440": 2, + "1441": 2, + "1443": 2, + "1444": 1, + "1445": 1, + "1446": 1, + "1447": 3, + "1448": 1, + "1449": 1, + "1450": 1, + "1451": 2, + "1452": 1, + "1453": 4, + "1454": 2, + "1455": 3, + "1456": 3, + "1457": 3, + "1458": 5, + "1459": 5, + "1460": 5, + "1461": 4, + "1462": 5, + "1463": 5, + "1464": 4, + "1465": 7, + "1466": 11, + "1467": 4, + "1468": 1, + "1469": 11, + "1470": 5, + "1471": 4, + "1472": 3, + "1473": 2, + "1474": 4, + "1476": 3, + "1477": 8, + "1478": 2, + "1479": 2, + "1480": 3, + "1481": 1, + "1482": 2, + "1483": 2, + "1484": 2, + "1486": 1, + "1487": 2, + "1488": 4, + "1489": 1, + "1490": 2, + "1492": 1, + "1493": 1, + "1494": 3, + "1495": 4, + "1496": 4, + "1498": 2, + "1499": 3, + "1500": 5, + "1501": 1, + "1503": 3, + "1504": 2, + "1505": 1, + "1506": 1, + "1507": 3, + "1508": 1, + "1509": 4, + "1512": 5, + "1513": 2, + "1514": 1, + "1516": 2, + "1517": 2, + "1518": 3, + "1519": 1, + "1520": 2, + "1521": 3, + "1522": 1, + "1523": 1, + "1524": 1, + "1527": 2, + "1528": 2, + "1529": 1, + "1530": 1, + "1531": 4, + "1532": 1, + "1533": 1, + "1534": 1, + "1536": 1, + "1541": 4, + "1542": 2, + "1543": 1, + "1544": 2, + "1546": 1, + "1547": 2, + "1548": 1, + "1549": 1, + "1550": 1, + "1551": 2, + "1552": 3, + "1572": 1, + "1574": 1, + "1578": 1, + "1579": 2, + "1580": 1, + "1581": 3, + "1582": 1, + "1585": 3, + "1587": 1, + "1589": 2, + "1590": 1, + "1591": 1, + "1593": 1, + "1595": 1, + "1597": 2, + "1599": 2, + "1600": 5, + "1601": 2, + "1602": 3, + "1603": 3, + "1604": 1, + "1605": 2, + "1606": 1, + "1608": 4, + "1609": 1, + "1612": 4, + "1613": 1, + "1614": 1, + "1615": 1, + "1617": 1, + "1620": 2, + "1621": 2, + "1622": 1, + "1623": 1, + "1625": 3, + "1626": 2, + "1628": 1, + "1629": 3, + "1630": 1, + "1631": 1, + "1632": 1, + "1633": 1, + "1636": 1, + "1638": 1 + }, + "started": "2025-09-11T20:14:49.211Z", + "trafficStats": { + "incomingCompressionRatio": 0.0417996826171875, + "incomingOctetsAppLevel": 32768000, + "incomingOctetsWebSocketLevel": 1369692, + "incomingOctetsWireLevel": 1377692, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.005840729156627913, + "outgoingCompressionRatio": 0.043666534423828125, + "outgoingOctetsAppLevel": 32768000, + "outgoingOctetsWebSocketLevel": 1430865, + "outgoingOctetsWireLevel": 1434865, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0027955118057957948, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "1236": 1, + "1239": 2, + "1240": 1, + "1241": 1, + "1242": 1, + "1243": 1, + "1244": 1, + "1245": 4, + "1246": 1, + "1248": 2, + "1250": 2, + "1251": 2, + "1252": 1, + "1253": 1, + "1254": 3, + "1255": 1, + "1256": 4, + "1257": 1, + "1258": 3, + "1259": 1, + "1260": 1, + "1261": 3, + "1262": 5, + "1263": 2, + "1264": 3, + "1265": 2, + "1266": 4, + "1267": 4, + "1268": 2, + "1269": 7, + "1270": 5, + "1272": 4, + "1273": 8, + "1274": 4, + "1275": 9, + "1276": 3, + "1277": 9, + "1278": 6, + "1279": 6, + "1280": 11, + "1281": 8, + "1282": 9, + "1283": 9, + "1284": 4, + "1285": 4, + "1286": 8, + "1287": 5, + "1288": 5, + "1289": 5, + "1290": 2, + "1291": 4, + "1292": 1, + "1293": 3, + "1294": 5, + "1295": 4, + "1296": 3, + "1297": 4, + "1298": 5, + "1299": 5, + "1300": 3, + "1301": 6, + "1302": 6, + "1303": 4, + "1304": 4, + "1305": 1, + "1306": 1, + "1307": 4, + "1308": 2, + "1309": 3, + "1310": 2, + "1311": 3, + "1312": 4, + "1313": 2, + "1314": 1, + "1316": 2, + "1317": 2, + "1318": 1, + "1319": 4, + "1321": 3, + "1322": 1, + "1323": 1, + "1324": 2, + "1325": 2, + "1327": 4, + "1328": 2, + "1329": 1, + "1330": 1, + "1331": 2, + "1332": 2, + "1333": 1, + "1334": 2, + "1336": 3, + "1337": 1, + "1339": 2, + "1340": 3, + "1341": 2, + "1342": 1, + "1343": 2, + "1344": 2, + "1345": 4, + "1346": 2, + "1347": 6, + "1348": 1, + "1349": 1, + "1351": 5, + "1352": 4, + "1353": 2, + "1355": 5, + "1356": 4, + "1358": 1, + "1359": 3, + "1360": 3, + "1361": 2, + "1362": 1, + "1363": 2, + "1364": 1, + "1366": 2, + "1367": 4, + "1368": 1, + "1369": 4, + "1370": 1, + "1372": 2, + "1373": 2, + "1374": 3, + "1377": 1, + "1378": 2, + "1379": 1, + "1380": 1, + "1381": 3, + "1382": 3, + "1383": 1, + "1384": 3, + "1385": 3, + "1386": 1, + "1387": 1, + "1389": 2, + "1391": 3, + "1392": 2, + "1393": 1, + "1394": 2, + "1395": 2, + "1396": 1, + "1397": 2, + "1398": 1, + "1401": 1, + "1402": 2, + "1403": 1, + "1404": 1, + "1405": 1, + "1406": 2, + "1409": 2, + "1410": 1, + "1411": 2, + "1412": 1, + "1413": 6, + "1414": 2, + "1415": 1, + "1416": 3, + "1417": 4, + "1418": 1, + "1419": 1, + "1420": 1, + "1421": 4, + "1422": 2, + "1423": 2, + "1424": 1, + "1425": 2, + "1426": 1, + "1427": 4, + "1429": 2, + "1431": 2, + "1432": 4, + "1434": 1, + "1435": 1, + "1436": 3, + "1437": 2, + "1439": 4, + "1440": 1, + "1441": 2, + "1442": 2, + "1444": 1, + "1446": 4, + "1447": 2, + "1448": 1, + "1449": 2, + "1450": 1, + "1451": 2, + "1452": 2, + "1453": 2, + "1454": 3, + "1455": 2, + "1456": 2, + "1457": 2, + "1459": 1, + "1460": 2, + "1461": 1, + "1462": 1, + "1463": 2, + "1464": 1, + "1465": 3, + "1466": 2, + "1467": 2, + "1468": 2, + "1469": 4, + "1470": 4, + "1471": 6, + "1472": 3, + "1473": 2, + "1474": 2, + "1475": 1, + "1476": 2, + "1477": 3, + "1478": 3, + "1479": 2, + "1480": 2, + "1481": 1, + "1482": 1, + "1483": 3, + "1484": 4, + "1485": 6, + "1486": 3, + "1487": 2, + "1488": 4, + "1489": 3, + "1490": 2, + "1491": 1, + "1492": 3, + "1493": 3, + "1494": 2, + "1495": 3, + "1496": 5, + "1498": 2, + "1500": 3, + "1501": 2, + "1502": 2, + "1503": 2, + "1504": 2, + "1505": 3, + "1506": 2, + "1507": 1, + "1508": 3, + "1509": 2, + "1510": 1, + "1511": 2, + "1513": 5, + "1514": 2, + "1515": 2, + "1516": 1, + "1517": 4, + "1518": 4, + "1519": 3, + "1520": 4, + "1522": 6, + "1524": 2, + "1525": 1, + "1526": 1, + "1528": 3, + "1529": 5, + "1531": 2, + "1532": 3, + "1533": 1, + "1534": 4, + "1535": 4, + "1536": 5, + "1537": 5, + "1538": 9, + "1539": 5, + "1540": 6, + "1541": 7, + "1542": 6, + "1543": 3, + "1544": 5, + "1545": 1, + "1546": 3, + "1547": 7, + "1548": 2, + "1549": 2, + "1550": 3, + "1551": 6, + "1552": 5, + "1553": 6, + "1554": 3, + "1555": 3, + "1556": 6, + "1557": 5, + "1558": 8, + "1559": 7, + "1560": 11, + "1561": 7, + "1562": 7, + "1563": 2, + "1564": 6, + "1565": 5, + "1566": 5, + "1567": 5, + "1568": 2, + "1569": 3, + "1570": 5, + "1571": 5, + "1572": 3, + "1573": 3, + "1574": 1, + "1575": 1, + "1576": 2, + "1577": 2, + "1578": 1, + "1580": 3, + "1581": 2, + "1582": 3, + "1583": 2, + "1585": 1, + "1586": 2, + "1587": 2, + "1588": 2, + "1589": 2, + "1590": 2, + "1591": 2, + "1592": 1, + "1593": 1, + "1597": 1, + "1604": 1, + "1607": 1, + "1608": 2, + "1611": 2, + "1613": 1, + "1614": 1, + "1617": 1, + "1618": 4, + "1621": 1, + "1623": 2, + "1624": 2, + "1625": 1, + "1626": 6, + "1627": 3, + "1628": 1, + "1629": 2, + "1630": 1, + "1632": 2, + "1634": 1, + "1636": 2, + "1637": 2, + "1639": 1, + "1641": 3, + "1643": 3, + "1644": 2, + "1646": 6, + "1647": 1, + "1648": 2, + "1650": 2, + "1651": 2, + "1652": 2, + "1653": 2, + "1654": 1, + "1655": 2, + "1657": 2, + "1658": 1, + "1659": 2, + "1660": 2, + "1661": 1, + "1664": 2 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353037266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888259cab55a5a22" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "59cab55a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_13_7_9.html b/autobahn/client/tungstenite_case_13_7_9.html new file mode 100644 index 0000000..6596645 --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_9.html @@ -0,0 +1,700 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 13.7.9 : Pass - 3774 ms @ 2025-09-11T20:14:51.678Z

+

Case Description

Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]

+

Case Expectation

Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=508&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: I6cMoAQMB3uVZjVSVMiewA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: QuI1NHbdny6dDeuY4hgFdH1WmL0=
+Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
818
2571257
244312443
244512445
244612446
244712447
244812448
244924898
245037350
245112451
245212452
245437362
245524910
245649824
245724914
245824916
245949836
246012460
246149844
246212462
246412464
246537395
2466922194
24671127137
2468922212
2469717283
2470717290
2471614826
2472717304
2473512365
247412474
247549900
247637428
2477614862
247824956
2479512395
2480614880
2481614886
2482717374
2483819864
2484819872
2485922365
2486819888
2487717409
2488717416
2489717423
24901024900
2491512455
24921229904
24931024930
2494922446
24951024950
2496819968
24971024970
2498512490
249949996
2500615000
25011332513
25021332526
2503922527
25041230048
25051127555
2506820048
2507512535
25081025080
25091127599
25101435140
2511820088
25121025120
2513717591
2514512570
2515512575
251612516
251737551
2518410072
251937557
252025040
252137563
252225044
252337569
252437572
2525410100
2527410108
252837584
252912529
253112531
253225064
253312533
253512535
2536512680
2537410148
253925078
254012540
254512545
254612546
254825096
255237656
255312553
2554410216
2555410220
255612556
255725114
2558615348
2559512795
2560820480
256137683
2562512810
2563923067
2564615384
25651230780
25661846188
25671025670
2568512840
256937707
257037710
2572410288
257325146
257437722
257537725
257612576
257712577
257825156
258325166
2586410344
258712587
258837764
258912589
259137773
259212592
259412594
259612596
259712597
259912599
260012600
260112601
260212602
260312603
260512605
260612606
260712607
260812608
260925218
261125222
261212612
261312613
261412614
261612616
261725234
261825236
2619513095
2621410484
262212622
262425248
2625513125
2626513130
262737881
2628615768
262925258
263225264
263312633
2634410536
263625272
263812638
264012640
264112641
264212642
264312643
2644513220
264525290
264625292
264712647
264812648
265012650
265112651
265212652
265412654
265812658
266112661
266225324
266437992
266537995
266612666
266738001
266825336
2669718683
2670821360
2671616026
267238016
2673821384
2674924066
267512675
267625352
267712677
2678410712
267938037
2680410720
268112681
2682616092
268325366
2684821472
268512685
268625372
268712687
268825376
2690718830
2691410764
269238076
2693410772
269425388
269525390
269625392
269912699
270212702
270425408
270512705
270612706
270812708
270925418
271025420
271125422
271212712
271312713
271625432
271812718
271912719
272012720
272125442
272225444
272312723
272425448
272512725
272612726
272725454
272812728
273012730
2731410924
273612736
273812738
273912739
274025480
274138223
274412744
274512745
274612746
275012750
275212752
275725514
275812758
276012760
276112761
276212762
276412764
2768411072
276912769
277038310
277138313
277612776
277912779
278112781
278238346
278312783
278412784
2785513925
278712787
2788411152
278938367
2790513950
2791513955
2792925128
27931439102
2794822352
2795616770
2796925164
2797719579
2798719586
2799616794
280025600
280112801
280212802
280325606
280525610
280912809
281112811
Total10022585814
+

Octets Transmitted by Chop Size

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chop SizeCountOctets
414
3061306
280125602
280212802
280325606
2804514020
2805411220
2806616836
2807514035
2808616848
28091233708
28101747770
28112261842
28122673112
28132878764
28141747838
28153598525
28161953504
28173187327
28182056360
28192364837
28201747940
28212159241
28222776194
28232570575
28242262128
28252673450
28262056520
28273496118
28282056560
28291439606
2830822640
2831925479
28321748144
28331645328
28341748178
28351645360
28361028360
2837925533
2838514190
283938517
284012840
284138523
2842411368
284325686
284625692
284712847
284912849
285012850
285125702
285312853
285412854
285525710
285738571
2859411436
286012860
2862411448
286338589
286425728
286625732
286712867
286812868
286912869
287012870
287212872
287812878
287912879
288225764
288312883
288412884
288512885
288625772
288712887
288825776
289212892
289512895
289712897
289938697
290025800
290125802
2902514510
2903823224
2904514520
2905720335
2906411624
2907823256
290825816
290938727
291038730
2911514555
29121029120
29131132043
29141646624
29151029150
29161132076
2917617502
29181955442
29191235028
2920617520
2921926289
29221235064
29231235076
29241235088
2925926325
2926720482
2927926343
2928720496
2929617574
2930411720
2931411724
293225864
293338799
293412934
2935617610
29361132296
2937823496
29381338194
29391029390
2940926460
2941514705
294225884
294338829
295712957
Total10022856403
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d353038266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88824bbd5de54855
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3462626435646535
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_13_7_9.json b/autobahn/client/tungstenite_case_13_7_9.json new file mode 100644 index 0000000..70e3d2a --- /dev/null +++ b/autobahn/client/tungstenite_case_13_7_9.json @@ -0,0 +1,547 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 508, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 compressed messages each of payload size 65536, auto-fragment to 0 octets. Use permessage-deflate client offers (requestNoContextTakeover, requestMaxWindowBits): [(True, 9), (True, 0), (False, 0)]", + "droppedByMe": true, + "duration": 3774, + "expectation": "Receive echo'ed messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=508&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: I6cMoAQMB3uVZjVSVMiewA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: QuI1NHbdny6dDeuY4hgFdH1WmL0=\r\nSec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover; client_max_window_bits=9\r\n\r\n", + "id": "13.7.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": true, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2443": 1, + "2445": 1, + "2446": 1, + "2447": 1, + "2448": 1, + "2449": 2, + "2450": 3, + "2451": 1, + "2452": 1, + "2454": 3, + "2455": 2, + "2456": 4, + "2457": 2, + "2458": 2, + "2459": 4, + "2460": 1, + "2461": 4, + "2462": 1, + "2464": 1, + "2465": 3, + "2466": 9, + "2467": 11, + "2468": 9, + "2469": 7, + "2470": 7, + "2471": 6, + "2472": 7, + "2473": 5, + "2474": 1, + "2475": 4, + "2476": 3, + "2477": 6, + "2478": 2, + "2479": 5, + "2480": 6, + "2481": 6, + "2482": 7, + "2483": 8, + "2484": 8, + "2485": 9, + "2486": 8, + "2487": 7, + "2488": 7, + "2489": 7, + "2490": 10, + "2491": 5, + "2492": 12, + "2493": 10, + "2494": 9, + "2495": 10, + "2496": 8, + "2497": 10, + "2498": 5, + "2499": 4, + "2500": 6, + "2501": 13, + "2502": 13, + "2503": 9, + "2504": 12, + "2505": 11, + "2506": 8, + "2507": 5, + "2508": 10, + "2509": 11, + "2510": 14, + "2511": 8, + "2512": 10, + "2513": 7, + "2514": 5, + "2515": 5, + "2516": 1, + "2517": 3, + "2518": 4, + "2519": 3, + "2520": 2, + "2521": 3, + "2522": 2, + "2523": 3, + "2524": 3, + "2525": 4, + "2527": 4, + "2528": 3, + "2529": 1, + "2531": 1, + "2532": 2, + "2533": 1, + "2535": 1, + "2536": 5, + "2537": 4, + "2539": 2, + "2540": 1, + "2545": 1, + "2546": 1, + "2548": 2, + "2552": 3, + "2553": 1, + "2554": 4, + "2555": 4, + "2556": 1, + "2557": 2, + "2558": 6, + "2559": 5, + "2560": 8, + "2561": 3, + "2562": 5, + "2563": 9, + "2564": 6, + "2565": 12, + "2566": 18, + "2567": 10, + "2568": 5, + "2569": 3, + "2570": 3, + "2572": 4, + "2573": 2, + "2574": 3, + "2575": 3, + "2576": 1, + "2577": 1, + "2578": 2, + "2583": 2, + "2586": 4, + "2587": 1, + "2588": 3, + "2589": 1, + "2591": 3, + "2592": 1, + "2594": 1, + "2596": 1, + "2597": 1, + "2599": 1, + "2600": 1, + "2601": 1, + "2602": 1, + "2603": 1, + "2605": 1, + "2606": 1, + "2607": 1, + "2608": 1, + "2609": 2, + "2611": 2, + "2612": 1, + "2613": 1, + "2614": 1, + "2616": 1, + "2617": 2, + "2618": 2, + "2619": 5, + "2621": 4, + "2622": 1, + "2624": 2, + "2625": 5, + "2626": 5, + "2627": 3, + "2628": 6, + "2629": 2, + "2632": 2, + "2633": 1, + "2634": 4, + "2636": 2, + "2638": 1, + "2640": 1, + "2641": 1, + "2642": 1, + "2643": 1, + "2644": 5, + "2645": 2, + "2646": 2, + "2647": 1, + "2648": 1, + "2650": 1, + "2651": 1, + "2652": 1, + "2654": 1, + "2658": 1, + "2661": 1, + "2662": 2, + "2664": 3, + "2665": 3, + "2666": 1, + "2667": 3, + "2668": 2, + "2669": 7, + "2670": 8, + "2671": 6, + "2672": 3, + "2673": 8, + "2674": 9, + "2675": 1, + "2676": 2, + "2677": 1, + "2678": 4, + "2679": 3, + "2680": 4, + "2681": 1, + "2682": 6, + "2683": 2, + "2684": 8, + "2685": 1, + "2686": 2, + "2687": 1, + "2688": 2, + "2690": 7, + "2691": 4, + "2692": 3, + "2693": 4, + "2694": 2, + "2695": 2, + "2696": 2, + "2699": 1, + "2702": 1, + "2704": 2, + "2705": 1, + "2706": 1, + "2708": 1, + "2709": 2, + "2710": 2, + "2711": 2, + "2712": 1, + "2713": 1, + "2716": 2, + "2718": 1, + "2719": 1, + "2720": 1, + "2721": 2, + "2722": 2, + "2723": 1, + "2724": 2, + "2725": 1, + "2726": 1, + "2727": 2, + "2728": 1, + "2730": 1, + "2731": 4, + "2736": 1, + "2738": 1, + "2739": 1, + "2740": 2, + "2741": 3, + "2744": 1, + "2745": 1, + "2746": 1, + "2750": 1, + "2752": 1, + "2757": 2, + "2758": 1, + "2760": 1, + "2761": 1, + "2762": 1, + "2764": 1, + "2768": 4, + "2769": 1, + "2770": 3, + "2771": 3, + "2776": 1, + "2779": 1, + "2781": 1, + "2782": 3, + "2783": 1, + "2784": 1, + "2785": 5, + "2787": 1, + "2788": 4, + "2789": 3, + "2790": 5, + "2791": 5, + "2792": 9, + "2793": 14, + "2794": 8, + "2795": 6, + "2796": 9, + "2797": 7, + "2798": 7, + "2799": 6, + "2800": 2, + "2801": 1, + "2802": 1, + "2803": 2, + "2805": 2, + "2809": 1, + "2811": 1 + }, + "started": "2025-09-11T20:14:51.678Z", + "trafficStats": { + "incomingCompressionRatio": 0.03933027648925781, + "incomingOctetsAppLevel": 65536000, + "incomingOctetsWebSocketLevel": 2577549, + "incomingOctetsWireLevel": 2585549, + "incomingWebSocketFrames": 1000, + "incomingWebSocketMessages": 1000, + "incomingWebSocketOverhead": 0.0031037237313432256, + "outgoingCompressionRatio": 0.04351948547363281, + "outgoingOctetsAppLevel": 65536000, + "outgoingOctetsWebSocketLevel": 2852093, + "outgoingOctetsWireLevel": 2856093, + "outgoingWebSocketFrames": 1000, + "outgoingWebSocketMessages": 1000, + "outgoingWebSocketOverhead": 0.0014024788111748109, + "preopenIncomingOctetsWireLevel": 257, + "preopenOutgoingOctetsWireLevel": 306 + }, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "306": 1, + "2801": 2, + "2802": 1, + "2803": 2, + "2804": 5, + "2805": 4, + "2806": 6, + "2807": 5, + "2808": 6, + "2809": 12, + "2810": 17, + "2811": 22, + "2812": 26, + "2813": 28, + "2814": 17, + "2815": 35, + "2816": 19, + "2817": 31, + "2818": 20, + "2819": 23, + "2820": 17, + "2821": 21, + "2822": 27, + "2823": 25, + "2824": 22, + "2825": 26, + "2826": 20, + "2827": 34, + "2828": 20, + "2829": 14, + "2830": 8, + "2831": 9, + "2832": 17, + "2833": 16, + "2834": 17, + "2835": 16, + "2836": 10, + "2837": 9, + "2838": 5, + "2839": 3, + "2840": 1, + "2841": 3, + "2842": 4, + "2843": 2, + "2846": 2, + "2847": 1, + "2849": 1, + "2850": 1, + "2851": 2, + "2853": 1, + "2854": 1, + "2855": 2, + "2857": 3, + "2859": 4, + "2860": 1, + "2862": 4, + "2863": 3, + "2864": 2, + "2866": 2, + "2867": 1, + "2868": 1, + "2869": 1, + "2870": 1, + "2872": 1, + "2878": 1, + "2879": 1, + "2882": 2, + "2883": 1, + "2884": 1, + "2885": 1, + "2886": 2, + "2887": 1, + "2888": 2, + "2892": 1, + "2895": 1, + "2897": 1, + "2899": 3, + "2900": 2, + "2901": 2, + "2902": 5, + "2903": 8, + "2904": 5, + "2905": 7, + "2906": 4, + "2907": 8, + "2908": 2, + "2909": 3, + "2910": 3, + "2911": 5, + "2912": 10, + "2913": 11, + "2914": 16, + "2915": 10, + "2916": 11, + "2917": 6, + "2918": 19, + "2919": 12, + "2920": 6, + "2921": 9, + "2922": 12, + "2923": 12, + "2924": 12, + "2925": 9, + "2926": 7, + "2927": 9, + "2928": 7, + "2929": 6, + "2930": 4, + "2931": 4, + "2932": 2, + "2933": 3, + "2934": 1, + "2935": 6, + "2936": 11, + "2937": 8, + "2938": 13, + "2939": 10, + "2940": 9, + "2941": 5, + "2942": 2, + "2943": 3, + "2957": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d353038266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 306, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824bbd5de54855" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4bbd5de5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_1_1.html b/autobahn/client/tungstenite_case_1_1_1.html new file mode 100644 index 0000000..6f471fd --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_1.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.1.1 : Pass - 1 ms @ 2025-09-11T20:05:44.421Z

+

Case Description

Send text message with payload 0.

+

Case Expectation

Receive echo'ed text message (with empty payload). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'', False)]}

+ Observed:
[('message', u'', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=1&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: GRbmrUds0B47t/rgkJ0PVA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: FCjZ4jehW0jwE7/2T9x9R3ROBYE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
818
2551255
Total3269
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d31266167656e743d54756e677374656e69746520485454502f312e310d0a486f
+
               73743a206c6f63616c686f73743a ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8100
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8180725165ba
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3732353136356261
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882aa226fdaa9ca
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6161323236666461
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_1_1.json b/autobahn/client/tungstenite_case_1_1_1.json new file mode 100644 index 0000000..4eb30c4 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 1, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message with payload 0.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed text message (with empty payload). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=1&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: GRbmrUds0B47t/rgkJ0PVA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: FCjZ4jehW0jwE7/2T9x9R3ROBYE=\r\n\r\n", + "id": "1.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "8": 1, + "255": 1 + }, + "started": "2025-09-11T20:05:44.421Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 255, + "474554202f72756e436173653f636173653d31266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73743a ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8100" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 6, + "8180725165ba" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 1, + true, + 0, + true, + "725165ba" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882aa226fdaa9ca" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "aa226fda" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_1_2.html b/autobahn/client/tungstenite_case_1_1_2.html new file mode 100644 index 0000000..d7fd4a4 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_2.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.1.2 : Pass - 1 ms @ 2025-09-11T20:05:44.423Z

+

Case Description

Send text message message with payload of length 125.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=2&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 8M3isnSKs6Ob3zBA2j/mlw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: txxaL0MLeflf5hyokVEongFxBZs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1311131
2551255
Total3394
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1271127
2061206
Total3337
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d32266167656e743d54756e677374656e69746520485454502f312e310d0a486f
+
               73743a206c6f63616c686f73743a ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817d2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81fd0b14e43c213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16
+
               213ece16213ece16213ece16213e ...
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=125, MASKED=True, MASK=3062313465343363
+
               **************************************************************** ...
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882a0c0a44ea328
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6130633061343465
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_1_2.json b/autobahn/client/tungstenite_case_1_1_2.json new file mode 100644 index 0000000..a4876df --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_2.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 2, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 125.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=2&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 8M3isnSKs6Ob3zBA2j/mlw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: txxaL0MLeflf5hyokVEongFxBZs=\r\n\r\n", + "id": "1.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "131": 1, + "255": 1 + }, + "started": "2025-09-11T20:05:44.423Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "127": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 255, + "474554202f72756e436173653f636173653d32266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73743a ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 127, + "817d2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 131, + "81fd0b14e43c213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213ece16213e ..." + ] + ], + [ + "RF", + [ + 125, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "0b14e43c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a0c0a44ea328" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a0c0a44e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_1_3.html b/autobahn/client/tungstenite_case_1_1_3.html new file mode 100644 index 0000000..887d9ed --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_3.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.1.3 : Pass - 1 ms @ 2025-09-11T20:05:44.425Z

+

Case Description

Send text message message with payload of length 126.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=3&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: gcjcxiG+hsIrVi+TAk/bcg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /E9GEt3CHhqtemsscGf+cDWnvbc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1341134
2551255
Total3397
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1301130
2061206
Total3340
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d33266167656e743d54756e677374656e69746520485454502f312e310d0a486f
+
               73743a206c6f63616c686f73743a ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=126, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817e007e2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81fe007e190f3d443325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e3325
+
               176e3325176e3325176e3325176e ...
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=126, MASKED=True, MASK=3139306633643434
+
               **************************************************************** ...
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88827750db4c74b8
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3737353064623463
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_1_3.json b/autobahn/client/tungstenite_case_1_1_3.json new file mode 100644 index 0000000..546083a --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_3.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 3, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 126.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=3&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: gcjcxiG+hsIrVi+TAk/bcg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /E9GEt3CHhqtemsscGf+cDWnvbc=\r\n\r\n", + "id": "1.1.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "134": 1, + "255": 1 + }, + "started": "2025-09-11T20:05:44.425Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "130": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 255, + "474554202f72756e436173653f636173653d33266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73743a ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 126, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 130, + "817e007e2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 134, + "81fe007e190f3d443325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e3325176e ..." + ] + ], + [ + "RF", + [ + 126, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "190f3d44" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827750db4c74b8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7750db4c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_1_4.html b/autobahn/client/tungstenite_case_1_1_4.html new file mode 100644 index 0000000..e09fc55 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_4.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.1.4 : Pass - 1 ms @ 2025-09-11T20:05:44.426Z

+

Case Description

Send text message message with payload of length 127.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=4&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: E17w9qToE25VgzjhbCbwTw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1Z6kCFpX7IIvidh8T1JUZT+thyc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1351135
2551255
Total3398
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1311131
2061206
Total3341
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d34266167656e743d54756e677374656e69746520485454502f312e310d0a486f
+
               73743a206c6f63616c686f73743a ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=127, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817e007f2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81fe007fdf714211f55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b
+
               683bf55b683bf55b683bf55b683b ...
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=127, MASKED=True, MASK=6466373134323131
+
               **************************************************************** ...
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888240e3cc24430b
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3430653363633234
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_1_4.json b/autobahn/client/tungstenite_case_1_1_4.json new file mode 100644 index 0000000..f2af09b --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_4.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 4, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 127.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=4&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: E17w9qToE25VgzjhbCbwTw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1Z6kCFpX7IIvidh8T1JUZT+thyc=\r\n\r\n", + "id": "1.1.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "135": 1, + "255": 1 + }, + "started": "2025-09-11T20:05:44.426Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "131": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 255, + "474554202f72756e436173653f636173653d34266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73743a ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 127, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 131, + "817e007f2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 135, + "81fe007fdf714211f55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683bf55b683b ..." + ] + ], + [ + "RF", + [ + 127, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "df714211" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888240e3cc24430b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "40e3cc24" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_1_5.html b/autobahn/client/tungstenite_case_1_1_5.html new file mode 100644 index 0000000..8e5631f --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_5.html @@ -0,0 +1,305 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.1.5 : Pass - 1 ms @ 2025-09-11T20:05:44.427Z

+

Case Description

Send text message message with payload of length 128.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=5&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: tbn0kXJ1jua2UMDJHq/xmQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zTvufy0XH3MFo+sjddceriftIrs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1361136
2551255
Total3399
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1321132
2061206
Total3342
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d35266167656e743d54756e677374656e69746520485454502f312e310d0a486f
+
               73743a206c6f63616c686f73743a ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=128, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817e00802a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81fe0080e356cb44c97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97c
+
               e16ec97ce16ec97ce16ec97ce16e ...
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=128, MASKED=True, MASK=6533353663623434
+
               **************************************************************** ...
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882ca51cffec9b9
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6361353163666665
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_1_5.json b/autobahn/client/tungstenite_case_1_1_5.json new file mode 100644 index 0000000..ddbec81 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_5.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 5, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 128.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=5&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: tbn0kXJ1jua2UMDJHq/xmQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zTvufy0XH3MFo+sjddceriftIrs=\r\n\r\n", + "id": "1.1.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "136": 1, + "255": 1 + }, + "started": "2025-09-11T20:05:44.427Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "132": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 255, + "474554202f72756e436173653f636173653d35266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73743a ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 128, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 132, + "817e00802a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 136, + "81fe0080e356cb44c97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16ec97ce16e ..." + ] + ], + [ + "RF", + [ + 128, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "e356cb44" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ca51cffec9b9" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ca51cffe" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_1_6.html b/autobahn/client/tungstenite_case_1_1_6.html new file mode 100644 index 0000000..6875ad4 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_6.html @@ -0,0 +1,308 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.1.6 : Pass - 4 ms @ 2025-09-11T20:05:44.429Z

+

Case Description

Send text message message with payload of length 65535.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=6&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: joZbiKZKah0nWzj7Gq4cMg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1W5iGoJCfW/qQ4QYKXiebTEXJuI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
2551255
32768132768
32775132775
Total465806
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65539165539
Total365749
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d36266167656e743d54756e677374656e69746520485454502f312e310d0a486f
+
               73743a206c6f63616c686f73743a ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65535, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817effff2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 RX OCTETS: 81feffff656474cf4f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e
+
               5ee54f4e5ee54f4e5ee54f4e5ee5 ...
+
006 RX OCTETS: 4f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e
+
               5ee54f4e5ee54f4e5ee54f4e5ee5 ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65535, MASKED=True, MASK=3635363437346366
+
               **************************************************************** ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88823a3d6e2739d5
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3361336436653237
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_1_6.json b/autobahn/client/tungstenite_case_1_1_6.json new file mode 100644 index 0000000..4961431 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_6.json @@ -0,0 +1,185 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 6, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 65535.", + "droppedByMe": true, + "duration": 4, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=6&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: joZbiKZKah0nWzj7Gq4cMg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1W5iGoJCfW/qQ4QYKXiebTEXJuI=\r\n\r\n", + "id": "1.1.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "255": 1, + "32768": 1, + "32775": 1 + }, + "started": "2025-09-11T20:05:44.429Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65539": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 255, + "474554202f72756e436173653f636173653d36266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73743a ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65535, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65539, + "817effff2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 10 + ], + [ + "RO", + [ + 32768, + "81feffff656474cf4f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee5 ..." + ] + ], + [ + "RO", + [ + 32775, + "4f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee54f4e5ee5 ..." + ] + ], + [ + "RF", + [ + 65535, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "656474cf" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823a3d6e2739d5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3a3d6e27" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_1_7.html b/autobahn/client/tungstenite_case_1_1_7.html new file mode 100644 index 0000000..0833638 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_7.html @@ -0,0 +1,308 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.1.7 : Pass - 2 ms @ 2025-09-11T20:05:44.433Z

+

Case Description

Send text message message with payload of length 65536.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=7&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: EoRpU5zcX1N537h0qAgCAQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Hu0vpd32bBd3butBaChQIys2EYI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
2551255
22646122646
42904142904
Total465813
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65546165546
Total365756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d37266167656e743d54756e677374656e69746520485454502f312e310d0a486f
+
               73743a206c6f63616c686f73743a ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817f00000000000100002a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 RX OCTETS: 81ff0000000000010000ba06f1a8902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82
+
               902cdb82902cdb82902cdb82902c ...
+
006 RX OCTETS: db82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82
+
               902cdb82902cdb82902cdb82902c ...
+
007 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASKED=True, MASK=6261303666316138
+
               **************************************************************** ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 88824f3e30e64cd6
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3466336533306536
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_1_7.json b/autobahn/client/tungstenite_case_1_1_7.json new file mode 100644 index 0000000..389c9c9 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_7.json @@ -0,0 +1,185 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 7, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 65536.", + "droppedByMe": true, + "duration": 2, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=7&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: EoRpU5zcX1N537h0qAgCAQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Hu0vpd32bBd3butBaChQIys2EYI=\r\n\r\n", + "id": "1.1.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "255": 1, + "22646": 1, + "42904": 1 + }, + "started": "2025-09-11T20:05:44.433Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65546": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 255, + "474554202f72756e436173653f636173653d37266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73743a ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65536, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65546, + "817f00000000000100002a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 10 + ], + [ + "RO", + [ + 42904, + "81ff0000000000010000ba06f1a8902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902c ..." + ] + ], + [ + "RO", + [ + 22646, + "db82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902cdb82902c ..." + ] + ], + [ + "RF", + [ + 65536, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "ba06f1a8" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824f3e30e64cd6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4f3e30e6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_1_8.html b/autobahn/client/tungstenite_case_1_1_8.html new file mode 100644 index 0000000..f5353e8 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_8.html @@ -0,0 +1,439 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.1.8 : Pass - 5 ms @ 2025-09-11T20:05:44.435Z

+

Case Description

Send text message message with payload of length 65536. Sent out data in chops of 997 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'**************************************************************** ...', False)]}

+ Observed:
[('message', u'**************************************************************** ...', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=8&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: t6dKIc6g9ONuKvyhIINjMQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: u/7j6ySlp6F+9Ki/v4QrPvl5pK0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
2551255
32768132768
32782132782
Total465813
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
2061206
7411741
9976564805
Total6865756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d38266167656e743d54756e677374656e69746520485454502f312e310d0a486f
+
               73743a206c6f63616c686f73743a ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=997, SYNC=False
+
               **************************************************************** ...
+
003 TX OCTETS: 817f00000000000100002a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
006 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
007 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
008 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
009 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
010 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
011 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
012 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
013 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
014 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
015 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
016 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
017 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
018 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
019 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
020 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
021 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
022 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
023 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
024 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
025 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
026 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
027 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
028 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
029 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
030 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
031 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
032 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
033 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
034 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
035 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
036 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
037 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
038 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
039 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
040 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
041 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
042 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
043 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
044 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
045 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
046 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
047 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
048 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
049 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
050 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
051 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
052 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
053 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
054 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
055 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
056 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
057 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
058 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
059 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
060 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
061 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
062 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
063 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
064 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
065 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
066 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
067 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
068 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
069 TX OCTETS: 2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
070 RX OCTETS: 81ff0000000000010000103c35673a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d
+
               3a161f4d3a161f4d3a161f4d3a16 ...
+
071 RX OCTETS: 1f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d
+
               3a161f4d3a161f4d3a161f4d3a16 ...
+
072 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASKED=True, MASK=3130336333353637
+
               **************************************************************** ...
+
073 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
074 TX OCTETS: 880203e8
+
075 RX OCTETS: 888277afa1ed7447
+
076 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3737616661316564
+
               0x03e8
+
077 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_1_8.json b/autobahn/client/tungstenite_case_1_1_8.json new file mode 100644 index 0000000..be86181 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_1_8.json @@ -0,0 +1,706 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 8, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 65536. Sent out data in chops of 997 octets.", + "droppedByMe": true, + "duration": 5, + "expectation": "Receive echo'ed text message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "**************************************************************** ...", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=8&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: t6dKIc6g9ONuKvyhIINjMQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: u/7j6ySlp6F+9Ki/v4QrPvl5pK0=\r\n\r\n", + "id": "1.1.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "**************************************************************** ...", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "255": 1, + "32768": 1, + "32782": 1 + }, + "started": "2025-09-11T20:05:44.435Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "741": 1, + "997": 65 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 255, + "474554202f72756e436173653f636173653d38266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73743a ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65536, + "**************************************************************** ..." + ], + 1, + true, + 0, + null, + null, + 997, + false + ], + [ + "TO", + [ + 997, + "817f00000000000100002a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "KL", + 10 + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 997, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "TO", + [ + 741, + "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + true + ], + [ + "RO", + [ + 32768, + "81ff0000000000010000103c35673a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a16 ..." + ] + ], + [ + "RO", + [ + 32782, + "1f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a161f4d3a16 ..." + ] + ], + [ + "RF", + [ + 65536, + "**************************************************************** ..." + ], + 1, + true, + 0, + true, + "103c3567" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888277afa1ed7447" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "77afa1ed" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_2_1.html b/autobahn/client/tungstenite_case_1_2_1.html new file mode 100644 index 0000000..2b74ad0 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_1.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.2.1 : Pass - 1 ms @ 2025-09-11T20:05:44.442Z

+

Case Description

Send binary message with payload 0.

+

Case Expectation

Receive echo'ed binary message (with empty payload). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'', True)]}

+ Observed:
[('message', u'', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=9&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: xsd1H3J+zCK7XVgQRoGtgw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: G52JGLLchPA/yvcFwrR3q5/mgFg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
818
2551255
Total3269
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d39266167656e743d54756e677374656e69746520485454502f312e310d0a486f
+
               73743a206c6f63616c686f73743a ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8200
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82802ff2dcb1
+
006 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3266663264636231
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882ca10cc14c9f8
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6361313063633134
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_2_1.json b/autobahn/client/tungstenite_case_1_2_1.json new file mode 100644 index 0000000..e8e0a06 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 9, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message with payload 0.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed binary message (with empty payload). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=9&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: xsd1H3J+zCK7XVgQRoGtgw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: G52JGLLchPA/yvcFwrR3q5/mgFg=\r\n\r\n", + "id": "1.2.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "8": 1, + "255": 1 + }, + "started": "2025-09-11T20:05:44.442Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 255, + "474554202f72756e436173653f636173653d39266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73743a ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8200" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 6, + "82802ff2dcb1" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 2, + true, + 0, + true, + "2ff2dcb1" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ca10cc14c9f8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ca10cc14" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_2_2.html b/autobahn/client/tungstenite_case_1_2_2.html new file mode 100644 index 0000000..c9c8da8 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_2.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.2.2 : Pass - 1 ms @ 2025-09-11T20:05:44.443Z

+

Case Description

Send binary message message with payload of length 125.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=10&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: wYTF0RwJViIDSIgZcXuxpQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dXatlde1NtUYhLDae9nmZ+mwGpg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1311131
2561256
Total3395
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1271127
2061206
Total3337
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3130266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827dfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82fd43fb3499bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67
+
               bd05ca67bd05ca67bd05ca67bd05 ...
+
006 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=125, MASKED=True, MASK=3433666233343939
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88823ef675973d1e
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3365663637353937
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_2_2.json b/autobahn/client/tungstenite_case_1_2_2.json new file mode 100644 index 0000000..afb31d5 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_2.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 10, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 125.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=10&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: wYTF0RwJViIDSIgZcXuxpQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dXatlde1NtUYhLDae9nmZ+mwGpg=\r\n\r\n", + "id": "1.2.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "131": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.443Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "127": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3130266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 127, + "827dfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 131, + "82fd43fb3499bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05ca67bd05 ..." + ] + ], + [ + "RF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "43fb3499" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823ef675973d1e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3ef67597" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_2_3.html b/autobahn/client/tungstenite_case_1_2_3.html new file mode 100644 index 0000000..571ff9d --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_3.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.2.3 : Pass - 1 ms @ 2025-09-11T20:05:44.445Z

+

Case Description

Send binary message message with payload of length 126.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=11&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: GuwMuHwDK3G0j7/VM1gaFQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NNRpdekVtl7Y8wpTJEz0pgoWCHQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1341134
2561256
Total3398
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1301130
2061206
Total3340
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3131266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=126, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827e007efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82fe007e5ed243c2a02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02c
+
               bd3ca02cbd3ca02cbd3ca02cbd3c ...
+
006 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=126, MASKED=True, MASK=3565643234336332
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882459b19074673
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3435396231393037
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_2_3.json b/autobahn/client/tungstenite_case_1_2_3.json new file mode 100644 index 0000000..73f2680 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_3.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 11, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 126.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=11&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: GuwMuHwDK3G0j7/VM1gaFQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NNRpdekVtl7Y8wpTJEz0pgoWCHQ=\r\n\r\n", + "id": "1.2.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "134": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.445Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "130": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3131266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 126, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 130, + "827e007efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 134, + "82fe007e5ed243c2a02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3ca02cbd3c ..." + ] + ], + [ + "RF", + [ + 126, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "5ed243c2" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882459b19074673" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "459b1907" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_2_4.html b/autobahn/client/tungstenite_case_1_2_4.html new file mode 100644 index 0000000..07fb0f5 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_4.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.2.4 : Pass - 1 ms @ 2025-09-11T20:05:44.446Z

+

Case Description

Send binary message message with payload of length 127.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=12&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: l7HwqBR3rqrg7e2vgkYhKg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: L7lIGVo8Ljbp+p59Rn/bovSU4RA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1351135
2561256
Total3399
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1311131
2061206
Total3341
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3132266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=127, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827e007ffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82fe007f47b70ce0b949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949
+
               f21eb949f21eb949f21eb949f21e ...
+
006 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=127, MASKED=True, MASK=3437623730636530
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882f8bc84d8fb54
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6638626338346438
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_2_4.json b/autobahn/client/tungstenite_case_1_2_4.json new file mode 100644 index 0000000..60d468f --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_4.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 12, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 127.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=12&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: l7HwqBR3rqrg7e2vgkYhKg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: L7lIGVo8Ljbp+p59Rn/bovSU4RA=\r\n\r\n", + "id": "1.2.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "135": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.446Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "131": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3132266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 127, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 131, + "827e007ffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 135, + "82fe007f47b70ce0b949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21eb949f21e ..." + ] + ], + [ + "RF", + [ + 127, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "47b70ce0" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f8bc84d8fb54" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f8bc84d8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_2_5.html b/autobahn/client/tungstenite_case_1_2_5.html new file mode 100644 index 0000000..90867b0 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_5.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.2.5 : Pass - 1 ms @ 2025-09-11T20:05:44.448Z

+

Case Description

Send binary message message with payload of length 128.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=13&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: k8laqBk6CoTA1TrbW820cA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4TZ9xea2TJvdzZKSWlND08JR3f0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1361136
2561256
Total3400
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1321132
2061206
Total3342
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3133266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=128, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827e0080fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 82fe00804a03f053b4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd
+
               0eadb4fd0eadb4fd0eadb4fd0ead ...
+
006 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=128, MASKED=True, MASK=3461303366303533
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88827116f87372fe
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3731313666383733
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_2_5.json b/autobahn/client/tungstenite_case_1_2_5.json new file mode 100644 index 0000000..d11350a --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_5.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 13, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 128.", + "droppedByMe": true, + "duration": 1, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=13&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: k8laqBk6CoTA1TrbW820cA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4TZ9xea2TJvdzZKSWlND08JR3f0=\r\n\r\n", + "id": "1.2.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "136": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.448Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "132": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3133266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 128, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 132, + "827e0080fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 136, + "82fe00804a03f053b4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0eadb4fd0ead ..." + ] + ], + [ + "RF", + [ + 128, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "4a03f053" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827116f87372fe" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7116f873" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_2_6.html b/autobahn/client/tungstenite_case_1_2_6.html new file mode 100644 index 0000000..5861a27 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_6.html @@ -0,0 +1,310 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.2.6 : Pass - 4 ms @ 2025-09-11T20:05:44.449Z

+

Case Description

Send binary message message with payload of length 65535.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=14&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Tth+Gm+xeusB8NIZSZeTdQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: lgObF93KsZA3tKzujU2ycQHEiTU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
2561256
32768132768
32775132775
Total465807
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65539165539
Total365749
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3134266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65535, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827efffffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 RX OCTETS: 82feffffca3f04d234c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1
+
               fa2c34c1fa2c34c1fa2c34c1fa2c ...
+
006 RX OCTETS: 34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1
+
               fa2c34c1fa2c34c1fa2c34c1fa2c ...
+
007 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65535, MASKED=True, MASK=6361336630346432
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 888215339cc816db
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3135333339636338
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_2_6.json b/autobahn/client/tungstenite_case_1_2_6.json new file mode 100644 index 0000000..7c8f209 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_6.json @@ -0,0 +1,185 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 14, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 65535.", + "droppedByMe": true, + "duration": 4, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=14&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Tth+Gm+xeusB8NIZSZeTdQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: lgObF93KsZA3tKzujU2ycQHEiTU=\r\n\r\n", + "id": "1.2.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "256": 1, + "32768": 1, + "32775": 1 + }, + "started": "2025-09-11T20:05:44.449Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65539": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3134266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65535, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65539, + "827efffffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 10 + ], + [ + "RO", + [ + 32768, + "82feffffca3f04d234c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c ..." + ] + ], + [ + "RO", + [ + 32775, + "34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c34c1fa2c ..." + ] + ], + [ + "RF", + [ + 65535, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "ca3f04d2" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888215339cc816db" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "15339cc8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_2_7.html b/autobahn/client/tungstenite_case_1_2_7.html new file mode 100644 index 0000000..2baf933 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_7.html @@ -0,0 +1,310 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.2.7 : Pass - 4 ms @ 2025-09-11T20:05:44.454Z

+

Case Description

Send binary message message with payload of length 65536.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=15&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pyua/a0XLn8t9Z+tx5shMg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WvpyyrVMTyde/F2fbzUfgZUE5hc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
2561256
22646122646
42904142904
Total465814
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65546165546
Total365756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3135266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827f0000000000010000fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 RX OCTETS: 82ff00000000000100000e51d228f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6
+
               f0af2cd6f0af2cd6f0af2cd6f0af ...
+
006 RX OCTETS: 2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6
+
               f0af2cd6f0af2cd6f0af2cd6f0af ...
+
007 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASKED=True, MASK=3065353164323238
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
008 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
009 TX OCTETS: 880203e8
+
010 RX OCTETS: 888269da772e6a32
+
011 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3639646137373265
+
               0x03e8
+
012 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_2_7.json b/autobahn/client/tungstenite_case_1_2_7.json new file mode 100644 index 0000000..f3075fb --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_7.json @@ -0,0 +1,185 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 15, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 65536.", + "droppedByMe": true, + "duration": 4, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=15&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pyua/a0XLn8t9Z+tx5shMg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WvpyyrVMTyde/F2fbzUfgZUE5hc=\r\n\r\n", + "id": "1.2.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "256": 1, + "22646": 1, + "42904": 1 + }, + "started": "2025-09-11T20:05:44.454Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65546": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3135266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65536, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65546, + "827f0000000000010000fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 10 + ], + [ + "RO", + [ + 42904, + "82ff00000000000100000e51d228f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af ..." + ] + ], + [ + "RO", + [ + 22646, + "2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af2cd6f0af ..." + ] + ], + [ + "RF", + [ + 65536, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "0e51d228" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888269da772e6a32" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "69da772e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_1_2_8.html b/autobahn/client/tungstenite_case_1_2_8.html new file mode 100644 index 0000000..d9f6b2a --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_8.html @@ -0,0 +1,441 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 1.2.8 : Pass - 7 ms @ 2025-09-11T20:05:44.459Z

+

Case Description

Send binary message message with payload of length 65536. Sent out data in chops of 997 octets.

+

Case Expectation

Receive echo'ed binary message (with payload as sent). Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)]}

+ Observed:
[('message', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...', True)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=16&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: +TXlICIX5vCsb0rCfcxL2A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 67QhAPHs2Ab0UrJ+V2c2gDb2xL8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
2561256
32768132768
32782132782
Total465814
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
2061206
7411741
9976564805
Total6865756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3136266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=997, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 827f0000000000010000fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 10.000000 sec
+
005 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
006 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
007 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
008 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
009 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
010 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
011 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
012 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
013 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
014 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
015 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
016 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
017 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
018 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
019 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
020 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
021 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
022 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
023 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
024 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
025 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
026 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
027 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
028 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
029 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
030 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
031 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
032 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
033 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
034 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
035 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
036 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
037 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
038 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
039 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
040 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
041 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
042 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
043 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
044 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
045 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
046 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
047 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
048 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
049 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
050 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
051 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
052 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
053 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
054 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
055 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
056 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
057 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
058 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
059 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
060 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
061 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
062 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
063 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
064 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
065 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
066 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
067 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
068 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
069 TX OCTETS: fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
070 RX OCTETS: 82ff000000000001000004658e8ffa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071
+
               fa9b7071fa9b7071fa9b7071fa9b ...
+
071 RX OCTETS: 7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071
+
               fa9b7071fa9b7071fa9b7071fa9b ...
+
072 RX FRAME : OPCODE=2, FIN=True, RSV=0, PAYLOAD-LEN=65536, MASKED=True, MASK=3034363538653866
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
073 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
074 TX OCTETS: 880203e8
+
075 RX OCTETS: 888263e123a06009
+
076 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3633653132336130
+
               0x03e8
+
077 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_1_2_8.json b/autobahn/client/tungstenite_case_1_2_8.json new file mode 100644 index 0000000..00c9d89 --- /dev/null +++ b/autobahn/client/tungstenite_case_1_2_8.json @@ -0,0 +1,706 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 16, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 65536. Sent out data in chops of 997 octets.", + "droppedByMe": true, + "duration": 7, + "expectation": "Receive echo'ed binary message (with payload as sent). Clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=16&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: +TXlICIX5vCsb0rCfcxL2A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 67QhAPHs2Ab0UrJ+V2c2gDb2xL8=\r\n\r\n", + "id": "1.2.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...", + true + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "256": 1, + "32768": 1, + "32782": 1 + }, + "started": "2025-09-11T20:05:44.459Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "741": 1, + "997": 65 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3136266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 65536, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + null, + null, + 997, + false + ], + [ + "TO", + [ + 997, + "827f0000000000010000fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "KL", + 10 + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 997, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "TO", + [ + 741, + "fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + true + ], + [ + "RO", + [ + 32768, + "82ff000000000001000004658e8ffa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b ..." + ] + ], + [ + "RO", + [ + 32782, + "7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b7071fa9b ..." + ] + ], + [ + "RF", + [ + 65536, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 2, + true, + 0, + true, + "04658e8f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888263e123a06009" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "63e123a0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_1.html b/autobahn/client/tungstenite_case_2_1.html new file mode 100644 index 0000000..bfdbab9 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_1.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.1 : Pass - 1 ms @ 2025-09-11T20:05:44.466Z

+

Case Description

Send ping without payload.

+

Case Expectation

Pong (with empty payload) is sent in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'')]}

+ Observed:
[('pong', u'')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=17&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: fULt0MPpP2nnpeHr2yY5Rg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZpQE5FAwqPzd3FzIQJyB7GyuT7g=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
818
2561256
Total3270
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3137266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8900
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8a809550c7bc
+
006 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3935353063376263
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888223d514e3203d
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3233643531346533
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_1.json b/autobahn/client/tungstenite_case_2_1.json new file mode 100644 index 0000000..93a87ee --- /dev/null +++ b/autobahn/client/tungstenite_case_2_1.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 17, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping without payload.", + "droppedByMe": true, + "duration": 1, + "expectation": "Pong (with empty payload) is sent in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=17&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: fULt0MPpP2nnpeHr2yY5Rg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZpQE5FAwqPzd3FzIQJyB7GyuT7g=\r\n\r\n", + "id": "2.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "" + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1, + "10": 1 + }, + "rxOctetStats": { + "6": 1, + "8": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.466Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3137266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 6, + "8a809550c7bc" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 10, + true, + 0, + true, + "9550c7bc" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888223d514e3203d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "23d514e3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_10.html b/autobahn/client/tungstenite_case_2_10.html new file mode 100644 index 0000000..0b67dc4 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_10.html @@ -0,0 +1,349 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.10 : Pass - 3 ms @ 2025-09-11T20:05:44.492Z

+

Case Description

Send 10 Pings with payload.

+

Case Expectation

Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'payload-0'), ('pong', u'payload-1'), ('pong', u'payload-2'), ('pong', u'payload-3'), ('pong', u'payload-4'), ('pong', u'payload-5'), ('pong', u'payload-6'), ('pong', u'payload-7'), ('pong', u'payload-8'), ('pong', u'payload-9')]}

+ Observed:
[('pong', u'payload-0'), ('pong', u'payload-1'), ('pong', u'payload-2'), ('pong', u'payload-3'), ('pong', u'payload-4'), ('pong', u'payload-5'), ('pong', u'payload-6'), ('pong', u'payload-7'), ('pong', u'payload-8'), ('pong', u'payload-9')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=26&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: b6as0vNqT2bSMaUle7VtYA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: EYQwGB/FllJz5dWyMNah1Nt8HaI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1501150
2561256
Total3414
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1110110
2061206
Total12320
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
81
1010
Total11
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
910
Total11
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3236266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-0
+
003 TX OCTETS: 89097061796c6f61642d30
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-1
+
005 TX OCTETS: 89097061796c6f61642d31
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-2
+
007 TX OCTETS: 89097061796c6f61642d32
+
008 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-3
+
009 TX OCTETS: 89097061796c6f61642d33
+
010 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-4
+
011 TX OCTETS: 89097061796c6f61642d34
+
012 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-5
+
013 TX OCTETS: 89097061796c6f61642d35
+
014 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-6
+
015 TX OCTETS: 89097061796c6f61642d36
+
016 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-7
+
017 TX OCTETS: 89097061796c6f61642d37
+
018 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-8
+
019 TX OCTETS: 89097061796c6f61642d38
+
020 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               payload-9
+
021 TX OCTETS: 89097061796c6f61642d39
+
022 CLOSE CONNECTION AFTER 3.000000 sec
+
023 RX OCTETS: 8a89f379ed25831894499c188908c38a89a946d98ed927a0e2c627bda3988a89d8af2820a8ce514cb7ce4c0dea8a89cb1a38
+
               0cbb7b4160a47b5c21f88a89d23c ...
+
024 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6633373965643235
+
               payload-0
+
025 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6139343664393865
+
               payload-1
+
026 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6438616632383230
+
               payload-2
+
027 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6362316133383063
+
               payload-3
+
028 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6432336333633136
+
               payload-4
+
029 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6561623463363833
+
               payload-5
+
030 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3131353133313063
+
               payload-6
+
031 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3237333965646561
+
               payload-7
+
032 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3765333233626338
+
               payload-8
+
033 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3663323039656263
+
               payload-9
+
034 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
035 TX OCTETS: 880203e8
+
036 RX OCTETS: 8882852f493486c7
+
037 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3835326634393334
+
               0x03e8
+
038 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_10.json b/autobahn/client/tungstenite_case_2_10.json new file mode 100644 index 0000000..ce02d9d --- /dev/null +++ b/autobahn/client/tungstenite_case_2_10.json @@ -0,0 +1,553 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 26, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 10 Pings with payload.", + "droppedByMe": true, + "duration": 3, + "expectation": "Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "payload-0" + ], + [ + "pong", + "payload-1" + ], + [ + "pong", + "payload-2" + ], + [ + "pong", + "payload-3" + ], + [ + "pong", + "payload-4" + ], + [ + "pong", + "payload-5" + ], + [ + "pong", + "payload-6" + ], + [ + "pong", + "payload-7" + ], + [ + "pong", + "payload-8" + ], + [ + "pong", + "payload-9" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=26&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: b6as0vNqT2bSMaUle7VtYA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: EYQwGB/FllJz5dWyMNah1Nt8HaI=\r\n\r\n", + "id": "2.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "payload-0" + ], + [ + "pong", + "payload-1" + ], + [ + "pong", + "payload-2" + ], + [ + "pong", + "payload-3" + ], + [ + "pong", + "payload-4" + ], + [ + "pong", + "payload-5" + ], + [ + "pong", + "payload-6" + ], + [ + "pong", + "payload-7" + ], + [ + "pong", + "payload-8" + ], + [ + "pong", + "payload-9" + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1, + "10": 10 + }, + "rxOctetStats": { + "8": 1, + "150": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.492Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 10 + }, + "txOctetStats": { + "4": 1, + "11": 10, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3236266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "payload-0" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d30" + ], + false + ], + [ + "TF", + [ + 9, + "payload-1" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d31" + ], + false + ], + [ + "TF", + [ + 9, + "payload-2" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d32" + ], + false + ], + [ + "TF", + [ + 9, + "payload-3" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d33" + ], + false + ], + [ + "TF", + [ + 9, + "payload-4" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d34" + ], + false + ], + [ + "TF", + [ + 9, + "payload-5" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d35" + ], + false + ], + [ + "TF", + [ + 9, + "payload-6" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d36" + ], + false + ], + [ + "TF", + [ + 9, + "payload-7" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d37" + ], + false + ], + [ + "TF", + [ + 9, + "payload-8" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d38" + ], + false + ], + [ + "TF", + [ + 9, + "payload-9" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "89097061796c6f61642d39" + ], + false + ], + [ + "TI", + 3 + ], + [ + "RO", + [ + 150, + "8a89f379ed25831894499c188908c38a89a946d98ed927a0e2c627bda3988a89d8af2820a8ce514cb7ce4c0dea8a89cb1a380cbb7b4160a47b5c21f88a89d23c ..." + ] + ], + [ + "RF", + [ + 9, + "payload-0" + ], + 10, + true, + 0, + true, + "f379ed25" + ], + [ + "RF", + [ + 9, + "payload-1" + ], + 10, + true, + 0, + true, + "a946d98e" + ], + [ + "RF", + [ + 9, + "payload-2" + ], + 10, + true, + 0, + true, + "d8af2820" + ], + [ + "RF", + [ + 9, + "payload-3" + ], + 10, + true, + 0, + true, + "cb1a380c" + ], + [ + "RF", + [ + 9, + "payload-4" + ], + 10, + true, + 0, + true, + "d23c3c16" + ], + [ + "RF", + [ + 9, + "payload-5" + ], + 10, + true, + 0, + true, + "eab4c683" + ], + [ + "RF", + [ + 9, + "payload-6" + ], + 10, + true, + 0, + true, + "1151310c" + ], + [ + "RF", + [ + 9, + "payload-7" + ], + 10, + true, + 0, + true, + "2739edea" + ], + [ + "RF", + [ + 9, + "payload-8" + ], + 10, + true, + 0, + true, + "7e323bc8" + ], + [ + "RF", + [ + 9, + "payload-9" + ], + 10, + true, + 0, + true, + "6c209ebc" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882852f493486c7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "852f4934" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_11.html b/autobahn/client/tungstenite_case_2_11.html new file mode 100644 index 0000000..23bac95 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_11.html @@ -0,0 +1,457 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.11 : Pass - 11 ms @ 2025-09-11T20:05:44.496Z

+

Case Description

Send 10 Pings with payload. Send out octets in octet-wise chops.

+

Case Expectation

Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'payload-0'), ('pong', u'payload-1'), ('pong', u'payload-2'), ('pong', u'payload-3'), ('pong', u'payload-4'), ('pong', u'payload-5'), ('pong', u'payload-6'), ('pong', u'payload-7'), ('pong', u'payload-8'), ('pong', u'payload-9')]}

+ Observed:
[('pong', u'payload-0'), ('pong', u'payload-1'), ('pong', u'payload-2'), ('pong', u'payload-3'), ('pong', u'payload-4'), ('pong', u'payload-5'), ('pong', u'payload-6'), ('pong', u'payload-7'), ('pong', u'payload-8'), ('pong', u'payload-9')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=27&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 9DW0T0XxVtG6JZRAqSmafA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: l3h1DTrGz+rGqlNjiEzzIt8kpY4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1510150
2561256
Total12414
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
1110110
414
2061206
Total112320
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
81
1010
Total11
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
910
Total11
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3237266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-0
+
003 TX OCTETS: 89
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-1
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-2
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-3
+
007 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-4
+
008 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-5
+
009 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-6
+
010 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-7
+
011 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-8
+
012 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               payload-9
+
013 CLOSE CONNECTION AFTER 3.000000 sec
+
014 TX OCTETS: 09
+
015 TX OCTETS: 70
+
016 TX OCTETS: 61
+
017 TX OCTETS: 79
+
018 TX OCTETS: 6c
+
019 TX OCTETS: 6f
+
020 TX OCTETS: 61
+
021 TX OCTETS: 64
+
022 TX OCTETS: 2d
+
023 TX OCTETS: 30
+
024 TX OCTETS: 89
+
025 RX OCTETS: 8a89df3d13f5af5c6a99b05c77d8ef
+
026 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6466336431336635
+
               payload-0
+
027 TX OCTETS: 09
+
028 TX OCTETS: 70
+
029 TX OCTETS: 61
+
030 TX OCTETS: 79
+
031 TX OCTETS: 6c
+
032 TX OCTETS: 6f
+
033 TX OCTETS: 61
+
034 TX OCTETS: 64
+
035 TX OCTETS: 2d
+
036 TX OCTETS: 31
+
037 TX OCTETS: 89
+
038 RX OCTETS: 8a896e6e2bb21e0f52de010f4f9f5f
+
039 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3665366532626232
+
               payload-1
+
040 TX OCTETS: 09
+
041 TX OCTETS: 70
+
042 TX OCTETS: 61
+
043 TX OCTETS: 79
+
044 TX OCTETS: 6c
+
045 TX OCTETS: 6f
+
046 TX OCTETS: 61
+
047 TX OCTETS: 64
+
048 TX OCTETS: 2d
+
049 TX OCTETS: 32
+
050 TX OCTETS: 89
+
051 RX OCTETS: 8a89ccb1268cbcd05fe0a3d042a1fe
+
052 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6363623132363863
+
               payload-2
+
053 TX OCTETS: 09
+
054 TX OCTETS: 70
+
055 TX OCTETS: 61
+
056 TX OCTETS: 79
+
057 TX OCTETS: 6c
+
058 TX OCTETS: 6f
+
059 TX OCTETS: 61
+
060 TX OCTETS: 64
+
061 TX OCTETS: 2d
+
062 TX OCTETS: 33
+
063 TX OCTETS: 89
+
064 RX OCTETS: 8a899002731ae0630a76ff631737a3
+
065 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3930303237333161
+
               payload-3
+
066 TX OCTETS: 09
+
067 TX OCTETS: 70
+
068 TX OCTETS: 61
+
069 TX OCTETS: 79
+
070 TX OCTETS: 6c
+
071 TX OCTETS: 6f
+
072 TX OCTETS: 61
+
073 TX OCTETS: 64
+
074 TX OCTETS: 2d
+
075 TX OCTETS: 34
+
076 TX OCTETS: 89
+
077 RX OCTETS: 8a8998de6ac2e8bf13aef7bf0eefac
+
078 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3938646536616332
+
               payload-4
+
079 TX OCTETS: 09
+
080 TX OCTETS: 70
+
081 TX OCTETS: 61
+
082 TX OCTETS: 79
+
083 TX OCTETS: 6c
+
084 TX OCTETS: 6f
+
085 TX OCTETS: 61
+
086 TX OCTETS: 64
+
087 TX OCTETS: 2d
+
088 TX OCTETS: 35
+
089 TX OCTETS: 89
+
090 RX OCTETS: 8a8984e9fe9af48887f6eb889ab7b1
+
091 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3834653966653961
+
               payload-5
+
092 TX OCTETS: 09
+
093 TX OCTETS: 70
+
094 TX OCTETS: 61
+
095 TX OCTETS: 79
+
096 TX OCTETS: 6c
+
097 TX OCTETS: 6f
+
098 TX OCTETS: 61
+
099 TX OCTETS: 64
+
100 TX OCTETS: 2d
+
101 TX OCTETS: 36
+
102 TX OCTETS: 89
+
103 RX OCTETS: 8a898d9b53befdfa2ad2e2fa3793bb
+
104 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3864396235336265
+
               payload-6
+
105 TX OCTETS: 09
+
106 TX OCTETS: 70
+
107 TX OCTETS: 61
+
108 TX OCTETS: 79
+
109 TX OCTETS: 6c
+
110 TX OCTETS: 6f
+
111 TX OCTETS: 61
+
112 TX OCTETS: 64
+
113 TX OCTETS: 2d
+
114 TX OCTETS: 37
+
115 TX OCTETS: 89
+
116 RX OCTETS: 8a898fd0e1dfffb198b3e0b185f2b8
+
117 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3866643065316466
+
               payload-7
+
118 TX OCTETS: 09
+
119 TX OCTETS: 70
+
120 TX OCTETS: 61
+
121 TX OCTETS: 79
+
122 TX OCTETS: 6c
+
123 TX OCTETS: 6f
+
124 TX OCTETS: 61
+
125 TX OCTETS: 64
+
126 TX OCTETS: 2d
+
127 TX OCTETS: 38
+
128 TX OCTETS: 89
+
129 RX OCTETS: 8a89c5dde672b5bc9f1eaabc825ffd
+
130 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=6335646465363732
+
               payload-8
+
131 TX OCTETS: 09
+
132 TX OCTETS: 70
+
133 TX OCTETS: 61
+
134 TX OCTETS: 79
+
135 TX OCTETS: 6c
+
136 TX OCTETS: 6f
+
137 TX OCTETS: 61
+
138 TX OCTETS: 64
+
139 TX OCTETS: 2d
+
140 TX OCTETS: 39
+
141 RX OCTETS: 8a8962264b431247322f0d472f6e5b
+
142 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3632323634623433
+
               payload-9
+
143 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
144 TX OCTETS: 880203e8
+
145 RX OCTETS: 888212ca18ca1122
+
146 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3132636131386361
+
               0x03e8
+
147 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_11.json b/autobahn/client/tungstenite_case_2_11.json new file mode 100644 index 0000000..016a574 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_11.json @@ -0,0 +1,1416 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 27, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 10 Pings with payload. Send out octets in octet-wise chops.", + "droppedByMe": true, + "duration": 11, + "expectation": "Pongs for our Pings with all the payloads. Note: This is not required by the Spec .. but we check for this behaviour anyway. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "payload-0" + ], + [ + "pong", + "payload-1" + ], + [ + "pong", + "payload-2" + ], + [ + "pong", + "payload-3" + ], + [ + "pong", + "payload-4" + ], + [ + "pong", + "payload-5" + ], + [ + "pong", + "payload-6" + ], + [ + "pong", + "payload-7" + ], + [ + "pong", + "payload-8" + ], + [ + "pong", + "payload-9" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=27&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 9DW0T0XxVtG6JZRAqSmafA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: l3h1DTrGz+rGqlNjiEzzIt8kpY4=\r\n\r\n", + "id": "2.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "payload-0" + ], + [ + "pong", + "payload-1" + ], + [ + "pong", + "payload-2" + ], + [ + "pong", + "payload-3" + ], + [ + "pong", + "payload-4" + ], + [ + "pong", + "payload-5" + ], + [ + "pong", + "payload-6" + ], + [ + "pong", + "payload-7" + ], + [ + "pong", + "payload-8" + ], + [ + "pong", + "payload-9" + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1, + "10": 10 + }, + "rxOctetStats": { + "8": 1, + "15": 10, + "256": 1 + }, + "started": "2025-09-11T20:05:44.496Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 10 + }, + "txOctetStats": { + "1": 110, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3237266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "payload-0" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TF", + [ + 9, + "payload-1" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-2" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-3" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-4" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-5" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-6" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-7" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-8" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "payload-9" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TI", + 3 + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "30" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "RO", + [ + 15, + "8a89df3d13f5af5c6a99b05c77d8ef" + ] + ], + [ + "RF", + [ + 9, + "payload-0" + ], + 10, + true, + 0, + true, + "df3d13f5" + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "31" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "RO", + [ + 15, + "8a896e6e2bb21e0f52de010f4f9f5f" + ] + ], + [ + "RF", + [ + 9, + "payload-1" + ], + 10, + true, + 0, + true, + "6e6e2bb2" + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "32" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "RO", + [ + 15, + "8a89ccb1268cbcd05fe0a3d042a1fe" + ] + ], + [ + "RF", + [ + 9, + "payload-2" + ], + 10, + true, + 0, + true, + "ccb1268c" + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "33" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "RO", + [ + 15, + "8a899002731ae0630a76ff631737a3" + ] + ], + [ + "RF", + [ + 9, + "payload-3" + ], + 10, + true, + 0, + true, + "9002731a" + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "34" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "RO", + [ + 15, + "8a8998de6ac2e8bf13aef7bf0eefac" + ] + ], + [ + "RF", + [ + 9, + "payload-4" + ], + 10, + true, + 0, + true, + "98de6ac2" + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "35" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "RO", + [ + 15, + "8a8984e9fe9af48887f6eb889ab7b1" + ] + ], + [ + "RF", + [ + 9, + "payload-5" + ], + 10, + true, + 0, + true, + "84e9fe9a" + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "36" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "RO", + [ + 15, + "8a898d9b53befdfa2ad2e2fa3793bb" + ] + ], + [ + "RF", + [ + 9, + "payload-6" + ], + 10, + true, + 0, + true, + "8d9b53be" + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "37" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "RO", + [ + 15, + "8a898fd0e1dfffb198b3e0b185f2b8" + ] + ], + [ + "RF", + [ + 9, + "payload-7" + ], + 10, + true, + 0, + true, + "8fd0e1df" + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "38" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "RO", + [ + 15, + "8a89c5dde672b5bc9f1eaabc825ffd" + ] + ], + [ + "RF", + [ + 9, + "payload-8" + ], + 10, + true, + 0, + true, + "c5dde672" + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "39" + ], + true + ], + [ + "RO", + [ + 15, + "8a8962264b431247322f0d472f6e5b" + ] + ], + [ + "RF", + [ + 9, + "payload-9" + ], + 10, + true, + 0, + true, + "62264b43" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888212ca18ca1122" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "12ca18ca" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_2.html b/autobahn/client/tungstenite_case_2_2.html new file mode 100644 index 0000000..763ed7f --- /dev/null +++ b/autobahn/client/tungstenite_case_2_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.2 : Pass - 1 ms @ 2025-09-11T20:05:44.467Z

+

Case Description

Send ping with small text payload.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'Hello, world!')]}

+ Observed:
[('pong', u'Hello, world!')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=18&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1lMr/buHfKoR0T4QLujxwA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: HiwfCtojIkx3TOCSr4fsY6hmugM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
19119
2561256
Total3283
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
15115
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3138266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 890d48656c6c6f2c20776f726c6421
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8a8d006c056d480969016f40251a6f1e690921
+
006 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3030366330353664
+
               Hello, world!
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882f25630ccf1be
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6632353633306363
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_2.json b/autobahn/client/tungstenite_case_2_2.json new file mode 100644 index 0000000..bc27c0f --- /dev/null +++ b/autobahn/client/tungstenite_case_2_2.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 18, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping with small text payload.", + "droppedByMe": true, + "duration": 1, + "expectation": "Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "Hello, world!" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=18&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1lMr/buHfKoR0T4QLujxwA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HiwfCtojIkx3TOCSr4fsY6hmugM=\r\n\r\n", + "id": "2.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "Hello, world!" + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1, + "10": 1 + }, + "rxOctetStats": { + "8": 1, + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.467Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "4": 1, + "15": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3138266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "890d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 19, + "8a8d006c056d480969016f40251a6f1e690921" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 10, + true, + 0, + true, + "006c056d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f25630ccf1be" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f25630cc" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_3.html b/autobahn/client/tungstenite_case_2_3.html new file mode 100644 index 0000000..278fe2a --- /dev/null +++ b/autobahn/client/tungstenite_case_2_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.3 : Pass - 1 ms @ 2025-09-11T20:05:44.469Z

+

Case Description

Send ping with small binary (non UTF-8) payload.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', '0x00fffefdfcfb00ff')]}

+ Observed:
[('pong', '0x00fffefdfcfb00ff')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=19&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: UI7veHPWMepWWbgMdrI9fw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YtX2oFn2iyywWj4pSwO+YhfunZQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
14114
2561256
Total3278
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
10110
2061206
Total3220
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3139266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=8, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x00fffefdfcfb00ff
+
003 TX OCTETS: 890800fffefdfcfb00ff
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8a8845be1fb74541e14ab9451f48
+
006 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=8, MASKED=True, MASK=3435626531666237
+
               0x00fffefdfcfb00ff
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888262acf2906144
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3632616366323930
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_3.json b/autobahn/client/tungstenite_case_2_3.json new file mode 100644 index 0000000..d8a7992 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_3.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 19, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping with small binary (non UTF-8) payload.", + "droppedByMe": true, + "duration": 1, + "expectation": "Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "0x00fffefdfcfb00ff" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=19&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: UI7veHPWMepWWbgMdrI9fw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YtX2oFn2iyywWj4pSwO+YhfunZQ=\r\n\r\n", + "id": "2.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "0x00fffefdfcfb00ff" + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1, + "10": 1 + }, + "rxOctetStats": { + "8": 1, + "14": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.469Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3139266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 8, + "0x00fffefdfcfb00ff" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 10, + "890800fffefdfcfb00ff" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 14, + "8a8845be1fb74541e14ab9451f48" + ] + ], + [ + "RF", + [ + 8, + "0x00fffefdfcfb00ff" + ], + 10, + true, + 0, + true, + "45be1fb7" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888262acf2906144" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "62acf290" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_4.html b/autobahn/client/tungstenite_case_2_4.html new file mode 100644 index 0000000..ad3c64c --- /dev/null +++ b/autobahn/client/tungstenite_case_2_4.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.4 : Pass - 1 ms @ 2025-09-11T20:05:44.470Z

+

Case Description

Send ping with binary payload of 125 octets.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...')]}

+ Observed:
[('pong', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=20&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: jc/vAfxADRYfticSigQivg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1I4emRLot2QNpDAypm8xMVIWm+w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1311131
2561256
Total3395
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
1271127
2061206
Total3337
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3230266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 897dfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8afd7233aa198ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e7
+
               8ccd54e78ccd54e78ccd54e78ccd ...
+
006 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=125, MASKED=True, MASK=3732333361613139
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88821b1c898618f4
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3162316338393836
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_4.json b/autobahn/client/tungstenite_case_2_4.json new file mode 100644 index 0000000..018eff2 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_4.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 20, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping with binary payload of 125 octets.", + "droppedByMe": true, + "duration": 1, + "expectation": "Pong with payload echo'ed is sent in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=20&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: jc/vAfxADRYfticSigQivg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1I4emRLot2QNpDAypm8xMVIWm+w=\r\n\r\n", + "id": "2.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1, + "10": 1 + }, + "rxOctetStats": { + "8": 1, + "131": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.470Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "4": 1, + "127": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3230266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 127, + "897dfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 131, + "8afd7233aa198ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd54e78ccd ..." + ] + ], + [ + "RF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 10, + true, + 0, + true, + "7233aa19" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821b1c898618f4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1b1c8986" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_5.html b/autobahn/client/tungstenite_case_2_5.html new file mode 100644 index 0000000..69aa53d --- /dev/null +++ b/autobahn/client/tungstenite_case_2_5.html @@ -0,0 +1,290 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.5 : Pass - 1 ms @ 2025-09-11T20:05:44.472Z

+

Case Description

Send ping with binary payload of 126 octets.

+

Case Expectation

Connection is failed immediately (1002/Protocol Error), since control frames are only allowed to have payload up to and including 125 octets..

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=21&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: oRKTj2kusIMvLaQi0WD0sw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 7mhfit5Kk316vunNaYVAUuy1LhU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
1301130
2061206
Total2336
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
91
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3231266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=126, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 897e007efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefe ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_5.json b/autobahn/client/tungstenite_case_2_5.json new file mode 100644 index 0000000..8614cb2 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_5.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 21, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send ping with binary payload of 126 octets.", + "droppedByMe": false, + "duration": 1, + "expectation": "Connection is failed immediately (1002/Protocol Error), since control frames are only allowed to have payload up to and including 125 octets..", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=21&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: oRKTj2kusIMvLaQi0WD0sw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 7mhfit5Kk316vunNaYVAUuy1LhU=\r\n\r\n", + "id": "2.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.472Z", + "trafficStats": null, + "txFrameStats": { + "9": 1 + }, + "txOctetStats": { + "130": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3231266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 126, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 130, + "897e007efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_6.html b/autobahn/client/tungstenite_case_2_6.html new file mode 100644 index 0000000..74f0a34 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_6.html @@ -0,0 +1,432 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.6 : Pass - 11 ms @ 2025-09-11T20:05:44.473Z

+

Case Description

Send ping with binary payload of 125 octets, send in octet-wise chops.

+

Case Expectation

Pong with payload echo'ed is sent in reply to Ping. Implementations must be TCP clean. Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...')]}

+ Observed:
[('pong', '0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ...')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=22&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: J/JV+/r5q5LMtnQFRrvrxg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 9nBQdOLBDiRHxwy6CoijKID56zU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
1311131
2561256
Total3395
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
1127127
414
2061206
Total129337
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3232266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
003 TX OCTETS: 89
+
004 CLOSE CONNECTION AFTER 2.000000 sec
+
005 TX OCTETS: 7d
+
006 TX OCTETS: fe
+
007 TX OCTETS: fe
+
008 TX OCTETS: fe
+
009 TX OCTETS: fe
+
010 TX OCTETS: fe
+
011 TX OCTETS: fe
+
012 TX OCTETS: fe
+
013 TX OCTETS: fe
+
014 TX OCTETS: fe
+
015 TX OCTETS: fe
+
016 TX OCTETS: fe
+
017 TX OCTETS: fe
+
018 TX OCTETS: fe
+
019 TX OCTETS: fe
+
020 TX OCTETS: fe
+
021 TX OCTETS: fe
+
022 TX OCTETS: fe
+
023 TX OCTETS: fe
+
024 TX OCTETS: fe
+
025 TX OCTETS: fe
+
026 TX OCTETS: fe
+
027 TX OCTETS: fe
+
028 TX OCTETS: fe
+
029 TX OCTETS: fe
+
030 TX OCTETS: fe
+
031 TX OCTETS: fe
+
032 TX OCTETS: fe
+
033 TX OCTETS: fe
+
034 TX OCTETS: fe
+
035 TX OCTETS: fe
+
036 TX OCTETS: fe
+
037 TX OCTETS: fe
+
038 TX OCTETS: fe
+
039 TX OCTETS: fe
+
040 TX OCTETS: fe
+
041 TX OCTETS: fe
+
042 TX OCTETS: fe
+
043 TX OCTETS: fe
+
044 TX OCTETS: fe
+
045 TX OCTETS: fe
+
046 TX OCTETS: fe
+
047 TX OCTETS: fe
+
048 TX OCTETS: fe
+
049 TX OCTETS: fe
+
050 TX OCTETS: fe
+
051 TX OCTETS: fe
+
052 TX OCTETS: fe
+
053 TX OCTETS: fe
+
054 TX OCTETS: fe
+
055 TX OCTETS: fe
+
056 TX OCTETS: fe
+
057 TX OCTETS: fe
+
058 TX OCTETS: fe
+
059 TX OCTETS: fe
+
060 TX OCTETS: fe
+
061 TX OCTETS: fe
+
062 TX OCTETS: fe
+
063 TX OCTETS: fe
+
064 TX OCTETS: fe
+
065 TX OCTETS: fe
+
066 TX OCTETS: fe
+
067 TX OCTETS: fe
+
068 TX OCTETS: fe
+
069 TX OCTETS: fe
+
070 TX OCTETS: fe
+
071 TX OCTETS: fe
+
072 TX OCTETS: fe
+
073 TX OCTETS: fe
+
074 TX OCTETS: fe
+
075 TX OCTETS: fe
+
076 TX OCTETS: fe
+
077 TX OCTETS: fe
+
078 TX OCTETS: fe
+
079 TX OCTETS: fe
+
080 TX OCTETS: fe
+
081 TX OCTETS: fe
+
082 TX OCTETS: fe
+
083 TX OCTETS: fe
+
084 TX OCTETS: fe
+
085 TX OCTETS: fe
+
086 TX OCTETS: fe
+
087 TX OCTETS: fe
+
088 TX OCTETS: fe
+
089 TX OCTETS: fe
+
090 TX OCTETS: fe
+
091 TX OCTETS: fe
+
092 TX OCTETS: fe
+
093 TX OCTETS: fe
+
094 TX OCTETS: fe
+
095 TX OCTETS: fe
+
096 TX OCTETS: fe
+
097 TX OCTETS: fe
+
098 TX OCTETS: fe
+
099 TX OCTETS: fe
+
100 TX OCTETS: fe
+
101 TX OCTETS: fe
+
102 TX OCTETS: fe
+
103 TX OCTETS: fe
+
104 TX OCTETS: fe
+
105 TX OCTETS: fe
+
106 TX OCTETS: fe
+
107 TX OCTETS: fe
+
108 TX OCTETS: fe
+
109 TX OCTETS: fe
+
110 TX OCTETS: fe
+
111 TX OCTETS: fe
+
112 TX OCTETS: fe
+
113 TX OCTETS: fe
+
114 TX OCTETS: fe
+
115 TX OCTETS: fe
+
116 TX OCTETS: fe
+
117 TX OCTETS: fe
+
118 TX OCTETS: fe
+
119 TX OCTETS: fe
+
120 TX OCTETS: fe
+
121 TX OCTETS: fe
+
122 TX OCTETS: fe
+
123 TX OCTETS: fe
+
124 TX OCTETS: fe
+
125 TX OCTETS: fe
+
126 TX OCTETS: fe
+
127 TX OCTETS: fe
+
128 TX OCTETS: fe
+
129 TX OCTETS: fe
+
130 TX OCTETS: fe
+
131 RX OCTETS: 8afd7acf8d46843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8
+
               843173b8843173b8843173b88431 ...
+
132 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=125, MASKED=True, MASK=3761636638643436
+
               0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+
               fefefefefefefefefefefefefefefe ...
+
133 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
134 TX OCTETS: 880203e8
+
135 RX OCTETS: 888291f81cca9210
+
136 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3931663831636361
+
               0x03e8
+
137 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_6.json b/autobahn/client/tungstenite_case_2_6.json new file mode 100644 index 0000000..928d058 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_6.json @@ -0,0 +1,1183 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 22, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send ping with binary payload of 125 octets, send in octet-wise chops.", + "droppedByMe": true, + "duration": 11, + "expectation": "Pong with payload echo'ed is sent in reply to Ping. Implementations must be TCP clean. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=22&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: J/JV+/r5q5LMtnQFRrvrxg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 9nBQdOLBDiRHxwy6CoijKID56zU=\r\n\r\n", + "id": "2.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1, + "10": 1 + }, + "rxOctetStats": { + "8": 1, + "131": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.473Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "1": 127, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3232266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TI", + 2 + ], + [ + "TO", + [ + 1, + "7d" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "TO", + [ + 1, + "fe" + ], + true + ], + [ + "RO", + [ + 131, + "8afd7acf8d46843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b8843173b88431 ..." + ] + ], + [ + "RF", + [ + 125, + "0xfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe ..." + ], + 10, + true, + 0, + true, + "7acf8d46" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888291f81cca9210" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "91f81cca" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_7.html b/autobahn/client/tungstenite_case_2_7.html new file mode 100644 index 0000000..152564b --- /dev/null +++ b/autobahn/client/tungstenite_case_2_7.html @@ -0,0 +1,297 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.7 : Pass - 1 ms @ 2025-09-11T20:05:44.485Z

+

Case Description

Send unsolicited pong without payload. Verify nothing is received. Clean close with normal code.

+

Case Expectation

Nothing.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=23&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: QgWDaVf00Vi9v+MXz6xp2g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: pFIgsyg1BUkqX8R6GhR00kCv9gU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2561256
Total2264
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3233266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8a00
+
004 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
005 TX OCTETS: 880203e8
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 88821215f2f711fd
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3132313566326637
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_7.json b/autobahn/client/tungstenite_case_2_7.json new file mode 100644 index 0000000..ba14dfe --- /dev/null +++ b/autobahn/client/tungstenite_case_2_7.json @@ -0,0 +1,144 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 23, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send unsolicited pong without payload. Verify nothing is received. Clean close with normal code.", + "droppedByMe": true, + "duration": 1, + "expectation": "Nothing.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=23&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: QgWDaVf00Vi9v+MXz6xp2g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: pFIgsyg1BUkqX8R6GhR00kCv9gU=\r\n\r\n", + "id": "2.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.485Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "10": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3233266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 10, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8a00" + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 8, + "88821215f2f711fd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1215f2f7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_8.html b/autobahn/client/tungstenite_case_2_8.html new file mode 100644 index 0000000..ddda739 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_8.html @@ -0,0 +1,298 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.8 : Pass - 1 ms @ 2025-09-11T20:05:44.487Z

+

Case Description

Send unsolicited pong with payload. Verify nothing is received. Clean close with normal code.

+

Case Expectation

Nothing.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=24&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pebTICN0xh4I2g4ZA3XhFg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rLxjBVCd0404E5PSsM1C3PxUWXY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2561256
Total2264
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
26126
2061206
Total3236
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3234266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               unsolicited pong payload
+
003 TX OCTETS: 8a18756e736f6c69636974656420706f6e67207061796c6f6164
+
004 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
005 TX OCTETS: 880203e8
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 88828223a54881cb
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3832323361353438
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_8.json b/autobahn/client/tungstenite_case_2_8.json new file mode 100644 index 0000000..d9a6dda --- /dev/null +++ b/autobahn/client/tungstenite_case_2_8.json @@ -0,0 +1,144 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 24, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send unsolicited pong with payload. Verify nothing is received. Clean close with normal code.", + "droppedByMe": true, + "duration": 1, + "expectation": "Nothing.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=24&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pebTICN0xh4I2g4ZA3XhFg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rLxjBVCd0404E5PSsM1C3PxUWXY=\r\n\r\n", + "id": "2.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.487Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "10": 1 + }, + "txOctetStats": { + "4": 1, + "26": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3234266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "unsolicited pong payload" + ], + 10, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 26, + "8a18756e736f6c69636974656420706f6e67207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 8, + "88828223a54881cb" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8223a548" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_2_9.html b/autobahn/client/tungstenite_case_2_9.html new file mode 100644 index 0000000..0b18e63 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_9.html @@ -0,0 +1,308 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 2.9 : Pass - 2 ms @ 2025-09-11T20:05:44.489Z

+

Case Description

Send unsolicited pong with payload. Send ping with payload. Verify pong for ping is received.

+

Case Expectation

Nothing in reply to own Pong, but Pong with payload echo'ed in reply to Ping. Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'ping payload')]}

+ Observed:
[('pong', u'ping payload')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=25&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: kjiHOiHXXpUNFx2ULmUgAA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NErPr0UlAcrnHEQQWuE3k5mGZW8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
18118
2561256
Total3282
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
14114
26126
2061206
Total4250
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
81
101
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
81
91
101
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3235266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               unsolicited pong payload
+
003 TX OCTETS: 8a18756e736f6c69636974656420706f6e67207061796c6f6164
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ping payload
+
005 TX OCTETS: 890c70696e67207061796c6f6164
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 8a8c96829d8ce6ebf3ebb6f2fcf5faedfce8
+
008 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3936383239643863
+
               ping payload
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
010 TX OCTETS: 880203e8
+
011 RX OCTETS: 8882cee8b07fcd00
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6365653862303766
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_2_9.json b/autobahn/client/tungstenite_case_2_9.json new file mode 100644 index 0000000..4a8d798 --- /dev/null +++ b/autobahn/client/tungstenite_case_2_9.json @@ -0,0 +1,199 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 25, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send unsolicited pong with payload. Send ping with payload. Verify pong for ping is received.", + "droppedByMe": true, + "duration": 2, + "expectation": "Nothing in reply to own Pong, but Pong with payload echo'ed in reply to Ping. Clean close with normal code.", + "expected": { + "OK": [ + [ + "pong", + "ping payload" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=25&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: kjiHOiHXXpUNFx2ULmUgAA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NErPr0UlAcrnHEQQWuE3k5mGZW8=\r\n\r\n", + "id": "2.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "ping payload" + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1, + "10": 1 + }, + "rxOctetStats": { + "8": 1, + "18": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.489Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1, + "10": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "26": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3235266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "unsolicited pong payload" + ], + 10, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 26, + "8a18756e736f6c69636974656420706f6e67207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 12, + "ping payload" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "890c70696e67207061796c6f6164" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 18, + "8a8c96829d8ce6ebf3ebb6f2fcf5faedfce8" + ] + ], + [ + "RF", + [ + 12, + "ping payload" + ], + 10, + true, + 0, + true, + "96829d8c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882cee8b07fcd00" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "cee8b07f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_3_1.html b/autobahn/client/tungstenite_case_3_1.html new file mode 100644 index 0000000..726f12d --- /dev/null +++ b/autobahn/client/tungstenite_case_3_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 3.1 : Pass - 0 ms @ 2025-09-11T20:05:44.507Z

+

Case Description

Send small text message with RSV = 1.

+

Case Expectation

The connection is failed immediately (1002/protocol error), since RSV must be 0, when no extension defining RSV meaning has been negotiated.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=28&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: v9AtyG29z9kzk3epkwtpiw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: s5PkZx+KkoSLociUPGufcpGRZ4Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
15115
2061206
Total2221
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3238266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=1, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 910d48656c6c6f2c20776f726c6421
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_3_1.json b/autobahn/client/tungstenite_case_3_1.json new file mode 100644 index 0000000..33a1340 --- /dev/null +++ b/autobahn/client/tungstenite_case_3_1.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 28, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message with RSV = 1.", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately (1002/protocol error), since RSV must be 0, when no extension defining RSV meaning has been negotiated.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=28&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: v9AtyG29z9kzk3epkwtpiw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: s5PkZx+KkoSLociUPGufcpGRZ4Q=\r\n\r\n", + "id": "3.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.507Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "15": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3238266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 1, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "910d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_3_2.html b/autobahn/client/tungstenite_case_3_2.html new file mode 100644 index 0000000..baa2505 --- /dev/null +++ b/autobahn/client/tungstenite_case_3_2.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 3.2 : Pass - 1 ms @ 2025-09-11T20:05:44.508Z

+

Case Description

Send small text message, then send again with RSV = 2, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=29&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: XrghG4O/4HTgxgQPsb4Btg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UWee5BjNd/+m8UkLksnuxU3LGG0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
2561256
Total2275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
15230
2061206
Total4238
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
12
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3239266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=2, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: a10d48656c6c6f2c20776f726c6421
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818d0d3ffcef455a90836213dc98624d908b2c
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3064336666636566
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_3_2.json b/autobahn/client/tungstenite_case_3_2.json new file mode 100644 index 0000000..f6f4ea3 --- /dev/null +++ b/autobahn/client/tungstenite_case_3_2.json @@ -0,0 +1,179 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 29, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send again with RSV = 2, then send Ping.", + "droppedByMe": false, + "duration": 1, + "expectation": "Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=29&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: XrghG4O/4HTgxgQPsb4Btg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UWee5BjNd/+m8UkLksnuxU3LGG0=\r\n\r\n", + "id": "3.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.508Z", + "trafficStats": null, + "txFrameStats": { + "1": 2, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "15": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3239266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 2, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "a10d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 19, + "818d0d3ffcef455a90836213dc98624d908b2c" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "0d3ffcef" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_3_3.html b/autobahn/client/tungstenite_case_3_3.html new file mode 100644 index 0000000..7e10144 --- /dev/null +++ b/autobahn/client/tungstenite_case_3_3.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 3.3 : Pass - 1 ms @ 2025-09-11T20:05:44.509Z

+

Case Description

Send small text message, then send again with RSV = 3, then send Ping. Octets are sent in frame-wise chops. Octets are sent in octet-wise chops.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=30&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 5oDNpF8mkgu7zhwZdn/Wfw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: SfeUJsmdq+XY/8mT5YvZkPjn3qY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
2561256
Total2275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
15230
2061206
Total4238
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
12
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3330266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=3, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               Hello, world!
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: b10d48656c6c6f2c20776f726c6421
+
008 TX OCTETS: 8900
+
009 RX OCTETS: 818dd46424469c01482abb480431bb164822f5
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6434363432343436
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_3_3.json b/autobahn/client/tungstenite_case_3_3.json new file mode 100644 index 0000000..c03193a --- /dev/null +++ b/autobahn/client/tungstenite_case_3_3.json @@ -0,0 +1,179 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 30, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send again with RSV = 3, then send Ping. Octets are sent in frame-wise chops. Octets are sent in octet-wise chops.", + "droppedByMe": false, + "duration": 1, + "expectation": "Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=30&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 5oDNpF8mkgu7zhwZdn/Wfw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: SfeUJsmdq+XY/8mT5YvZkPjn3qY=\r\n\r\n", + "id": "3.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.509Z", + "trafficStats": null, + "txFrameStats": { + "1": 2, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "15": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3330266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 3, + null, + null, + null, + true + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + true + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 15, + "b10d48656c6c6f2c20776f726c6421" + ], + true + ], + [ + "TO", + [ + 2, + "8900" + ], + true + ], + [ + "RO", + [ + 19, + "818dd46424469c01482abb480431bb164822f5" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "d4642446" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_3_4.html b/autobahn/client/tungstenite_case_3_4.html new file mode 100644 index 0000000..5696c2b --- /dev/null +++ b/autobahn/client/tungstenite_case_3_4.html @@ -0,0 +1,327 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 3.4 : Pass - 2 ms @ 2025-09-11T20:05:44.511Z

+

Case Description

Send small text message, then send again with RSV = 4, then send Ping. Octets are sent in octet-wise chops.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=31&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: eP1j2M2Y9QGnCoHSS93RjA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: d4kMK+Hdm+0fLajacJF1UvqOQ/s=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
2561256
Total2275
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
13131
2061206
Total32237
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
12
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3331266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 81
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=4, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 0d
+
008 TX OCTETS: 48
+
009 TX OCTETS: 65
+
010 TX OCTETS: 6c
+
011 TX OCTETS: 6c
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 2c
+
014 TX OCTETS: 20
+
015 TX OCTETS: 77
+
016 TX OCTETS: 6f
+
017 TX OCTETS: 72
+
018 TX OCTETS: 6c
+
019 TX OCTETS: 64
+
020 TX OCTETS: 21
+
021 TX OCTETS: c1
+
022 RX OCTETS: 818d405d803d0838ec512f71a04a2f2fec5961
+
023 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3430356438303364
+
               Hello, world!
+
024 TX OCTETS: 0d
+
025 TX OCTETS: 48
+
026 TX OCTETS: 65
+
027 TX OCTETS: 6c
+
028 TX OCTETS: 6c
+
029 TX OCTETS: 6f
+
030 TX OCTETS: 2c
+
031 TX OCTETS: 20
+
032 TX OCTETS: 77
+
033 TX OCTETS: 6f
+
034 TX OCTETS: 72
+
035 TX OCTETS: 6c
+
036 TX OCTETS: 64
+
037 TX OCTETS: 21
+
038 TX OCTETS: 89
+
039 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_3_4.json b/autobahn/client/tungstenite_case_3_4.json new file mode 100644 index 0000000..68c75c9 --- /dev/null +++ b/autobahn/client/tungstenite_case_3_4.json @@ -0,0 +1,402 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 31, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send again with RSV = 4, then send Ping. Octets are sent in octet-wise chops.", + "droppedByMe": false, + "duration": 2, + "expectation": "Echo for first message is received, but then connection is failed immediately, since RSV must be 0, when no extension defining RSV meaning has been negotiated. The Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=31&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: eP1j2M2Y9QGnCoHSS93RjA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: d4kMK+Hdm+0fLajacJF1UvqOQ/s=\r\n\r\n", + "id": "3.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.511Z", + "trafficStats": null, + "txFrameStats": { + "1": 2, + "9": 1 + }, + "txOctetStats": { + "1": 31, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3331266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 4, + null, + null, + 1, + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "2c" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "77" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "21" + ], + true + ], + [ + "TO", + [ + 1, + "c1" + ], + true + ], + [ + "RO", + [ + 19, + "818d405d803d0838ec512f71a04a2f2fec5961" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "405d803d" + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "2c" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "77" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "21" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_3_5.html b/autobahn/client/tungstenite_case_3_5.html new file mode 100644 index 0000000..5d4de7e --- /dev/null +++ b/autobahn/client/tungstenite_case_3_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 3.5 : Pass - 0 ms @ 2025-09-11T20:05:44.514Z

+

Case Description

Send small binary message with RSV = 5.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=32&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: C3sYqb+7hEh11+DfaHjYfw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PmLhCdA1V0Hcq/rkAsVMhvaSCdg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
10110
2061206
Total2216
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
21
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3332266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=5, PAYLOAD-LEN=8, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x00fffefdfcfb00ff
+
003 TX OCTETS: d20800fffefdfcfb00ff
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_3_5.json b/autobahn/client/tungstenite_case_3_5.json new file mode 100644 index 0000000..57fbec5 --- /dev/null +++ b/autobahn/client/tungstenite_case_3_5.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 32, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small binary message with RSV = 5.", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since RSV must be 0.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=32&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: C3sYqb+7hEh11+DfaHjYfw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PmLhCdA1V0Hcq/rkAsVMhvaSCdg=\r\n\r\n", + "id": "3.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.514Z", + "trafficStats": null, + "txFrameStats": { + "2": 1 + }, + "txOctetStats": { + "10": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3332266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 8, + "0x00fffefdfcfb00ff" + ], + 2, + true, + 5, + null, + null, + null, + false + ], + [ + "TO", + [ + 10, + "d20800fffefdfcfb00ff" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_3_6.html b/autobahn/client/tungstenite_case_3_6.html new file mode 100644 index 0000000..6eb2054 --- /dev/null +++ b/autobahn/client/tungstenite_case_3_6.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 3.6 : Pass - 1 ms @ 2025-09-11T20:05:44.515Z

+

Case Description

Send Ping with RSV = 6.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=33&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 935+Tc4Lyd2mHLVgV6Mu6Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2MYOOLw/kcFrEsjqDalXlB1xxF8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
15115
2061206
Total2221
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
21
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3333266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=2, FIN=True, RSV=6, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: e20d48656c6c6f2c20776f726c6421
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_3_6.json b/autobahn/client/tungstenite_case_3_6.json new file mode 100644 index 0000000..3e221a8 --- /dev/null +++ b/autobahn/client/tungstenite_case_3_6.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 33, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send Ping with RSV = 6.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since RSV must be 0.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=33&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 935+Tc4Lyd2mHLVgV6Mu6Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2MYOOLw/kcFrEsjqDalXlB1xxF8=\r\n\r\n", + "id": "3.6", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.515Z", + "trafficStats": null, + "txFrameStats": { + "2": 1 + }, + "txOctetStats": { + "15": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3333266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 2, + true, + 6, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "e20d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_3_7.html b/autobahn/client/tungstenite_case_3_7.html new file mode 100644 index 0000000..e664dfd --- /dev/null +++ b/autobahn/client/tungstenite_case_3_7.html @@ -0,0 +1,287 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 3.7 : Pass - 1 ms @ 2025-09-11T20:05:44.517Z

+

Case Description

Send Close with RSV = 7.

+

Case Expectation

The connection is failed immediately, since RSV must be 0.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=34&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: NxZ2uR8+wpz0ngGm4567BA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: IXVh4x4GYowJqSmZ9CbVxQrKcaM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
212
2061206
Total2208
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3334266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=7, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: f800
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_3_7.json b/autobahn/client/tungstenite_case_3_7.json new file mode 100644 index 0000000..93ed380 --- /dev/null +++ b/autobahn/client/tungstenite_case_3_7.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 34, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send Close with RSV = 7.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since RSV must be 0.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=34&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: NxZ2uR8+wpz0ngGm4567BA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: IXVh4x4GYowJqSmZ9CbVxQrKcaM=\r\n\r\n", + "id": "3.7", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.517Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "2": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3334266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 7, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "f800" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_1_1.html b/autobahn/client/tungstenite_case_4_1_1.html new file mode 100644 index 0000000..0d22a2d --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_1.html @@ -0,0 +1,287 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.1.1 : Pass - 1 ms @ 2025-09-11T20:05:44.518Z

+

Case Description

Send frame with reserved non-control Opcode = 3.

+

Case Expectation

The connection is failed immediately.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=35&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: TWGR388PI5wcIw9Zxdef2g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dIDcPWPMXsevZhzBuHaRffEA8Nk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
212
2061206
Total2208
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
31
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3335266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=3, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8300
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_1_1.json b/autobahn/client/tungstenite_case_4_1_1.json new file mode 100644 index 0000000..70d654f --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_1.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 35, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send frame with reserved non-control Opcode = 3.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=35&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: TWGR388PI5wcIw9Zxdef2g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dIDcPWPMXsevZhzBuHaRffEA8Nk=\r\n\r\n", + "id": "4.1.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.518Z", + "trafficStats": null, + "txFrameStats": { + "3": 1 + }, + "txOctetStats": { + "2": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3335266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 3, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8300" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_1_2.html b/autobahn/client/tungstenite_case_4_1_2.html new file mode 100644 index 0000000..2642e4f --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.1.2 : Pass - 1 ms @ 2025-09-11T20:05:44.520Z

+

Case Description

Send frame with reserved non-control Opcode = 4 and non-empty payload.

+

Case Expectation

The connection is failed immediately.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=36&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: uSk/QlZC4FDmmNa3PDykQg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bYTuO4VUzuQt5cs2eZ7dChFui2I=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
25125
2061206
Total2231
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
41
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3336266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=4, FIN=True, RSV=0, PAYLOAD-LEN=23, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               reserved opcode payload
+
003 TX OCTETS: 84177265736572766564206f70636f6465207061796c6f6164
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_1_2.json b/autobahn/client/tungstenite_case_4_1_2.json new file mode 100644 index 0000000..220c26d --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_2.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 36, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send frame with reserved non-control Opcode = 4 and non-empty payload.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=36&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: uSk/QlZC4FDmmNa3PDykQg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bYTuO4VUzuQt5cs2eZ7dChFui2I=\r\n\r\n", + "id": "4.1.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.520Z", + "trafficStats": null, + "txFrameStats": { + "4": 1 + }, + "txOctetStats": { + "25": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3336266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 23, + "reserved opcode payload" + ], + 4, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 25, + "84177265736572766564206f70636f6465207061796c6f6164" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_1_3.html b/autobahn/client/tungstenite_case_4_1_3.html new file mode 100644 index 0000000..09eb2f8 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_3.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.1.3 : Pass - 1 ms @ 2025-09-11T20:05:44.522Z

+

Case Description

Send small text message, then send frame with reserved non-control Opcode = 5, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=37&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: umefI5TfB3hfj5Y5dYBRDA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: B/QfeZVqBvyQm4XXxbsWmimsySo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
2561256
Total2275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
224
15115
2061206
Total4225
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
51
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3337266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=5, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 8500
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818d162e5a535e4b363f79027a24795c363737
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3136326535613533
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_1_3.json b/autobahn/client/tungstenite_case_4_1_3.json new file mode 100644 index 0000000..4bfd028 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_3.json @@ -0,0 +1,180 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 37, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved non-control Opcode = 5, then send Ping.", + "droppedByMe": false, + "duration": 1, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=37&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: umefI5TfB3hfj5Y5dYBRDA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: B/QfeZVqBvyQm4XXxbsWmimsySo=\r\n\r\n", + "id": "4.1.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.522Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "5": 1, + "9": 1 + }, + "txOctetStats": { + "2": 2, + "15": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3337266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 5, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8500" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 19, + "818d162e5a535e4b363f79027a24795c363737" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "162e5a53" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_1_4.html b/autobahn/client/tungstenite_case_4_1_4.html new file mode 100644 index 0000000..b39c5ae --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_4.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.1.4 : Pass - 1 ms @ 2025-09-11T20:05:44.523Z

+

Case Description

Send small text message, then send frame with reserved non-control Opcode = 6 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=38&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: UQs4b9awLP/TjYeRvr/rgQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LNlVlRwtT19AVxRkR037WGAUuWM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
2561256
Total2275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
15230
2061206
Total4238
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
61
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3338266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=6, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: 860d48656c6c6f2c20776f726c6421
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818db6572549fe324925d97b053ed925492d97
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=6236353732353439
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_1_4.json b/autobahn/client/tungstenite_case_4_1_4.json new file mode 100644 index 0000000..7ee6173 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_4.json @@ -0,0 +1,180 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 38, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved non-control Opcode = 6 and non-empty payload, then send Ping.", + "droppedByMe": false, + "duration": 1, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=38&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: UQs4b9awLP/TjYeRvr/rgQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LNlVlRwtT19AVxRkR037WGAUuWM=\r\n\r\n", + "id": "4.1.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.523Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "6": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "15": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3338266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 6, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "860d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 19, + "818db6572549fe324925d97b053ed925492d97" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "b6572549" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_1_5.html b/autobahn/client/tungstenite_case_4_1_5.html new file mode 100644 index 0000000..05206f8 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_5.html @@ -0,0 +1,315 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.1.5 : Pass - 1 ms @ 2025-09-11T20:05:44.524Z

+

Case Description

Send small text message, then send frame with reserved non-control Opcode = 7 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=39&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 05YJ1T17iGl40HkaPgJmPA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WS8n3Ze+FeVPMwrT3if0IGdV+So=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
2561256
Total2275
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11818
2061206
Total19224
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
71
91
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3339266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 81
+
004 TX FRAME : OPCODE=7, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 0d
+
008 TX OCTETS: 48
+
009 TX OCTETS: 65
+
010 TX OCTETS: 6c
+
011 TX OCTETS: 6c
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 2c
+
014 TX OCTETS: 20
+
015 TX OCTETS: 77
+
016 TX OCTETS: 6f
+
017 TX OCTETS: 72
+
018 TX OCTETS: 6c
+
019 TX OCTETS: 64
+
020 TX OCTETS: 21
+
021 TX OCTETS: 87
+
022 TX OCTETS: 0d
+
023 RX OCTETS: 818d30c7415778a22d3b5feb61205fb52d3311
+
024 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3330633734313537
+
               Hello, world!
+
025 TX OCTETS: 48
+
026 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_1_5.json b/autobahn/client/tungstenite_case_4_1_5.json new file mode 100644 index 0000000..6f193a1 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_1_5.json @@ -0,0 +1,299 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 39, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved non-control Opcode = 7 and non-empty payload, then send Ping.", + "droppedByMe": false, + "duration": 1, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=39&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 05YJ1T17iGl40HkaPgJmPA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WS8n3Ze+FeVPMwrT3if0IGdV+So=\r\n\r\n", + "id": "4.1.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.524Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "7": 1, + "9": 1 + }, + "txOctetStats": { + "1": 18, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3339266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 7, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "2c" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "77" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "21" + ], + true + ], + [ + "TO", + [ + 1, + "87" + ], + true + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "RO", + [ + 19, + "818d30c7415778a22d3b5feb61205fb52d3311" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "30c74157" + ], + [ + "TO", + [ + 1, + "48" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_2_1.html b/autobahn/client/tungstenite_case_4_2_1.html new file mode 100644 index 0000000..2db7ab9 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_1.html @@ -0,0 +1,287 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.2.1 : Pass - 0 ms @ 2025-09-11T20:05:44.526Z

+

Case Description

Send frame with reserved control Opcode = 11.

+

Case Expectation

The connection is failed immediately.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=40&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: xuafz/diAjAirftQmLXpyw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: oIALlo5reVMRXY2vUjc6kVLmiEY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
212
2061206
Total2208
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
111
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3430266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=11, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8b00
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_2_1.json b/autobahn/client/tungstenite_case_4_2_1.json new file mode 100644 index 0000000..364dbef --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_1.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 40, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send frame with reserved control Opcode = 11.", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=40&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: xuafz/diAjAirftQmLXpyw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: oIALlo5reVMRXY2vUjc6kVLmiEY=\r\n\r\n", + "id": "4.2.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.526Z", + "trafficStats": null, + "txFrameStats": { + "11": 1 + }, + "txOctetStats": { + "2": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3430266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 11, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8b00" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_2_2.html b/autobahn/client/tungstenite_case_4_2_2.html new file mode 100644 index 0000000..d2227bb --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.2.2 : Pass - 0 ms @ 2025-09-11T20:05:44.527Z

+

Case Description

Send frame with reserved control Opcode = 12 and non-empty payload.

+

Case Expectation

The connection is failed immediately.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=41&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Npwqi6ZPrBj4rq/9ogCRRg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3F72DyLs57t/d0idlRom2QFzC4Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
25125
2061206
Total2231
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
121
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3431266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=12, FIN=True, RSV=0, PAYLOAD-LEN=23, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               reserved opcode payload
+
003 TX OCTETS: 8c177265736572766564206f70636f6465207061796c6f6164
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_2_2.json b/autobahn/client/tungstenite_case_4_2_2.json new file mode 100644 index 0000000..81b8cd2 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_2.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 41, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send frame with reserved control Opcode = 12 and non-empty payload.", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=41&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Npwqi6ZPrBj4rq/9ogCRRg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3F72DyLs57t/d0idlRom2QFzC4Q=\r\n\r\n", + "id": "4.2.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.527Z", + "trafficStats": null, + "txFrameStats": { + "12": 1 + }, + "txOctetStats": { + "25": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3431266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 23, + "reserved opcode payload" + ], + 12, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 25, + "8c177265736572766564206f70636f6465207061796c6f6164" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_2_3.html b/autobahn/client/tungstenite_case_4_2_3.html new file mode 100644 index 0000000..02e8264 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_3.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.2.3 : Pass - 1 ms @ 2025-09-11T20:05:44.528Z

+

Case Description

Send small text message, then send frame with reserved control Opcode = 13, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=42&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: i0VSID0AZzmkc8MDXq4RWQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZTY96uiWTl1y2pD73qYrWyQUwoY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
2561256
Total2275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
224
15115
2061206
Total4225
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
91
131
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3432266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=13, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 8d00
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818d382835b1704d59dd570415c6575a59d519
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3338323833356231
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_2_3.json b/autobahn/client/tungstenite_case_4_2_3.json new file mode 100644 index 0000000..53b5b17 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_3.json @@ -0,0 +1,180 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 42, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved control Opcode = 13, then send Ping.", + "droppedByMe": false, + "duration": 1, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=42&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: i0VSID0AZzmkc8MDXq4RWQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZTY96uiWTl1y2pD73qYrWyQUwoY=\r\n\r\n", + "id": "4.2.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.528Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "9": 1, + "13": 1 + }, + "txOctetStats": { + "2": 2, + "15": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3432266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 13, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8d00" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 19, + "818d382835b1704d59dd570415c6575a59d519" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "382835b1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_2_4.html b/autobahn/client/tungstenite_case_4_2_4.html new file mode 100644 index 0000000..4611c9b --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_4.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.2.4 : Pass - 1 ms @ 2025-09-11T20:05:44.533Z

+

Case Description

Send small text message, then send frame with reserved control Opcode = 14 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=43&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Z9pp002GQRXRkKwQMkcKjQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZkOfEN3g/cSd0L143A2u2+b8w7k=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
2561256
Total2275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
15230
2061206
Total4238
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
91
141
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3433266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
004 TX FRAME : OPCODE=14, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: 8e0d48656c6c6f2c20776f726c6421
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8900
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818d9adfa9a0d2bac5ccf5f389d7f5adc5c4bb
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3961646661396130
+
               Hello, world!
+
011 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_2_4.json b/autobahn/client/tungstenite_case_4_2_4.json new file mode 100644 index 0000000..103fc8b --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_4.json @@ -0,0 +1,180 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 43, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved control Opcode = 14 and non-empty payload, then send Ping.", + "droppedByMe": false, + "duration": 1, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=43&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Z9pp002GQRXRkKwQMkcKjQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZkOfEN3g/cSd0L143A2u2+b8w7k=\r\n\r\n", + "id": "4.2.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.533Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "9": 1, + "14": 1 + }, + "txOctetStats": { + "2": 1, + "15": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3433266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 14, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "8e0d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 19, + "818d9adfa9a0d2bac5ccf5f389d7f5adc5c4bb" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "9adfa9a0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_4_2_5.html b/autobahn/client/tungstenite_case_4_2_5.html new file mode 100644 index 0000000..9a0465b --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_5.html @@ -0,0 +1,316 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 4.2.5 : Pass - 2 ms @ 2025-09-11T20:05:44.535Z

+

Case Description

Send small text message, then send frame with reserved control Opcode = 15 and non-empty payload, then send Ping.

+

Case Expectation

Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello, world!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'Hello, world!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=44&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1TMHsBqGXntmCH5x1+RdIg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8ODV2sfYwmuLbmGgB8Hyde4UTJk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
19119
2561256
Total2275
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11919
2061206
Total20225
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
11
91
151
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3434266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
003 TX OCTETS: 81
+
004 TX FRAME : OPCODE=15, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 0d
+
008 TX OCTETS: 48
+
009 TX OCTETS: 65
+
010 TX OCTETS: 6c
+
011 TX OCTETS: 6c
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 2c
+
014 TX OCTETS: 20
+
015 TX OCTETS: 77
+
016 TX OCTETS: 6f
+
017 TX OCTETS: 72
+
018 TX OCTETS: 6c
+
019 TX OCTETS: 64
+
020 TX OCTETS: 21
+
021 TX OCTETS: 8f
+
022 TX OCTETS: 0d
+
023 RX OCTETS: 818d366098197e05f475594cb86e5912f47d17
+
024 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3336363039383139
+
               Hello, world!
+
025 TX OCTETS: 48
+
026 TX OCTETS: 65
+
027 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_4_2_5.json b/autobahn/client/tungstenite_case_4_2_5.json new file mode 100644 index 0000000..1fcf186 --- /dev/null +++ b/autobahn/client/tungstenite_case_4_2_5.json @@ -0,0 +1,307 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 44, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send small text message, then send frame with reserved control Opcode = 15 and non-empty payload, then send Ping.", + "droppedByMe": false, + "duration": 2, + "expectation": "Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello, world!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=44&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1TMHsBqGXntmCH5x1+RdIg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8ODV2sfYwmuLbmGgB8Hyde4UTJk=\r\n\r\n", + "id": "4.2.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello, world!", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.535Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "9": 1, + "15": 1 + }, + "txOctetStats": { + "1": 19, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3434266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 15, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "2c" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "77" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "21" + ], + true + ], + [ + "TO", + [ + 1, + "8f" + ], + true + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ], + [ + "RO", + [ + 19, + "818d366098197e05f475594cb86e5912f47d17" + ] + ], + [ + "RF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + true, + "36609819" + ], + [ + "TO", + [ + 1, + "48" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_1.html b/autobahn/client/tungstenite_case_5_1.html new file mode 100644 index 0000000..bf578a3 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_1.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.1 : Pass - 1 ms @ 2025-09-11T20:05:44.538Z

+

Case Description

Send Ping fragmented into 2 fragments.

+

Case Expectation

Connection is failed immediately, since control message MUST NOT be fragmented.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=45&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: teyFOOkfCFubhQBOMBnv3w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vdZKdq/sPl92+WEYCvUuIe6rK/U=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11222
2061206
Total3228
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3435266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=9, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0909667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8009667261676d656e7432
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_1.json b/autobahn/client/tungstenite_case_5_1.json new file mode 100644 index 0000000..27f0911 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_1.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 45, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send Ping fragmented into 2 fragments.", + "droppedByMe": false, + "duration": 1, + "expectation": "Connection is failed immediately, since control message MUST NOT be fragmented.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=45&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: teyFOOkfCFubhQBOMBnv3w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vdZKdq/sPl92+WEYCvUuIe6rK/U=\r\n\r\n", + "id": "5.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.538Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "9": 1 + }, + "txOctetStats": { + "11": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3435266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 9, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0909667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_10.html b/autobahn/client/tungstenite_case_5_10.html new file mode 100644 index 0000000..1fc66b8 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_10.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.10 : Pass - 1 ms @ 2025-09-11T20:05:44.572Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in per-frame chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=54&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: OdpLRoN6RaJJb8MEfYFFzg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +voriC675Ib7mn/FIGWHkxWJhDQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
15115
26126
2061206
Total3247
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3534266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               non-continuation payload
+
003 TX OCTETS: 80186e6f6e2d636f6e74696e756174696f6e207061796c6f6164
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               Hello, world!
+
005 FAIL CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_10.json b/autobahn/client/tungstenite_case_5_10.json new file mode 100644 index 0000000..c77a13b --- /dev/null +++ b/autobahn/client/tungstenite_case_5_10.json @@ -0,0 +1,122 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 54, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in per-frame chops.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=54&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: OdpLRoN6RaJJb8MEfYFFzg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +voriC675Ib7mn/FIGWHkxWJhDQ=\r\n\r\n", + "id": "5.10", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.572Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "15": 1, + "26": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3534266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + true, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 26, + "80186e6f6e2d636f6e74696e756174696f6e207061796c6f6164" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + true + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_11.html b/autobahn/client/tungstenite_case_5_11.html new file mode 100644 index 0000000..36b7277 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_11.html @@ -0,0 +1,318 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.11 : Pass - 2 ms @ 2025-09-11T20:05:44.573Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in octet-wise chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=55&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: PELS9pHDybDELZ3GD/MGFQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1LSGDxsZeCObSlOMnvZQz+yMKOI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
12828
2061206
Total29234
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3535266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               non-continuation payload
+
003 TX OCTETS: 80
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 FAIL CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 18
+
007 TX OCTETS: 6e
+
008 TX OCTETS: 6f
+
009 TX OCTETS: 6e
+
010 TX OCTETS: 2d
+
011 TX OCTETS: 63
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 6e
+
014 TX OCTETS: 74
+
015 TX OCTETS: 69
+
016 TX OCTETS: 6e
+
017 TX OCTETS: 75
+
018 TX OCTETS: 61
+
019 TX OCTETS: 74
+
020 TX OCTETS: 69
+
021 TX OCTETS: 6f
+
022 TX OCTETS: 6e
+
023 TX OCTETS: 20
+
024 TX OCTETS: 70
+
025 TX OCTETS: 61
+
026 TX OCTETS: 79
+
027 TX OCTETS: 6c
+
028 TX OCTETS: 6f
+
029 TX OCTETS: 61
+
030 TX OCTETS: 64
+
031 TX OCTETS: 81
+
032 TX OCTETS: 0d
+
033 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_11.json b/autobahn/client/tungstenite_case_5_11.json new file mode 100644 index 0000000..362aa23 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_11.json @@ -0,0 +1,329 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 55, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in octet-wise chops.", + "droppedByMe": false, + "duration": 2, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=55&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: PELS9pHDybDELZ3GD/MGFQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1LSGDxsZeCObSlOMnvZQz+yMKOI=\r\n\r\n", + "id": "5.11", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.573Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "1": 28, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3535266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + true, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "80" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "18" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "63" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "75" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_12.html b/autobahn/client/tungstenite_case_5_12.html new file mode 100644 index 0000000..f9a92ed --- /dev/null +++ b/autobahn/client/tungstenite_case_5_12.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.12 : Pass - 0 ms @ 2025-09-11T20:05:44.576Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=56&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 044HBhUNXJca5q8nxIY3OQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4gEiGU9NUgEgSXH0XGsC9+u9JvY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
15115
26126
2061206
Total3247
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3536266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               non-continuation payload
+
003 TX OCTETS: 00186e6f6e2d636f6e74696e756174696f6e207061796c6f6164
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_12.json b/autobahn/client/tungstenite_case_5_12.json new file mode 100644 index 0000000..bea86be --- /dev/null +++ b/autobahn/client/tungstenite_case_5_12.json @@ -0,0 +1,122 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 56, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in one chop.", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=56&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 044HBhUNXJca5q8nxIY3OQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4gEiGU9NUgEgSXH0XGsC9+u9JvY=\r\n\r\n", + "id": "5.12", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.576Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "15": 1, + "26": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3536266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 26, + "00186e6f6e2d636f6e74696e756174696f6e207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_13.html b/autobahn/client/tungstenite_case_5_13.html new file mode 100644 index 0000000..fc295b1 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_13.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.13 : Pass - 0 ms @ 2025-09-11T20:05:44.577Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in per-frame chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=57&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: DNl2HMTpoNf3U6Ej8+rTOw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: S/9fjjPBb7AEOnlhqCgBsq5DUXY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
15115
26126
2061206
Total3247
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3537266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               non-continuation payload
+
003 TX OCTETS: 00186e6f6e2d636f6e74696e756174696f6e207061796c6f6164
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               Hello, world!
+
005 FAIL CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_13.json b/autobahn/client/tungstenite_case_5_13.json new file mode 100644 index 0000000..2412bc1 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_13.json @@ -0,0 +1,122 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 57, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in per-frame chops.", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=57&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: DNl2HMTpoNf3U6Ej8+rTOw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: S/9fjjPBb7AEOnlhqCgBsq5DUXY=\r\n\r\n", + "id": "5.13", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.577Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "15": 1, + "26": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3537266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + false, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 26, + "00186e6f6e2d636f6e74696e756174696f6e207061796c6f6164" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + true + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_14.html b/autobahn/client/tungstenite_case_5_14.html new file mode 100644 index 0000000..e0412b9 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_14.html @@ -0,0 +1,318 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.14 : Pass - 3 ms @ 2025-09-11T20:05:44.578Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in octet-wise chops.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=58&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: R8zkFoI15lorObfepW+V9g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: qOSD3qHuP7j7kSUawyDcUzeME+8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
12828
2061206
Total29234
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3538266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               non-continuation payload
+
003 TX OCTETS: 00
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               Hello, world!
+
005 FAIL CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 18
+
007 TX OCTETS: 6e
+
008 TX OCTETS: 6f
+
009 TX OCTETS: 6e
+
010 TX OCTETS: 2d
+
011 TX OCTETS: 63
+
012 TX OCTETS: 6f
+
013 TX OCTETS: 6e
+
014 TX OCTETS: 74
+
015 TX OCTETS: 69
+
016 TX OCTETS: 6e
+
017 TX OCTETS: 75
+
018 TX OCTETS: 61
+
019 TX OCTETS: 74
+
020 TX OCTETS: 69
+
021 TX OCTETS: 6f
+
022 TX OCTETS: 6e
+
023 TX OCTETS: 20
+
024 TX OCTETS: 70
+
025 TX OCTETS: 61
+
026 TX OCTETS: 79
+
027 TX OCTETS: 6c
+
028 TX OCTETS: 6f
+
029 TX OCTETS: 61
+
030 TX OCTETS: 64
+
031 TX OCTETS: 81
+
032 TX OCTETS: 0d
+
033 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_14.json b/autobahn/client/tungstenite_case_5_14.json new file mode 100644 index 0000000..676c8d9 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_14.json @@ -0,0 +1,329 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 58, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = false, where there is nothing to continue, sent in octet-wise chops.", + "droppedByMe": false, + "duration": 3, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=58&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: R8zkFoI15lorObfepW+V9g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: qOSD3qHuP7j7kSUawyDcUzeME+8=\r\n\r\n", + "id": "5.14", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.578Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "1": 28, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3538266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + false, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "00" + ], + true + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + 1, + false + ], + [ + "KL", + 1 + ], + [ + "TO", + [ + 1, + "18" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "2d" + ], + true + ], + [ + "TO", + [ + 1, + "63" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "75" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "81" + ], + true + ], + [ + "TO", + [ + 1, + "0d" + ], + true + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_15.html b/autobahn/client/tungstenite_case_5_15.html new file mode 100644 index 0000000..ef2df44 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_15.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.15 : Pass - 1 ms @ 2025-09-11T20:05:44.582Z

+

Case Description

Send text Message fragmented into 2 fragments, then Continuation Frame with FIN = false where there is nothing to continue, then unfragmented Text Message, all sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'fragment1fragment2', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'fragment1fragment2', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=59&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: K9LuNQlrmzijAC5Sup5YLA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bpLe7Rd8iFVc/28JlF4arEhnQ28=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
24124
2561256
Total2280
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11444
2061206
Total5250
+

Frames Received by Opcode

+ + + + +
OpcodeCount
11
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
02
12
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3539266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8009667261676d656e7432
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
007 TX OCTETS: 0009667261676d656e7433
+
008 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment4
+
009 TX OCTETS: 8109667261676d656e7434
+
010 FAIL CONNECTION AFTER 1.000000 sec
+
011 RX OCTETS: 8192b0346db8d6460cdfdd5103cc81521fd9d75908d6c406
+
012 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6230333436646238
+
               fragment1fragment2
+
013 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_15.json b/autobahn/client/tungstenite_case_5_15.json new file mode 100644 index 0000000..94ec3d4 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_15.json @@ -0,0 +1,200 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 59, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, then Continuation Frame with FIN = false where there is nothing to continue, then unfragmented Text Message, all sent in one chop.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=59&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: K9LuNQlrmzijAC5Sup5YLA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bpLe7Rd8iFVc/28JlF4arEhnQ28=\r\n\r\n", + "id": "5.15", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1fragment2", + false + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1 + }, + "rxOctetStats": { + "24": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.582Z", + "trafficStats": null, + "txFrameStats": { + "0": 2, + "1": 2 + }, + "txOctetStats": { + "11": 4, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3539266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7433" + ], + false + ], + [ + "TF", + [ + 9, + "fragment4" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8109667261676d656e7434" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 24, + "8192b0346db8d6460cdfdd5103cc81521fd9d75908d6c406" + ] + ], + [ + "RF", + [ + 18, + "fragment1fragment2" + ], + 1, + true, + 0, + true, + "b0346db8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_16.html b/autobahn/client/tungstenite_case_5_16.html new file mode 100644 index 0000000..27f3296 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_16.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.16 : Pass - 1 ms @ 2025-09-11T20:05:44.584Z

+

Case Description

Repeated 2x: Continuation Frame with FIN = false (where there is nothing to continue), then text Message fragmented into 2 fragments.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=60&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Ytj+FkEe2auUyun6tITvQQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: bno1EePVU+7O78pFiiYM28s+Yg4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11666
2061206
Total7272
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
04
12
Total6
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3630266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0009667261676d656e7431
+
004 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 0109667261676d656e7432
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
007 TX OCTETS: 8009667261676d656e7433
+
008 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
009 TX OCTETS: 0009667261676d656e7431
+
010 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
011 TX OCTETS: 0109667261676d656e7432
+
012 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
013 TX OCTETS: 8009667261676d656e7433
+
014 FAIL CONNECTION AFTER 1.000000 sec
+
015 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_16.json b/autobahn/client/tungstenite_case_5_16.json new file mode 100644 index 0000000..f1a2a08 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_16.json @@ -0,0 +1,209 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 60, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Repeated 2x: Continuation Frame with FIN = false (where there is nothing to continue), then text Message fragmented into 2 fragments.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=60&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Ytj+FkEe2auUyun6tITvQQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: bno1EePVU+7O78pFiiYM28s+Yg4=\r\n\r\n", + "id": "5.16", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.584Z", + "trafficStats": null, + "txFrameStats": { + "0": 4, + "1": 2 + }, + "txOctetStats": { + "11": 6, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3630266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7433" + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7433" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_17.html b/autobahn/client/tungstenite_case_5_17.html new file mode 100644 index 0000000..0478001 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_17.html @@ -0,0 +1,304 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.17 : Pass - 1 ms @ 2025-09-11T20:05:44.585Z

+

Case Description

Repeated 2x: Continuation Frame with FIN = true (where there is nothing to continue), then text Message fragmented into 2 fragments.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=61&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: dKNmScaBoF/p0B9p3QYG/g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2KUPXO0J2s0M3q12v7wtitIo4mE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11666
2061206
Total7272
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
04
12
Total6
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3631266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 8009667261676d656e7431
+
004 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 0109667261676d656e7432
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
007 TX OCTETS: 8009667261676d656e7433
+
008 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
009 TX OCTETS: 8009667261676d656e7431
+
010 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
011 TX OCTETS: 0109667261676d656e7432
+
012 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
013 TX OCTETS: 8009667261676d656e7433
+
014 FAIL CONNECTION AFTER 1.000000 sec
+
015 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_17.json b/autobahn/client/tungstenite_case_5_17.json new file mode 100644 index 0000000..6d9d5fd --- /dev/null +++ b/autobahn/client/tungstenite_case_5_17.json @@ -0,0 +1,209 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 61, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Repeated 2x: Continuation Frame with FIN = true (where there is nothing to continue), then text Message fragmented into 2 fragments.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=61&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dKNmScaBoF/p0B9p3QYG/g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2KUPXO0J2s0M3q12v7wtitIo4mE=\r\n\r\n", + "id": "5.17", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.585Z", + "trafficStats": null, + "txFrameStats": { + "0": 4, + "1": 2 + }, + "txOctetStats": { + "11": 6, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3631266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7433" + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7433" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_18.html b/autobahn/client/tungstenite_case_5_18.html new file mode 100644 index 0000000..b7e0f4c --- /dev/null +++ b/autobahn/client/tungstenite_case_5_18.html @@ -0,0 +1,291 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.18 : Pass - 1 ms @ 2025-09-11T20:05:44.587Z

+

Case Description

Send text Message fragmented into 2 fragments, with both frame opcodes set to text, sent in one chop.

+

Case Expectation

The connection is failed immediately, since all data frames after the initial data frame must have opcode 0.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=62&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: e4ME+9YP6nGVXebYUwJ2Ew==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PV9/kf5rYXXmN/T3f5FDTIu4rW4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11222
2061206
Total3228
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
12
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3632266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8109667261676d656e7432
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_18.json b/autobahn/client/tungstenite_case_5_18.json new file mode 100644 index 0000000..325e032 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_18.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 62, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, with both frame opcodes set to text, sent in one chop.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since all data frames after the initial data frame must have opcode 0.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=62&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: e4ME+9YP6nGVXebYUwJ2Ew==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PV9/kf5rYXXmN/T3f5FDTIu4rW4=\r\n\r\n", + "id": "5.18", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.587Z", + "trafficStats": null, + "txFrameStats": { + "1": 2 + }, + "txOctetStats": { + "11": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3632266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8109667261676d656e7432" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_19.html b/autobahn/client/tungstenite_case_5_19.html new file mode 100644 index 0000000..586f848 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_19.html @@ -0,0 +1,338 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.19 : Pass - 1005 ms @ 2025-09-11T20:05:44.588Z

+

Case Description

A fragmented text message is sent in multiple frames. After + sending the first 2 frames of the text message, a Ping is sent. Then we wait 1s, + then we send 2 more text fragments, another Ping and then the final text fragment. + Everything is legal.

+

Case Expectation

The peer immediately answers the first Ping before + it has received the last text message fragment. The peer pong's back the Ping's + payload exactly, and echo's the payload of the fragmented message back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'pongme 1!'), ('pong', u'pongme 2!'), ('message', u'fragment1fragment2fragment3fragment4fragment5', False)]}

+ Observed:
[('pong', u'pongme 1!'), ('pong', u'pongme 2!'), ('message', u'fragment1fragment2fragment3fragment4fragment5', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=63&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: I0ZJ+oj3GclOeokQgdAFwQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UBfhiPhKp6+vNdbOf50YTnIS3+Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
15115
66166
2561256
Total4345
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
11777
2061206
Total9287
+

Frames Received by Opcode

+ + + + + + +
OpcodeCount
11
81
102
Total4
+

Frames Transmitted by Opcode

+ + + + + + + +
OpcodeCount
04
11
81
92
Total8
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3633266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 0009667261676d656e7432
+
006 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               pongme 1!
+
007 TX OCTETS: 8909706f6e676d65203121
+
008 DELAY 1.000000 sec for TAG None
+
009 RX OCTETS: 8a8914f471d4649b1fb3799151e535
+
010 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3134663437316434
+
               pongme 1!
+
011 DELAY TIMEOUT on TAG None
+
012 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment3
+
013 TX OCTETS: 0009667261676d656e7433
+
014 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment4
+
015 TX OCTETS: 0009667261676d656e7434
+
016 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               pongme 2!
+
017 TX OCTETS: 8909706f6e676d65203221
+
018 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment5
+
019 TX OCTETS: 8009667261676d656e7435
+
020 CLOSE CONNECTION AFTER 1.000000 sec
+
021 RX OCTETS: 8a891957093a6938675d743229083881ad75fd2e99138f4ffe189840ed449b5cf812904bf701cf48eb149a43fc1b891dff07
+
               9c49f410935aad138f4ffe189840 ...
+
022 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3139353730393361
+
               pongme 2!
+
023 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=45, MASKED=True, MASK=3735666432653939
+
               fragment1fragment2fragment3fragment4fragment5
+
024 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
025 TX OCTETS: 880203e8
+
026 RX OCTETS: 8882f6870dbff56f
+
027 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6636383730646266
+
               0x03e8
+
028 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_19.json b/autobahn/client/tungstenite_case_5_19.json new file mode 100644 index 0000000..b0f6569 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_19.json @@ -0,0 +1,369 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 63, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "A fragmented text message is sent in multiple frames. After\n sending the first 2 frames of the text message, a Ping is sent. Then we wait 1s,\n then we send 2 more text fragments, another Ping and then the final text fragment.\n Everything is legal.", + "droppedByMe": true, + "duration": 1005, + "expectation": "The peer immediately answers the first Ping before\n it has received the last text message fragment. The peer pong's back the Ping's\n payload exactly, and echo's the payload of the fragmented message back to us.", + "expected": { + "OK": [ + [ + "pong", + "pongme 1!" + ], + [ + "pong", + "pongme 2!" + ], + [ + "message", + "fragment1fragment2fragment3fragment4fragment5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=63&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: I0ZJ+oj3GclOeokQgdAFwQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UBfhiPhKp6+vNdbOf50YTnIS3+Y=\r\n\r\n", + "id": "5.19", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "pongme 1!" + ], + [ + "pong", + "pongme 2!" + ], + [ + "message", + "fragment1fragment2fragment3fragment4fragment5", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1, + "10": 2 + }, + "rxOctetStats": { + "8": 1, + "15": 1, + "66": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.588Z", + "trafficStats": null, + "txFrameStats": { + "0": 4, + "1": 1, + "8": 1, + "9": 2 + }, + "txOctetStats": { + "4": 1, + "11": 7, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3633266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7432" + ], + false + ], + [ + "TF", + [ + 9, + "pongme 1!" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8909706f6e676d65203121" + ], + false + ], + [ + "CT", + 1, + null + ], + [ + "RO", + [ + 15, + "8a8914f471d4649b1fb3799151e535" + ] + ], + [ + "RF", + [ + 9, + "pongme 1!" + ], + 10, + true, + 0, + true, + "14f471d4" + ], + [ + "CTE", + null + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7433" + ], + false + ], + [ + "TF", + [ + 9, + "fragment4" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0009667261676d656e7434" + ], + false + ], + [ + "TF", + [ + 9, + "pongme 2!" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8909706f6e676d65203221" + ], + false + ], + [ + "TF", + [ + 9, + "fragment5" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7435" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 66, + "8a891957093a6938675d743229083881ad75fd2e99138f4ffe189840ed449b5cf812904bf701cf48eb149a43fc1b891dff079c49f410935aad138f4ffe189840 ..." + ] + ], + [ + "RF", + [ + 9, + "pongme 2!" + ], + 10, + true, + 0, + true, + "1957093a" + ], + [ + "RF", + [ + 45, + "fragment1fragment2fragment3fragment4fragment5" + ], + 1, + true, + 0, + true, + "75fd2e99" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f6870dbff56f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f6870dbf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_2.html b/autobahn/client/tungstenite_case_5_2.html new file mode 100644 index 0000000..6e53357 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_2.html @@ -0,0 +1,292 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.2 : Pass - 1 ms @ 2025-09-11T20:05:44.540Z

+

Case Description

Send Pong fragmented into 2 fragments.

+

Case Expectation

Connection is failed immediately, since control message MUST NOT be fragmented.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=46&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: +P9d/rtQVR1hqmhxfB88vw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: FvT8uvl5ciA/J+rF+UbeGgZeYC8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
11222
2061206
Total3228
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
101
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3436266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=10, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0a09667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8009667261676d656e7432
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_2.json b/autobahn/client/tungstenite_case_5_2.json new file mode 100644 index 0000000..1664130 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_2.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 46, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send Pong fragmented into 2 fragments.", + "droppedByMe": false, + "duration": 1, + "expectation": "Connection is failed immediately, since control message MUST NOT be fragmented.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=46&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: +P9d/rtQVR1hqmhxfB88vw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: FvT8uvl5ciA/J+rF+UbeGgZeYC8=\r\n\r\n", + "id": "5.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.540Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "10": 1 + }, + "txOctetStats": { + "11": 2, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3436266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 10, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0a09667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_20.html b/autobahn/client/tungstenite_case_5_20.html new file mode 100644 index 0000000..ad1cfa2 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_20.html @@ -0,0 +1,337 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.20 : Pass - 1004 ms @ 2025-09-11T20:05:45.596Z

+

Case Description

Same as Case 5.19, but send all frames with SYNC = True. + Note, this does not change the octets sent in any way, only how the stream + is chopped up on the wire.

+

Case Expectation

Same as Case 5.19. Implementations must be agnostic to how + octet stream is chopped up on wire (must be TCP clean).

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'pongme 1!'), ('pong', u'pongme 2!'), ('message', u'fragment1fragment2fragment3fragment4fragment5', False)]}

+ Observed:
[('pong', u'pongme 1!'), ('pong', u'pongme 2!'), ('message', u'fragment1fragment2fragment3fragment4fragment5', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=64&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: xkvuczusbgjcVdPwGF2i/A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: b/pJq8yj2e4sEyYzYcUUeGCxwMw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
15230
51151
2561256
Total5345
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
11777
2061206
Total9287
+

Frames Received by Opcode

+ + + + + + +
OpcodeCount
11
81
102
Total4
+

Frames Transmitted by Opcode

+ + + + + + + +
OpcodeCount
04
11
81
92
Total8
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3634266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment2
+
005 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               pongme 1!
+
006 DELAY 1.000000 sec for TAG None
+
007 TX OCTETS: 0009667261676d656e7432
+
008 TX OCTETS: 8909706f6e676d65203121
+
009 RX OCTETS: 8a89189603be68f96dd975f3238f39
+
010 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3138393630336265
+
               pongme 1!
+
011 DELAY TIMEOUT on TAG None
+
012 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment3
+
013 TX OCTETS: 0009667261676d656e7433
+
014 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment4
+
015 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               pongme 2!
+
016 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment5
+
017 CLOSE CONNECTION AFTER 1.000000 sec
+
018 TX OCTETS: 0009667261676d656e7434
+
019 TX OCTETS: 8909706f6e676d65203221
+
020 TX OCTETS: 8009667261676d656e7435
+
021 RX OCTETS: 8a89646f4ea7140020c0090a6e9545
+
022 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3634366634656137
+
               pongme 2!
+
023 RX OCTETS: 81adb1d4408cd7a621ebdcb12ef880b232edd6b925e2c5e626fed0b32de9dfa073eac3b527e1d4ba34b8d7a621ebdcb12ef8
+
               84
+
024 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=45, MASKED=True, MASK=6231643434303863
+
               fragment1fragment2fragment3fragment4fragment5
+
025 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
026 TX OCTETS: 880203e8
+
027 RX OCTETS: 888236a848fc3540
+
028 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3336613834386663
+
               0x03e8
+
029 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_20.json b/autobahn/client/tungstenite_case_5_20.json new file mode 100644 index 0000000..76ada21 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_20.json @@ -0,0 +1,376 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 64, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Same as Case 5.19, but send all frames with SYNC = True.\n Note, this does not change the octets sent in any way, only how the stream\n is chopped up on the wire.", + "droppedByMe": true, + "duration": 1004, + "expectation": "Same as Case 5.19. Implementations must be agnostic to how\n octet stream is chopped up on wire (must be TCP clean).", + "expected": { + "OK": [ + [ + "pong", + "pongme 1!" + ], + [ + "pong", + "pongme 2!" + ], + [ + "message", + "fragment1fragment2fragment3fragment4fragment5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=64&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: xkvuczusbgjcVdPwGF2i/A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: b/pJq8yj2e4sEyYzYcUUeGCxwMw=\r\n\r\n", + "id": "5.20", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "pongme 1!" + ], + [ + "pong", + "pongme 2!" + ], + [ + "message", + "fragment1fragment2fragment3fragment4fragment5", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1, + "10": 2 + }, + "rxOctetStats": { + "8": 1, + "15": 2, + "51": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:45.596Z", + "trafficStats": null, + "txFrameStats": { + "0": 4, + "1": 1, + "8": 1, + "9": 2 + }, + "txOctetStats": { + "4": 1, + "11": 7, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3634266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + true + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + false, + 0, + null, + null, + null, + true + ], + [ + "TF", + [ + 9, + "pongme 1!" + ], + 9, + true, + 0, + null, + null, + null, + true + ], + [ + "CT", + 1, + null + ], + [ + "TO", + [ + 11, + "0009667261676d656e7432" + ], + true + ], + [ + "TO", + [ + 11, + "8909706f6e676d65203121" + ], + true + ], + [ + "RO", + [ + 15, + "8a89189603be68f96dd975f3238f39" + ] + ], + [ + "RF", + [ + 9, + "pongme 1!" + ], + 10, + true, + 0, + true, + "189603be" + ], + [ + "CTE", + null + ], + [ + "TF", + [ + 9, + "fragment3" + ], + 0, + false, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 11, + "0009667261676d656e7433" + ], + true + ], + [ + "TF", + [ + 9, + "fragment4" + ], + 0, + false, + 0, + null, + null, + null, + true + ], + [ + "TF", + [ + 9, + "pongme 2!" + ], + 9, + true, + 0, + null, + null, + null, + true + ], + [ + "TF", + [ + 9, + "fragment5" + ], + 0, + true, + 0, + null, + null, + null, + true + ], + [ + "TI", + 1 + ], + [ + "TO", + [ + 11, + "0009667261676d656e7434" + ], + true + ], + [ + "TO", + [ + 11, + "8909706f6e676d65203221" + ], + true + ], + [ + "TO", + [ + 11, + "8009667261676d656e7435" + ], + true + ], + [ + "RO", + [ + 15, + "8a89646f4ea7140020c0090a6e9545" + ] + ], + [ + "RF", + [ + 9, + "pongme 2!" + ], + 10, + true, + 0, + true, + "646f4ea7" + ], + [ + "RO", + [ + 51, + "81adb1d4408cd7a621ebdcb12ef880b232edd6b925e2c5e626fed0b32de9dfa073eac3b527e1d4ba34b8d7a621ebdcb12ef884" + ] + ], + [ + "RF", + [ + 45, + "fragment1fragment2fragment3fragment4fragment5" + ], + 1, + true, + 0, + true, + "b1d4408c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888236a848fc3540" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "36a848fc" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_3.html b/autobahn/client/tungstenite_case_5_3.html new file mode 100644 index 0000000..7421c1f --- /dev/null +++ b/autobahn/client/tungstenite_case_5_3.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.3 : Pass - 1 ms @ 2025-09-11T20:05:44.541Z

+

Case Description

Send text Message fragmented into 2 fragments.

+

Case Expectation

Message is processed and echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'fragment1fragment2', False)]}

+ Observed:
[('message', u'fragment1fragment2', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=47&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: MHdpYsOsCKZbwV/S6GSXgA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: aRoJ5bCYxx2fSrySsv7yhkjPfRw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
24124
2561256
Total3288
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
11222
2061206
Total4232
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
81
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3437266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
005 TX OCTETS: 8009667261676d656e7432
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 81923da322b45bd143d350c64cc00cc550d55ace47da4991
+
008 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=3364613332326234
+
               fragment1fragment2
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
010 TX OCTETS: 880203e8
+
011 RX OCTETS: 8882105bcad813b3
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3130356263616438
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_3.json b/autobahn/client/tungstenite_case_5_3.json new file mode 100644 index 0000000..2ab9604 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_3.json @@ -0,0 +1,200 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 47, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments.", + "droppedByMe": true, + "duration": 1, + "expectation": "Message is processed and echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=47&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: MHdpYsOsCKZbwV/S6GSXgA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: aRoJ5bCYxx2fSrySsv7yhkjPfRw=\r\n\r\n", + "id": "5.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1fragment2", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "24": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.541Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "11": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3437266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 24, + "81923da322b45bd143d350c64cc00cc550d55ace47da4991" + ] + ], + [ + "RF", + [ + 18, + "fragment1fragment2" + ], + 1, + true, + 0, + true, + "3da322b4" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882105bcad813b3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "105bcad8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_4.html b/autobahn/client/tungstenite_case_5_4.html new file mode 100644 index 0000000..bade6f6 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_4.html @@ -0,0 +1,307 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.4 : Pass - 1 ms @ 2025-09-11T20:05:44.543Z

+

Case Description

Send text Message fragmented into 2 fragments, octets are sent in frame-wise chops.

+

Case Expectation

Message is processed and echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'fragment1fragment2', False)]}

+ Observed:
[('message', u'fragment1fragment2', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=48&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /ZwAL7y/i3G1Kd6vT91uJg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: LsrhAl4y4zBg+KSANCiqmjI+0dk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
24124
2561256
Total3288
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
11222
2061206
Total4232
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
81
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3438266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment2
+
005 CLOSE CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 8009667261676d656e7432
+
007 RX OCTETS: 81926435a48e0247c5e90950cafa5553d6ef0358c1e01007
+
008 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=3634333561343865
+
               fragment1fragment2
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
010 TX OCTETS: 880203e8
+
011 RX OCTETS: 88826ff64e326c1e
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3666663634653332
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_4.json b/autobahn/client/tungstenite_case_5_4.json new file mode 100644 index 0000000..1d9161b --- /dev/null +++ b/autobahn/client/tungstenite_case_5_4.json @@ -0,0 +1,200 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 48, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, octets are sent in frame-wise chops.", + "droppedByMe": true, + "duration": 1, + "expectation": "Message is processed and echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=48&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /ZwAL7y/i3G1Kd6vT91uJg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: LsrhAl4y4zBg+KSANCiqmjI+0dk=\r\n\r\n", + "id": "5.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1fragment2", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "24": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.543Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "11": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3438266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + true + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + true + ], + [ + "TI", + 1 + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + true + ], + [ + "RO", + [ + 24, + "81926435a48e0247c5e90950cafa5553d6ef0358c1e01007" + ] + ], + [ + "RF", + [ + 18, + "fragment1fragment2" + ], + 1, + true, + 0, + true, + "6435a48e" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826ff64e326c1e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6ff64e32" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_5.html b/autobahn/client/tungstenite_case_5_5.html new file mode 100644 index 0000000..a25503e --- /dev/null +++ b/autobahn/client/tungstenite_case_5_5.html @@ -0,0 +1,327 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.5 : Pass - 5 ms @ 2025-09-11T20:05:44.546Z

+

Case Description

Send text Message fragmented into 2 fragments, octets are sent in octet-wise chops.

+

Case Expectation

Message is processed and echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'fragment1fragment2', False)]}

+ Observed:
[('message', u'fragment1fragment2', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=49&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: F0Eun92opMABoLtNM6SmhQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WzunQ/PVPCjCeo+JArL/5qT/hzQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
24124
2561256
Total3288
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
12222
414
2061206
Total24232
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
81
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3439266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               fragment1
+
003 TX OCTETS: 01
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               fragment2
+
005 CLOSE CONNECTION AFTER 1.000000 sec
+
006 TX OCTETS: 09
+
007 TX OCTETS: 66
+
008 TX OCTETS: 72
+
009 TX OCTETS: 61
+
010 TX OCTETS: 67
+
011 TX OCTETS: 6d
+
012 TX OCTETS: 65
+
013 TX OCTETS: 6e
+
014 TX OCTETS: 74
+
015 TX OCTETS: 31
+
016 TX OCTETS: 80
+
017 TX OCTETS: 09
+
018 TX OCTETS: 66
+
019 TX OCTETS: 72
+
020 TX OCTETS: 61
+
021 TX OCTETS: 67
+
022 TX OCTETS: 6d
+
023 TX OCTETS: 65
+
024 TX OCTETS: 6e
+
025 TX OCTETS: 74
+
026 TX OCTETS: 32
+
027 RX OCTETS: 8192b3e563bfd59702d8de800dcb828311ded48806d1c7d7
+
028 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6233653536336266
+
               fragment1fragment2
+
029 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
030 TX OCTETS: 880203e8
+
031 RX OCTETS: 88824aeeef0f4906
+
032 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3461656565663066
+
               0x03e8
+
033 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_5.json b/autobahn/client/tungstenite_case_5_5.json new file mode 100644 index 0000000..6742884 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_5.json @@ -0,0 +1,360 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 49, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, octets are sent in octet-wise chops.", + "droppedByMe": true, + "duration": 5, + "expectation": "Message is processed and echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=49&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: F0Eun92opMABoLtNM6SmhQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WzunQ/PVPCjCeo+JArL/5qT/hzQ=\r\n\r\n", + "id": "5.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "fragment1fragment2", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "24": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.546Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "1": 22, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3439266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "01" + ], + true + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + 1, + false + ], + [ + "TI", + 1 + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "66" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "6d" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "31" + ], + true + ], + [ + "TO", + [ + 1, + "80" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "66" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "6d" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "32" + ], + true + ], + [ + "RO", + [ + 24, + "8192b3e563bfd59702d8de800dcb828311ded48806d1c7d7" + ] + ], + [ + "RF", + [ + 18, + "fragment1fragment2" + ], + 1, + true, + 0, + true, + "b3e563bf" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824aeeef0f4906" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4aeeef0f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_6.html b/autobahn/client/tungstenite_case_5_6.html new file mode 100644 index 0000000..85a2d34 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_6.html @@ -0,0 +1,315 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.6 : Pass - 2 ms @ 2025-09-11T20:05:44.552Z

+

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'ping payload'), ('message', u'fragment1fragment2', False)]}

+ Observed:
[('pong', u'ping payload'), ('message', u'fragment1fragment2', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=50&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: J/+vtlsA3geHXyyx0FMkOg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: b89pyu6/eN6UnFkUVqgGVoow4f0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
42142
2561256
Total3306
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
11222
14114
2061206
Total5246
+

Frames Received by Opcode

+ + + + + + +
OpcodeCount
11
81
101
Total3
+

Frames Transmitted by Opcode

+ + + + + + + +
OpcodeCount
01
11
81
91
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3530266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ping payload
+
005 TX OCTETS: 890c70696e67207061796c6f6164
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
007 TX OCTETS: 8009667261676d656e7432
+
008 CLOSE CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 8a8c24328f9c545be1fb0442eee5485deef88192e07d90d9860ff1be8d18feadd11be2b88710f5b7944f
+
010 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3234333238663963
+
               ping payload
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6530376439306439
+
               fragment1fragment2
+
012 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
013 TX OCTETS: 880203e8
+
014 RX OCTETS: 88820c104acc0ff8
+
015 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3063313034616363
+
               0x03e8
+
016 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_6.json b/autobahn/client/tungstenite_case_5_6.json new file mode 100644 index 0000000..a975d8f --- /dev/null +++ b/autobahn/client/tungstenite_case_5_6.json @@ -0,0 +1,245 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 50, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, one ping with payload in-between.", + "droppedByMe": true, + "duration": 2, + "expectation": "A pong is received, then the message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "pong", + "ping payload" + ], + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=50&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: J/+vtlsA3geHXyyx0FMkOg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: b89pyu6/eN6UnFkUVqgGVoow4f0=\r\n\r\n", + "id": "5.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "ping payload" + ], + [ + "message", + "fragment1fragment2", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1, + "10": 1 + }, + "rxOctetStats": { + "8": 1, + "42": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.552Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "8": 1, + "9": 1 + }, + "txOctetStats": { + "4": 1, + "11": 2, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3530266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 12, + "ping payload" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "890c70696e67207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 42, + "8a8c24328f9c545be1fb0442eee5485deef88192e07d90d9860ff1be8d18feadd11be2b88710f5b7944f" + ] + ], + [ + "RF", + [ + 12, + "ping payload" + ], + 10, + true, + 0, + true, + "24328f9c" + ], + [ + "RF", + [ + 18, + "fragment1fragment2" + ], + 1, + true, + 0, + true, + "e07d90d9" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820c104acc0ff8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0c104acc" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_7.html b/autobahn/client/tungstenite_case_5_7.html new file mode 100644 index 0000000..b95f463 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_7.html @@ -0,0 +1,315 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.7 : Pass - 1 ms @ 2025-09-11T20:05:44.556Z

+

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in frame-wise chops.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'ping payload'), ('message', u'fragment1fragment2', False)]}

+ Observed:
[('pong', u'ping payload'), ('message', u'fragment1fragment2', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=51&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: mB+YI65kzbyc69kHsqJ89g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: yF0q5zIJ1V7Sv0mWtmta1ryOwKY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
42142
2561256
Total3306
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
11222
14114
2061206
Total5246
+

Frames Received by Opcode

+ + + + + + +
OpcodeCount
11
81
101
Total3
+

Frames Transmitted by Opcode

+ + + + + + + +
OpcodeCount
01
11
81
91
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3531266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               ping payload
+
005 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=True
+
               fragment2
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 890c70696e67207061796c6f6164
+
008 TX OCTETS: 8009667261676d656e7432
+
009 RX OCTETS: 8a8c9a0c44bdea652adaba7c25c4f66325d98192d5c518a4b3b779c3b8a076d0e4a36ac5b2a87dcaa1f7
+
010 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3961306334346264
+
               ping payload
+
011 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6435633531386134
+
               fragment1fragment2
+
012 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
013 TX OCTETS: 880203e8
+
014 RX OCTETS: 8882d3ba12d2d052
+
015 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6433626131326432
+
               0x03e8
+
016 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_7.json b/autobahn/client/tungstenite_case_5_7.json new file mode 100644 index 0000000..3076d6a --- /dev/null +++ b/autobahn/client/tungstenite_case_5_7.json @@ -0,0 +1,245 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 51, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in frame-wise chops.", + "droppedByMe": true, + "duration": 1, + "expectation": "A pong is received, then the message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "pong", + "ping payload" + ], + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=51&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: mB+YI65kzbyc69kHsqJ89g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: yF0q5zIJ1V7Sv0mWtmta1ryOwKY=\r\n\r\n", + "id": "5.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "ping payload" + ], + [ + "message", + "fragment1fragment2", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1, + "10": 1 + }, + "rxOctetStats": { + "8": 1, + "42": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.556Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "8": 1, + "9": 1 + }, + "txOctetStats": { + "4": 1, + "11": 2, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3531266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + true + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + true + ], + [ + "TF", + [ + 12, + "ping payload" + ], + 9, + true, + 0, + null, + null, + null, + true + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + true + ], + [ + "TI", + 1 + ], + [ + "TO", + [ + 14, + "890c70696e67207061796c6f6164" + ], + true + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + true + ], + [ + "RO", + [ + 42, + "8a8c9a0c44bdea652adaba7c25c4f66325d98192d5c518a4b3b779c3b8a076d0e4a36ac5b2a87dcaa1f7" + ] + ], + [ + "RF", + [ + 12, + "ping payload" + ], + 10, + true, + 0, + true, + "9a0c44bd" + ], + [ + "RF", + [ + 18, + "fragment1fragment2" + ], + 1, + true, + 0, + true, + "d5c518a4" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d3ba12d2d052" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d3ba12d2" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_8.html b/autobahn/client/tungstenite_case_5_8.html new file mode 100644 index 0000000..2b409c8 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_8.html @@ -0,0 +1,349 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.8 : Pass - 10 ms @ 2025-09-11T20:05:44.558Z

+

Case Description

Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in octet-wise chops.

+

Case Expectation

A pong is received, then the message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('pong', u'ping payload'), ('message', u'fragment1fragment2', False)]}

+ Observed:
[('pong', u'ping payload'), ('message', u'fragment1fragment2', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=52&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: +hEKooBBr7+5tKfMV2EYyg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: MjzTc0yKWUboVQjkXp9Zy45BQas=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
18118
24124
2561256
Total4306
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
13636
414
2061206
Total38246
+

Frames Received by Opcode

+ + + + + + +
OpcodeCount
11
81
101
Total3
+

Frames Transmitted by Opcode

+ + + + + + + +
OpcodeCount
01
11
81
91
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3532266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               fragment1
+
003 TX OCTETS: 01
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               ping payload
+
005 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=1, SYNC=False
+
               fragment2
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 TX OCTETS: 09
+
008 TX OCTETS: 66
+
009 TX OCTETS: 72
+
010 TX OCTETS: 61
+
011 TX OCTETS: 67
+
012 TX OCTETS: 6d
+
013 TX OCTETS: 65
+
014 TX OCTETS: 6e
+
015 TX OCTETS: 74
+
016 TX OCTETS: 31
+
017 TX OCTETS: 89
+
018 TX OCTETS: 0c
+
019 TX OCTETS: 70
+
020 TX OCTETS: 69
+
021 TX OCTETS: 6e
+
022 TX OCTETS: 67
+
023 TX OCTETS: 20
+
024 TX OCTETS: 70
+
025 TX OCTETS: 61
+
026 TX OCTETS: 79
+
027 TX OCTETS: 6c
+
028 TX OCTETS: 6f
+
029 TX OCTETS: 61
+
030 TX OCTETS: 64
+
031 TX OCTETS: 80
+
032 TX OCTETS: 09
+
033 RX OCTETS: 8a8c38cb8edc48a2e0bb18bbefa554a4efb8
+
034 RX FRAME : OPCODE=10, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3338636238656463
+
               ping payload
+
035 TX OCTETS: 66
+
036 TX OCTETS: 72
+
037 TX OCTETS: 61
+
038 TX OCTETS: 67
+
039 TX OCTETS: 6d
+
040 TX OCTETS: 65
+
041 TX OCTETS: 6e
+
042 TX OCTETS: 74
+
043 TX OCTETS: 32
+
044 RX OCTETS: 8192d83d36d7be4f57b0b55858a3e95b44b6bf5053b9ac0f
+
045 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=18, MASKED=True, MASK=6438336433366437
+
               fragment1fragment2
+
046 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
047 TX OCTETS: 880203e8
+
048 RX OCTETS: 8882bb1203adb8fa
+
049 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6262313230336164
+
               0x03e8
+
050 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_8.json b/autobahn/client/tungstenite_case_5_8.json new file mode 100644 index 0000000..c5d377e --- /dev/null +++ b/autobahn/client/tungstenite_case_5_8.json @@ -0,0 +1,516 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 52, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text Message fragmented into 2 fragments, one ping with payload in-between. Octets are sent in octet-wise chops.", + "droppedByMe": true, + "duration": 10, + "expectation": "A pong is received, then the message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "pong", + "ping payload" + ], + [ + "message", + "fragment1fragment2", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=52&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: +hEKooBBr7+5tKfMV2EYyg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: MjzTc0yKWUboVQjkXp9Zy45BQas=\r\n\r\n", + "id": "5.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "pong", + "ping payload" + ], + [ + "message", + "fragment1fragment2", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1, + "10": 1 + }, + "rxOctetStats": { + "8": 1, + "18": 1, + "24": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:44.558Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "8": 1, + "9": 1 + }, + "txOctetStats": { + "1": 36, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3532266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + 1, + false + ], + [ + "TO", + [ + 1, + "01" + ], + true + ], + [ + "TF", + [ + 12, + "ping payload" + ], + 9, + true, + 0, + null, + null, + 1, + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + 1, + false + ], + [ + "TI", + 1 + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "TO", + [ + 1, + "66" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "6d" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "31" + ], + true + ], + [ + "TO", + [ + 1, + "89" + ], + true + ], + [ + "TO", + [ + 1, + "0c" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "69" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "20" + ], + true + ], + [ + "TO", + [ + 1, + "70" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "79" + ], + true + ], + [ + "TO", + [ + 1, + "6c" + ], + true + ], + [ + "TO", + [ + 1, + "6f" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "64" + ], + true + ], + [ + "TO", + [ + 1, + "80" + ], + true + ], + [ + "TO", + [ + 1, + "09" + ], + true + ], + [ + "RO", + [ + 18, + "8a8c38cb8edc48a2e0bb18bbefa554a4efb8" + ] + ], + [ + "RF", + [ + 12, + "ping payload" + ], + 10, + true, + 0, + true, + "38cb8edc" + ], + [ + "TO", + [ + 1, + "66" + ], + true + ], + [ + "TO", + [ + 1, + "72" + ], + true + ], + [ + "TO", + [ + 1, + "61" + ], + true + ], + [ + "TO", + [ + 1, + "67" + ], + true + ], + [ + "TO", + [ + 1, + "6d" + ], + true + ], + [ + "TO", + [ + 1, + "65" + ], + true + ], + [ + "TO", + [ + 1, + "6e" + ], + true + ], + [ + "TO", + [ + 1, + "74" + ], + true + ], + [ + "TO", + [ + 1, + "32" + ], + true + ], + [ + "RO", + [ + 24, + "8192d83d36d7be4f57b0b55858a3e95b44b6bf5053b9ac0f" + ] + ], + [ + "RF", + [ + 18, + "fragment1fragment2" + ], + 1, + true, + 0, + true, + "d83d36d7" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882bb1203adb8fa" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "bb1203ad" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_5_9.html b/autobahn/client/tungstenite_case_5_9.html new file mode 100644 index 0000000..c9e07d7 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_9.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 5.9 : Pass - 1 ms @ 2025-09-11T20:05:44.570Z

+

Case Description

Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in one chop.

+

Case Expectation

The connection is failed immediately, since there is no message to continue.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=53&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: UcwvPg/OhPpOP6ir9+3/Jw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: BnKPFD88kD5nz72RxaKGDSkHkxY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
15115
26126
2061206
Total3247
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3533266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=24, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               non-continuation payload
+
003 TX OCTETS: 80186e6f6e2d636f6e74696e756174696f6e207061796c6f6164
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello, world!
+
005 TX OCTETS: 810d48656c6c6f2c20776f726c6421
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_5_9.json b/autobahn/client/tungstenite_case_5_9.json new file mode 100644 index 0000000..46015a0 --- /dev/null +++ b/autobahn/client/tungstenite_case_5_9.json @@ -0,0 +1,122 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 53, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send unfragmented Text Message after Continuation Frame with FIN = true, where there is nothing to continue, sent in one chop.", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since there is no message to continue.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": false, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=53&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: UcwvPg/OhPpOP6ir9+3/Jw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: BnKPFD88kD5nz72RxaKGDSkHkxY=\r\n\r\n", + "id": "5.9", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:44.570Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "15": 1, + "26": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3533266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 24, + "non-continuation payload" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 26, + "80186e6f6e2d636f6e74696e756174696f6e207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 13, + "Hello, world!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d48656c6c6f2c20776f726c6421" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_10_1.html b/autobahn/client/tungstenite_case_6_10_1.html new file mode 100644 index 0000000..21dcaae --- /dev/null +++ b/autobahn/client/tungstenite_case_6_10_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.10.1 : Pass - 1 ms @ 2025-09-11T20:05:52.753Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=104&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: VBySNwcm/MC7P18tDB86CQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: m4/nW2A3kYYBvHNMu1dAD7AzmOk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313034266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf7bfbfbf
+
003 TX OCTETS: 8104f7bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_10_1.json b/autobahn/client/tungstenite_case_6_10_1.json new file mode 100644 index 0000000..4126b6d --- /dev/null +++ b/autobahn/client/tungstenite_case_6_10_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 104, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbfbf", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=104&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: VBySNwcm/MC7P18tDB86CQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: m4/nW2A3kYYBvHNMu1dAD7AzmOk=\r\n\r\n", + "id": "6.10.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.753Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313034266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf7bfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f7bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_10_2.html b/autobahn/client/tungstenite_case_6_10_2.html new file mode 100644 index 0000000..3a830b2 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_10_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.10.2 : Pass - 1 ms @ 2025-09-11T20:05:52.756Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=105&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: XImouZUfJNMhfwx9pbcrSw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: N4mFocMXL3Lwlm63PCeHTPQjb4g=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
717
2061206
Total2213
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313035266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfbbfbfbfbf
+
003 TX OCTETS: 8105fbbfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_10_2.json b/autobahn/client/tungstenite_case_6_10_2.json new file mode 100644 index 0000000..597b22f --- /dev/null +++ b/autobahn/client/tungstenite_case_6_10_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 105, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbfbf", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=105&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: XImouZUfJNMhfwx9pbcrSw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: N4mFocMXL3Lwlm63PCeHTPQjb4g=\r\n\r\n", + "id": "6.10.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.756Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "7": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313035266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xfbbfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105fbbfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_10_3.html b/autobahn/client/tungstenite_case_6_10_3.html new file mode 100644 index 0000000..1af8a07 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_10_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.10.3 : Pass - 0 ms @ 2025-09-11T20:05:52.757Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=106&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: eGbyuXLakIXMow33KsIVJQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: EolFarL+XU18PWpsvVMEQ4BkFN0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313036266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfdbfbfbfbfbf
+
003 TX OCTETS: 8106fdbfbfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_10_3.json b/autobahn/client/tungstenite_case_6_10_3.json new file mode 100644 index 0000000..b40ff2f --- /dev/null +++ b/autobahn/client/tungstenite_case_6_10_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 106, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=106&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: eGbyuXLakIXMow33KsIVJQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: EolFarL+XU18PWpsvVMEQ4BkFN0=\r\n\r\n", + "id": "6.10.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.757Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313036266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfdbfbfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fdbfbfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_11_1.html b/autobahn/client/tungstenite_case_6_11_1.html new file mode 100644 index 0000000..68e35ab --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.11.1 : Pass - 1 ms @ 2025-09-11T20:05:52.761Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xed9fbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ud7ff', False)]}

+ Observed:
[('message', u'\ud7ff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=107&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ETN2N++gjmyAqUE3P6O28w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3UPv2+WUFvGyQ6hSpQv+7bBh450=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313037266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ퟿
+
003 TX OCTETS: 8103ed9fbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818304a9ac18e93613
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3034613961633138
+
               ퟿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882b7889c77b460
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6237383839633737
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_11_1.json b/autobahn/client/tungstenite_case_6_11_1.json new file mode 100644 index 0000000..0b170cc --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 107, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xed9fbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud7ff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=107&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ETN2N++gjmyAqUE3P6O28w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3UPv2+WUFvGyQ6hSpQv+7bBh450=\r\n\r\n", + "id": "6.11.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud7ff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.761Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313037266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ud7ff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103ed9fbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "818304a9ac18e93613" + ] + ], + [ + "RF", + [ + 3, + "\ud7ff" + ], + 1, + true, + 0, + true, + "04a9ac18" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b7889c77b460" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b7889c77" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_11_2.html b/autobahn/client/tungstenite_case_6_11_2.html new file mode 100644 index 0000000..f483272 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.11.2 : Pass - 1 ms @ 2025-09-11T20:05:52.763Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xee8080

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ue000', False)]}

+ Observed:
[('message', u'\ue000', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=108&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: P3WJ6Jhp5L//+KE0vItdBw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: qxb9FlEu/B5ZkAJy2LZBTFt65qg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313038266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 8103ee8080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818347281e25a9a89e
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3437323831653235
+
               
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882e6cc93f7e524
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6536636339336637
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_11_2.json b/autobahn/client/tungstenite_case_6_11_2.json new file mode 100644 index 0000000..117f0ba --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_2.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 108, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xee8080", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ue000", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=108&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: P3WJ6Jhp5L//+KE0vItdBw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: qxb9FlEu/B5ZkAJy2LZBTFt65qg=\r\n\r\n", + "id": "6.11.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ue000", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.763Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313038266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ue000" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103ee8080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "818347281e25a9a89e" + ] + ], + [ + "RF", + [ + 3, + "\ue000" + ], + 1, + true, + 0, + true, + "47281e25" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e6cc93f7e524" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e6cc93f7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_11_3.html b/autobahn/client/tungstenite_case_6_11_3.html new file mode 100644 index 0000000..29fb239 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.11.3 : Pass - 1 ms @ 2025-09-11T20:05:52.765Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffd', False)]}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=109&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 0lGg3IlIJHPM+Vz0BYPSGA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VnUmKS0lj4GAKENqsZXDmhCD/S0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313039266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               �
+
003 TX OCTETS: 8103efbfbd
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8183c9a793df26182e
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6339613739336466
+
               �
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882404da46243a5
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3430346461343632
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_11_3.json b/autobahn/client/tungstenite_case_6_11_3.json new file mode 100644 index 0000000..9b43bf3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_3.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 109, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffd", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=109&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 0lGg3IlIJHPM+Vz0BYPSGA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VnUmKS0lj4GAKENqsZXDmhCD/S0=\r\n\r\n", + "id": "6.11.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.765Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313039266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbd" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "8183c9a793df26182e" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "c9a793df" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882404da46243a5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "404da462" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_11_4.html b/autobahn/client/tungstenite_case_6_11_4.html new file mode 100644 index 0000000..3f29a22 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_4.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.11.4 : Pass - 1 ms @ 2025-09-11T20:05:52.767Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0010ffff', False)]}

+ Observed:
[('message', u'\U0010ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=110&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ZgL+Rp7+v7NKsUsE3O4YbA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: RpD35g2TUuHEhFRaayq0XyiytJQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313130266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¿
+
003 TX OCTETS: 8104f48fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184074fe8aef3c05711
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3037346665386165
+
               ô¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882a44763eaa7af
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6134343736336561
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_11_4.json b/autobahn/client/tungstenite_case_6_11_4.json new file mode 100644 index 0000000..80fefe3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_4.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 110, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=110&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ZgL+Rp7+v7NKsUsE3O4YbA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: RpD35g2TUuHEhFRaayq0XyiytJQ=\r\n\r\n", + "id": "6.11.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.767Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313130266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f48fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184074fe8aef3c05711" + ] + ], + [ + "RF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + true, + "074fe8ae" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a44763eaa7af" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a44763ea" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_11_5.html b/autobahn/client/tungstenite_case_6_11_5.html new file mode 100644 index 0000000..6cbcf5b --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.11.5 : Pass - 1 ms @ 2025-09-11T20:05:52.768Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf4908080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=111&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: n66hjaNuPmwc95labwEKMQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: O/1fBzPQNUINv3bYHJLsEkZu/ZU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313131266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf4908080
+
003 TX OCTETS: 8104f4908080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_11_5.json b/autobahn/client/tungstenite_case_6_11_5.json new file mode 100644 index 0000000..8f215d5 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_11_5.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 111, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf4908080", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=111&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: n66hjaNuPmwc95labwEKMQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: O/1fBzPQNUINv3bYHJLsEkZu/ZU=\r\n\r\n", + "id": "6.11.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.768Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313131266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf4908080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f4908080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_12_1.html b/autobahn/client/tungstenite_case_6_12_1.html new file mode 100644 index 0000000..5b7f8c1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.12.1 : Pass - 1 ms @ 2025-09-11T20:05:52.769Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=112&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: j9oXexFH3CA3uZjKXCSJgQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: jPn7eFua4wA3HafPEjSQPowRCqA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
313
2061206
Total2209
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313132266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80
+
003 TX OCTETS: 810180
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_12_1.json b/autobahn/client/tungstenite_case_6_12_1.json new file mode 100644 index 0000000..2bf5a16 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 112, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=112&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: j9oXexFH3CA3uZjKXCSJgQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: jPn7eFua4wA3HafPEjSQPowRCqA=\r\n\r\n", + "id": "6.12.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.769Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "3": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313132266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0x80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "810180" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_12_2.html b/autobahn/client/tungstenite_case_6_12_2.html new file mode 100644 index 0000000..61785c7 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.12.2 : Pass - 1 ms @ 2025-09-11T20:05:52.771Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=113&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 3iKN3BwQ7RfrfzGq3sep7A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: wz1vX5hi3lAFahkC91rXtpDM74Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
313
2061206
Total2209
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313133266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbf
+
003 TX OCTETS: 8101bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_12_2.json b/autobahn/client/tungstenite_case_6_12_2.json new file mode 100644 index 0000000..2da9ff2 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 113, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xbf", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=113&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 3iKN3BwQ7RfrfzGq3sep7A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: wz1vX5hi3lAFahkC91rXtpDM74Q=\r\n\r\n", + "id": "6.12.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.771Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "3": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313133266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101bf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_12_3.html b/autobahn/client/tungstenite_case_6_12_3.html new file mode 100644 index 0000000..501fcf7 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.12.3 : Pass - 1 ms @ 2025-09-11T20:05:52.773Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=114&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: SrRAFGpDrr33PgRhXFzsyw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: EpQCcAzNZwklm87OI/izV9zivS0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313134266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf
+
003 TX OCTETS: 810280bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_12_3.json b/autobahn/client/tungstenite_case_6_12_3.json new file mode 100644 index 0000000..231e817 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 114, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=114&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: SrRAFGpDrr33PgRhXFzsyw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: EpQCcAzNZwklm87OI/izV9zivS0=\r\n\r\n", + "id": "6.12.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.773Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313134266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x80bf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "810280bf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_12_4.html b/autobahn/client/tungstenite_case_6_12_4.html new file mode 100644 index 0000000..ea4c728 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.12.4 : Pass - 1 ms @ 2025-09-11T20:05:52.774Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=115&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Z6cUSk2/pOigKNVa50n4WA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VnvFMW5eljOr5uiedsvJ3AxUmpc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313135266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf80
+
003 TX OCTETS: 810380bf80
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_12_4.json b/autobahn/client/tungstenite_case_6_12_4.json new file mode 100644 index 0000000..fed0e62 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_4.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 115, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=115&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Z6cUSk2/pOigKNVa50n4WA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VnvFMW5eljOr5uiedsvJ3AxUmpc=\r\n\r\n", + "id": "6.12.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.774Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313135266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0x80bf80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "810380bf80" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_12_5.html b/autobahn/client/tungstenite_case_6_12_5.html new file mode 100644 index 0000000..7bdf016 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.12.5 : Pass - 0 ms @ 2025-09-11T20:05:52.775Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=116&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: yseMSdDeVMlWpyDpM65WkQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3SzH8nSkSc+uapttAYAHs07dRsM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313136266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf80bf
+
003 TX OCTETS: 810480bf80bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_12_5.json b/autobahn/client/tungstenite_case_6_12_5.json new file mode 100644 index 0000000..94f7b8a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_5.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 116, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=116&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: yseMSdDeVMlWpyDpM65WkQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3SzH8nSkSc+uapttAYAHs07dRsM=\r\n\r\n", + "id": "6.12.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.775Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313136266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0x80bf80bf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "810480bf80bf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_12_6.html b/autobahn/client/tungstenite_case_6_12_6.html new file mode 100644 index 0000000..9c97204 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_6.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.12.6 : Pass - 0 ms @ 2025-09-11T20:05:52.776Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=117&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: wp1tXico4IWN9fQ31ccUkw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: oLTU94HwI0LSKPSPuj1GQIr3bi4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
717
2061206
Total2213
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313137266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf80bf80
+
003 TX OCTETS: 810580bf80bf80
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_12_6.json b/autobahn/client/tungstenite_case_6_12_6.json new file mode 100644 index 0000000..25dfdf0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_6.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 117, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=117&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: wp1tXico4IWN9fQ31ccUkw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: oLTU94HwI0LSKPSPuj1GQIr3bi4=\r\n\r\n", + "id": "6.12.6", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.776Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "7": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313137266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0x80bf80bf80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "810580bf80bf80" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_12_7.html b/autobahn/client/tungstenite_case_6_12_7.html new file mode 100644 index 0000000..cd8f0b0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_7.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.12.7 : Pass - 0 ms @ 2025-09-11T20:05:52.777Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=118&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: x2b3E/ytvytn/BKVuYAF6w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: w8JOhfTfsmeq4JdmCyw0UPff6Tk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313138266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80bf80bf80bf
+
003 TX OCTETS: 810680bf80bf80bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_12_7.json b/autobahn/client/tungstenite_case_6_12_7.json new file mode 100644 index 0000000..e3abb22 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_7.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 118, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x80bf80bf80bf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=118&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: x2b3E/ytvytn/BKVuYAF6w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: w8JOhfTfsmeq4JdmCyw0UPff6Tk=\r\n\r\n", + "id": "6.12.7", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.777Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313138266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0x80bf80bf80bf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "810680bf80bf80bf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_12_8.html b/autobahn/client/tungstenite_case_6_12_8.html new file mode 100644 index 0000000..8a6c41f --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_8.html @@ -0,0 +1,290 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.12.8 : Pass - 1 ms @ 2025-09-11T20:05:52.779Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=119&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pq/K4txY9cGKBf+x317JJA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: m56bnYyz0Av5ca3PuK6mKYmq/Us=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
65165
2061206
Total2271
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313139266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=63, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0
+
               b1b2b3b4b5b6b7b8b9babbbcbdbe ...
+
003 TX OCTETS: 813f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf
+
               b0b1b2b3b4b5b6b7b8b9babbbcbd ...
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_12_8.json b/autobahn/client/tungstenite_case_6_12_8.json new file mode 100644 index 0000000..7f5a9d0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_12_8.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 119, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=119&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pq/K4txY9cGKBf+x317JJA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: m56bnYyz0Av5ca3PuK6mKYmq/Us=\r\n\r\n", + "id": "6.12.8", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.779Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "65": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313139266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 63, + "0x808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 65, + "813f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbd ..." + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_13_1.html b/autobahn/client/tungstenite_case_6_13_1.html new file mode 100644 index 0000000..d75fb54 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_1.html @@ -0,0 +1,290 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.13.1 : Pass - 1 ms @ 2025-09-11T20:05:52.780Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=120&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: wuUPqbnJ0cZE14Y89ezmWw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: JZyHwHLjf5tgU5ejQecTNQq5e1s=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
64164
2061206
Total2270
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313230266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=62, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d8
+
               20d920da20db20dc20dd20de20 ...
+
003 TX OCTETS: 813ec020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720
+
               d820d920da20db20dc20dd20de20 ...
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_13_1.json b/autobahn/client/tungstenite_case_6_13_1.json new file mode 100644 index 0000000..b621500 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 120, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=120&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: wuUPqbnJ0cZE14Y89ezmWw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: JZyHwHLjf5tgU5ejQecTNQq5e1s=\r\n\r\n", + "id": "6.13.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.780Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "64": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313230266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 62, + "0xc020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20 ..." + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 64, + "813ec020c120c220c320c420c520c620c720c820c920ca20cb20cc20cd20ce20cf20d020d120d220d320d420d520d620d720d820d920da20db20dc20dd20de20 ..." + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_13_2.html b/autobahn/client/tungstenite_case_6_13_2.html new file mode 100644 index 0000000..629b090 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.13.2 : Pass - 1 ms @ 2025-09-11T20:05:52.782Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=121&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ttfVi6xmwgWaIXguiNGYAA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rihw/3BfwHQ8K0igVdUDwGkgtsg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
32132
2061206
Total2238
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313231266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=30, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20
+
003 TX OCTETS: 811ee020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_13_2.json b/autobahn/client/tungstenite_case_6_13_2.json new file mode 100644 index 0000000..c4b58dd --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 121, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=121&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ttfVi6xmwgWaIXguiNGYAA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rihw/3BfwHQ8K0igVdUDwGkgtsg=\r\n\r\n", + "id": "6.13.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.782Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "32": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313231266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 30, + "0xe020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 32, + "811ee020e120e220e320e420e520e620e720e820e920ea20eb20ec20ed20ee20" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_13_3.html b/autobahn/client/tungstenite_case_6_13_3.html new file mode 100644 index 0000000..a4b2dd6 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.13.3 : Pass - 0 ms @ 2025-09-11T20:05:52.783Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf020f120f220f320f420f520f620

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=122&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: g96V6ndnvHS2LgtCiTM7zg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: gJZVlbaNY0AyS9vH232oSo1Ywnw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
16116
2061206
Total2222
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313232266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=14, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf020f120f220f320f420f520f620
+
003 TX OCTETS: 810ef020f120f220f320f420f520f620
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_13_3.json b/autobahn/client/tungstenite_case_6_13_3.json new file mode 100644 index 0000000..f29859d --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 122, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf020f120f220f320f420f520f620", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=122&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: g96V6ndnvHS2LgtCiTM7zg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: gJZVlbaNY0AyS9vH232oSo1Ywnw=\r\n\r\n", + "id": "6.13.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.783Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "16": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313232266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 14, + "0xf020f120f220f320f420f520f620" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 16, + "810ef020f120f220f320f420f520f620" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_13_4.html b/autobahn/client/tungstenite_case_6_13_4.html new file mode 100644 index 0000000..66d0d98 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.13.4 : Pass - 1 ms @ 2025-09-11T20:05:52.784Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf820f920fa20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=123&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Uuaau6+3L14wfkyOEeBB7g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8Qs9z0CVgNu7wLAYdusi+wqYF2Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313233266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf820f920fa20
+
003 TX OCTETS: 8106f820f920fa20
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_13_4.json b/autobahn/client/tungstenite_case_6_13_4.json new file mode 100644 index 0000000..b0c1120 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_4.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 123, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf820f920fa20", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=123&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Uuaau6+3L14wfkyOEeBB7g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8Qs9z0CVgNu7wLAYdusi+wqYF2Q=\r\n\r\n", + "id": "6.13.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.784Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313233266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xf820f920fa20" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106f820f920fa20" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_13_5.html b/autobahn/client/tungstenite_case_6_13_5.html new file mode 100644 index 0000000..cda3539 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.13.5 : Pass - 2 ms @ 2025-09-11T20:05:52.785Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc20

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=124&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: StFupg2UtXQi2NVoc5mCYA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 7t135u6VomzE5qT88LdNgabteA4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313234266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc20
+
003 TX OCTETS: 8102fc20
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_13_5.json b/autobahn/client/tungstenite_case_6_13_5.json new file mode 100644 index 0000000..db6cd29 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_13_5.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 124, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc20", + "droppedByMe": false, + "duration": 2, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=124&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: StFupg2UtXQi2NVoc5mCYA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 7t135u6VomzE5qT88LdNgabteA4=\r\n\r\n", + "id": "6.13.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.785Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313234266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xfc20" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102fc20" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_1.html b/autobahn/client/tungstenite_case_6_14_1.html new file mode 100644 index 0000000..321a2b0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.1 : Pass - 1 ms @ 2025-09-11T20:05:52.788Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=125&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: j1leqlGmOrQgKb0BoVZ6wg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: pQvkrL+vR3dzAC87EBRX2GwSXD4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
313
2061206
Total2209
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313235266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc0
+
003 TX OCTETS: 8101c0
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_1.json b/autobahn/client/tungstenite_case_6_14_1.json new file mode 100644 index 0000000..947d273 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 125, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=125&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: j1leqlGmOrQgKb0BoVZ6wg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: pQvkrL+vR3dzAC87EBRX2GwSXD4=\r\n\r\n", + "id": "6.14.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.788Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "3": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313235266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xc0" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101c0" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_10.html b/autobahn/client/tungstenite_case_6_14_10.html new file mode 100644 index 0000000..fd27325 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_10.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.10 : Pass - 0 ms @ 2025-09-11T20:05:52.799Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=134&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: mTKOeTMZaWP461x2xoe50Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0pu5MITxpV+/hapxZVnuvjFXHms=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
717
2061206
Total2213
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313334266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfdbfbfbfbf
+
003 TX OCTETS: 8105fdbfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_10.json b/autobahn/client/tungstenite_case_6_14_10.json new file mode 100644 index 0000000..4a66f35 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_10.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 134, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfdbfbfbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=134&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: mTKOeTMZaWP461x2xoe50Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0pu5MITxpV+/hapxZVnuvjFXHms=\r\n\r\n", + "id": "6.14.10", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.799Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "7": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313334266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xfdbfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105fdbfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_2.html b/autobahn/client/tungstenite_case_6_14_2.html new file mode 100644 index 0000000..a78413a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.2 : Pass - 0 ms @ 2025-09-11T20:05:52.790Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=126&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: OBNzFnxqNZZYj35mOPSwHw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WomeD90D0g5VgAxpN3N+op+DU5U=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313236266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe080
+
003 TX OCTETS: 8102e080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_2.json b/autobahn/client/tungstenite_case_6_14_2.json new file mode 100644 index 0000000..7f8a52b --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 126, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=126&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: OBNzFnxqNZZYj35mOPSwHw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WomeD90D0g5VgAxpN3N+op+DU5U=\r\n\r\n", + "id": "6.14.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.790Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313236266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xe080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102e080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_3.html b/autobahn/client/tungstenite_case_6_14_3.html new file mode 100644 index 0000000..f134428 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.3 : Pass - 1 ms @ 2025-09-11T20:05:52.791Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=127&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: r5CX/SARZGnWnPuSpSqA0g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: HZtJH0QbI2LQJsaYY8258Vnxkgs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313237266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf08080
+
003 TX OCTETS: 8103f08080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_3.json b/autobahn/client/tungstenite_case_6_14_3.json new file mode 100644 index 0000000..8a8289f --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 127, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=127&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: r5CX/SARZGnWnPuSpSqA0g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HZtJH0QbI2LQJsaYY8258Vnxkgs=\r\n\r\n", + "id": "6.14.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.791Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313237266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xf08080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103f08080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_4.html b/autobahn/client/tungstenite_case_6_14_4.html new file mode 100644 index 0000000..86ce3b9 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.4 : Pass - 0 ms @ 2025-09-11T20:05:52.792Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=128&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: uWhv5LLkzZEfbl0U62oPvQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: EEcDzNy3SP1EZIHHO1VFGi01DkI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313238266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf8808080
+
003 TX OCTETS: 8104f8808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_4.json b/autobahn/client/tungstenite_case_6_14_4.json new file mode 100644 index 0000000..75ff11e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_4.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 128, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=128&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: uWhv5LLkzZEfbl0U62oPvQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: EEcDzNy3SP1EZIHHO1VFGi01DkI=\r\n\r\n", + "id": "6.14.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.792Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313238266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf8808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f8808080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_5.html b/autobahn/client/tungstenite_case_6_14_5.html new file mode 100644 index 0000000..442dae4 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.5 : Pass - 1 ms @ 2025-09-11T20:05:52.793Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=129&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: enJVyq8EOAN99c68behGGQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: J6ElGDyJABtSK6bhinUPfoPAwQU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
717
2061206
Total2213
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313239266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc80808080
+
003 TX OCTETS: 8105fc80808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_5.json b/autobahn/client/tungstenite_case_6_14_5.json new file mode 100644 index 0000000..698eedc --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_5.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 129, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=129&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: enJVyq8EOAN99c68behGGQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: J6ElGDyJABtSK6bhinUPfoPAwQU=\r\n\r\n", + "id": "6.14.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.793Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "7": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313239266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xfc80808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105fc80808080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_6.html b/autobahn/client/tungstenite_case_6_14_6.html new file mode 100644 index 0000000..9cc6512 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_6.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.6 : Pass - 0 ms @ 2025-09-11T20:05:52.795Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xdf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=130&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pqAY3g21LkliWyFPkBwMiw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: EwZR3nMOTx+9AyAwHUArInOgtZM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
313
2061206
Total2209
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313330266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xdf
+
003 TX OCTETS: 8101df
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_6.json b/autobahn/client/tungstenite_case_6_14_6.json new file mode 100644 index 0000000..9e9fad7 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_6.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 130, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xdf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=130&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pqAY3g21LkliWyFPkBwMiw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: EwZR3nMOTx+9AyAwHUArInOgtZM=\r\n\r\n", + "id": "6.14.6", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.795Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "3": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313330266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xdf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101df" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_7.html b/autobahn/client/tungstenite_case_6_14_7.html new file mode 100644 index 0000000..3c1414b --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_7.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.7 : Pass - 0 ms @ 2025-09-11T20:05:52.796Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xefbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=131&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: QqH94+MRduydTMxTCsO/WQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: tHSfGBFeXEsFZjMmeW27MfxUtII=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313331266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xefbf
+
003 TX OCTETS: 8102efbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_7.json b/autobahn/client/tungstenite_case_6_14_7.json new file mode 100644 index 0000000..885ef53 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_7.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 131, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xefbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=131&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: QqH94+MRduydTMxTCsO/WQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: tHSfGBFeXEsFZjMmeW27MfxUtII=\r\n\r\n", + "id": "6.14.7", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.796Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313331266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xefbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102efbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_8.html b/autobahn/client/tungstenite_case_6_14_8.html new file mode 100644 index 0000000..e217b55 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_8.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.8 : Pass - 0 ms @ 2025-09-11T20:05:52.797Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=132&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: dKh65euakKXJUyz7Cydz+w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ClrYrFt8Xx5z7Sp7uvGdwKALRvQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313332266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf7bfbf
+
003 TX OCTETS: 8103f7bfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_8.json b/autobahn/client/tungstenite_case_6_14_8.json new file mode 100644 index 0000000..775c5ee --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_8.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 132, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf7bfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=132&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dKh65euakKXJUyz7Cydz+w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ClrYrFt8Xx5z7Sp7uvGdwKALRvQ=\r\n\r\n", + "id": "6.14.8", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.797Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313332266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xf7bfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103f7bfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_14_9.html b/autobahn/client/tungstenite_case_6_14_9.html new file mode 100644 index 0000000..2235421 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_9.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.14.9 : Pass - 0 ms @ 2025-09-11T20:05:52.798Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=133&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: aeqrymTK/M9S/XKrWSnHKg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YYTRsEuAww0qagkDfB3soOWwkC8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313333266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfbbfbfbf
+
003 TX OCTETS: 8104fbbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_14_9.json b/autobahn/client/tungstenite_case_6_14_9.json new file mode 100644 index 0000000..07f02f8 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_14_9.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 133, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfbbfbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=133&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: aeqrymTK/M9S/XKrWSnHKg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YYTRsEuAww0qagkDfB3soOWwkC8=\r\n\r\n", + "id": "6.14.9", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.798Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313333266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xfbbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104fbbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_15_1.html b/autobahn/client/tungstenite_case_6_15_1.html new file mode 100644 index 0000000..c76e677 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_15_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.15.1 : Pass - 0 ms @ 2025-09-11T20:05:52.800Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=135&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: PLnw4lNlHKCWC3HmhOOKdw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: d4OIcHtGoOD/lkTpRA/SN8Ggkkc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
32132
2061206
Total2238
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313335266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=30, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf
+
003 TX OCTETS: 811ec0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_15_1.json b/autobahn/client/tungstenite_case_6_15_1.json new file mode 100644 index 0000000..914e9c2 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_15_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 135, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=135&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: PLnw4lNlHKCWC3HmhOOKdw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: d4OIcHtGoOD/lkTpRA/SN8Ggkkc=\r\n\r\n", + "id": "6.15.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.800Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "32": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313335266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 30, + "0xc0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 32, + "811ec0e080f08080f8808080fc80808080dfefbff7bfbffbbfbfbffdbfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_16_1.html b/autobahn/client/tungstenite_case_6_16_1.html new file mode 100644 index 0000000..4fc11f1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_16_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.16.1 : Pass - 0 ms @ 2025-09-11T20:05:52.801Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfe

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=136&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: UExj/912AQnN3YR285p4EA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0GM+sfnGzfRgcmPtV255gX9EvvM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
313
2061206
Total2209
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313336266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfe
+
003 TX OCTETS: 8101fe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_16_1.json b/autobahn/client/tungstenite_case_6_16_1.json new file mode 100644 index 0000000..d14e756 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_16_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 136, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfe", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=136&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: UExj/912AQnN3YR285p4EA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0GM+sfnGzfRgcmPtV255gX9EvvM=\r\n\r\n", + "id": "6.16.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.801Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "3": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313336266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xfe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101fe" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_16_2.html b/autobahn/client/tungstenite_case_6_16_2.html new file mode 100644 index 0000000..81af85b --- /dev/null +++ b/autobahn/client/tungstenite_case_6_16_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.16.2 : Pass - 0 ms @ 2025-09-11T20:05:52.802Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xff

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=137&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: TSWVTVr8YTdNWdkr2ogdJw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: L13BKzfVs+0aGHyOL5tw7ZcUQcs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
313
2061206
Total2209
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313337266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xff
+
003 TX OCTETS: 8101ff
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_16_2.json b/autobahn/client/tungstenite_case_6_16_2.json new file mode 100644 index 0000000..6152395 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_16_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 137, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xff", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=137&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: TSWVTVr8YTdNWdkr2ogdJw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: L13BKzfVs+0aGHyOL5tw7ZcUQcs=\r\n\r\n", + "id": "6.16.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.802Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "3": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313337266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101ff" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_16_3.html b/autobahn/client/tungstenite_case_6_16_3.html new file mode 100644 index 0000000..e63b6c0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_16_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.16.3 : Pass - 1 ms @ 2025-09-11T20:05:52.803Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfefeffff

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=138&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: b4LshP2sIkEKl8wUzLYptQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: XgG6o4sdYKnXMeY1QPGiRlSsPkg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313338266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfefeffff
+
003 TX OCTETS: 8104fefeffff
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_16_3.json b/autobahn/client/tungstenite_case_6_16_3.json new file mode 100644 index 0000000..2385f09 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_16_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 138, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfefeffff", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=138&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: b4LshP2sIkEKl8wUzLYptQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: XgG6o4sdYKnXMeY1QPGiRlSsPkg=\r\n\r\n", + "id": "6.16.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.803Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313338266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xfefeffff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104fefeffff" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_17_1.html b/autobahn/client/tungstenite_case_6_17_1.html new file mode 100644 index 0000000..963917b --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.17.1 : Pass - 1 ms @ 2025-09-11T20:05:52.804Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=139&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 8rgJ3fYuF0UWcqiYghEKpQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: QJsQ94tZauAxwAwrttTStGsXomg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313339266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc0af
+
003 TX OCTETS: 8102c0af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_17_1.json b/autobahn/client/tungstenite_case_6_17_1.json new file mode 100644 index 0000000..1034a05 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 139, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc0af", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=139&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 8rgJ3fYuF0UWcqiYghEKpQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: QJsQ94tZauAxwAwrttTStGsXomg=\r\n\r\n", + "id": "6.17.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.804Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313339266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xc0af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102c0af" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_17_2.html b/autobahn/client/tungstenite_case_6_17_2.html new file mode 100644 index 0000000..60cb793 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.17.2 : Pass - 7 ms @ 2025-09-11T20:05:52.809Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=140&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: RdnS3g+VpMmYSMrPNxWgFQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Cq879+kX9Zvf89DMLYaXBLnYQUA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313430266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe080af
+
003 TX OCTETS: 8103e080af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_17_2.json b/autobahn/client/tungstenite_case_6_17_2.json new file mode 100644 index 0000000..165d34a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 140, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe080af", + "droppedByMe": false, + "duration": 7, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=140&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: RdnS3g+VpMmYSMrPNxWgFQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Cq879+kX9Zvf89DMLYaXBLnYQUA=\r\n\r\n", + "id": "6.17.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.809Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313430266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xe080af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103e080af" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_17_3.html b/autobahn/client/tungstenite_case_6_17_3.html new file mode 100644 index 0000000..908af03 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.17.3 : Pass - 0 ms @ 2025-09-11T20:05:52.817Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=141&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 8beS7yGxEKomMIEvIzyyxw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vK5socxPM2OhCJXp02AW10E5+yk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313431266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf08080af
+
003 TX OCTETS: 8104f08080af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_17_3.json b/autobahn/client/tungstenite_case_6_17_3.json new file mode 100644 index 0000000..11907cc --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 141, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08080af", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=141&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 8beS7yGxEKomMIEvIzyyxw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vK5socxPM2OhCJXp02AW10E5+yk=\r\n\r\n", + "id": "6.17.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.817Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313431266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf08080af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f08080af" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_17_4.html b/autobahn/client/tungstenite_case_6_17_4.html new file mode 100644 index 0000000..808a149 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.17.4 : Pass - 0 ms @ 2025-09-11T20:05:52.818Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=142&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ClyHx83uystxV90Tppm6gQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 6ewHsoIDzyKry85+JiTw3wRW24U=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
717
2061206
Total2213
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313432266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf8808080af
+
003 TX OCTETS: 8105f8808080af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_17_4.json b/autobahn/client/tungstenite_case_6_17_4.json new file mode 100644 index 0000000..1d61666 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_4.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 142, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf8808080af", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=142&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ClyHx83uystxV90Tppm6gQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 6ewHsoIDzyKry85+JiTw3wRW24U=\r\n\r\n", + "id": "6.17.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.818Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "7": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313432266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xf8808080af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105f8808080af" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_17_5.html b/autobahn/client/tungstenite_case_6_17_5.html new file mode 100644 index 0000000..e7e8e07 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.17.5 : Pass - 0 ms @ 2025-09-11T20:05:52.819Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080af

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=143&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 7BeomgBIC2A1bNLoAyJTSA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YyYT/CNCvHY8qfzQfFKJ5kFQbLM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313433266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc80808080af
+
003 TX OCTETS: 8106fc80808080af
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_17_5.json b/autobahn/client/tungstenite_case_6_17_5.json new file mode 100644 index 0000000..91c0745 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_17_5.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 143, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc80808080af", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=143&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 7BeomgBIC2A1bNLoAyJTSA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YyYT/CNCvHY8qfzQfFKJ5kFQbLM=\r\n\r\n", + "id": "6.17.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.819Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313433266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfc80808080af" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fc80808080af" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_18_1.html b/autobahn/client/tungstenite_case_6_18_1.html new file mode 100644 index 0000000..54675e9 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.18.1 : Pass - 1 ms @ 2025-09-11T20:05:52.820Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc1bf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=144&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: xbfeAQOBWxOn6se5HQhTEQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rhqXYp6vqgJFfRI1ede7HKYwWlM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313434266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc1bf
+
003 TX OCTETS: 8102c1bf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_18_1.json b/autobahn/client/tungstenite_case_6_18_1.json new file mode 100644 index 0000000..18d06c1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 144, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc1bf", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=144&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: xbfeAQOBWxOn6se5HQhTEQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rhqXYp6vqgJFfRI1ede7HKYwWlM=\r\n\r\n", + "id": "6.18.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.820Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313434266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xc1bf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102c1bf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_18_2.html b/autobahn/client/tungstenite_case_6_18_2.html new file mode 100644 index 0000000..2c7973d --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.18.2 : Pass - 0 ms @ 2025-09-11T20:05:52.821Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe09fbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=145&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: twIJpO7GJEerfwmAVAv5pQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Q94JPQ1SWQY9oUQcIQdhFVp6T20=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313435266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe09fbf
+
003 TX OCTETS: 8103e09fbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_18_2.json b/autobahn/client/tungstenite_case_6_18_2.json new file mode 100644 index 0000000..05a084e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 145, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe09fbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=145&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: twIJpO7GJEerfwmAVAv5pQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Q94JPQ1SWQY9oUQcIQdhFVp6T20=\r\n\r\n", + "id": "6.18.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.821Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313435266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xe09fbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103e09fbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_18_3.html b/autobahn/client/tungstenite_case_6_18_3.html new file mode 100644 index 0000000..c624f77 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.18.3 : Pass - 0 ms @ 2025-09-11T20:05:52.823Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08fbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=146&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: jc++M7mHDa+UCg9080Z43A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: f5NgBCwUniIj6Z7QOw/t45YJYjQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313436266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf08fbfbf
+
003 TX OCTETS: 8104f08fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_18_3.json b/autobahn/client/tungstenite_case_6_18_3.json new file mode 100644 index 0000000..018a31a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 146, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf08fbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=146&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: jc++M7mHDa+UCg9080Z43A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: f5NgBCwUniIj6Z7QOw/t45YJYjQ=\r\n\r\n", + "id": "6.18.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.823Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313436266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf08fbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f08fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_18_4.html b/autobahn/client/tungstenite_case_6_18_4.html new file mode 100644 index 0000000..56ed913 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.18.4 : Pass - 4 ms @ 2025-09-11T20:05:52.824Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf887bfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=147&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: G6q+Kp7Wc22gtLr9emgoRA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sp36RxOIYMXbOwA/FbRRTeYyPSQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
717
2061206
Total2213
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313437266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf887bfbfbf
+
003 TX OCTETS: 8105f887bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_18_4.json b/autobahn/client/tungstenite_case_6_18_4.json new file mode 100644 index 0000000..cd3cab2 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_4.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 147, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf887bfbfbf", + "droppedByMe": false, + "duration": 4, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=147&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: G6q+Kp7Wc22gtLr9emgoRA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sp36RxOIYMXbOwA/FbRRTeYyPSQ=\r\n\r\n", + "id": "6.18.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.824Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "7": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313437266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xf887bfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105f887bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_18_5.html b/autobahn/client/tungstenite_case_6_18_5.html new file mode 100644 index 0000000..50f7506 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.18.5 : Pass - 0 ms @ 2025-09-11T20:05:52.829Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc83bfbfbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=148&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: kgveZ3oJUPW+231+ypNv3w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: XmLxLr3CGRiDu8VZAqw8/zIb0gk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313438266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc83bfbfbfbf
+
003 TX OCTETS: 8106fc83bfbfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_18_5.json b/autobahn/client/tungstenite_case_6_18_5.json new file mode 100644 index 0000000..67b131e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_18_5.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 148, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc83bfbfbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=148&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: kgveZ3oJUPW+231+ypNv3w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: XmLxLr3CGRiDu8VZAqw8/zIb0gk=\r\n\r\n", + "id": "6.18.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.829Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313438266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfc83bfbfbfbf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fc83bfbfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_19_1.html b/autobahn/client/tungstenite_case_6_19_1.html new file mode 100644 index 0000000..d522421 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.19.1 : Pass - 0 ms @ 2025-09-11T20:05:52.830Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=149&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: vAn9uHOXfIDvSXKjgoob7A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: h6T0YwceVzTYYK6LlVrDtOzJVwY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313439266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc080
+
003 TX OCTETS: 8102c080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_19_1.json b/autobahn/client/tungstenite_case_6_19_1.json new file mode 100644 index 0000000..a663ae2 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 149, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xc080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=149&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: vAn9uHOXfIDvSXKjgoob7A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: h6T0YwceVzTYYK6LlVrDtOzJVwY=\r\n\r\n", + "id": "6.19.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.830Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313439266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xc080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102c080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_19_2.html b/autobahn/client/tungstenite_case_6_19_2.html new file mode 100644 index 0000000..2928df7 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.19.2 : Pass - 0 ms @ 2025-09-11T20:05:52.831Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe08080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=150&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: bdned//iwEd6AHTJaIwAYg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +oxjE+CaxEdp1wORAlaV4+7FF7w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313530266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe08080
+
003 TX OCTETS: 8103e08080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_19_2.json b/autobahn/client/tungstenite_case_6_19_2.json new file mode 100644 index 0000000..356ae0d --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 150, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xe08080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=150&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: bdned//iwEd6AHTJaIwAYg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +oxjE+CaxEdp1wORAlaV4+7FF7w=\r\n\r\n", + "id": "6.19.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.831Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313530266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xe08080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103e08080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_19_3.html b/autobahn/client/tungstenite_case_6_19_3.html new file mode 100644 index 0000000..f85c7a0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.19.3 : Pass - 0 ms @ 2025-09-11T20:05:52.832Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf0808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=151&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: baRaCkZd26Pl6CmtYaMHyg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZUfty/OJLXru/le2pjzYzd3IUtI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313531266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf0808080
+
003 TX OCTETS: 8104f0808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_19_3.json b/autobahn/client/tungstenite_case_6_19_3.json new file mode 100644 index 0000000..c367f99 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 151, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf0808080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=151&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: baRaCkZd26Pl6CmtYaMHyg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZUfty/OJLXru/le2pjzYzd3IUtI=\r\n\r\n", + "id": "6.19.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.832Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313531266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xf0808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0808080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_19_4.html b/autobahn/client/tungstenite_case_6_19_4.html new file mode 100644 index 0000000..dc425b1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.19.4 : Pass - 0 ms @ 2025-09-11T20:05:52.833Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf880808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=152&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ZpiiCT3Xy36XB76QYNJpwA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3Je3JTRdy8HAZ1HU4uNONG7psNg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
717
2061206
Total2213
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313532266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf880808080
+
003 TX OCTETS: 8105f880808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_19_4.json b/autobahn/client/tungstenite_case_6_19_4.json new file mode 100644 index 0000000..f80b88a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_4.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 152, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf880808080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=152&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ZpiiCT3Xy36XB76QYNJpwA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3Je3JTRdy8HAZ1HU4uNONG7psNg=\r\n\r\n", + "id": "6.19.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.833Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "7": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313532266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xf880808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105f880808080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_19_5.html b/autobahn/client/tungstenite_case_6_19_5.html new file mode 100644 index 0000000..503bb56 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.19.5 : Pass - 1 ms @ 2025-09-11T20:05:52.834Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8080808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=153&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: PGuPZGS8SaJm48arEDRNOg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: MzHMAHUTFXp4IaU4Rkeq4qEQkS4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313533266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc8080808080
+
003 TX OCTETS: 8106fc8080808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_19_5.json b/autobahn/client/tungstenite_case_6_19_5.json new file mode 100644 index 0000000..104f5ca --- /dev/null +++ b/autobahn/client/tungstenite_case_6_19_5.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 153, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8080808080", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=153&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: PGuPZGS8SaJm48arEDRNOg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: MzHMAHUTFXp4IaU4Rkeq4qEQkS4=\r\n\r\n", + "id": "6.19.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.834Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313533266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfc8080808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fc8080808080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_1_1.html b/autobahn/client/tungstenite_case_6_1_1.html new file mode 100644 index 0000000..8f5f3b0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_1_1.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.1.1 : Pass - 3 ms @ 2025-09-11T20:05:46.601Z

+

Case Description

Send text message of length 0.

+

Case Expectation

A message is echo'ed back to us (with empty payload).

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'', False)]}

+ Observed:
[('message', u'', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=65&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1jJ7B0N5WJDU+K+mon2YSA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: AbzGVErUv548JqaJ9BIMdG83A1g=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
818
2561256
Total3270
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3635266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8100
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 81808ba2b2e9
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3862613262326539
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882fb9d172ff875
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6662396431373266
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_1_1.json b/autobahn/client/tungstenite_case_6_1_1.json new file mode 100644 index 0000000..3a34e98 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_1_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 65, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message of length 0.", + "droppedByMe": true, + "duration": 3, + "expectation": "A message is echo'ed back to us (with empty payload).", + "expected": { + "OK": [ + [ + "message", + "", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=65&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1jJ7B0N5WJDU+K+mon2YSA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: AbzGVErUv548JqaJ9BIMdG83A1g=\r\n\r\n", + "id": "6.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "8": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:46.601Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3635266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8100" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 6, + "81808ba2b2e9" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 1, + true, + 0, + true, + "8ba2b2e9" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fb9d172ff875" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fb9d172f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_1_2.html b/autobahn/client/tungstenite_case_6_1_2.html new file mode 100644 index 0000000..903cd1e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_1_2.html @@ -0,0 +1,306 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.1.2 : Pass - 2 ms @ 2025-09-11T20:05:46.606Z

+

Case Description

Send fragmented text message, 3 fragments each of length 0.

+

Case Expectation

A message is echo'ed back to us (with empty payload).

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'', False)]}

+ Observed:
[('message', u'', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=66&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: SFAoCops6cESIXrW+zrHuw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +gJzgq/iAC93SuPYUxuFAoYqTXU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
818
2561256
Total3270
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
236
414
2061206
Total5216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02
11
81
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3636266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 0100
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 0000
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8000
+
008 CLOSE CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 818070ff737c
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3730666637333763
+
011 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
012 TX OCTETS: 880203e8
+
013 RX OCTETS: 8882facdb264f925
+
014 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6661636462323634
+
               0x03e8
+
015 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_1_2.json b/autobahn/client/tungstenite_case_6_1_2.json new file mode 100644 index 0000000..ca53ef4 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_1_2.json @@ -0,0 +1,222 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 66, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message, 3 fragments each of length 0.", + "droppedByMe": true, + "duration": 2, + "expectation": "A message is echo'ed back to us (with empty payload).", + "expected": { + "OK": [ + [ + "message", + "", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=66&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: SFAoCops6cESIXrW+zrHuw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +gJzgq/iAC93SuPYUxuFAoYqTXU=\r\n\r\n", + "id": "6.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "8": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:46.606Z", + "trafficStats": null, + "txFrameStats": { + "0": 2, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 3, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3636266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "0100" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "0000" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 6, + "818070ff737c" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 1, + true, + 0, + true, + "70ff737c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882facdb264f925" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "facdb264" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_1_3.html b/autobahn/client/tungstenite_case_6_1_3.html new file mode 100644 index 0000000..26bf8f4 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_1_3.html @@ -0,0 +1,309 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.1.3 : Pass - 3 ms @ 2025-09-11T20:05:46.609Z

+

Case Description

Send fragmented text message, 3 fragments, first and last of length 0, middle non-empty.

+

Case Expectation

A message is echo'ed back to us (with payload = payload of middle fragment).

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'middle frame payload', False)]}

+ Observed:
[('message', u'middle frame payload', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=67&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pEfYC/sYE6K4M8l0bDgBJg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rCzy0UjFbYop5ay+lWAA6PJUtJA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
26126
2561256
Total3290
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
224
414
22122
2061206
Total5236
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
02
11
81
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3637266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 0100
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=20, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               middle frame payload
+
005 TX OCTETS: 00146d6964646c65206672616d65207061796c6f6164
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
007 TX OCTETS: 8000
+
008 CLOSE CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 8194662fe8160b468c720a4ac870144e8573465f896f0a408972
+
010 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=3636326665383136
+
               middle frame payload
+
011 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
012 TX OCTETS: 880203e8
+
013 RX OCTETS: 8882a9bdf233aa55
+
014 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6139626466323333
+
               0x03e8
+
015 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_1_3.json b/autobahn/client/tungstenite_case_6_1_3.json new file mode 100644 index 0000000..9573687 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_1_3.json @@ -0,0 +1,223 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 67, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message, 3 fragments, first and last of length 0, middle non-empty.", + "droppedByMe": true, + "duration": 3, + "expectation": "A message is echo'ed back to us (with payload = payload of middle fragment).", + "expected": { + "OK": [ + [ + "message", + "middle frame payload", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=67&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pEfYC/sYE6K4M8l0bDgBJg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rCzy0UjFbYop5ay+lWAA6PJUtJA=\r\n\r\n", + "id": "6.1.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "middle frame payload", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "26": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:46.609Z", + "trafficStats": null, + "txFrameStats": { + "0": 2, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 2, + "4": 1, + "22": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3637266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "0100" + ], + false + ], + [ + "TF", + [ + 20, + "middle frame payload" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 22, + "00146d6964646c65206672616d65207061796c6f6164" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 26, + "8194662fe8160b468c720a4ac870144e8573465f896f0a408972" + ] + ], + [ + "RF", + [ + 20, + "middle frame payload" + ], + 1, + true, + 0, + true, + "662fe816" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a9bdf233aa55" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a9bdf233" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_20_1.html b/autobahn/client/tungstenite_case_6_20_1.html new file mode 100644 index 0000000..23416bd --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.20.1 : Pass - 1 ms @ 2025-09-11T20:05:52.836Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=154&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: IM/41pY3k4NQyZ7nBCxgwQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rGyNepvHPW/xySt1yGq+J/5eUzE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313534266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í €
+
003 TX OCTETS: 8103eda080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_20_1.json b/autobahn/client/tungstenite_case_6_20_1.json new file mode 100644 index 0000000..b8f6eb4 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 154, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=154&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: IM/41pY3k4NQyZ7nBCxgwQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rGyNepvHPW/xySt1yGq+J/5eUzE=\r\n\r\n", + "id": "6.20.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.836Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313534266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ud800" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103eda080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_20_2.html b/autobahn/client/tungstenite_case_6_20_2.html new file mode 100644 index 0000000..b74514e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.20.2 : Pass - 1 ms @ 2025-09-11T20:05:52.839Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=155&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: HrJpmFMYh/WiF+kRrBNynQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: X0czFFvf+u1W7xxwdbr61srfbnY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313535266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í­¿
+
003 TX OCTETS: 8103edadbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_20_2.json b/autobahn/client/tungstenite_case_6_20_2.json new file mode 100644 index 0000000..35e7c82 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 155, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbf", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=155&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: HrJpmFMYh/WiF+kRrBNynQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: X0czFFvf+u1W7xxwdbr61srfbnY=\r\n\r\n", + "id": "6.20.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.839Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313535266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udb7f" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edadbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_20_3.html b/autobahn/client/tungstenite_case_6_20_3.html new file mode 100644 index 0000000..1524423 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.20.3 : Pass - 1 ms @ 2025-09-11T20:05:52.841Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=156&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: f+0K5qRTQDVRNZJlQFaQMg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: d0bQGjeNBtH3TMi3Jzk5RDQxQgs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313536266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í®€
+
003 TX OCTETS: 8103edae80
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_20_3.json b/autobahn/client/tungstenite_case_6_20_3.json new file mode 100644 index 0000000..ccde743 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 156, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=156&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: f+0K5qRTQDVRNZJlQFaQMg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: d0bQGjeNBtH3TMi3Jzk5RDQxQgs=\r\n\r\n", + "id": "6.20.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.841Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313536266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udb80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edae80" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_20_4.html b/autobahn/client/tungstenite_case_6_20_4.html new file mode 100644 index 0000000..76a3bb3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.20.4 : Pass - 0 ms @ 2025-09-11T20:05:52.842Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=157&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: GnLTuRynakJVxV3ztI+sOw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: lx+DQkR7S9y8IhHdEtJ2q/Zs0pc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313537266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í¯¿
+
003 TX OCTETS: 8103edafbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_20_4.json b/autobahn/client/tungstenite_case_6_20_4.json new file mode 100644 index 0000000..db5c028 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_4.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 157, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=157&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: GnLTuRynakJVxV3ztI+sOw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: lx+DQkR7S9y8IhHdEtJ2q/Zs0pc=\r\n\r\n", + "id": "6.20.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.842Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313537266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udbff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edafbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_20_5.html b/autobahn/client/tungstenite_case_6_20_5.html new file mode 100644 index 0000000..a1d3769 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.20.5 : Pass - 0 ms @ 2025-09-11T20:05:52.843Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=158&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: XkR0YcudGHgITIGEOBsIKQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 7b6lO36VOhOU11BxWGCUWHSjyWY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313538266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í°€
+
003 TX OCTETS: 8103edb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_20_5.json b/autobahn/client/tungstenite_case_6_20_5.json new file mode 100644 index 0000000..1abdf84 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_5.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 158, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedb080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=158&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: XkR0YcudGHgITIGEOBsIKQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 7b6lO36VOhOU11BxWGCUWHSjyWY=\r\n\r\n", + "id": "6.20.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.843Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313538266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edb080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_20_6.html b/autobahn/client/tungstenite_case_6_20_6.html new file mode 100644 index 0000000..2519f85 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_6.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.20.6 : Pass - 1 ms @ 2025-09-11T20:05:52.845Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbe80

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=159&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: LK8ZNxX8ogQCqRcp2+ZV9g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: hPqYr/SWZhgz9qphO7SCMBhasfw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313539266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í¾€
+
003 TX OCTETS: 8103edbe80
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_20_6.json b/autobahn/client/tungstenite_case_6_20_6.json new file mode 100644 index 0000000..c418362 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_6.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 159, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbe80", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=159&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: LK8ZNxX8ogQCqRcp2+ZV9g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: hPqYr/SWZhgz9qphO7SCMBhasfw=\r\n\r\n", + "id": "6.20.6", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.845Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313539266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udf80" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edbe80" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_20_7.html b/autobahn/client/tungstenite_case_6_20_7.html new file mode 100644 index 0000000..c3fe3ce --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_7.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.20.7 : Pass - 0 ms @ 2025-09-11T20:05:52.846Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=160&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 6ZLj3L3VCIbCcOKtlnxAnA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vGy8v+hRP1ozbeUnqyAwkYcldfc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313630266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               í¿¿
+
003 TX OCTETS: 8103edbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_20_7.json b/autobahn/client/tungstenite_case_6_20_7.json new file mode 100644 index 0000000..dd74ba5 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_20_7.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 160, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=160&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 6ZLj3L3VCIbCcOKtlnxAnA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vGy8v+hRP1ozbeUnqyAwkYcldfc=\r\n\r\n", + "id": "6.20.7", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.846Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313630266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103edbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_21_1.html b/autobahn/client/tungstenite_case_6_21_1.html new file mode 100644 index 0000000..fccb5ae --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.21.1 : Pass - 0 ms @ 2025-09-11T20:05:52.847Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=161&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pggauhxZmYeiwkfMiVlkRg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: kPn9DjOSWnLGvyGZIfFDrG0V8r0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313631266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð€€
+
003 TX OCTETS: 8106eda080edb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_21_1.json b/autobahn/client/tungstenite_case_6_21_1.json new file mode 100644 index 0000000..418b1a0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 161, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edb080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=161&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pggauhxZmYeiwkfMiVlkRg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: kPn9DjOSWnLGvyGZIfFDrG0V8r0=\r\n\r\n", + "id": "6.21.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.847Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313631266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\ud800\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106eda080edb080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_21_2.html b/autobahn/client/tungstenite_case_6_21_2.html new file mode 100644 index 0000000..641b6a3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.21.2 : Pass - 0 ms @ 2025-09-11T20:05:52.848Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=162&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: BvfXyC9hpMXtowJ04n925A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: DJDmQ81XpntgR0G9GY1RWNk5uC0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313632266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð¿
+
003 TX OCTETS: 8106eda080edbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_21_2.json b/autobahn/client/tungstenite_case_6_21_2.json new file mode 100644 index 0000000..5cb83d6 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 162, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xeda080edbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=162&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: BvfXyC9hpMXtowJ04n925A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: DJDmQ81XpntgR0G9GY1RWNk5uC0=\r\n\r\n", + "id": "6.21.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.848Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313632266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\ud800\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106eda080edbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_21_3.html b/autobahn/client/tungstenite_case_6_21_3.html new file mode 100644 index 0000000..afc4005 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.21.3 : Pass - 0 ms @ 2025-09-11T20:05:52.849Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=163&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: kgWC3tzebeF8OM0bPFPMlw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: o2kdwPdipkUXbKnA4yQNNgfgW3k=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313633266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¯°€
+
003 TX OCTETS: 8106edadbfedb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_21_3.json b/autobahn/client/tungstenite_case_6_21_3.json new file mode 100644 index 0000000..0762327 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 163, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedb080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=163&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: kgWC3tzebeF8OM0bPFPMlw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: o2kdwPdipkUXbKnA4yQNNgfgW3k=\r\n\r\n", + "id": "6.21.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.849Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313633266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udb7f\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edadbfedb080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_21_4.html b/autobahn/client/tungstenite_case_6_21_4.html new file mode 100644 index 0000000..d7e45b1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.21.4 : Pass - 0 ms @ 2025-09-11T20:05:52.850Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=164&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: vfDJ511uyKisqihHLkLL1Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: G0vqkAgepAsMRGOYRPMMECJ2f4w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313634266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               󯿿
+
003 TX OCTETS: 8106edadbfedbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_21_4.json b/autobahn/client/tungstenite_case_6_21_4.json new file mode 100644 index 0000000..482bae0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_4.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 164, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedadbfedbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=164&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: vfDJ511uyKisqihHLkLL1Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: G0vqkAgepAsMRGOYRPMMECJ2f4w=\r\n\r\n", + "id": "6.21.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.850Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313634266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udb7f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edadbfedbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_21_5.html b/autobahn/client/tungstenite_case_6_21_5.html new file mode 100644 index 0000000..3c418d6 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_5.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.21.5 : Pass - 0 ms @ 2025-09-11T20:05:52.851Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=165&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: gP8vuYH6vJ6PD33cnbMqaA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: c/ru2RXhXrfrsIeJUceO6cq6jz4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313635266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó°€€
+
003 TX OCTETS: 8106edae80edb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_21_5.json b/autobahn/client/tungstenite_case_6_21_5.json new file mode 100644 index 0000000..6482bac --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_5.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 165, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edb080", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=165&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: gP8vuYH6vJ6PD33cnbMqaA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: c/ru2RXhXrfrsIeJUceO6cq6jz4=\r\n\r\n", + "id": "6.21.5", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.851Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313635266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udb80\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edae80edb080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_21_6.html b/autobahn/client/tungstenite_case_6_21_6.html new file mode 100644 index 0000000..5c203c5 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_6.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.21.6 : Pass - 0 ms @ 2025-09-11T20:05:52.852Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=166&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 73xmVrirb/qMbv++5jHUNA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: lD49A9+6JvRSFvIAD8X2uKGgA4w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313636266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó°¿
+
003 TX OCTETS: 8106edae80edbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_21_6.json b/autobahn/client/tungstenite_case_6_21_6.json new file mode 100644 index 0000000..5476e5e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_6.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 166, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedae80edbfbf", + "droppedByMe": false, + "duration": 0, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=166&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 73xmVrirb/qMbv++5jHUNA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: lD49A9+6JvRSFvIAD8X2uKGgA4w=\r\n\r\n", + "id": "6.21.6", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.852Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313636266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udb80\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edae80edbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_21_7.html b/autobahn/client/tungstenite_case_6_21_7.html new file mode 100644 index 0000000..352efc4 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_7.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.21.7 : Pass - 1 ms @ 2025-09-11T20:05:52.853Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedb080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=167&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: YWPbaA0hnXpwfdKUY+aaTw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: pV4Y8dvO0wMEMJm9yHtrYsHDUFo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313637266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô°€
+
003 TX OCTETS: 8106edafbfedb080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_21_7.json b/autobahn/client/tungstenite_case_6_21_7.json new file mode 100644 index 0000000..9cd4d99 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_7.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 167, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedb080", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=167&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: YWPbaA0hnXpwfdKUY+aaTw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: pV4Y8dvO0wMEMJm9yHtrYsHDUFo=\r\n\r\n", + "id": "6.21.7", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.853Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313637266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udbff\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edafbfedb080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_21_8.html b/autobahn/client/tungstenite_case_6_21_8.html new file mode 100644 index 0000000..614c2cb --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_8.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.21.8 : Pass - 1 ms @ 2025-09-11T20:05:52.855Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedbfbf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=168&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: vCgQY4/h0ZIImYBw1BzipA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ulExnLhYtRVl4uMZTnweaA3E3AE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313638266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¿
+
003 TX OCTETS: 8106edafbfedbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_21_8.json b/autobahn/client/tungstenite_case_6_21_8.json new file mode 100644 index 0000000..11da6fc --- /dev/null +++ b/autobahn/client/tungstenite_case_6_21_8.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 168, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xedafbfedbfbf", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=168&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: vCgQY4/h0ZIImYBw1BzipA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ulExnLhYtRVl4uMZTnweaA3E3AE=\r\n\r\n", + "id": "6.21.8", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.855Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313638266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "\udbff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106edafbfedbfbf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_1.html b/autobahn/client/tungstenite_case_6_22_1.html new file mode 100644 index 0000000..6492c34 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.1 : Pass - 1 ms @ 2025-09-11T20:05:52.856Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffe', False)]}

+ Observed:
[('message', u'\ufffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=169&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: PfJ5TQSw9noUho/qU6KMSg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: cjG6fzNvndb8dOfXJHHV75KVM1A=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313639266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ￾
+
003 TX OCTETS: 8103efbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8183e7bc9d87080323
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6537626339643837
+
               ￾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888217b32e24145b
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3137623332653234
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_1.json b/autobahn/client/tungstenite_case_6_22_1.json new file mode 100644 index 0000000..869966e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 169, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=169&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: PfJ5TQSw9noUho/qU6KMSg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: cjG6fzNvndb8dOfXJHHV75KVM1A=\r\n\r\n", + "id": "6.22.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.856Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313639266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "8183e7bc9d87080323" + ] + ], + [ + "RF", + [ + 3, + "\ufffe" + ], + 1, + true, + 0, + true, + "e7bc9d87" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888217b32e24145b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "17b32e24" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_10.html b/autobahn/client/tungstenite_case_6_22_10.html new file mode 100644 index 0000000..547e43e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_10.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.10 : Pass - 2 ms @ 2025-09-11T20:05:52.881Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0004ffff', False)]}

+ Observed:
[('message', u'\U0004ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=178&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 7o2OW99/Px4oTq/HOmxjvw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 74lZKy556QgGh9m1OWDCi8G+dpI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313738266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ñ¿¿
+
003 TX OCTETS: 8104f18fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184c087142d3108ab92
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6330383731343264
+
               ñ¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88825716e7ba54fe
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3537313665376261
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_10.json b/autobahn/client/tungstenite_case_6_22_10.json new file mode 100644 index 0000000..fe075c4 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_10.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 178, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbf", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud8ff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=178&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 7o2OW99/Px4oTq/HOmxjvw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 74lZKy556QgGh9m1OWDCi8G+dpI=\r\n\r\n", + "id": "6.22.10", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud8ff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.881Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313738266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud8ff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f18fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184c087142d3108ab92" + ] + ], + [ + "RF", + [ + 4, + "\ud8ff\udfff" + ], + 1, + true, + 0, + true, + "c087142d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825716e7ba54fe" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5716e7ba" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_11.html b/autobahn/client/tungstenite_case_6_22_11.html new file mode 100644 index 0000000..90eba95 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_11.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.11 : Pass - 2 ms @ 2025-09-11T20:05:52.885Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0005fffe', False)]}

+ Observed:
[('message', u'\U0005fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=179&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: GL+zFz1UNJBLo8RFRV9VdA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: H0JeyWx49Cp2kLR3FW1Gzk3nx4E=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313739266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               񟿾
+
003 TX OCTETS: 8104f19fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184c7ba6e753625d1cb
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6337626136653735
+
               񟿾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882b6a7e42db54f
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6236613765343264
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_11.json b/autobahn/client/tungstenite_case_6_22_11.json new file mode 100644 index 0000000..26a82d1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_11.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 179, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbe", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud93f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=179&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: GL+zFz1UNJBLo8RFRV9VdA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: H0JeyWx49Cp2kLR3FW1Gzk3nx4E=\r\n\r\n", + "id": "6.22.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud93f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.885Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313739266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud93f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f19fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184c7ba6e753625d1cb" + ] + ], + [ + "RF", + [ + 4, + "\ud93f\udffe" + ], + 1, + true, + 0, + true, + "c7ba6e75" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b6a7e42db54f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b6a7e42d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_12.html b/autobahn/client/tungstenite_case_6_22_12.html new file mode 100644 index 0000000..ad14d28 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_12.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.12 : Pass - 2 ms @ 2025-09-11T20:05:52.889Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0005ffff', False)]}

+ Observed:
[('message', u'\U0005ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=180&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: N5TgCDNGfgdzxNHUFTLaQw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: DFflWUugE2NYae63KX5d3PLshvk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313830266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               񟿿
+
003 TX OCTETS: 8104f19fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818418361fa6e9a9a019
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3138333631666136
+
               񟿿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882308c0d453364
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3330386330643435
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_12.json b/autobahn/client/tungstenite_case_6_22_12.json new file mode 100644 index 0000000..9d9d4cf --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_12.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 180, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf19fbfbf", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud93f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=180&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: N5TgCDNGfgdzxNHUFTLaQw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: DFflWUugE2NYae63KX5d3PLshvk=\r\n\r\n", + "id": "6.22.12", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud93f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.889Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313830266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud93f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f19fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "818418361fa6e9a9a019" + ] + ], + [ + "RF", + [ + 4, + "\ud93f\udfff" + ], + 1, + true, + 0, + true, + "18361fa6" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882308c0d453364" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "308c0d45" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_13.html b/autobahn/client/tungstenite_case_6_22_13.html new file mode 100644 index 0000000..8449cc3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_13.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.13 : Pass - 2 ms @ 2025-09-11T20:05:52.894Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0006fffe', False)]}

+ Observed:
[('message', u'\U0006fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=181&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: EhZL2vWI+lGJWNcSUFaFUA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1MPw4HeD8MuKPC9AsJXk6hUL/UU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313831266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               񯿾
+
003 TX OCTETS: 8104f1afbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184163ecb22e791749c
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3136336563623232
+
               񯿾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882fe575fc1fdbf
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6665353735666331
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_13.json b/autobahn/client/tungstenite_case_6_22_13.json new file mode 100644 index 0000000..a1ed222 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_13.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 181, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbe", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud97f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=181&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: EhZL2vWI+lGJWNcSUFaFUA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1MPw4HeD8MuKPC9AsJXk6hUL/UU=\r\n\r\n", + "id": "6.22.13", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud97f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.894Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313831266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud97f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f1afbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184163ecb22e791749c" + ] + ], + [ + "RF", + [ + 4, + "\ud97f\udffe" + ], + 1, + true, + 0, + true, + "163ecb22" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fe575fc1fdbf" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fe575fc1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_14.html b/autobahn/client/tungstenite_case_6_22_14.html new file mode 100644 index 0000000..112c6d3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_14.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.14 : Pass - 3 ms @ 2025-09-11T20:05:52.898Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0006ffff', False)]}

+ Observed:
[('message', u'\U0006ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=182&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 0NnOpHUGQHKTJuZFCmOtiw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: kr77DlnSBD+VqLc/ClNLBfTwoiY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313832266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               񯿿
+
003 TX OCTETS: 8104f1afbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184d1fe13be2051ac01
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6431666531336265
+
               񯿿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88822d0884e52ee0
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3264303838346535
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_14.json b/autobahn/client/tungstenite_case_6_22_14.json new file mode 100644 index 0000000..a689b38 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_14.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 182, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1afbfbf", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud97f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=182&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 0NnOpHUGQHKTJuZFCmOtiw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: kr77DlnSBD+VqLc/ClNLBfTwoiY=\r\n\r\n", + "id": "6.22.14", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud97f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.898Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313832266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud97f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f1afbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184d1fe13be2051ac01" + ] + ], + [ + "RF", + [ + 4, + "\ud97f\udfff" + ], + 1, + true, + 0, + true, + "d1fe13be" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822d0884e52ee0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2d0884e5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_15.html b/autobahn/client/tungstenite_case_6_22_15.html new file mode 100644 index 0000000..e864066 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_15.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.15 : Pass - 2 ms @ 2025-09-11T20:05:52.903Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0007fffe', False)]}

+ Observed:
[('message', u'\U0007fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=183&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: g4RUk83N/hdv2tP6pIK68w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: SHL2B9BIQkOssh99DUNZJJwYUmM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313833266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ñ¿¿¾
+
003 TX OCTETS: 8104f1bfbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81845c866c93ad39d32d
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3563383636633933
+
               ñ¿¿¾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888201cb46720223
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3031636234363732
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_15.json b/autobahn/client/tungstenite_case_6_22_15.json new file mode 100644 index 0000000..5e21881 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_15.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 183, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbe", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud9bf\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=183&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: g4RUk83N/hdv2tP6pIK68w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: SHL2B9BIQkOssh99DUNZJJwYUmM=\r\n\r\n", + "id": "6.22.15", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud9bf\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.903Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313833266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud9bf\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f1bfbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "81845c866c93ad39d32d" + ] + ], + [ + "RF", + [ + 4, + "\ud9bf\udffe" + ], + 1, + true, + 0, + true, + "5c866c93" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888201cb46720223" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "01cb4672" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_16.html b/autobahn/client/tungstenite_case_6_22_16.html new file mode 100644 index 0000000..1defaea --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_16.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.16 : Pass - 2 ms @ 2025-09-11T20:05:52.906Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0007ffff', False)]}

+ Observed:
[('message', u'\U0007ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=184&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: +gbKd3D2tLFaFzYbjZMQ7g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xh5+Qq4xEv8G5kZt9Do0KBiaQzY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313834266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ñ¿¿¿
+
003 TX OCTETS: 8104f1bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184a0e8e12551575e9a
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6130653865313235
+
               ñ¿¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88826d75f89e6e9d
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3664373566383965
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_16.json b/autobahn/client/tungstenite_case_6_22_16.json new file mode 100644 index 0000000..8000a54 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_16.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 184, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf1bfbfbf", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud9bf\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=184&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: +gbKd3D2tLFaFzYbjZMQ7g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xh5+Qq4xEv8G5kZt9Do0KBiaQzY=\r\n\r\n", + "id": "6.22.16", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud9bf\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.906Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313834266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud9bf\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f1bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184a0e8e12551575e9a" + ] + ], + [ + "RF", + [ + 4, + "\ud9bf\udfff" + ], + 1, + true, + 0, + true, + "a0e8e125" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826d75f89e6e9d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6d75f89e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_17.html b/autobahn/client/tungstenite_case_6_22_17.html new file mode 100644 index 0000000..6c2b328 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_17.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.17 : Pass - 1 ms @ 2025-09-11T20:05:52.909Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0008fffe', False)]}

+ Observed:
[('message', u'\U0008fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=185&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: vpVXDsJz0w3S/FbAIRlUnw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: RCAW4MS8TjBAEi5aG8MAFOs+ZtU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313835266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ò¿¾
+
003 TX OCTETS: 8104f28fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184c79c8b68351334d6
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6337396338623638
+
               ò¿¾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882a38d03b8a065
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6133386430336238
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_17.json b/autobahn/client/tungstenite_case_6_22_17.json new file mode 100644 index 0000000..0bfbc52 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_17.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 185, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud9ff\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=185&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: vpVXDsJz0w3S/FbAIRlUnw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: RCAW4MS8TjBAEi5aG8MAFOs+ZtU=\r\n\r\n", + "id": "6.22.17", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud9ff\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.909Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313835266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud9ff\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f28fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184c79c8b68351334d6" + ] + ], + [ + "RF", + [ + 4, + "\ud9ff\udffe" + ], + 1, + true, + 0, + true, + "c79c8b68" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a38d03b8a065" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a38d03b8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_18.html b/autobahn/client/tungstenite_case_6_22_18.html new file mode 100644 index 0000000..5449d60 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_18.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.18 : Pass - 1 ms @ 2025-09-11T20:05:52.911Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0008ffff', False)]}

+ Observed:
[('message', u'\U0008ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=186&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: i6OjSyj6b5IhOAiLWmx4XA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4guBuWrYNWMtBmbhY3dJ5SSvwRU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313836266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ò¿¿
+
003 TX OCTETS: 8104f28fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184b8a460434a2bdffc
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6238613436303433
+
               ò¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882ff93b5e9fc7b
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6666393362356539
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_18.json b/autobahn/client/tungstenite_case_6_22_18.json new file mode 100644 index 0000000..6b4e925 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_18.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 186, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf28fbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud9ff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=186&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: i6OjSyj6b5IhOAiLWmx4XA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4guBuWrYNWMtBmbhY3dJ5SSvwRU=\r\n\r\n", + "id": "6.22.18", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud9ff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.911Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313836266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud9ff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f28fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184b8a460434a2bdffc" + ] + ], + [ + "RF", + [ + 4, + "\ud9ff\udfff" + ], + 1, + true, + 0, + true, + "b8a46043" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ff93b5e9fc7b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ff93b5e9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_19.html b/autobahn/client/tungstenite_case_6_22_19.html new file mode 100644 index 0000000..e5cd298 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_19.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.19 : Pass - 1 ms @ 2025-09-11T20:05:52.912Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0009fffe', False)]}

+ Observed:
[('message', u'\U0009fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=187&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 75pGTieyqifTL03a7v3MSg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8ETnZzKFvio3BqPc5N8tR4P4l9g=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313837266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               򟿾
+
003 TX OCTETS: 8104f29fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184f43602b106a9bd0f
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6634333630326231
+
               򟿾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88821badf5bd1845
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3162616466356264
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_19.json b/autobahn/client/tungstenite_case_6_22_19.json new file mode 100644 index 0000000..dbaf7a1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_19.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 187, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uda3f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=187&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 75pGTieyqifTL03a7v3MSg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8ETnZzKFvio3BqPc5N8tR4P4l9g=\r\n\r\n", + "id": "6.22.19", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uda3f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.912Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313837266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\uda3f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f29fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184f43602b106a9bd0f" + ] + ], + [ + "RF", + [ + 4, + "\uda3f\udffe" + ], + 1, + true, + 0, + true, + "f43602b1" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821badf5bd1845" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1badf5bd" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_2.html b/autobahn/client/tungstenite_case_6_22_2.html new file mode 100644 index 0000000..fedf5bb --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.2 : Pass - 1 ms @ 2025-09-11T20:05:52.858Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\uffff', False)]}

+ Observed:
[('message', u'\uffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=170&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: QwZm/JMIb9KZmTeBeYYb9g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: umRX6rhLHmLAkzIsZJpktZ0j7Tw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313730266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ï¿¿
+
003 TX OCTETS: 8103efbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8183fcad573e1312e8
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6663616435373365
+
               ï¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882d30da81dd0e5
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6433306461383164
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_2.json b/autobahn/client/tungstenite_case_6_22_2.json new file mode 100644 index 0000000..5e530ce --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_2.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 170, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uffff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=170&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: QwZm/JMIb9KZmTeBeYYb9g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: umRX6rhLHmLAkzIsZJpktZ0j7Tw=\r\n\r\n", + "id": "6.22.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uffff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.858Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313730266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "8183fcad573e1312e8" + ] + ], + [ + "RF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + true, + "fcad573e" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d30da81dd0e5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d30da81d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_20.html b/autobahn/client/tungstenite_case_6_22_20.html new file mode 100644 index 0000000..efc0ff0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_20.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.20 : Pass - 2 ms @ 2025-09-11T20:05:52.914Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0009ffff', False)]}

+ Observed:
[('message', u'\U0009ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=188&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: eaTRXHVpjSeLFHUMvuyukg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: j9+4HOqcDJpJ3jlgnUk/UxaRTUc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313838266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               òŸ¿¿
+
003 TX OCTETS: 8104f29fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184af2910a05db6af1f
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6166323931306130
+
               òŸ¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882626f22456187
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3632366632323435
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_20.json b/autobahn/client/tungstenite_case_6_22_20.json new file mode 100644 index 0000000..3d53472 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_20.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 188, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf29fbfbf", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uda3f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=188&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: eaTRXHVpjSeLFHUMvuyukg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: j9+4HOqcDJpJ3jlgnUk/UxaRTUc=\r\n\r\n", + "id": "6.22.20", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uda3f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.914Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313838266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\uda3f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f29fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184af2910a05db6af1f" + ] + ], + [ + "RF", + [ + 4, + "\uda3f\udfff" + ], + 1, + true, + 0, + true, + "af2910a0" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882626f22456187" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "626f2245" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_21.html b/autobahn/client/tungstenite_case_6_22_21.html new file mode 100644 index 0000000..f2fe18e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_21.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.21 : Pass - 3 ms @ 2025-09-11T20:05:52.918Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000afffe', False)]}

+ Observed:
[('message', u'\U000afffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=189&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: xJ8bKnyeVfu/2fVELDAh9w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +J/vUy+47Q3CU6e0DhdqT2KnnZ4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313839266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               򯿾
+
003 TX OCTETS: 8104f2afbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184f92283700b8d3cce
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6639323238333730
+
               򯿾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882a23d0c44a1d5
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6132336430633434
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_21.json b/autobahn/client/tungstenite_case_6_22_21.json new file mode 100644 index 0000000..cf37ea8 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_21.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 189, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbe", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uda7f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=189&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: xJ8bKnyeVfu/2fVELDAh9w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +J/vUy+47Q3CU6e0DhdqT2KnnZ4=\r\n\r\n", + "id": "6.22.21", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uda7f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.918Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313839266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\uda7f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f2afbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184f92283700b8d3cce" + ] + ], + [ + "RF", + [ + 4, + "\uda7f\udffe" + ], + 1, + true, + 0, + true, + "f9228370" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a23d0c44a1d5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a23d0c44" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_22.html b/autobahn/client/tungstenite_case_6_22_22.html new file mode 100644 index 0000000..6c01258 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_22.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.22 : Pass - 3 ms @ 2025-09-11T20:05:52.927Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000affff', False)]}

+ Observed:
[('message', u'\U000affff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=190&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: yYzmQMOQaUIBr9PyC+H4Hw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VDiJRjx6iHUvEa7By6/Fz8vHJaY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313930266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               򯿿
+
003 TX OCTETS: 8104f2afbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818481d89741737728fe
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3831643839373431
+
               򯿿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882214f646122a7
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3231346636343631
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_22.json b/autobahn/client/tungstenite_case_6_22_22.json new file mode 100644 index 0000000..efd8ae8 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_22.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 190, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2afbfbf", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uda7f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=190&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: yYzmQMOQaUIBr9PyC+H4Hw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VDiJRjx6iHUvEa7By6/Fz8vHJaY=\r\n\r\n", + "id": "6.22.22", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uda7f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.927Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313930266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\uda7f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f2afbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "818481d89741737728fe" + ] + ], + [ + "RF", + [ + 4, + "\uda7f\udfff" + ], + 1, + true, + 0, + true, + "81d89741" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882214f646122a7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "214f6461" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_23.html b/autobahn/client/tungstenite_case_6_22_23.html new file mode 100644 index 0000000..eb09cc2 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_23.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.23 : Pass - 2 ms @ 2025-09-11T20:05:52.932Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000bfffe', False)]}

+ Observed:
[('message', u'\U000bfffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=191&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: YKq6liY4bdqDBQtj8Fogig==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VyUr3rZO3JBYazyFHn191J2zuRY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313931266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ò¿¿¾
+
003 TX OCTETS: 8104f2bfbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818444e42b5fb65b94e1
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3434653432623566
+
               ò¿¿¾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88826e1e8d716df6
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3665316538643731
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_23.json b/autobahn/client/tungstenite_case_6_22_23.json new file mode 100644 index 0000000..e2b0c66 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_23.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 191, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbe", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udabf\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=191&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: YKq6liY4bdqDBQtj8Fogig==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VyUr3rZO3JBYazyFHn191J2zuRY=\r\n\r\n", + "id": "6.22.23", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udabf\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.932Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313931266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udabf\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f2bfbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "818444e42b5fb65b94e1" + ] + ], + [ + "RF", + [ + 4, + "\udabf\udffe" + ], + 1, + true, + 0, + true, + "44e42b5f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826e1e8d716df6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6e1e8d71" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_24.html b/autobahn/client/tungstenite_case_6_22_24.html new file mode 100644 index 0000000..994f86c --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_24.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.24 : Pass - 1 ms @ 2025-09-11T20:05:52.935Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000bffff', False)]}

+ Observed:
[('message', u'\U000bffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=192&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: LlF8mmX6gBUJRkGKtpCaHg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Lxu6WYCstmaa5lEutgrDGE5LRPI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313932266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ò¿¿¿
+
003 TX OCTETS: 8104f2bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184e40eb00316b10fbc
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6534306562303033
+
               ò¿¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882038714bd006f
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3033383731346264
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_24.json b/autobahn/client/tungstenite_case_6_22_24.json new file mode 100644 index 0000000..621d026 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_24.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 192, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf2bfbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udabf\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=192&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: LlF8mmX6gBUJRkGKtpCaHg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Lxu6WYCstmaa5lEutgrDGE5LRPI=\r\n\r\n", + "id": "6.22.24", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udabf\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.935Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313932266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udabf\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f2bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184e40eb00316b10fbc" + ] + ], + [ + "RF", + [ + 4, + "\udabf\udfff" + ], + 1, + true, + 0, + true, + "e40eb003" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882038714bd006f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "038714bd" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_25.html b/autobahn/client/tungstenite_case_6_22_25.html new file mode 100644 index 0000000..be2beaa --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_25.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.25 : Pass - 1 ms @ 2025-09-11T20:05:52.938Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000cfffe', False)]}

+ Observed:
[('message', u'\U000cfffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=193&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 7zJ1U2m8cVBMwgBPqV9eXg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: nxOthRmnsAu1F7wUoi98IvFcBog=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313933266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¿¾
+
003 TX OCTETS: 8104f38fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818495810dcf660eb271
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3935383130646366
+
               ó¿¾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882df79e375dc91
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6466373965333735
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_25.json b/autobahn/client/tungstenite_case_6_22_25.json new file mode 100644 index 0000000..eb065be --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_25.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 193, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udaff\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=193&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 7zJ1U2m8cVBMwgBPqV9eXg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: nxOthRmnsAu1F7wUoi98IvFcBog=\r\n\r\n", + "id": "6.22.25", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udaff\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.938Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313933266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udaff\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f38fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "818495810dcf660eb271" + ] + ], + [ + "RF", + [ + 4, + "\udaff\udffe" + ], + 1, + true, + 0, + true, + "95810dcf" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882df79e375dc91" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "df79e375" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_26.html b/autobahn/client/tungstenite_case_6_22_26.html new file mode 100644 index 0000000..a438564 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_26.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.26 : Pass - 2 ms @ 2025-09-11T20:05:52.941Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000cffff', False)]}

+ Observed:
[('message', u'\U000cffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=194&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: GS4xCuf/wIuU9fVPQE9wVA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5ujW9GQZlauXow6/hAL8MAerAGo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313934266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¿¿
+
003 TX OCTETS: 8104f38fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184eee1e0951d6e5f2a
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6565653165303935
+
               ó¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882ebac0b8fe844
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6562616330623866
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_26.json b/autobahn/client/tungstenite_case_6_22_26.json new file mode 100644 index 0000000..35c02f3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_26.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 194, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf38fbfbf", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udaff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=194&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: GS4xCuf/wIuU9fVPQE9wVA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5ujW9GQZlauXow6/hAL8MAerAGo=\r\n\r\n", + "id": "6.22.26", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udaff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.941Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313934266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udaff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f38fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184eee1e0951d6e5f2a" + ] + ], + [ + "RF", + [ + 4, + "\udaff\udfff" + ], + 1, + true, + 0, + true, + "eee1e095" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ebac0b8fe844" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ebac0b8f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_27.html b/autobahn/client/tungstenite_case_6_22_27.html new file mode 100644 index 0000000..ddb772c --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_27.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.27 : Pass - 1 ms @ 2025-09-11T20:05:52.944Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000dfffe', False)]}

+ Observed:
[('message', u'\U000dfffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=195&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: X/YsLf7CLHm7cWldC8FheQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: qkj/or6YMfk54Vfr6tG/jilurpo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313935266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               󟿾
+
003 TX OCTETS: 8104f39fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184f9415db10adee20f
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6639343135646231
+
               󟿾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882d7573626d4bf
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6437353733363236
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_27.json b/autobahn/client/tungstenite_case_6_22_27.json new file mode 100644 index 0000000..c98afaf --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_27.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 195, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udb3f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=195&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: X/YsLf7CLHm7cWldC8FheQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: qkj/or6YMfk54Vfr6tG/jilurpo=\r\n\r\n", + "id": "6.22.27", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udb3f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.944Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313935266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udb3f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f39fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184f9415db10adee20f" + ] + ], + [ + "RF", + [ + 4, + "\udb3f\udffe" + ], + 1, + true, + 0, + true, + "f9415db1" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d7573626d4bf" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d7573626" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_28.html b/autobahn/client/tungstenite_case_6_22_28.html new file mode 100644 index 0000000..8d828c3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_28.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.28 : Pass - 2 ms @ 2025-09-11T20:05:52.946Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000dffff', False)]}

+ Observed:
[('message', u'\U000dffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=196&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: BCaVjgURutCSkUTKyaOTjA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sgxCBVa5vFPLotKPjEnj9e/Kj60=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313936266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               óŸ¿¿
+
003 TX OCTETS: 8104f39fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184f8ac3f500b3380ef
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6638616333663530
+
               óŸ¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882d25bc827d1b3
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6432356263383237
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_28.json b/autobahn/client/tungstenite_case_6_22_28.json new file mode 100644 index 0000000..4f61764 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_28.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 196, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf39fbfbf", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udb3f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=196&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: BCaVjgURutCSkUTKyaOTjA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sgxCBVa5vFPLotKPjEnj9e/Kj60=\r\n\r\n", + "id": "6.22.28", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udb3f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.946Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313936266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udb3f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f39fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184f8ac3f500b3380ef" + ] + ], + [ + "RF", + [ + 4, + "\udb3f\udfff" + ], + 1, + true, + 0, + true, + "f8ac3f50" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d25bc827d1b3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d25bc827" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_29.html b/autobahn/client/tungstenite_case_6_22_29.html new file mode 100644 index 0000000..be64d16 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_29.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.29 : Pass - 1 ms @ 2025-09-11T20:05:52.949Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000efffe', False)]}

+ Observed:
[('message', u'\U000efffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=197&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: qSlgvnRzoXLcrgorUuL8MA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: qv9FW0ur9UzMt0WinEBlWbN3I6A=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313937266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               󯿾
+
003 TX OCTETS: 8104f3afbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81849ae4f183694b4e3d
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3961653466313833
+
               󯿾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88825c004d555fe8
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3563303034643535
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_29.json b/autobahn/client/tungstenite_case_6_22_29.json new file mode 100644 index 0000000..4c36b99 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_29.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 197, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udb7f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=197&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: qSlgvnRzoXLcrgorUuL8MA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: qv9FW0ur9UzMt0WinEBlWbN3I6A=\r\n\r\n", + "id": "6.22.29", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udb7f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.949Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313937266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udb7f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f3afbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "81849ae4f183694b4e3d" + ] + ], + [ + "RF", + [ + 4, + "\udb7f\udffe" + ], + 1, + true, + 0, + true, + "9ae4f183" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825c004d555fe8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5c004d55" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_3.html b/autobahn/client/tungstenite_case_6_22_3.html new file mode 100644 index 0000000..f1ae84d --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.3 : Pass - 5 ms @ 2025-09-11T20:05:52.860Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0001fffe', False)]}

+ Observed:
[('message', u'\U0001fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=171&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 5dryINLfMpH2XqzOG/KJkg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ujA7da0KlnNGQ5WNTn5mcoUuyYM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313731266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               🿾
+
003 TX OCTETS: 8104f09fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818497d1cedd674e7163
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3937643163656464
+
               🿾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882b5bc9e94b654
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6235626339653934
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_3.json b/autobahn/client/tungstenite_case_6_22_3.json new file mode 100644 index 0000000..a0ac4cb --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_3.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 171, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbe", + "droppedByMe": true, + "duration": 5, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud83f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=171&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 5dryINLfMpH2XqzOG/KJkg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ujA7da0KlnNGQ5WNTn5mcoUuyYM=\r\n\r\n", + "id": "6.22.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud83f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.860Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313731266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud83f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f09fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "818497d1cedd674e7163" + ] + ], + [ + "RF", + [ + 4, + "\ud83f\udffe" + ], + 1, + true, + 0, + true, + "97d1cedd" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b5bc9e94b654" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b5bc9e94" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_30.html b/autobahn/client/tungstenite_case_6_22_30.html new file mode 100644 index 0000000..3088f83 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_30.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.30 : Pass - 6 ms @ 2025-09-11T20:05:52.951Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000effff', False)]}

+ Observed:
[('message', u'\U000effff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=198&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: UMGxt64uiw0uLKyxDc1FoQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: fTe88tUJoOE0m1E+qaNYVwSKfUU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313938266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               󯿿
+
003 TX OCTETS: 8104f3afbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81846a4b6ab999e4d506
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3661346236616239
+
               󯿿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882af0e07b5ace6
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6166306530376235
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_30.json b/autobahn/client/tungstenite_case_6_22_30.json new file mode 100644 index 0000000..c4afe48 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_30.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 198, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3afbfbf", + "droppedByMe": true, + "duration": 6, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udb7f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=198&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: UMGxt64uiw0uLKyxDc1FoQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: fTe88tUJoOE0m1E+qaNYVwSKfUU=\r\n\r\n", + "id": "6.22.30", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udb7f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.951Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313938266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udb7f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f3afbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "81846a4b6ab999e4d506" + ] + ], + [ + "RF", + [ + 4, + "\udb7f\udfff" + ], + 1, + true, + 0, + true, + "6a4b6ab9" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882af0e07b5ace6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "af0e07b5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_31.html b/autobahn/client/tungstenite_case_6_22_31.html new file mode 100644 index 0000000..24383e3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_31.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.31 : Pass - 1 ms @ 2025-09-11T20:05:52.958Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000ffffe', False)]}

+ Observed:
[('message', u'\U000ffffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=199&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: m+mOaI/SN8F6zXUMbyTkSg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Hm6aGk3zQ6KhuSJwmVMN6OF92sI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313939266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¿¿¾
+
003 TX OCTETS: 8104f3bfbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81845eaa18bdad15a703
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3565616131386264
+
               ó¿¿¾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882dcd2238adf3a
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6463643232333861
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_31.json b/autobahn/client/tungstenite_case_6_22_31.json new file mode 100644 index 0000000..51c116a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_31.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 199, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbbf\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=199&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: m+mOaI/SN8F6zXUMbyTkSg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Hm6aGk3zQ6KhuSJwmVMN6OF92sI=\r\n\r\n", + "id": "6.22.31", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbbf\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.958Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313939266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbbf\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f3bfbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "81845eaa18bdad15a703" + ] + ], + [ + "RF", + [ + 4, + "\udbbf\udffe" + ], + 1, + true, + 0, + true, + "5eaa18bd" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882dcd2238adf3a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "dcd2238a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_32.html b/autobahn/client/tungstenite_case_6_22_32.html new file mode 100644 index 0000000..57bc07a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_32.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.32 : Pass - 1 ms @ 2025-09-11T20:05:52.959Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U000fffff', False)]}

+ Observed:
[('message', u'\U000fffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=200&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: svqmO0IPNOSiAoE4eRcCHA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: t/Jvc8TJ8mpw3YKUyZjohE9LqEQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323030266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ó¿¿¿
+
003 TX OCTETS: 8104f3bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81845057fac7a3e84578
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3530353766616337
+
               ó¿¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88824bfa08914812
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3462666130383931
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_32.json b/autobahn/client/tungstenite_case_6_22_32.json new file mode 100644 index 0000000..0936123 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_32.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 200, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf3bfbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbbf\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=200&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: svqmO0IPNOSiAoE4eRcCHA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: t/Jvc8TJ8mpw3YKUyZjohE9LqEQ=\r\n\r\n", + "id": "6.22.32", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbbf\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.959Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323030266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbbf\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f3bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "81845057fac7a3e84578" + ] + ], + [ + "RF", + [ + 4, + "\udbbf\udfff" + ], + 1, + true, + 0, + true, + "5057fac7" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824bfa08914812" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4bfa0891" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_33.html b/autobahn/client/tungstenite_case_6_22_33.html new file mode 100644 index 0000000..d26a74f --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_33.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.33 : Pass - 2 ms @ 2025-09-11T20:05:52.961Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0010fffe', False)]}

+ Observed:
[('message', u'\U0010fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=201&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: WQhZlblYaUcD40ZUi9N59w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: T2weOd34LHEpcMZ3kpI45MIOg1k=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323031266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¾
+
003 TX OCTETS: 8104f48fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184cc83429d380cfd23
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6363383334323964
+
               ô¿¾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882f5343175f6dc
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6635333433313735
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_33.json b/autobahn/client/tungstenite_case_6_22_33.json new file mode 100644 index 0000000..e488a26 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_33.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 201, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbe", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbff\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=201&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: WQhZlblYaUcD40ZUi9N59w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: T2weOd34LHEpcMZ3kpI45MIOg1k=\r\n\r\n", + "id": "6.22.33", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbff\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.961Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323031266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbff\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f48fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184cc83429d380cfd23" + ] + ], + [ + "RF", + [ + 4, + "\udbff\udffe" + ], + 1, + true, + 0, + true, + "cc83429d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f5343175f6dc" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f5343175" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_34.html b/autobahn/client/tungstenite_case_6_22_34.html new file mode 100644 index 0000000..41eb28a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_34.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.34 : Pass - 1 ms @ 2025-09-11T20:05:52.964Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0010ffff', False)]}

+ Observed:
[('message', u'\U0010ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=202&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: MLuB7h6FmkkPEOsnKkcSCg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: eWyPghZkGl9HUlG5yOr75yUhqo0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323032266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¿
+
003 TX OCTETS: 8104f48fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184a1e7700a5568cfb5
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6131653737303061
+
               ô¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888273c8ccf87020
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3733633863636638
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_34.json b/autobahn/client/tungstenite_case_6_22_34.json new file mode 100644 index 0000000..9549aeb --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_34.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 202, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=202&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: MLuB7h6FmkkPEOsnKkcSCg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: eWyPghZkGl9HUlG5yOr75yUhqo0=\r\n\r\n", + "id": "6.22.34", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.964Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323032266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f48fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184a1e7700a5568cfb5" + ] + ], + [ + "RF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + true, + "a1e7700a" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888273c8ccf87020" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "73c8ccf8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_4.html b/autobahn/client/tungstenite_case_6_22_4.html new file mode 100644 index 0000000..00d16ae --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_4.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.4 : Pass - 1 ms @ 2025-09-11T20:05:52.866Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0001ffff', False)]}

+ Observed:
[('message', u'\U0001ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=172&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: LO6c1EQcdnbviOo+zP0C/w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zshNLTc2Ge0629DqoHvszhhHrYI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313732266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               🿿
+
003 TX OCTETS: 8104f09fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818427705c24d7efe39b
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3237373035633234
+
               🿿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88828ebe0f248d56
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3865626530663234
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_4.json b/autobahn/client/tungstenite_case_6_22_4.json new file mode 100644 index 0000000..44cf1fe --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_4.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 172, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf09fbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud83f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=172&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: LO6c1EQcdnbviOo+zP0C/w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zshNLTc2Ge0629DqoHvszhhHrYI=\r\n\r\n", + "id": "6.22.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud83f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.866Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313732266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud83f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f09fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "818427705c24d7efe39b" + ] + ], + [ + "RF", + [ + 4, + "\ud83f\udfff" + ], + 1, + true, + 0, + true, + "27705c24" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828ebe0f248d56" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8ebe0f24" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_5.html b/autobahn/client/tungstenite_case_6_22_5.html new file mode 100644 index 0000000..64d4720 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_5.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.5 : Pass - 2 ms @ 2025-09-11T20:05:52.868Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0002fffe', False)]}

+ Observed:
[('message', u'\U0002fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=173&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /ipDoK+u9Ykp9EeRHj//vg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: V9xg70UbabmuTQLeLoZmdVXYlh8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313733266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               𯿾
+
003 TX OCTETS: 8104f0afbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818498ee8c9c68413322
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3938656538633963
+
               𯿾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88824eec3dfd4d04
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3465656333646664
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_5.json b/autobahn/client/tungstenite_case_6_22_5.json new file mode 100644 index 0000000..3c2786a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_5.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 173, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbe", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud87f\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=173&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /ipDoK+u9Ykp9EeRHj//vg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: V9xg70UbabmuTQLeLoZmdVXYlh8=\r\n\r\n", + "id": "6.22.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud87f\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.868Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313733266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud87f\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0afbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "818498ee8c9c68413322" + ] + ], + [ + "RF", + [ + 4, + "\ud87f\udffe" + ], + 1, + true, + 0, + true, + "98ee8c9c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824eec3dfd4d04" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4eec3dfd" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_6.html b/autobahn/client/tungstenite_case_6_22_6.html new file mode 100644 index 0000000..3197dc3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_6.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.6 : Pass - 5 ms @ 2025-09-11T20:05:52.871Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0002ffff', False)]}

+ Observed:
[('message', u'\U0002ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=174&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: uOTkbf1SRR+MTpuB5zmP9A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: p9two82gJPFwBqV+xVUdxqdvgEU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313734266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               𯿿
+
003 TX OCTETS: 8104f0afbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184d67c08b426d3b70b
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6436376330386234
+
               𯿿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888271eee1537206
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3731656565313533
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_6.json b/autobahn/client/tungstenite_case_6_22_6.json new file mode 100644 index 0000000..3c24479 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_6.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 174, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0afbfbf", + "droppedByMe": true, + "duration": 5, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud87f\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=174&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: uOTkbf1SRR+MTpuB5zmP9A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: p9two82gJPFwBqV+xVUdxqdvgEU=\r\n\r\n", + "id": "6.22.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud87f\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.871Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313734266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud87f\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0afbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184d67c08b426d3b70b" + ] + ], + [ + "RF", + [ + 4, + "\ud87f\udfff" + ], + 1, + true, + 0, + true, + "d67c08b4" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888271eee1537206" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "71eee153" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_7.html b/autobahn/client/tungstenite_case_6_22_7.html new file mode 100644 index 0000000..92064da --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_7.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.7 : Pass - 1 ms @ 2025-09-11T20:05:52.876Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0003fffe', False)]}

+ Observed:
[('message', u'\U0003fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=175&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: sG32mFcXXMXw1SGF67XhLg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: VkOSak7hxEWpAzUkoFwcmD4WKzk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313735266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð¿¿¾
+
003 TX OCTETS: 8104f0bfbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184b3b84c0e4307f3b0
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6233623834633065
+
               ð¿¿¾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888267644064648c
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3637363434303634
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_7.json b/autobahn/client/tungstenite_case_6_22_7.json new file mode 100644 index 0000000..308e214 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_7.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 175, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud8bf\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=175&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: sG32mFcXXMXw1SGF67XhLg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: VkOSak7hxEWpAzUkoFwcmD4WKzk=\r\n\r\n", + "id": "6.22.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud8bf\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.876Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313735266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud8bf\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0bfbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184b3b84c0e4307f3b0" + ] + ], + [ + "RF", + [ + 4, + "\ud8bf\udffe" + ], + 1, + true, + 0, + true, + "b3b84c0e" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888267644064648c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "67644064" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_8.html b/autobahn/client/tungstenite_case_6_22_8.html new file mode 100644 index 0000000..2fdf576 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_8.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.8 : Pass - 1 ms @ 2025-09-11T20:05:52.878Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0003ffff', False)]}

+ Observed:
[('message', u'\U0003ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=176&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: f2x1gr9lYA88VhYkW/DT6w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ITrKMdEf/HLY7Q5TllWEie7vDlU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313736266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð¿¿¿
+
003 TX OCTETS: 8104f0bfbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184f7951d7c072aa2c3
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6637393531643763
+
               ð¿¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882fd176bc9feff
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6664313736626339
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_8.json b/autobahn/client/tungstenite_case_6_22_8.json new file mode 100644 index 0000000..50ae0ec --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_8.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 176, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0bfbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud8bf\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=176&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: f2x1gr9lYA88VhYkW/DT6w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ITrKMdEf/HLY7Q5TllWEie7vDlU=\r\n\r\n", + "id": "6.22.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud8bf\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.878Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313736266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud8bf\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0bfbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184f7951d7c072aa2c3" + ] + ], + [ + "RF", + [ + 4, + "\ud8bf\udfff" + ], + 1, + true, + 0, + true, + "f7951d7c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fd176bc9feff" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fd176bc9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_22_9.html b/autobahn/client/tungstenite_case_6_22_9.html new file mode 100644 index 0000000..88591fc --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_9.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.22.9 : Pass - 1 ms @ 2025-09-11T20:05:52.879Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0004fffe', False)]}

+ Observed:
[('message', u'\U0004fffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=177&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 08ZddHj2yn7/LTKilciLdw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xTJEtlZfHjX3QYxjf8V+7CJLshA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313737266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ñ¿¾
+
003 TX OCTETS: 8104f18fbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81843b08c080ca877f3e
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=3362303863303830
+
               ñ¿¾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88825140d6cb52a8
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3531343064366362
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_22_9.json b/autobahn/client/tungstenite_case_6_22_9.json new file mode 100644 index 0000000..6f41cd2 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_22_9.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 177, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf18fbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud8ff\udffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=177&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 08ZddHj2yn7/LTKilciLdw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xTJEtlZfHjX3QYxjf8V+7CJLshA=\r\n\r\n", + "id": "6.22.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud8ff\udffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.879Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313737266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud8ff\udffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f18fbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "81843b08c080ca877f3e" + ] + ], + [ + "RF", + [ + 4, + "\ud8ff\udffe" + ], + 1, + true, + 0, + true, + "3b08c080" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825140d6cb52a8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5140d6cb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_23_1.html b/autobahn/client/tungstenite_case_6_23_1.html new file mode 100644 index 0000000..036107a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.23.1 : Pass - 1 ms @ 2025-09-11T20:05:52.965Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfb9

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufff9', False)]}

+ Observed:
[('message', u'\ufff9', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=203&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: fjDqrT9vHaW8/0UnrrdAcg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: lm41ezXAEOOWwhOgYYG0Tky+XBQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323033266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 8103efbfb9
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81839bf8056d7447bc
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3962663830353664
+
               
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888210cdddd11325
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3130636464646431
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_23_1.json b/autobahn/client/tungstenite_case_6_23_1.json new file mode 100644 index 0000000..ce86cc0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 203, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfb9", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufff9", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=203&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: fjDqrT9vHaW8/0UnrrdAcg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: lm41ezXAEOOWwhOgYYG0Tky+XBQ=\r\n\r\n", + "id": "6.23.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufff9", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.965Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323033266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufff9" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfb9" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "81839bf8056d7447bc" + ] + ], + [ + "RF", + [ + 3, + "\ufff9" + ], + 1, + true, + 0, + true, + "9bf8056d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888210cdddd11325" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "10cdddd1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_23_2.html b/autobahn/client/tungstenite_case_6_23_2.html new file mode 100644 index 0000000..394f6a1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.23.2 : Pass - 1 ms @ 2025-09-11T20:05:52.967Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfba

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffa', False)]}

+ Observed:
[('message', u'\ufffa', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=204&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: oKBSBZZ9a9wc8q8A99oojQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: J+OeNsymXYWBpgoDZpYW8n/jJw4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323034266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 8103efbfba
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81833c22239fd39d99
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3363323232333966
+
               
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88828173855e829b
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3831373338353565
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_23_2.json b/autobahn/client/tungstenite_case_6_23_2.json new file mode 100644 index 0000000..c696172 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_2.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 204, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfba", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffa", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=204&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: oKBSBZZ9a9wc8q8A99oojQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: J+OeNsymXYWBpgoDZpYW8n/jJw4=\r\n\r\n", + "id": "6.23.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffa", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.967Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323034266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffa" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfba" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "81833c22239fd39d99" + ] + ], + [ + "RF", + [ + 3, + "\ufffa" + ], + 1, + true, + 0, + true, + "3c22239f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828173855e829b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8173855e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_23_3.html b/autobahn/client/tungstenite_case_6_23_3.html new file mode 100644 index 0000000..6a0d970 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.23.3 : Pass - 1 ms @ 2025-09-11T20:05:52.968Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbb

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffb', False)]}

+ Observed:
[('message', u'\ufffb', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=205&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: zbIvvxmttpmPhzNOWqqAqg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: I5rdZMPJrxZihnNNEDBvwLhD14w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323035266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ï¿»
+
003 TX OCTETS: 8103efbfbb
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8183d08e2fe73f3194
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6430386532666537
+
               ï¿»
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882bb705426b898
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6262373035343236
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_23_3.json b/autobahn/client/tungstenite_case_6_23_3.json new file mode 100644 index 0000000..657e31a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_3.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 205, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbb", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffb", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=205&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: zbIvvxmttpmPhzNOWqqAqg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: I5rdZMPJrxZihnNNEDBvwLhD14w=\r\n\r\n", + "id": "6.23.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffb", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.968Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323035266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffb" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbb" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "8183d08e2fe73f3194" + ] + ], + [ + "RF", + [ + 3, + "\ufffb" + ], + 1, + true, + 0, + true, + "d08e2fe7" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882bb705426b898" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "bb705426" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_23_4.html b/autobahn/client/tungstenite_case_6_23_4.html new file mode 100644 index 0000000..1ced860 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_4.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.23.4 : Pass - 1 ms @ 2025-09-11T20:05:52.970Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbc

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffc', False)]}

+ Observed:
[('message', u'\ufffc', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=206&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: vSbmuGMslnKMafGsFKy7pg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5fPvA+g6PlYxKJw1GSpPYS3lh6Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323036266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 8103efbfbc
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8183b03b39a95f8485
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6230336233396139
+
               
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882c0236158c3cb
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6330323336313538
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_23_4.json b/autobahn/client/tungstenite_case_6_23_4.json new file mode 100644 index 0000000..e8219c5 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_4.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 206, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbc", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffc", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=206&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: vSbmuGMslnKMafGsFKy7pg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5fPvA+g6PlYxKJw1GSpPYS3lh6Y=\r\n\r\n", + "id": "6.23.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffc", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.970Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323036266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffc" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbc" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "8183b03b39a95f8485" + ] + ], + [ + "RF", + [ + 3, + "\ufffc" + ], + 1, + true, + 0, + true, + "b03b39a9" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c0236158c3cb" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c0236158" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_23_5.html b/autobahn/client/tungstenite_case_6_23_5.html new file mode 100644 index 0000000..1da1327 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_5.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.23.5 : Pass - 1 ms @ 2025-09-11T20:05:52.972Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffd', False)]}

+ Observed:
[('message', u'\ufffd', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=207&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /OWC2rxq8k1Vv2lBqY5r7w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: hnyCCvpk1RWeb7CDyne8LCOhpmg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323037266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               �
+
003 TX OCTETS: 8103efbfbd
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818392abbea27d1403
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3932616262656132
+
               �
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882170111b214e9
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3137303131316232
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_23_5.json b/autobahn/client/tungstenite_case_6_23_5.json new file mode 100644 index 0000000..118e7e6 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_5.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 207, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbd", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffd", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=207&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /OWC2rxq8k1Vv2lBqY5r7w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: hnyCCvpk1RWeb7CDyne8LCOhpmg=\r\n\r\n", + "id": "6.23.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffd", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.972Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323037266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbd" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "818392abbea27d1403" + ] + ], + [ + "RF", + [ + 3, + "\ufffd" + ], + 1, + true, + 0, + true, + "92abbea2" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882170111b214e9" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "170111b2" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_23_6.html b/autobahn/client/tungstenite_case_6_23_6.html new file mode 100644 index 0000000..54709b1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_6.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.23.6 : Pass - 1 ms @ 2025-09-11T20:05:52.974Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\ufffe', False)]}

+ Observed:
[('message', u'\ufffe', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=208&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: fPqXSbVrRXj2WHflgPwNJQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: p9dH+C/Vrg5p3dCC4VzpeA5JoNY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323038266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ￾
+
003 TX OCTETS: 8103efbfbe
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81838a95d9dc652a67
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3861393564396463
+
               ￾
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882788e69887b66
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3738386536393838
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_23_6.json b/autobahn/client/tungstenite_case_6_23_6.json new file mode 100644 index 0000000..5454482 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_6.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 208, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbe", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ufffe", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=208&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: fPqXSbVrRXj2WHflgPwNJQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: p9dH+C/Vrg5p3dCC4VzpeA5JoNY=\r\n\r\n", + "id": "6.23.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ufffe", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.974Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323038266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\ufffe" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbe" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "81838a95d9dc652a67" + ] + ], + [ + "RF", + [ + 3, + "\ufffe" + ], + 1, + true, + 0, + true, + "8a95d9dc" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882788e69887b66" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "788e6988" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_23_7.html b/autobahn/client/tungstenite_case_6_23_7.html new file mode 100644 index 0000000..bf7ca73 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_7.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.23.7 : Pass - 1 ms @ 2025-09-11T20:05:52.976Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\uffff', False)]}

+ Observed:
[('message', u'\uffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=209&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 3GgOnIg1+iOpQx9iV9rBEg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: T9PSZBxDoORjaWaW55hS4HQ/Feo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323039266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ï¿¿
+
003 TX OCTETS: 8103efbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818327fa3c2fc84583
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3237666133633266
+
               ï¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882d877aa31db9f
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6438373761613331
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_23_7.json b/autobahn/client/tungstenite_case_6_23_7.json new file mode 100644 index 0000000..024d626 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_23_7.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 209, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uffff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=209&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 3GgOnIg1+iOpQx9iV9rBEg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: T9PSZBxDoORjaWaW55hS4HQ/Feo=\r\n\r\n", + "id": "6.23.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uffff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.976Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323039266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "818327fa3c2fc84583" + ] + ], + [ + "RF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + true, + "27fa3c2f" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d877aa31db9f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d877aa31" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_2_1.html b/autobahn/client/tungstenite_case_6_2_1.html new file mode 100644 index 0000000..11909de --- /dev/null +++ b/autobahn/client/tungstenite_case_6_2_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.2.1 : Pass - 3 ms @ 2025-09-11T20:05:46.613Z

+

Case Description

Send a valid UTF-8 text message in one fragment.

MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)]}

+ Observed:
[('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=68&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: BPSrLoIGofz7/9qhrD0Hag==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: trISl3weWOHNIHtH/tBtVrSPe68=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
35135
2561256
Total3299
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
31131
2061206
Total3241
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3638266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=29, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello-µ@ßöäüàá-UTF-8!!
+
003 TX OCTETS: 811d48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121
+
004 CLOSE CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 819dbaff0060f29a6c0cd5d2c2d5fa3c9fa30c3ca4a3063ca0a31bd25534fcd238419b
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=29, MASKED=True, MASK=6261666630303630
+
               Hello-µ@ßöäüàá-UTF-8!!
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88822e4789912daf
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3265343738393931
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_2_1.json b/autobahn/client/tungstenite_case_6_2_1.json new file mode 100644 index 0000000..7c209db --- /dev/null +++ b/autobahn/client/tungstenite_case_6_2_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 68, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a valid UTF-8 text message in one fragment.

MESSAGE:
Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=68&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: BPSrLoIGofz7/9qhrD0Hag==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: trISl3weWOHNIHtH/tBtVrSPe68=\r\n\r\n", + "id": "6.2.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "35": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:46.613Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "31": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3638266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 29, + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 31, + "811d48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 35, + "819dbaff0060f29a6c0cd5d2c2d5fa3c9fa30c3ca4a3063ca0a31bd25534fcd238419b" + ] + ], + [ + "RF", + [ + 29, + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!" + ], + 1, + true, + 0, + true, + "baff0060" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822e4789912daf" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2e478991" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_2_2.html b/autobahn/client/tungstenite_case_6_2_2.html new file mode 100644 index 0000000..b305732 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_2_2.html @@ -0,0 +1,308 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.2.2 : Pass - 3 ms @ 2025-09-11T20:05:46.618Z

+

Case Description

Send a valid UTF-8 text message in two fragments, fragmented on UTF-8 code point boundary.

MESSAGE FRAGMENT 1:
Hello-µ@ßöä
48656c6c6f2dc2b540c39fc3b6c3a4

MESSAGE FRAGMENT 2:
üàá-UTF-8!!
c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)]}

+ Observed:
[('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=69&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: njK+iE8qFodZBjHuePWarw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: XAox5UvX7xgknpA4QRBDHB7aKgg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
35135
2561256
Total3299
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
16116
17117
2061206
Total4243
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
81
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3639266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=15, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello-µ@ßöä
+
003 TX OCTETS: 010f48656c6c6f2dc2b540c39fc3b6c3a4
+
004 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=14, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               üàá-UTF-8!!
+
005 TX OCTETS: 800ec3bcc3a0c3a12d5554462d382121
+
006 CLOSE CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 819dec5aa071a43fcc1d837762c4ac993fb25a9904b2509900b24d77f525aa779850cd
+
008 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=29, MASKED=True, MASK=6563356161303731
+
               Hello-µ@ßöäüàá-UTF-8!!
+
009 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
010 TX OCTETS: 880203e8
+
011 RX OCTETS: 88829c459d399fad
+
012 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3963343539643339
+
               0x03e8
+
013 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_2_2.json b/autobahn/client/tungstenite_case_6_2_2.json new file mode 100644 index 0000000..068883f --- /dev/null +++ b/autobahn/client/tungstenite_case_6_2_2.json @@ -0,0 +1,201 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 69, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a valid UTF-8 text message in two fragments, fragmented on UTF-8 code point boundary.

MESSAGE FRAGMENT 1:
Hello-\u00b5@\u00df\u00f6\u00e4
48656c6c6f2dc2b540c39fc3b6c3a4

MESSAGE FRAGMENT 2:
\u00fc\u00e0\u00e1-UTF-8!!
c3bcc3a0c3a12d5554462d382121", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=69&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: njK+iE8qFodZBjHuePWarw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: XAox5UvX7xgknpA4QRBDHB7aKgg=\r\n\r\n", + "id": "6.2.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "35": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:46.618Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "16": 1, + "17": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3639266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 15, + "Hello-\u00b5@\u00df\u00f6\u00e4" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 17, + "010f48656c6c6f2dc2b540c39fc3b6c3a4" + ], + false + ], + [ + "TF", + [ + 14, + "\u00fc\u00e0\u00e1-UTF-8!!" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 16, + "800ec3bcc3a0c3a12d5554462d382121" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 35, + "819dec5aa071a43fcc1d837762c4ac993fb25a9904b2509900b24d77f525aa779850cd" + ] + ], + [ + "RF", + [ + 29, + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!" + ], + 1, + true, + 0, + true, + "ec5aa071" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829c459d399fad" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9c459d39" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_2_3.html b/autobahn/client/tungstenite_case_6_2_3.html new file mode 100644 index 0000000..7527b14 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_2_3.html @@ -0,0 +1,391 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.2.3 : Pass - 3 ms @ 2025-09-11T20:05:46.622Z

+

Case Description

Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
Hello-µ@ßöäüàá-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)]}

+ Observed:
[('message', u'Hello-\xb5@\xdf\xf6\xe4\xfc\xe0\xe1-UTF-8!!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=70&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ra1e52BvBlFvZW0sc8uL2Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: cHRkF+dQws42IC9++L1rJgA5jxE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
35135
2561256
Total3299
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
32987
414
2061206
Total32299
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
029
11
81
Total31
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3730266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               H
+
003 TX OCTETS: 010148
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               e
+
005 TX OCTETS: 000165
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               l
+
007 TX OCTETS: 00016c
+
008 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               l
+
009 TX OCTETS: 00016c
+
010 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               o
+
011 TX OCTETS: 00016f
+
012 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               -
+
013 TX OCTETS: 00012d
+
014 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc2
+
015 TX OCTETS: 0001c2
+
016 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb5
+
017 TX OCTETS: 0001b5
+
018 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               @
+
019 TX OCTETS: 000140
+
020 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
021 TX OCTETS: 0001c3
+
022 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x9f
+
023 TX OCTETS: 00019f
+
024 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
025 TX OCTETS: 0001c3
+
026 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb6
+
027 TX OCTETS: 0001b6
+
028 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
029 TX OCTETS: 0001c3
+
030 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xa4
+
031 TX OCTETS: 0001a4
+
032 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
033 TX OCTETS: 0001c3
+
034 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbc
+
035 TX OCTETS: 0001bc
+
036 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
037 TX OCTETS: 0001c3
+
038 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xa0
+
039 TX OCTETS: 0001a0
+
040 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xc3
+
041 TX OCTETS: 0001c3
+
042 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xa1
+
043 TX OCTETS: 0001a1
+
044 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               -
+
045 TX OCTETS: 00012d
+
046 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               U
+
047 TX OCTETS: 000155
+
048 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               T
+
049 TX OCTETS: 000154
+
050 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               F
+
051 TX OCTETS: 000146
+
052 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               -
+
053 TX OCTETS: 00012d
+
054 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               8
+
055 TX OCTETS: 000138
+
056 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               !
+
057 TX OCTETS: 000121
+
058 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               !
+
059 TX OCTETS: 000121
+
060 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
061 TX OCTETS: 8000
+
062 CLOSE CONNECTION AFTER 1.000000 sec
+
063 RX OCTETS: 819d02527fbe4a3713d26d7fbd0b4291e07db491db7dbe91df7da37f2aea447f479f23
+
064 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=29, MASKED=True, MASK=3032353237666265
+
               Hello-µ@ßöäüàá-UTF-8!!
+
065 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
066 TX OCTETS: 880203e8
+
067 RX OCTETS: 88826a86d2cd696e
+
068 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3661383664326364
+
               0x03e8
+
069 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_2_3.json b/autobahn/client/tungstenite_case_6_2_3.json new file mode 100644 index 0000000..47a115d --- /dev/null +++ b/autobahn/client/tungstenite_case_6_2_3.json @@ -0,0 +1,817 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 70, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!
48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=70&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ra1e52BvBlFvZW0sc8uL2Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: cHRkF+dQws42IC9++L1rJgA5jxE=\r\n\r\n", + "id": "6.2.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "35": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:46.622Z", + "trafficStats": null, + "txFrameStats": { + "0": 29, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 29, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3730266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "H" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "010148" + ], + false + ], + [ + "TF", + [ + 1, + "e" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000165" + ], + false + ], + [ + "TF", + [ + 1, + "l" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00016c" + ], + false + ], + [ + "TF", + [ + 1, + "l" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00016c" + ], + false + ], + [ + "TF", + [ + 1, + "o" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00016f" + ], + false + ], + [ + "TF", + [ + 1, + "-" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00012d" + ], + false + ], + [ + "TF", + [ + 1, + "0xc2" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c2" + ], + false + ], + [ + "TF", + [ + 1, + "0xb5" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b5" + ], + false + ], + [ + "TF", + [ + 1, + "@" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000140" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0x9f" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00019f" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xb6" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b6" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xa4" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001a4" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xbc" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bc" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xa0" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001a0" + ], + false + ], + [ + "TF", + [ + 1, + "0xc3" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001c3" + ], + false + ], + [ + "TF", + [ + 1, + "0xa1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001a1" + ], + false + ], + [ + "TF", + [ + 1, + "-" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00012d" + ], + false + ], + [ + "TF", + [ + 1, + "U" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000155" + ], + false + ], + [ + "TF", + [ + 1, + "T" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000154" + ], + false + ], + [ + "TF", + [ + 1, + "F" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000146" + ], + false + ], + [ + "TF", + [ + 1, + "-" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "00012d" + ], + false + ], + [ + "TF", + [ + 1, + "8" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000138" + ], + false + ], + [ + "TF", + [ + 1, + "!" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000121" + ], + false + ], + [ + "TF", + [ + 1, + "!" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000121" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 35, + "819d02527fbe4a3713d26d7fbd0b4291e07db491db7dbe91df7da37f2aea447f479f23" + ] + ], + [ + "RF", + [ + 29, + "Hello-\u00b5@\u00df\u00f6\u00e4\u00fc\u00e0\u00e1-UTF-8!!" + ], + 1, + true, + 0, + true, + "02527fbe" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826a86d2cd696e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6a86d2cd" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_2_4.html b/autobahn/client/tungstenite_case_6_2_4.html new file mode 100644 index 0000000..64a8351 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_2_4.html @@ -0,0 +1,337 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.2.4 : Pass - 2 ms @ 2025-09-11T20:05:46.626Z

+

Case Description

Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
κόσμε
cebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=71&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ZawWxDBmqE2gK4oZYADH+w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: lwyVorMyY6JguR3+2IalbuH62u8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
17117
2561256
Total3281
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
31133
414
2061206
Total14245
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
011
11
81
Total13
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3731266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
003 TX OCTETS: 0101ce
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xba
+
005 TX OCTETS: 0001ba
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe1
+
007 TX OCTETS: 0001e1
+
008 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbd
+
009 TX OCTETS: 0001bd
+
010 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb9
+
011 TX OCTETS: 0001b9
+
012 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcf
+
013 TX OCTETS: 0001cf
+
014 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x83
+
015 TX OCTETS: 000183
+
016 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
017 TX OCTETS: 0001ce
+
018 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbc
+
019 TX OCTETS: 0001bc
+
020 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
021 TX OCTETS: 0001ce
+
022 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb5
+
023 TX OCTETS: 0001b5
+
024 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
025 TX OCTETS: 8000
+
026 CLOSE CONNECTION AFTER 1.000000 sec
+
027 RX OCTETS: 818bc38662920d3c832f7a49e15c7f48d7
+
028 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASKED=True, MASK=6333383636323932
+
               κόσμε
+
029 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
030 TX OCTETS: 880203e8
+
031 RX OCTETS: 88829dfaa9559e12
+
032 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3964666161393535
+
               0x03e8
+
033 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_2_4.json b/autobahn/client/tungstenite_case_6_2_4.json new file mode 100644 index 0000000..47e80b7 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_2_4.json @@ -0,0 +1,421 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 71, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a valid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
\u03ba\u1f79\u03c3\u03bc\u03b5
cebae1bdb9cf83cebcceb5", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=71&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ZawWxDBmqE2gK4oZYADH+w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: lwyVorMyY6JguR3+2IalbuH62u8=\r\n\r\n", + "id": "6.2.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "17": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:46.626Z", + "trafficStats": null, + "txFrameStats": { + "0": 11, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "3": 11, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3731266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0101ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xba" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ba" + ], + false + ], + [ + "TF", + [ + 1, + "0xe1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001e1" + ], + false + ], + [ + "TF", + [ + 1, + "0xbd" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bd" + ], + false + ], + [ + "TF", + [ + 1, + "0xb9" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b9" + ], + false + ], + [ + "TF", + [ + 1, + "0xcf" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001cf" + ], + false + ], + [ + "TF", + [ + 1, + "0x83" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000183" + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xbc" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bc" + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xb5" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b5" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "TI", + 1 + ], + [ + "RO", + [ + 17, + "818bc38662920d3c832f7a49e15c7f48d7" + ] + ], + [ + "RF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + true, + "c3866292" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829dfaa9559e12" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9dfaa955" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_3_1.html b/autobahn/client/tungstenite_case_6_3_1.html new file mode 100644 index 0000000..1fc18a4 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_3_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.3.1 : Pass - 1 ms @ 2025-09-11T20:05:46.630Z

+

Case Description

Send invalid UTF-8 text message unfragmented.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=72&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: bw+DZ8MxOUBpLbCbudRljA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 8SIxytzrt2FuVSG1rZSl7ySPyDo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
22122
2061206
Total2228
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3732266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=20, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Îºá½¹ÏƒÎ¼Îµí €edited
+
003 TX OCTETS: 8114cebae1bdb9cf83cebcceb5eda080656469746564
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_3_1.json b/autobahn/client/tungstenite_case_6_3_1.json new file mode 100644 index 0000000..ed515e2 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_3_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 72, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send invalid UTF-8 text message unfragmented.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=72&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: bw+DZ8MxOUBpLbCbudRljA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 8SIxytzrt2FuVSG1rZSl7ySPyDo=\r\n\r\n", + "id": "6.3.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:46.630Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "22": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3732266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 20, + "\u03ba\u1f79\u03c3\u03bc\u03b5\ud800edited" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 22, + "8114cebae1bdb9cf83cebcceb5eda080656469746564" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_3_2.html b/autobahn/client/tungstenite_case_6_3_2.html new file mode 100644 index 0000000..c2e4e1f --- /dev/null +++ b/autobahn/client/tungstenite_case_6_3_2.html @@ -0,0 +1,349 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.3.2 : Pass - 1 ms @ 2025-09-11T20:05:46.632Z

+

Case Description

Send invalid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=73&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 5CfFPphACFS/zoPRqkiVIA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5BZllBmPuoD0jX4uR8XOGrh22t0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
32060
2061206
Total22268
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
020
11
Total21
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3733266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
003 TX OCTETS: 0101ce
+
004 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xba
+
005 TX OCTETS: 0001ba
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xe1
+
007 TX OCTETS: 0001e1
+
008 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbd
+
009 TX OCTETS: 0001bd
+
010 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb9
+
011 TX OCTETS: 0001b9
+
012 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcf
+
013 TX OCTETS: 0001cf
+
014 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x83
+
015 TX OCTETS: 000183
+
016 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
017 TX OCTETS: 0001ce
+
018 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xbc
+
019 TX OCTETS: 0001bc
+
020 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
021 TX OCTETS: 0001ce
+
022 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xb5
+
023 TX OCTETS: 0001b5
+
024 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xed
+
025 TX OCTETS: 0001ed
+
026 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xa0
+
027 TX OCTETS: 0001a0
+
028 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x80
+
029 TX OCTETS: 000180
+
030 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               e
+
031 TX OCTETS: 000165
+
032 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               d
+
033 TX OCTETS: 000164
+
034 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               i
+
035 TX OCTETS: 000169
+
036 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               t
+
037 TX OCTETS: 000174
+
038 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               e
+
039 TX OCTETS: 000165
+
040 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               d
+
041 TX OCTETS: 000164
+
042 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
043 TX OCTETS: 8000
+
044 FAIL CONNECTION AFTER 1.000000 sec
+
045 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_3_2.json b/autobahn/client/tungstenite_case_6_3_2.json new file mode 100644 index 0000000..0affcd3 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_3_2.json @@ -0,0 +1,541 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 73, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send invalid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.

MESSAGE:
cebae1bdb9cf83cebcceb5eda080656469746564", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=73&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 5CfFPphACFS/zoPRqkiVIA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5BZllBmPuoD0jX4uR8XOGrh22t0=\r\n\r\n", + "id": "6.3.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:46.632Z", + "trafficStats": null, + "txFrameStats": { + "0": 20, + "1": 1 + }, + "txOctetStats": { + "2": 1, + "3": 20, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3733266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0101ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xba" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ba" + ], + false + ], + [ + "TF", + [ + 1, + "0xe1" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001e1" + ], + false + ], + [ + "TF", + [ + 1, + "0xbd" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bd" + ], + false + ], + [ + "TF", + [ + 1, + "0xb9" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b9" + ], + false + ], + [ + "TF", + [ + 1, + "0xcf" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001cf" + ], + false + ], + [ + "TF", + [ + 1, + "0x83" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000183" + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xbc" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001bc" + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ce" + ], + false + ], + [ + "TF", + [ + 1, + "0xb5" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001b5" + ], + false + ], + [ + "TF", + [ + 1, + "0xed" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001ed" + ], + false + ], + [ + "TF", + [ + 1, + "0xa0" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "0001a0" + ], + false + ], + [ + "TF", + [ + 1, + "0x80" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000180" + ], + false + ], + [ + "TF", + [ + 1, + "e" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000165" + ], + false + ], + [ + "TF", + [ + 1, + "d" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000164" + ], + false + ], + [ + "TF", + [ + 1, + "i" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000169" + ], + false + ], + [ + "TF", + [ + 1, + "t" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000174" + ], + false + ], + [ + "TF", + [ + 1, + "e" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000165" + ], + false + ], + [ + "TF", + [ + 1, + "d" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000164" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_4_1.html b/autobahn/client/tungstenite_case_6_4_1.html new file mode 100644 index 0000000..5e5d185 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_4_1.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.4.1 : Pass - 1003 ms @ 2025-09-11T20:05:46.634Z

+

Case Description

Send invalid UTF-8 text message in 3 fragments (frames). +First frame payload is valid, then wait, then 2nd frame which contains the payload making the sequence invalid, then wait, then 3rd frame with rest. +Note that PART1 and PART3 are valid UTF-8 in themselves, PART2 is a 0x110000 encoded as in the UTF-8 integer encoding scheme, but the codepoint is invalid (out of range). +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+

+

Case Expectation

The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('timeout', 'A')], 'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')]}

+ Observed:
[('timeout', 'A')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=74&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: us4FD/j5p65hePwHXON2TQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WzGQ6FRmjjidAr+v6sbu0/r59OA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
616
13113
2061206
Total3225
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3734266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=11, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσμε
+
003 TX OCTETS: 010bcebae1bdb9cf83cebcceb5
+
004 DELAY 1.000000 sec for TAG A
+
005 DELAY TIMEOUT on TAG A
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf4908080
+
007 TX OCTETS: 0004f4908080
+
008 DELAY 1.000000 sec for TAG B
+
009 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_4_1.json b/autobahn/client/tungstenite_case_6_4_1.json new file mode 100644 index 0000000..5a4b19c --- /dev/null +++ b/autobahn/client/tungstenite_case_6_4_1.json @@ -0,0 +1,153 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 74, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send invalid UTF-8 text message in 3 fragments (frames).\nFirst frame payload is valid, then wait, then 2nd frame which contains the payload making the sequence invalid, then wait, then 3rd frame with rest.\nNote that PART1 and PART3 are valid UTF-8 in themselves, PART2 is a 0x110000 encoded as in the UTF-8 integer encoding scheme, but the codepoint is invalid (out of range).\n

MESSAGE PARTS:
\nPART1 = cebae1bdb9cf83cebcceb5
\nPART2 = f4908080
\nPART3 = 656469746564
\n", + "droppedByMe": false, + "duration": 1003, + "expectation": "The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.", + "expected": { + "NON-STRICT": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "OK": [ + [ + "timeout", + "A" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=74&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: us4FD/j5p65hePwHXON2TQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WzGQ6FRmjjidAr+v6sbu0/r59OA=\r\n\r\n", + "id": "6.4.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "timeout", + "A" + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:46.634Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "6": 1, + "13": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3734266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 13, + "010bcebae1bdb9cf83cebcceb5" + ], + false + ], + [ + "CT", + 1, + "A" + ], + [ + "CTE", + "A" + ], + [ + "TF", + [ + 4, + "0xf4908080" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "0004f4908080" + ], + false + ], + [ + "CT", + 1, + "B" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_4_2.html b/autobahn/client/tungstenite_case_6_4_2.html new file mode 100644 index 0000000..d0d723c --- /dev/null +++ b/autobahn/client/tungstenite_case_6_4_2.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.4.2 : Pass - 1004 ms @ 2025-09-11T20:05:47.640Z

+

Case Description

Same as Case 6.4.1, but in 2nd frame, we send only up to and including the octet making the complete payload invalid. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 = 8080656469746564
+

+

Case Expectation

The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('timeout', 'A')], 'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')]}

+ Observed:
[('timeout', 'A')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=75&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: FCoIv2waO/3dfo+jl0l6Cg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Osz5R7wEMbYLKCtP5OT2zch01k8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
14114
2061206
Total3223
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
01
11
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3735266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bdb9cf83cebcceb5f4
+
003 TX OCTETS: 010ccebae1bdb9cf83cebcceb5f4
+
004 DELAY 1.000000 sec for TAG A
+
005 DELAY TIMEOUT on TAG A
+
006 TX FRAME : OPCODE=0, FIN=False, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x90
+
007 TX OCTETS: 000190
+
008 DELAY 1.000000 sec for TAG B
+
009 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_4_2.json b/autobahn/client/tungstenite_case_6_4_2.json new file mode 100644 index 0000000..36d9e01 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_4_2.json @@ -0,0 +1,153 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 75, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Same as Case 6.4.1, but in 2nd frame, we send only up to and including the octet making the complete payload invalid.\n

MESSAGE PARTS:
\nPART1 = cebae1bdb9cf83cebcceb5f4
\nPART2 = 90
\nPART3 = 8080656469746564
\n", + "droppedByMe": false, + "duration": 1004, + "expectation": "The first frame is accepted, we expect to timeout on the first wait. The 2nd frame should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.", + "expected": { + "NON-STRICT": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "OK": [ + [ + "timeout", + "A" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=75&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: FCoIv2waO/3dfo+jl0l6Cg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Osz5R7wEMbYLKCtP5OT2zch01k8=\r\n\r\n", + "id": "6.4.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "timeout", + "A" + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:47.640Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1 + }, + "txOctetStats": { + "3": 1, + "14": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3735266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 12, + "0xcebae1bdb9cf83cebcceb5f4" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "010ccebae1bdb9cf83cebcceb5f4" + ], + false + ], + [ + "CT", + 1, + "A" + ], + [ + "CTE", + "A" + ], + [ + "TF", + [ + 1, + "0x90" + ], + 0, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "000190" + ], + false + ], + [ + "CT", + 1, + "B" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_4_3.html b/autobahn/client/tungstenite_case_6_4_3.html new file mode 100644 index 0000000..58c9127 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_4_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.4.3 : Non-Strict - 2009 ms @ 2025-09-11T20:05:48.646Z

+

Case Description

Same as Case 6.4.1, but we send message not in 3 frames, but in 3 chops of the same message frame. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5
+PART2 = f4908080
+PART3 = 656469746564
+

+

Case Expectation

The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('timeout', 'A')], 'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')]}

+ Observed:
[('timeout', 'A'), ('timeout', 'B')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=76&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Laxy0edRjQK2XdlQmSRCwg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: b59xT4AiBAWdnXWbn5sRopu5RQ8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
224
414
616
11111
2061206
Total6231
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
01
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3736266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX OCTETS: 0115
+
003 TX OCTETS: cebae1bdb9cf83cebcceb5
+
004 DELAY 1.000000 sec for TAG A
+
005 DELAY TIMEOUT on TAG A
+
006 TX OCTETS: f4908080
+
007 DELAY 1.000000 sec for TAG B
+
008 DELAY TIMEOUT on TAG B
+
009 TX OCTETS: 656469746564
+
010 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
011 TX OCTETS: 8000
+
012 FAIL CONNECTION AFTER 1.000000 sec
+
013 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_4_3.json b/autobahn/client/tungstenite_case_6_4_3.json new file mode 100644 index 0000000..12a18c1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_4_3.json @@ -0,0 +1,176 @@ +{ + "agent": "Tungstenite", + "behavior": "NON-STRICT", + "behaviorClose": "OK", + "case": 76, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Same as Case 6.4.1, but we send message not in 3 frames, but in 3 chops of the same message frame.\n

MESSAGE PARTS:
\nPART1 = cebae1bdb9cf83cebcceb5
\nPART2 = f4908080
\nPART3 = 656469746564
\n", + "droppedByMe": false, + "duration": 2009, + "expectation": "The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.", + "expected": { + "NON-STRICT": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "OK": [ + [ + "timeout", + "A" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=76&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Laxy0edRjQK2XdlQmSRCwg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: b59xT4AiBAWdnXWbn5sRopu5RQ8=\r\n\r\n", + "id": "6.4.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:48.646Z", + "trafficStats": null, + "txFrameStats": { + "0": 1 + }, + "txOctetStats": { + "2": 2, + "4": 1, + "6": 1, + "11": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3736266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TO", + [ + 2, + "0115" + ], + false + ], + [ + "TO", + [ + 11, + "cebae1bdb9cf83cebcceb5" + ], + false + ], + [ + "CT", + 1, + "A" + ], + [ + "CTE", + "A" + ], + [ + "TO", + [ + 4, + "f4908080" + ], + false + ], + [ + "CT", + 1, + "B" + ], + [ + "CTE", + "B" + ], + [ + "TO", + [ + 6, + "656469746564" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_4_4.html b/autobahn/client/tungstenite_case_6_4_4.html new file mode 100644 index 0000000..17e3369 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_4_4.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.4.4 : Non-Strict - 2004 ms @ 2025-09-11T20:05:50.658Z

+

Case Description

Same as Case 6.4.2, but we send message not in 3 frames, but in 3 chops of the same message frame. +

MESSAGE PARTS:
+PART1 = cebae1bdb9cf83cebcceb5f4
+PART2 = 90
+PART3 =
+

+

Case Expectation

The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('timeout', 'A')], 'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')]}

+ Observed:
[('timeout', 'A'), ('timeout', 'B')] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=77&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 7myisUm/Pu8it3FWKX1WVQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rfj/2y/+3NPHpULfPTwdbVus4x4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
111
224
818
12112
2061206
Total6231
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
01
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3737266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX OCTETS: 0115
+
003 TX OCTETS: cebae1bdb9cf83cebcceb5f4
+
004 DELAY 1.000000 sec for TAG A
+
005 DELAY TIMEOUT on TAG A
+
006 TX OCTETS: 90
+
007 DELAY 1.000000 sec for TAG B
+
008 DELAY TIMEOUT on TAG B
+
009 TX OCTETS: 8080656469746564
+
010 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
011 TX OCTETS: 8000
+
012 FAIL CONNECTION AFTER 1.000000 sec
+
013 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_4_4.json b/autobahn/client/tungstenite_case_6_4_4.json new file mode 100644 index 0000000..457d190 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_4_4.json @@ -0,0 +1,176 @@ +{ + "agent": "Tungstenite", + "behavior": "NON-STRICT", + "behaviorClose": "OK", + "case": 77, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Same as Case 6.4.2, but we send message not in 3 frames, but in 3 chops of the same message frame.\n

MESSAGE PARTS:
\nPART1 = cebae1bdb9cf83cebcceb5f4
\nPART2 = 90
\nPART3 =
\n", + "droppedByMe": false, + "duration": 2004, + "expectation": "The first chop is accepted, we expect to timeout on the first wait. The 2nd chop should be rejected immediately (fail fast on UTF-8). If we timeout, we expect the connection is failed at least then, since the complete message payload is not valid UTF-8.", + "expected": { + "NON-STRICT": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "OK": [ + [ + "timeout", + "A" + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=77&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 7myisUm/Pu8it3FWKX1WVQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rfj/2y/+3NPHpULfPTwdbVus4x4=\r\n\r\n", + "id": "6.4.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [ + [ + "timeout", + "A" + ], + [ + "timeout", + "B" + ] + ], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:50.658Z", + "trafficStats": null, + "txFrameStats": { + "0": 1 + }, + "txOctetStats": { + "1": 1, + "2": 2, + "8": 1, + "12": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3737266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TO", + [ + 2, + "0115" + ], + false + ], + [ + "TO", + [ + 12, + "cebae1bdb9cf83cebcceb5f4" + ], + false + ], + [ + "CT", + 1, + "A" + ], + [ + "CTE", + "A" + ], + [ + "TO", + [ + 1, + "90" + ], + false + ], + [ + "CT", + 1, + "B" + ], + [ + "CTE", + "B" + ], + [ + "TO", + [ + 8, + "8080656469746564" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8000" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_5_1.html b/autobahn/client/tungstenite_case_6_5_1.html new file mode 100644 index 0000000..fd4ce90 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.5.1 : Pass - 3 ms @ 2025-09-11T20:05:52.664Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6f24776f726c64

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'hello$world', False)]}

+ Observed:
[('message', u'hello$world', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=78&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Ie5Uy2dBaYpWZse3xfzhfg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WwKf/cd/o/Bhj6IYAoV2qa+30Lo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
17117
2561256
Total3281
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
13113
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3738266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               hello$world
+
003 TX OCTETS: 810b68656c6c6f24776f726c64
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818b2acbd5e942aeb98545efa28658a7b1
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASKED=True, MASK=3261636264356539
+
               hello$world
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88823e002a9c3de8
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3365303032613963
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_5_1.json b/autobahn/client/tungstenite_case_6_5_1.json new file mode 100644 index 0000000..85d0165 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 78, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6f24776f726c64", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "hello$world", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=78&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Ie5Uy2dBaYpWZse3xfzhfg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WwKf/cd/o/Bhj6IYAoV2qa+30Lo=\r\n\r\n", + "id": "6.5.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "hello$world", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "17": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.664Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3738266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 11, + "hello$world" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 13, + "810b68656c6c6f24776f726c64" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 17, + "818b2acbd5e942aeb98545efa28658a7b1" + ] + ], + [ + "RF", + [ + 11, + "hello$world" + ], + 1, + true, + 0, + true, + "2acbd5e9" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823e002a9c3de8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3e002a9c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_5_2.html b/autobahn/client/tungstenite_case_6_5_2.html new file mode 100644 index 0000000..61be144 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_2.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.5.2 : Pass - 3 ms @ 2025-09-11T20:05:52.670Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fc2a2776f726c64

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'hello\xa2world', False)]}

+ Observed:
[('message', u'hello\xa2world', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=79&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: W1RcEnSjz4nZ+xtb8OdlrA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NpeDsWxYhbUNX+zpGQ10HAIibgI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
18118
2561256
Total3282
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3739266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               hello¢world
+
003 TX OCTETS: 810c68656c6c6fc2a2776f726c64
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818c560ceca53e6980c939ce4ed2397e80c1
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3536306365636135
+
               hello¢world
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882581960125bf1
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3538313936303132
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_5_2.json b/autobahn/client/tungstenite_case_6_5_2.json new file mode 100644 index 0000000..fa37065 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_2.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 79, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fc2a2776f726c64", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "hello\u00a2world", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=79&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: W1RcEnSjz4nZ+xtb8OdlrA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NpeDsWxYhbUNX+zpGQ10HAIibgI=\r\n\r\n", + "id": "6.5.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "hello\u00a2world", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "18": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.670Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3739266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 12, + "hello\u00a2world" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "810c68656c6c6fc2a2776f726c64" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 18, + "818c560ceca53e6980c939ce4ed2397e80c1" + ] + ], + [ + "RF", + [ + 12, + "hello\u00a2world" + ], + 1, + true, + 0, + true, + "560ceca5" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882581960125bf1" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "58196012" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_5_3.html b/autobahn/client/tungstenite_case_6_5_3.html new file mode 100644 index 0000000..9a0cffe --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.5.3 : Pass - 3 ms @ 2025-09-11T20:05:52.675Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fe282ac776f726c64

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'hello\u20acworld', False)]}

+ Observed:
[('message', u'hello\u20acworld', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=80&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Z+HBr5K/vG4kgtp1u+jLZg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: J8Ew4FvpWYilt4sDpm6jLJ2eups=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
19119
2561256
Total3283
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
15115
2061206
Total3225
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3830266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               hello€world
+
003 TX OCTETS: 810d68656c6c6fe282ac776f726c64
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818d0f624ca2670720ce6080ce0e780d3ece6b
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=13, MASKED=True, MASK=3066363234636132
+
               hello€world
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882ec037059efeb
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6563303337303539
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_5_3.json b/autobahn/client/tungstenite_case_6_5_3.json new file mode 100644 index 0000000..2f1c8c5 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_3.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 80, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6fe282ac776f726c64", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "hello\u20acworld", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=80&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Z+HBr5K/vG4kgtp1u+jLZg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: J8Ew4FvpWYilt4sDpm6jLJ2eups=\r\n\r\n", + "id": "6.5.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "hello\u20acworld", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "19": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.675Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "15": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3830266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 13, + "hello\u20acworld" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 15, + "810d68656c6c6fe282ac776f726c64" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 19, + "818d0f624ca2670720ce6080ce0e780d3ece6b" + ] + ], + [ + "RF", + [ + 13, + "hello\u20acworld" + ], + 1, + true, + 0, + true, + "0f624ca2" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ec037059efeb" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ec037059" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_5_4.html b/autobahn/client/tungstenite_case_6_5_4.html new file mode 100644 index 0000000..7b3fae4 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_4.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.5.4 : Pass - 2 ms @ 2025-09-11T20:05:52.680Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6ff0a4ada2776f726c64

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'hello\U00024b62world', False)]}

+ Observed:
[('message', u'hello\U00024b62world', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=81&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: zzdHPA0sN5Nre8bWDenRLA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: jj1QaUtxwYvwk0gDPclAjSfGtQE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
20120
2561256
Total3284
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
16116
2061206
Total3226
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3831266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=14, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               hello𤭢world
+
003 TX OCTETS: 810e68656c6c6ff0a4ada2776f726c64
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818ecc146d15a4710179a3e4c9b86e630267a070
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=14, MASKED=True, MASK=6363313436643135
+
               hello𤭢world
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888299857b279a6d
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3939383537623237
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_5_4.json b/autobahn/client/tungstenite_case_6_5_4.json new file mode 100644 index 0000000..cab4173 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_4.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 81, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x68656c6c6ff0a4ada2776f726c64", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "hello\ud852\udf62world", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=81&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: zzdHPA0sN5Nre8bWDenRLA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: jj1QaUtxwYvwk0gDPclAjSfGtQE=\r\n\r\n", + "id": "6.5.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "hello\ud852\udf62world", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "20": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.680Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "16": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3831266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 14, + "hello\ud852\udf62world" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 16, + "810e68656c6c6ff0a4ada2776f726c64" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 20, + "818ecc146d15a4710179a3e4c9b86e630267a070" + ] + ], + [ + "RF", + [ + 14, + "hello\ud852\udf62world" + ], + 1, + true, + 0, + true, + "cc146d15" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888299857b279a6d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "99857b27" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_5_5.html b/autobahn/client/tungstenite_case_6_5_5.html new file mode 100644 index 0000000..3dbc7a7 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_5.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.5.5 : Pass - 3 ms @ 2025-09-11T20:05:52.684Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=82&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: a2mkUDgXQOlMvfgYuJs7Eg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ldrMCLG+R5pH2pRt8s1W+5NI/KA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
17117
2561256
Total3281
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
13113
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3832266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσμε
+
003 TX OCTETS: 810bcebae1bdb9cf83cebcceb5
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818b3726db7cf99c3ac18ee958b28be86e
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASKED=True, MASK=3337323664623763
+
               κόσμε
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88821d9e84691e76
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3164396538343639
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_5_5.json b/autobahn/client/tungstenite_case_6_5_5.json new file mode 100644 index 0000000..18c1c68 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_5_5.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 82, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=82&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: a2mkUDgXQOlMvfgYuJs7Eg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ldrMCLG+R5pH2pRt8s1W+5NI/KA=\r\n\r\n", + "id": "6.5.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "17": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.684Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3832266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 13, + "810bcebae1bdb9cf83cebcceb5" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 17, + "818b3726db7cf99c3ac18ee958b28be86e" + ] + ], + [ + "RF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + true, + "3726db7c" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821d9e84691e76" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1d9e8469" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_1.html b/autobahn/client/tungstenite_case_6_6_1.html new file mode 100644 index 0000000..252ecc7 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.1 : Pass - 1 ms @ 2025-09-11T20:05:52.689Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=83&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: WIBlTfVhXXwJhGKT/cpYHQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: r9UW6JW8C0ck9Mp5bM2B1BH1wCc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
313
2061206
Total2209
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3833266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xce
+
003 TX OCTETS: 8101ce
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_1.json b/autobahn/client/tungstenite_case_6_6_1.json new file mode 100644 index 0000000..266a2a4 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 83, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xce", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=83&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: WIBlTfVhXXwJhGKT/cpYHQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: r9UW6JW8C0ck9Mp5bM2B1BH1wCc=\r\n\r\n", + "id": "6.6.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:52.689Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "3": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3833266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "0xce" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "8101ce" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_10.html b/autobahn/client/tungstenite_case_6_6_10.html new file mode 100644 index 0000000..10a1735 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_10.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.10 : Pass - 1 ms @ 2025-09-11T20:05:52.718Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=92&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: cQiIcyRJ5HvRniSKPmx0SQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YMweQLlYdE1OspzurZGR7AIfN1o=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
12112
2061206
Total2218
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3932266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=10, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bdb9cf83cebcce
+
003 TX OCTETS: 810acebae1bdb9cf83cebcce
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_10.json b/autobahn/client/tungstenite_case_6_6_10.json new file mode 100644 index 0000000..968799b --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_10.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 92, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcce", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=92&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: cQiIcyRJ5HvRniSKPmx0SQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YMweQLlYdE1OspzurZGR7AIfN1o=\r\n\r\n", + "id": "6.6.10", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:52.718Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "12": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3932266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 10, + "0xcebae1bdb9cf83cebcce" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 12, + "810acebae1bdb9cf83cebcce" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_11.html b/autobahn/client/tungstenite_case_6_6_11.html new file mode 100644 index 0000000..bac4f39 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_11.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.11 : Pass - 2 ms @ 2025-09-11T20:05:52.720Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc\u03b5', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=93&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: P1YBqquSt9Ag3XATQrU+kg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4Us4Jv0DP9vGg6JYAa2XHQCldoQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
17117
2561256
Total3281
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
13113
2061206
Total3223
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3933266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσμε
+
003 TX OCTETS: 810bcebae1bdb9cf83cebcceb5
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818b3bea7b08f5509ab58225f8c68724ce
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=11, MASKED=True, MASK=3362656137623038
+
               κόσμε
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88823016259033fe
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3330313632353930
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_11.json b/autobahn/client/tungstenite_case_6_6_11.json new file mode 100644 index 0000000..4ee9792 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_11.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 93, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebcceb5", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=93&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: P1YBqquSt9Ag3XATQrU+kg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4Us4Jv0DP9vGg6JYAa2XHQCldoQ=\r\n\r\n", + "id": "6.6.11", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc\u03b5", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "17": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.720Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "13": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3933266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 13, + "810bcebae1bdb9cf83cebcceb5" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 17, + "818b3bea7b08f5509ab58225f8c68724ce" + ] + ], + [ + "RF", + [ + 11, + "\u03ba\u1f79\u03c3\u03bc\u03b5" + ], + 1, + true, + 0, + true, + "3bea7b08" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823016259033fe" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "30162590" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_2.html b/autobahn/client/tungstenite_case_6_6_2.html new file mode 100644 index 0000000..0dcae83 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_2.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.2 : Pass - 7 ms @ 2025-09-11T20:05:52.692Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xceba

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba', False)]}

+ Observed:
[('message', u'\u03ba', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=84&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: tLGuDALyP7ZRPFdp5pAItw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WyeX5uUWx/94d+OP5FLSywr9BFE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
8216
2561256
Total3272
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
428
2061206
Total3214
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3834266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κ
+
003 TX OCTETS: 8102ceba
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81821233f6dbdc89
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3132333366366462
+
               κ
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 888225558bff26bd
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3235353538626666
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_2.json b/autobahn/client/tungstenite_case_6_6_2.json new file mode 100644 index 0000000..a2564f5 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_2.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 84, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xceba", + "droppedByMe": true, + "duration": 7, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=84&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: tLGuDALyP7ZRPFdp5pAItw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WyeX5uUWx/94d+OP5FLSywr9BFE=\r\n\r\n", + "id": "6.6.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 2, + "256": 1 + }, + "started": "2025-09-11T20:05:52.692Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3834266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u03ba" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102ceba" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 8, + "81821233f6dbdc89" + ] + ], + [ + "RF", + [ + 2, + "\u03ba" + ], + 1, + true, + 0, + true, + "1233f6db" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888225558bff26bd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "25558bff" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_3.html b/autobahn/client/tungstenite_case_6_6_3.html new file mode 100644 index 0000000..dc628dd --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_3.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.3 : Pass - 1 ms @ 2025-09-11T20:05:52.700Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=85&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: SmAaBDYlmYO8ObXi6F3aEw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5pqIJdRJ15mcwz8uLBdhwxpVBR4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
515
2061206
Total2211
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3835266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1
+
003 TX OCTETS: 8103cebae1
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_3.json b/autobahn/client/tungstenite_case_6_6_3.json new file mode 100644 index 0000000..749bb57 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_3.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 85, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=85&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: SmAaBDYlmYO8ObXi6F3aEw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5pqIJdRJ15mcwz8uLBdhwxpVBR4=\r\n\r\n", + "id": "6.6.3", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:52.700Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "5": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3835266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "0xcebae1" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103cebae1" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_4.html b/autobahn/client/tungstenite_case_6_6_4.html new file mode 100644 index 0000000..a5c9e25 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_4.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.4 : Pass - 1 ms @ 2025-09-11T20:05:52.703Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bd

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=86&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Z9Wo8dTGzYdS7qvENBhfrg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: FZ0uIvVuw46oja17quLQed4faoI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2061206
Total2212
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3836266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bd
+
003 TX OCTETS: 8104cebae1bd
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_4.json b/autobahn/client/tungstenite_case_6_6_4.json new file mode 100644 index 0000000..f94ee4c --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_4.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 86, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bd", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=86&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Z9Wo8dTGzYdS7qvENBhfrg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: FZ0uIvVuw46oja17quLQed4faoI=\r\n\r\n", + "id": "6.6.4", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:52.703Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "6": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3836266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "0xcebae1bd" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104cebae1bd" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_5.html b/autobahn/client/tungstenite_case_6_6_5.html new file mode 100644 index 0000000..07fa703 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_5.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.5 : Pass - 2 ms @ 2025-09-11T20:05:52.705Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79', False)]}

+ Observed:
[('message', u'\u03ba\u1f79', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=87&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: vSaSK0Ez23INp2L2xDwn6w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: KeamDpijjCZ2TzS5DVdX6E6xnvo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
11111
2561256
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
717
2061206
Total3217
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3837266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κό
+
003 TX OCTETS: 8105cebae1bdb9
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8185a97fac4d67c54df010
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASKED=True, MASK=6139376661633464
+
               κό
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882ee2eef10edc6
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6565326565663130
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_5.json b/autobahn/client/tungstenite_case_6_6_5.json new file mode 100644 index 0000000..6093c25 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_5.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 87, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=87&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: vSaSK0Ez23INp2L2xDwn6w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: KeamDpijjCZ2TzS5DVdX6E6xnvo=\r\n\r\n", + "id": "6.6.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "11": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.705Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "7": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3837266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "\u03ba\u1f79" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105cebae1bdb9" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 11, + "8185a97fac4d67c54df010" + ] + ], + [ + "RF", + [ + 5, + "\u03ba\u1f79" + ], + 1, + true, + 0, + true, + "a97fac4d" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882ee2eef10edc6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ee2eef10" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_6.html b/autobahn/client/tungstenite_case_6_6_6.html new file mode 100644 index 0000000..f68766b --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_6.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.6 : Pass - 1 ms @ 2025-09-11T20:05:52.708Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=88&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: smAE6Qy3io24AaJVDGjPcg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dwfN1EHHQJLLanVw8ZniS98RWjM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3838266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bdb9cf
+
003 TX OCTETS: 8106cebae1bdb9cf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_6.json b/autobahn/client/tungstenite_case_6_6_6.json new file mode 100644 index 0000000..519dc8e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_6.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 88, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=88&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: smAE6Qy3io24AaJVDGjPcg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dwfN1EHHQJLLanVw8ZniS98RWjM=\r\n\r\n", + "id": "6.6.6", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:52.708Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3838266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xcebae1bdb9cf" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106cebae1bdb9cf" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_7.html b/autobahn/client/tungstenite_case_6_6_7.html new file mode 100644 index 0000000..b4719c0 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_7.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.7 : Pass - 2 ms @ 2025-09-11T20:05:52.709Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3', False)]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=89&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Ga3F6y19yxzMk3SKcTPZpg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: TsC+doTBw1dSK/tNP4BnUBg6tkI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
13113
2561256
Total3277
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
919
2061206
Total3219
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3839266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=7, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσ
+
003 TX OCTETS: 8107cebae1bdb9cf83
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81877dbd6df6b3078c4bc472ee
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=7, MASKED=True, MASK=3764626436646636
+
               κόσ
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88826113fa4962fb
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3631313366613439
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_7.json b/autobahn/client/tungstenite_case_6_6_7.json new file mode 100644 index 0000000..f9097b8 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_7.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 89, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=89&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Ga3F6y19yxzMk3SKcTPZpg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: TsC+doTBw1dSK/tNP4BnUBg6tkI=\r\n\r\n", + "id": "6.6.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "13": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.709Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "9": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3839266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 7, + "\u03ba\u1f79\u03c3" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 9, + "8107cebae1bdb9cf83" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 13, + "81877dbd6df6b3078c4bc472ee" + ] + ], + [ + "RF", + [ + 7, + "\u03ba\u1f79\u03c3" + ], + 1, + true, + 0, + true, + "7dbd6df6" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826113fa4962fb" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6113fa49" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_8.html b/autobahn/client/tungstenite_case_6_6_8.html new file mode 100644 index 0000000..aa90e45 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_8.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.8 : Pass - 1 ms @ 2025-09-11T20:05:52.713Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83ce

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=90&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: BYQ+Bm7ZuHiIoeY4CjL25w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4cJW3oamuVpWOW6xVOeLlkblT/Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
10110
2061206
Total2216
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3930266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=8, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xcebae1bdb9cf83ce
+
003 TX OCTETS: 8108cebae1bdb9cf83ce
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_8.json b/autobahn/client/tungstenite_case_6_6_8.json new file mode 100644 index 0000000..b0d9ba8 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_8.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 90, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83ce", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=90&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: BYQ+Bm7ZuHiIoeY4CjL25w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4cJW3oamuVpWOW6xVOeLlkblT/Y=\r\n\r\n", + "id": "6.6.8", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:52.713Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "10": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3930266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 8, + "0xcebae1bdb9cf83ce" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 10, + "8108cebae1bdb9cf83ce" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_6_9.html b/autobahn/client/tungstenite_case_6_6_9.html new file mode 100644 index 0000000..444c2b9 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_9.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.6.9 : Pass - 2 ms @ 2025-09-11T20:05:52.715Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebc

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u03ba\u1f79\u03c3\u03bc', False)]}

+ Observed:
[('message', u'\u03ba\u1f79\u03c3\u03bc', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=91&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: oCRVfwhbV00lTA9vUVEV7g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: USl04yGxr3Iv39q6ZIq06aYUKsQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
15115
2561256
Total3279
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
11111
2061206
Total3221
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3931266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               κόσμ
+
003 TX OCTETS: 8109cebae1bdb9cf83cebc
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 81896a63bd36a4d95c8bd3ac3ef8d6
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=9, MASKED=True, MASK=3661363362643336
+
               κόσμ
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882452490d546cc
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3435323439306435
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_6_9.json b/autobahn/client/tungstenite_case_6_6_9.json new file mode 100644 index 0000000..93056b1 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_6_9.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 91, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xcebae1bdb9cf83cebc", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=91&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: oCRVfwhbV00lTA9vUVEV7g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: USl04yGxr3Iv39q6ZIq06aYUKsQ=\r\n\r\n", + "id": "6.6.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u03ba\u1f79\u03c3\u03bc", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "15": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.715Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "11": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3931266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "\u03ba\u1f79\u03c3\u03bc" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8109cebae1bdb9cf83cebc" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 15, + "81896a63bd36a4d95c8bd3ac3ef8d6" + ] + ], + [ + "RF", + [ + 9, + "\u03ba\u1f79\u03c3\u03bc" + ], + 1, + true, + 0, + true, + "6a63bd36" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882452490d546cc" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "452490d5" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_7_1.html b/autobahn/client/tungstenite_case_6_7_1.html new file mode 100644 index 0000000..12d1cb9 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_7_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.7.1 : Pass - 1 ms @ 2025-09-11T20:05:52.723Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x00

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\x00', False)]}

+ Observed:
[('message', u'\x00', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=94&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: RgWvfSjI8C+WxyRC8RyGvQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: eLN9v4jmEppfdJCuAffP6d8y3a8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
818
2561256
Total3271
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
414
2061206
Total3213
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3934266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 810100
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8181d1db65e5d1
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASKED=True, MASK=6431646236356535
+
               
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88821ae29dac190a
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3161653239646163
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_7_1.json b/autobahn/client/tungstenite_case_6_7_1.json new file mode 100644 index 0000000..672985e --- /dev/null +++ b/autobahn/client/tungstenite_case_6_7_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 94, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x00", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u0000", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=94&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: RgWvfSjI8C+WxyRC8RyGvQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: eLN9v4jmEppfdJCuAffP6d8y3a8=\r\n\r\n", + "id": "6.7.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u0000", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "7": 1, + "8": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.723Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3934266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "\u0000" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "810100" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 7, + "8181d1db65e5d1" + ] + ], + [ + "RF", + [ + 1, + "\u0000" + ], + 1, + true, + 0, + true, + "d1db65e5" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821ae29dac190a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1ae29dac" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_7_2.html b/autobahn/client/tungstenite_case_6_7_2.html new file mode 100644 index 0000000..d64d7ab --- /dev/null +++ b/autobahn/client/tungstenite_case_6_7_2.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.7.2 : Pass - 1 ms @ 2025-09-11T20:05:52.725Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xc280

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\x80', False)]}

+ Observed:
[('message', u'\x80', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=95&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: qqYTOnx4GRpIj5GskkKmIQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: vBr98xA6pDxKrR7bEnfU7GZN8wo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
8216
2561256
Total3272
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
428
2061206
Total3214
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3935266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               €
+
003 TX OCTETS: 8102c280
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8182e57c51af27fc
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6535376335316166
+
               €
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882a724c639a4cc
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6137323463363339
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_7_2.json b/autobahn/client/tungstenite_case_6_7_2.json new file mode 100644 index 0000000..ad6c922 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_7_2.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 95, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xc280", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u0080", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=95&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: qqYTOnx4GRpIj5GskkKmIQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: vBr98xA6pDxKrR7bEnfU7GZN8wo=\r\n\r\n", + "id": "6.7.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u0080", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 2, + "256": 1 + }, + "started": "2025-09-11T20:05:52.725Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3935266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u0080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102c280" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 8, + "8182e57c51af27fc" + ] + ], + [ + "RF", + [ + 2, + "\u0080" + ], + 1, + true, + 0, + true, + "e57c51af" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a724c639a4cc" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a724c639" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_7_3.html b/autobahn/client/tungstenite_case_6_7_3.html new file mode 100644 index 0000000..e1769df --- /dev/null +++ b/autobahn/client/tungstenite_case_6_7_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.7.3 : Pass - 1 ms @ 2025-09-11T20:05:52.728Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xe0a080

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u0800', False)]}

+ Observed:
[('message', u'\u0800', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=96&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 6rtbdJovG1HCzf4eKxvRVQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: i/e9D8a/mqEbg06/+xi35W1JDJg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2561256
Total3273
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3936266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               à €
+
003 TX OCTETS: 8103e0a080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8183a872e66b48d266
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=6138373265363662
+
               à €
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882efb6123aec5e
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6566623631323361
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_7_3.json b/autobahn/client/tungstenite_case_6_7_3.json new file mode 100644 index 0000000..5def13a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_7_3.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 96, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xe0a080", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u0800", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=96&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 6rtbdJovG1HCzf4eKxvRVQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: i/e9D8a/mqEbg06/+xi35W1JDJg=\r\n\r\n", + "id": "6.7.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u0800", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.728Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3936266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\u0800" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103e0a080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "8183a872e66b48d266" + ] + ], + [ + "RF", + [ + 3, + "\u0800" + ], + 1, + true, + 0, + true, + "a872e66b" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882efb6123aec5e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "efb6123a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_7_4.html b/autobahn/client/tungstenite_case_6_7_4.html new file mode 100644 index 0000000..9d8cd8b --- /dev/null +++ b/autobahn/client/tungstenite_case_6_7_4.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.7.4 : Pass - 2 ms @ 2025-09-11T20:05:52.730Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0908080

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U00010000', False)]}

+ Observed:
[('message', u'\U00010000', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=97&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: CNb5pqig2lFYoUbfBN4zdQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: YfvxhYM4oAxkS6gHuauPojBxX3M=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2561256
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3937266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ð€€
+
003 TX OCTETS: 8104f0908080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184f1a1d828013158a8
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6631613164383238
+
               ð€€
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882b509b96db6e1
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6235303962393664
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_7_4.json b/autobahn/client/tungstenite_case_6_7_4.json new file mode 100644 index 0000000..fa60f0b --- /dev/null +++ b/autobahn/client/tungstenite_case_6_7_4.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 97, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf0908080", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\ud800\udc00", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=97&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: CNb5pqig2lFYoUbfBN4zdQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: YfvxhYM4oAxkS6gHuauPojBxX3M=\r\n\r\n", + "id": "6.7.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\ud800\udc00", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "256": 1 + }, + "started": "2025-09-11T20:05:52.730Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3937266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\ud800\udc00" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f0908080" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184f1a1d828013158a8" + ] + ], + [ + "RF", + [ + 4, + "\ud800\udc00" + ], + 1, + true, + 0, + true, + "f1a1d828" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882b509b96db6e1" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "b509b96d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_8_1.html b/autobahn/client/tungstenite_case_6_8_1.html new file mode 100644 index 0000000..43bbc5d --- /dev/null +++ b/autobahn/client/tungstenite_case_6_8_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.8.1 : Pass - 1 ms @ 2025-09-11T20:05:52.734Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf888808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=98&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: rP2mGVXnrs1qaIOFsmLqWg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: FBtQPG0idR6NjThFqkd8B3jcgK0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
717
2061206
Total2213
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3938266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=5, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xf888808080
+
003 TX OCTETS: 8105f888808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_8_1.json b/autobahn/client/tungstenite_case_6_8_1.json new file mode 100644 index 0000000..367bdfa --- /dev/null +++ b/autobahn/client/tungstenite_case_6_8_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 98, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xf888808080", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=98&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: rP2mGVXnrs1qaIOFsmLqWg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: FBtQPG0idR6NjThFqkd8B3jcgK0=\r\n\r\n", + "id": "6.8.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:52.734Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "7": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3938266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 5, + "0xf888808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 7, + "8105f888808080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_8_2.html b/autobahn/client/tungstenite_case_6_8_2.html new file mode 100644 index 0000000..89aa13a --- /dev/null +++ b/autobahn/client/tungstenite_case_6_8_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.8.2 : Pass - 1 ms @ 2025-09-11T20:05:52.737Z

+

Case Description

Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8480808080

+

Case Expectation

The connection is failed immediately, since the payload is not valid UTF-8.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=99&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1HBN1p5aQHsOR99s1PwPFg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +l4gEgauw2AmP3hlu1PguXcIZK0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeFalseTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2561256
Total1256
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2061206
Total2214
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
11
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d3939266167656e743d54756e677374656e69746520485454502f312e310d0a48
+
               6f73743a206c6f63616c686f7374 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=6, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xfc8480808080
+
003 TX OCTETS: 8106fc8480808080
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_8_2.json b/autobahn/client/tungstenite_case_6_8_2.json new file mode 100644 index 0000000..3b089dd --- /dev/null +++ b/autobahn/client/tungstenite_case_6_8_2.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 99, + "closedByMe": false, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is not valid UTF-8 in one fragment.

Payload: 0xfc8480808080", + "droppedByMe": false, + "duration": 1, + "expectation": "The connection is failed immediately, since the payload is not valid UTF-8.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1007 + ], + "closedByMe": false, + "closedByWrongEndpointIsFatal": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=99&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1HBN1p5aQHsOR99s1PwPFg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +l4gEgauw2AmP3hlu1PguXcIZK0=\r\n\r\n", + "id": "6.8.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "256": 1 + }, + "started": "2025-09-11T20:05:52.737Z", + "trafficStats": null, + "txFrameStats": { + "1": 1 + }, + "txOctetStats": { + "8": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 256, + "474554202f72756e436173653f636173653d3939266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f7374 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 6, + "0xfc8480808080" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 8, + "8106fc8480808080" + ], + false + ], + [ + "KL", + 0.5 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_9_1.html b/autobahn/client/tungstenite_case_6_9_1.html new file mode 100644 index 0000000..a633394 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_9_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.9.1 : Pass - 3 ms @ 2025-09-11T20:05:52.740Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x7f

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\x7f', False)]}

+ Observed:
[('message', u'\x7f', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=100&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: aJ/qm6rLNs2tOrz8j8BfGQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: FL/j6oKa3y+lgXW9LWrNQL5bP+Q=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
717
818
2571257
Total3272
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
313
414
2061206
Total3213
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313030266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 81017f
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8181cde66236b2
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=1, MASKED=True, MASK=6364653636323336
+
               
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882056831ed0680
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3035363833316564
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_9_1.json b/autobahn/client/tungstenite_case_6_9_1.json new file mode 100644 index 0000000..42a8cc7 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_9_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 100, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0x7f", + "droppedByMe": true, + "duration": 3, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u007f", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=100&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: aJ/qm6rLNs2tOrz8j8BfGQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: FL/j6oKa3y+lgXW9LWrNQL5bP+Q=\r\n\r\n", + "id": "6.9.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u007f", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "7": 1, + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.740Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "3": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313030266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "\u007f" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "81017f" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 7, + "8181cde66236b2" + ] + ], + [ + "RF", + [ + 1, + "\u007f" + ], + 1, + true, + 0, + true, + "cde66236" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882056831ed0680" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "056831ed" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_9_2.html b/autobahn/client/tungstenite_case_6_9_2.html new file mode 100644 index 0000000..28e1c88 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_9_2.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.9.2 : Pass - 2 ms @ 2025-09-11T20:05:52.745Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xdfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\u07ff', False)]}

+ Observed:
[('message', u'\u07ff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=101&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: IUpcQ5XOTUCnnZj/qI8rlA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZxDvPRvdEgXD7weuhY4UVJfl0k4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
8216
2571257
Total3273
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
428
2061206
Total3214
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313031266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ß¿
+
003 TX OCTETS: 8102dfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 818288a53847571a
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3838613533383437
+
               ß¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 88820d8352710e6b
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3064383335323731
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_9_2.json b/autobahn/client/tungstenite_case_6_9_2.json new file mode 100644 index 0000000..b989c7d --- /dev/null +++ b/autobahn/client/tungstenite_case_6_9_2.json @@ -0,0 +1,175 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 101, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xdfbf", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\u07ff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=101&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: IUpcQ5XOTUCnnZj/qI8rlA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZxDvPRvdEgXD7weuhY4UVJfl0k4=\r\n\r\n", + "id": "6.9.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\u07ff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 2, + "257": 1 + }, + "started": "2025-09-11T20:05:52.745Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313031266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u07ff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8102dfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 8, + "818288a53847571a" + ] + ], + [ + "RF", + [ + 2, + "\u07ff" + ], + 1, + true, + 0, + true, + "88a53847" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820d8352710e6b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0d835271" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_9_3.html b/autobahn/client/tungstenite_case_6_9_3.html new file mode 100644 index 0000000..1604897 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_9_3.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.9.3 : Pass - 1 ms @ 2025-09-11T20:05:52.748Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\uffff', False)]}

+ Observed:
[('message', u'\uffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=102&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 8c/PH+5LNbQY1Pq0ilGkuQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5LpTxpcCRn3Y3cgJjOg6jwVcLC0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
919
2571257
Total3274
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
515
2061206
Total3215
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313032266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ï¿¿
+
003 TX OCTETS: 8103efbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8183228f20f0cd309f
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=3, MASKED=True, MASK=3232386632306630
+
               ï¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882f64d7224f5a5
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6636346437323234
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_9_3.json b/autobahn/client/tungstenite_case_6_9_3.json new file mode 100644 index 0000000..49e2112 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_9_3.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 102, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xefbfbf", + "droppedByMe": true, + "duration": 1, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\uffff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=102&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 8c/PH+5LNbQY1Pq0ilGkuQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5LpTxpcCRn3Y3cgJjOg6jwVcLC0=\r\n\r\n", + "id": "6.9.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\uffff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "9": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.748Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "5": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313032266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 5, + "8103efbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 9, + "8183228f20f0cd309f" + ] + ], + [ + "RF", + [ + 3, + "\uffff" + ], + 1, + true, + 0, + true, + "228f20f0" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f64d7224f5a5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f64d7224" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_6_9_4.html b/autobahn/client/tungstenite_case_6_9_4.html new file mode 100644 index 0000000..d97deca --- /dev/null +++ b/autobahn/client/tungstenite_case_6_9_4.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 6.9.4 : Pass - 2 ms @ 2025-09-11T20:05:52.751Z

+

Case Description

Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf

+

Case Expectation

The message is echo'ed back to us.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'\U0010ffff', False)]}

+ Observed:
[('message', u'\U0010ffff', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=103&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: s2XinGJ+JM2LlrNvsdgynQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: nWukTha4lhw6KUlpSAzIkTnsFmU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
10110
2571257
Total3275
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
616
2061206
Total3216
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d313033266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               ô¿¿
+
003 TX OCTETS: 8104f48fbfbf
+
004 FAIL CONNECTION AFTER 0.500000 sec
+
005 RX OCTETS: 8184b1f9d90a457666b5
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=4, MASKED=True, MASK=6231663964393061
+
               ô¿¿
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882e227aa53e1cf
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6532323761613533
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_6_9_4.json b/autobahn/client/tungstenite_case_6_9_4.json new file mode 100644 index 0000000..9f24b79 --- /dev/null +++ b/autobahn/client/tungstenite_case_6_9_4.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 103, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a text message with payload which is valid UTF-8 in one fragment.

Payload: 0xf48fbfbf", + "droppedByMe": true, + "duration": 2, + "expectation": "The message is echo'ed back to us.", + "expected": { + "OK": [ + [ + "message", + "\udbff\udfff", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=103&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: s2XinGJ+JM2LlrNvsdgynQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: nWukTha4lhw6KUlpSAzIkTnsFmU=\r\n\r\n", + "id": "6.9.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "\udbff\udfff", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "10": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.751Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "6": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d313033266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 6, + "8104f48fbfbf" + ], + false + ], + [ + "KL", + 0.5 + ], + [ + "RO", + [ + 10, + "8184b1f9d90a457666b5" + ] + ], + [ + "RF", + [ + 4, + "\udbff\udfff" + ], + 1, + true, + 0, + true, + "b1f9d90a" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e227aa53e1cf" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e227aa53" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_13_1.html b/autobahn/client/tungstenite_case_7_13_1.html new file mode 100644 index 0000000..b5dabfa --- /dev/null +++ b/autobahn/client/tungstenite_case_7_13_1.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.13.1 : Informational - 1 ms @ 2025-09-11T20:05:53.032Z

+

Case Description

Send close with close code 5000

+

Case Expectation

Actual events are undefined by the spec.

+ +

+ Case Outcome

Actual events are undefined by the spec.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (INFORMATIONAL)

+

+

Opening Handshake

+
GET /runCase?case=245&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 8ExVuI5yQZrMN/T+VJ9dIA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: /JmQMoFk/gH6921SptsfL6qdfHI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode5000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323435266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x1388
+
003 TX OCTETS: 88021388
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 889436c3886a3529d81859b7e70959afa81c5face40b42aae704
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=3336633338383661
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_13_1.json b/autobahn/client/tungstenite_case_7_13_1.json new file mode 100644 index 0000000..08c1453 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_13_1.json @@ -0,0 +1,122 @@ +{ + "agent": "Tungstenite", + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "case": 245, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with close code 5000", + "droppedByMe": true, + "duration": 1, + "expectation": "Actual events are undefined by the spec.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 5000, + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=245&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 8ExVuI5yQZrMN/T+VJ9dIA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: /JmQMoFk/gH6921SptsfL6qdfHI=\r\n\r\n", + "id": "7.13.1", + "isServer": true, + "localCloseCode": 5000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events are undefined by the spec.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.032Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323435266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x1388" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88021388" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "889436c3886a3529d81859b7e70959afa81c5face40b42aae704" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "36c3886a" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_13_2.html b/autobahn/client/tungstenite_case_7_13_2.html new file mode 100644 index 0000000..c2aa512 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_13_2.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.13.2 : Informational - 1 ms @ 2025-09-11T20:05:53.033Z

+

Case Description

Send close with close code 65536

+

Case Expectation

Actual events are undefined by the spec.

+ +

+ Case Outcome

Actual events are undefined by the spec.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (INFORMATIONAL)

+

+

Opening Handshake

+
GET /runCase?case=246&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: fP4UwqLBhcpYzGYRMh4Owg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: zxzq1K66KYGxm676slhG47lY7Oc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode65535The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323436266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0xffff
+
003 TX OCTETS: 8802ffff
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8894c2d3ac1fc139fc6dada7c37cadbf8c69abbcc07eb6bac371
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=6332643361633166
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_13_2.json b/autobahn/client/tungstenite_case_7_13_2.json new file mode 100644 index 0000000..52981de --- /dev/null +++ b/autobahn/client/tungstenite_case_7_13_2.json @@ -0,0 +1,122 @@ +{ + "agent": "Tungstenite", + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "case": 246, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with close code 65536", + "droppedByMe": true, + "duration": 1, + "expectation": "Actual events are undefined by the spec.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 65535, + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=246&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: fP4UwqLBhcpYzGYRMh4Owg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: zxzq1K66KYGxm676slhG47lY7Oc=\r\n\r\n", + "id": "7.13.2", + "isServer": true, + "localCloseCode": 65535, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events are undefined by the spec.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.033Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323436266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0xffff" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8802ffff" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "8894c2d3ac1fc139fc6dada7c37cadbf8c69abbcc07eb6bac371" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "c2d3ac1f" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_1_1.html b/autobahn/client/tungstenite_case_7_1_1.html new file mode 100644 index 0000000..a59fcb8 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_1.html @@ -0,0 +1,303 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.1.1 : Pass - 1 ms @ 2025-09-11T20:05:52.978Z

+

Case Description

Send a message followed by a close frame

+

Case Expectation

Echoed message followed by clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': [('message', u'Hello World!', False)]}

+ Observed:
[('message', u'Hello World!', False)] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=210&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: uptqUb8cmdeaXM3HGaF7zg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: oSYyk3aki/5dnQub7BxnkZPEzuE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
18118
2571257
Total3283
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323130266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello World!
+
003 TX OCTETS: 810c48656c6c6f20576f726c6421
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 818c7f7bd369371ebf05105b84060d17b748
+
006 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3766376264333639
+
               Hello World!
+
007 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
008 TX OCTETS: 880203e8
+
009 RX OCTETS: 8882acfa52f9af12
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6163666135326639
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_1_1.json b/autobahn/client/tungstenite_case_7_1_1.json new file mode 100644 index 0000000..e5ce3d6 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_1.json @@ -0,0 +1,177 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 210, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a message followed by a close frame", + "droppedByMe": true, + "duration": 1, + "expectation": "Echoed message followed by clean close with normal code.", + "expected": { + "OK": [ + [ + "message", + "Hello World!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=210&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: uptqUb8cmdeaXM3HGaF7zg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: oSYyk3aki/5dnQub7BxnkZPEzuE=\r\n\r\n", + "id": "7.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "Hello World!", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "18": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.978Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323130266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 12, + "Hello World!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "810c48656c6c6f20576f726c6421" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 18, + "818c7f7bd369371ebf05105b84060d17b748" + ] + ], + [ + "RF", + [ + 12, + "Hello World!" + ], + 1, + true, + 0, + true, + "7f7bd369" + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882acfa52f9af12" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "acfa52f9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_1_2.html b/autobahn/client/tungstenite_case_7_1_2.html new file mode 100644 index 0000000..ab44154 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_2.html @@ -0,0 +1,296 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.1.2 : Pass - 1 ms @ 2025-09-11T20:05:52.980Z

+

Case Description

Send two close frames

+

Case Expectation

Clean close with normal code. Second close frame ignored.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=211&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: akIMRW2mT3ePKu0QJdJd7g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: mJavY7IFj+xPAa03B0P8Jr65M+E=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
82
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323131266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 8800
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 88822ebb86b32d53
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3265626238366233
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_1_2.json b/autobahn/client/tungstenite_case_7_1_2.json new file mode 100644 index 0000000..cbb1698 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_2.json @@ -0,0 +1,143 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 211, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send two close frames", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code. Second close frame ignored.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=211&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: akIMRW2mT3ePKu0QJdJd7g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: mJavY7IFj+xPAa03B0P8Jr65M+E=\r\n\r\n", + "id": "7.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.980Z", + "trafficStats": null, + "txFrameStats": { + "8": 2 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323131266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88822ebb86b32d53" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2ebb86b3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_1_3.html b/autobahn/client/tungstenite_case_7_1_3.html new file mode 100644 index 0000000..11538ef --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_3.html @@ -0,0 +1,297 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.1.3 : Pass - 1 ms @ 2025-09-11T20:05:52.981Z

+

Case Description

Send a ping after close message

+

Case Expectation

Clean close with normal code, no pong.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=212&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1118w87irb96rqCdpip4Rg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: uohkmYq0N0zG3EiAZFYCVE3xxMY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
212
414
2061206
Total3212
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
81
91
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323132266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
005 TX OCTETS: 8900
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 8882ba2230c6b9ca
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6261323233306336
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_1_3.json b/autobahn/client/tungstenite_case_7_1_3.json new file mode 100644 index 0000000..36ce607 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_3.json @@ -0,0 +1,144 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 212, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a ping after close message", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code, no pong.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=212&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1118w87irb96rqCdpip4Rg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: uohkmYq0N0zG3EiAZFYCVE3xxMY=\r\n\r\n", + "id": "7.1.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.981Z", + "trafficStats": null, + "txFrameStats": { + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323132266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882ba2230c6b9ca" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "ba2230c6" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_1_4.html b/autobahn/client/tungstenite_case_7_1_4.html new file mode 100644 index 0000000..8948d8c --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_4.html @@ -0,0 +1,298 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.1.4 : Pass - 1 ms @ 2025-09-11T20:05:52.983Z

+

Case Description

Send text message after sending a close frame.

+

Case Expectation

Clean close with normal code. Text message ignored.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=213&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /L/9X2L5qzkjs8NgUozE3A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0f/yeAuTckrngIM1sChTGUJAiHQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
14114
2061206
Total3224
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323133266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello World!
+
005 TX OCTETS: 810c48656c6c6f20576f726c6421
+
006 FAIL CONNECTION AFTER 1.000000 sec
+
007 RX OCTETS: 88821078ec0c1390
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3130373865633063
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_1_4.json b/autobahn/client/tungstenite_case_7_1_4.json new file mode 100644 index 0000000..91c4ae4 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_4.json @@ -0,0 +1,144 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 213, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message after sending a close frame.", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code. Text message ignored.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=213&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /L/9X2L5qzkjs8NgUozE3A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0f/yeAuTckrngIM1sChTGUJAiHQ=\r\n\r\n", + "id": "7.1.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.983Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "14": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323133266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 12, + "Hello World!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "810c48656c6c6f20576f726c6421" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88821078ec0c1390" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1078ec0c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_1_5.html b/autobahn/client/tungstenite_case_7_1_5.html new file mode 100644 index 0000000..ecf694d --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_5.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.1.5 : Pass - 1 ms @ 2025-09-11T20:05:52.984Z

+

Case Description

Send message fragment1 followed by close then fragment

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=214&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Rb1b1aRNOgkiRiuvjUpLZw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3mTgrhFvk0gktvnjgfcfRJ/TnRs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
11222
2061206
Total4232
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01
11
81
Total3
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323134266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=False, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment1
+
003 TX OCTETS: 0109667261676d656e7431
+
004 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
005 TX OCTETS: 880203e8
+
006 TX FRAME : OPCODE=0, FIN=True, RSV=0, PAYLOAD-LEN=9, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               fragment2
+
007 TX OCTETS: 8009667261676d656e7432
+
008 FAIL CONNECTION AFTER 1.000000 sec
+
009 RX OCTETS: 8882a84c1002aba4
+
010 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6138346331303032
+
               0x03e8
+
011 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_1_5.json b/autobahn/client/tungstenite_case_7_1_5.json new file mode 100644 index 0000000..4e9f968 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_5.json @@ -0,0 +1,167 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 214, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send message fragment1 followed by close then fragment", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=214&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Rb1b1aRNOgkiRiuvjUpLZw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3mTgrhFvk0gktvnjgfcfRJ/TnRs=\r\n\r\n", + "id": "7.1.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.984Z", + "trafficStats": null, + "txFrameStats": { + "0": 1, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "11": 2, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323134266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 9, + "fragment1" + ], + 1, + false, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "0109667261676d656e7431" + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 9, + "fragment2" + ], + 0, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 11, + "8009667261676d656e7432" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882a84c1002aba4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a84c1002" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_1_6.html b/autobahn/client/tungstenite_case_7_1_6.html new file mode 100644 index 0000000..871746c --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_6.html @@ -0,0 +1,324 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.1.6 : Informational - 9 ms @ 2025-09-11T20:05:52.985Z

+

Case Description

Send 256K message followed by close then a ping

+

Case Expectation

Case outcome depends on implementation defined close behavior. Message and close frame are sent back to back. If the close frame is processed before the text message write is complete (as can happen in asynchronous processing models) the close frame is processed first and the text message may not be received or may only be partially recieved.

+ +

+ Case Outcome

Actual events differ from any expected.

+ Expected:
{'OK': [('message', u'Hello World!', False)], 'NON-STRICT': []}

+ Observed:
[('message', u'BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd ...', False), ('message', u'Hello World!', False)] +

+

Case Closing Behavior

Connection was properly closed (INFORMATIONAL)

+

+

Opening Handshake

+
GET /runCase?case=215&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: NxhrrCKIFrgf0toDYrTsQQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Pu5Vin1ZsyH4QYQKvJRsYC4TdPc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
2571257
29752129752
43440143440
57920157920
655362131072
Total6262441
+

Octets Transmitted by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
212
414
14114
2061206
2621541262154
Total5262380
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
12
81
Total3
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
12
81
91
Total4
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323135266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=10, MASK=None, PAYLOAD-REPEAT-LEN=262144, CHOPSIZE=None, SYNC=False
+
               BAsd7&jh23
+
003 TX OCTETS: 817f00000000000400004241736437266a6832334241736437266a6832334241736437266a6832334241736437266a683233
+
               4241736437266a68323342417364 ...
+
004 TX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               Hello World!
+
005 TX OCTETS: 810c48656c6c6f20576f726c6421
+
006 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
007 TX OCTETS: 880203e8
+
008 TX FRAME : OPCODE=9, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
009 TX OCTETS: 8900
+
010 FAIL CONNECTION AFTER 1.000000 sec
+
011 RX OCTETS: 81ff00000000000400006486123d26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b
+
               0eee200e26c7615953a0785556b5 ...
+
012 RX OCTETS: 785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b
+
               0eee200e26c7615953a0785556b5 ...
+
013 RX OCTETS: 785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b
+
               0eee200e26c7615953a0785556b5 ...
+
014 RX OCTETS: 615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c
+
               17e2251b0eee200e26c7615953a0 ...
+
015 RX OCTETS: 200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a07855
+
               56b5507c17e2251b0eee200e26c7 ...
+
016 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=262144, MASKED=True, MASK=3634383631323364
+
               BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd ...
+
017 RX FRAME : OPCODE=1, FIN=True, RSV=0, PAYLOAD-LEN=12, MASKED=True, MASK=3161313761633532
+
               Hello World!
+
018 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6132663963396265
+
               0x03e8
+
019 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_1_6.json b/autobahn/client/tungstenite_case_7_1_6.json new file mode 100644 index 0000000..1428584 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_1_6.json @@ -0,0 +1,265 @@ +{ + "agent": "Tungstenite", + "behavior": "INFORMATIONAL", + "behaviorClose": "INFORMATIONAL", + "case": 215, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 256K message followed by close then a ping", + "droppedByMe": true, + "duration": 9, + "expectation": "Case outcome depends on implementation defined close behavior. Message and close frame are sent back to back. If the close frame is processed before the text message write is complete (as can happen in asynchronous processing models) the close frame is processed first and the text message may not be received or may only be partially recieved.", + "expected": { + "NON-STRICT": [], + "OK": [ + [ + "message", + "Hello World!", + false + ] + ] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=215&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: NxhrrCKIFrgf0toDYrTsQQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Pu5Vin1ZsyH4QYQKvJRsYC4TdPc=\r\n\r\n", + "id": "7.1.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [ + [ + "message", + "BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd ...", + false + ], + [ + "message", + "Hello World!", + false + ] + ], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events differ from any expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 2, + "8": 1 + }, + "rxOctetStats": { + "257": 1, + "29752": 1, + "43440": 1, + "57920": 1, + "65536": 2 + }, + "started": "2025-09-11T20:05:52.985Z", + "trafficStats": null, + "txFrameStats": { + "1": 2, + "8": 1, + "9": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "14": 1, + "206": 1, + "262154": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323135266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 10, + "BAsd7&jh23" + ], + 1, + true, + 0, + null, + 262144, + null, + false + ], + [ + "TO", + [ + 262154, + "817f00000000000400004241736437266a6832334241736437266a6832334241736437266a6832334241736437266a6832334241736437266a68323342417364 ..." + ], + false + ], + [ + "TF", + [ + 12, + "Hello World!" + ], + 1, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 14, + "810c48656c6c6f20576f726c6421" + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 9, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8900" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 43440, + "81ff00000000000400006486123d26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5 ..." + ] + ], + [ + "RO", + [ + 57920, + "785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5 ..." + ] + ], + [ + "RO", + [ + 65536, + "785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5 ..." + ] + ], + [ + "RO", + [ + 65536, + "615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0 ..." + ] + ], + [ + "RO", + [ + 29752, + "200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7615953a0785556b5507c17e2251b0eee200e26c7 ..." + ] + ], + [ + "RF", + [ + 262144, + "BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd7&jh23BAsd ..." + ], + 1, + true, + 0, + true, + "6486123d" + ], + [ + "RF", + [ + 12, + "Hello World!" + ], + 1, + true, + 0, + true, + "1a17ac52" + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a2f9c9be" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_3_1.html b/autobahn/client/tungstenite_case_7_3_1.html new file mode 100644 index 0000000..d68efb0 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_1.html @@ -0,0 +1,291 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.3.1 : Pass - 5 ms @ 2025-09-11T20:05:52.989Z

+

Case Description

Send a close frame with payload length 0 (no close code, no close reason)

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=216&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: MF1CdXGrPoY6hjYqkSuQQA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: s0aHvvSbkpLxL1a641h2DyZc23g=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
616
2571257
Total2263
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
212
2061206
Total2208
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323136266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
003 TX OCTETS: 8800
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888091fa404e
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=0, MASKED=True, MASK=3931666134303465
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_3_1.json b/autobahn/client/tungstenite_case_7_3_1.json new file mode 100644 index 0000000..1d49adf --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_1.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 216, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with payload length 0 (no close code, no close reason)", + "droppedByMe": true, + "duration": 5, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=216&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: MF1CdXGrPoY6hjYqkSuQQA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: s0aHvvSbkpLxL1a641h2DyZc23g=\r\n\r\n", + "id": "7.3.1", + "isServer": true, + "localCloseCode": null, + "localCloseReason": null, + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "6": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.989Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "2": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323136266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 0, + "" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 2, + "8800" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 6, + "888091fa404e" + ] + ], + [ + "RF", + [ + 0, + "" + ], + 8, + true, + 0, + true, + "91fa404e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_3_2.html b/autobahn/client/tungstenite_case_7_3_2.html new file mode 100644 index 0000000..1eeea7f --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_2.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.3.2 : Pass - 1 ms @ 2025-09-11T20:05:52.995Z

+

Case Description

Send a close frame with payload length 1

+

Case Expectation

Clean close with protocol error or drop TCP.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=217&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: xGVginROjbrEDg3e5jK5xQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sjm+qSVqK2REtvmEP9GhdsOLXSY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCodeNoneThe close code I sent in close frame (if any).
localCloseReasonaThe close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
313
2061206
Total2209
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323137266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=1, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               a
+
003 TX OCTETS: 880161
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_3_2.json b/autobahn/client/tungstenite_case_7_3_2.json new file mode 100644 index 0000000..67f5538 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_2.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 217, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with payload length 1", + "droppedByMe": false, + "duration": 1, + "expectation": "Clean close with protocol error or drop TCP.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=217&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: xGVginROjbrEDg3e5jK5xQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sjm+qSVqK2REtvmEP9GhdsOLXSY=\r\n\r\n", + "id": "7.3.2", + "isServer": true, + "localCloseCode": null, + "localCloseReason": "a", + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.995Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "3": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323137266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 1, + "a" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 3, + "880161" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_3_3.html b/autobahn/client/tungstenite_case_7_3_3.html new file mode 100644 index 0000000..25d98c3 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_3.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.3.3 : Pass - 1 ms @ 2025-09-11T20:05:52.996Z

+

Case Description

Send a close frame with payload length 2 (regular close with a code)

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=218&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: AhvoFXDs0TBF7kB6rHv6Tw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 07LjAF6vdMRZTQ7MIDli83HS3Bs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323138266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882fb555af1f8bd
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6662353535616631
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_3_3.json b/autobahn/client/tungstenite_case_7_3_3.json new file mode 100644 index 0000000..b6b0a23 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_3.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 218, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with payload length 2 (regular close with a code)", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=218&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: AhvoFXDs0TBF7kB6rHv6Tw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 07LjAF6vdMRZTQ7MIDli83HS3Bs=\r\n\r\n", + "id": "7.3.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.996Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323138266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882fb555af1f8bd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fb555af1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_3_4.html b/autobahn/client/tungstenite_case_7_3_4.html new file mode 100644 index 0000000..bcb34c9 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_4.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.3.4 : Pass - 1 ms @ 2025-09-11T20:05:52.997Z

+

Case Description

Send a close frame with close code and close reason

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=219&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Eomewy7raGOGYU64dIcRHw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: I7vqgcP/ISPQuZHBSVOzJ6SENb4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonHello World!The close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonHello World!The close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
20120
2571257
Total2277
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
16116
2061206
Total2222
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323139266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=14, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e848656c6c6f20576f726c6421
+
003 TX OCTETS: 880e03e848656c6c6f20576f726c6421
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888e197a5ad41a9212b1751635f44e1528b87d5b
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=14, MASKED=True, MASK=3139376135616434
+
               0x03e848656c6c6f20576f726c6421
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_3_4.json b/autobahn/client/tungstenite_case_7_3_4.json new file mode 100644 index 0000000..39d6bd1 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_4.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 219, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with close code and close reason", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=219&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Eomewy7raGOGYU64dIcRHw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: I7vqgcP/ISPQuZHBSVOzJ6SENb4=\r\n\r\n", + "id": "7.3.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": "Hello World!", + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": "Hello World!", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "20": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.997Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "16": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323139266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 14, + "0x03e848656c6c6f20576f726c6421" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 16, + "880e03e848656c6c6f20576f726c6421" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 20, + "888e197a5ad41a9212b1751635f44e1528b87d5b" + ] + ], + [ + "RF", + [ + 14, + "0x03e848656c6c6f20576f726c6421" + ], + 8, + true, + 0, + true, + "197a5ad4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_3_5.html b/autobahn/client/tungstenite_case_7_3_5.html new file mode 100644 index 0000000..06c690f --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_5.html @@ -0,0 +1,297 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.3.5 : Pass - 1 ms @ 2025-09-11T20:05:52.998Z

+

Case Description

Send a close frame with close code and close reason of maximum length (123)

+

Case Expectation

Clean close with normal code.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=220&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 8ilc0pZJZaNIFxp4kpXe1g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: TJ9hetIEIEYb1YEnbl9nVy8Fxd8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReason***************************************************************************************************************************The close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReason***************************************************************************************************************************The close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
1311131
2571257
Total2388
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
1271127
2061206
Total2333
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323230266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=125, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
003 TX OCTETS: 887d03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88fd7169bf0b728195215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b439521
+
               5b4395215b4395215b4395215b43 ...
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=125, MASKED=True, MASK=3731363962663062
+
               0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_3_5.json b/autobahn/client/tungstenite_case_7_3_5.json new file mode 100644 index 0000000..08205e7 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_5.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 220, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with close code and close reason of maximum length (123)", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal code.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=220&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 8ilc0pZJZaNIFxp4kpXe1g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: TJ9hetIEIEYb1YEnbl9nVy8Fxd8=\r\n\r\n", + "id": "7.3.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": "***************************************************************************************************************************", + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": "***************************************************************************************************************************", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "131": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:52.998Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "127": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323230266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 125, + "0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 127, + "887d03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 131, + "88fd7169bf0b728195215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b4395215b43 ..." + ] + ], + [ + "RF", + [ + 125, + "0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + 8, + true, + 0, + true, + "7169bf0b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_3_6.html b/autobahn/client/tungstenite_case_7_3_6.html new file mode 100644 index 0000000..98d2df9 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_6.html @@ -0,0 +1,290 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.3.6 : Pass - 0 ms @ 2025-09-11T20:05:52.999Z

+

Case Description

Send a close frame with close code and close reason which is too long (124) - total frame payload 126 octets

+

Case Expectation

Clean close with protocol error code or dropped TCP connection.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=221&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: oH6guuJhpHtLkceqx03NxA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: fGiZ2S8cDGEGOplEyqTEMe7E0nY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReason****************************************************************************************************************************The close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
1301130
2061206
Total2336
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323231266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=126, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
003 TX OCTETS: 887e007e03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
+
               2a2a2a2a2a2a2a2a2a2a2a2a2a2a ...
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_3_6.json b/autobahn/client/tungstenite_case_7_3_6.json new file mode 100644 index 0000000..914a11c --- /dev/null +++ b/autobahn/client/tungstenite_case_7_3_6.json @@ -0,0 +1,98 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 221, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with close code and close reason which is too long (124) - total frame payload 126 octets", + "droppedByMe": false, + "duration": 0, + "expectation": "Clean close with protocol error code or dropped TCP connection.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=221&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: oH6guuJhpHtLkceqx03NxA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: fGiZ2S8cDGEGOplEyqTEMe7E0nY=\r\n\r\n", + "id": "7.3.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": "****************************************************************************************************************************", + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:52.999Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "130": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323231266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 126, + "0x03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 130, + "887e007e03e82a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a ..." + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_5_1.html b/autobahn/client/tungstenite_case_7_5_1.html new file mode 100644 index 0000000..3da859f --- /dev/null +++ b/autobahn/client/tungstenite_case_7_5_1.html @@ -0,0 +1,288 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.5.1 : Pass - 0 ms @ 2025-09-11T20:05:53.000Z

+

Case Description

Send a close frame with invalid UTF8 payload

+

Case Expectation

Clean close with protocol error or invalid utf8 code or dropped TCP.

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=222&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: tBQQt7f2seO1+RJd048A3Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: wtITfgAhLjWMC8X8GBDx39bEtRA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeFalseTrue, iff I dropped the TCP connection.
wasCleanFalseTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonpeer dropped the TCP connection without previous WebSocket closing handshakeWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasoncebae1bdb9cf83cebcceb5eda080656469746564The close reason I sent in close frame (if any).
remoteCloseCodeNoneThe close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + +
Chop SizeCountOctets
2571257
Total1257
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
24124
2061206
Total2230
+

Frames Received by Opcode

+ + + +
OpcodeCount
Total0
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323232266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=22, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8cebae1bdb9cf83cebcceb5eda080656469746564
+
003 TX OCTETS: 881603e8cebae1bdb9cf83cebcceb5eda080656469746564
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 TCP DROPPED BY PEER
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_5_1.json b/autobahn/client/tungstenite_case_7_5_1.json new file mode 100644 index 0000000..9df2cea --- /dev/null +++ b/autobahn/client/tungstenite_case_7_5_1.json @@ -0,0 +1,99 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 222, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send a close frame with invalid UTF8 payload", + "droppedByMe": false, + "duration": 0, + "expectation": "Clean close with protocol error or invalid utf8 code or dropped TCP.", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002, + 1007 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=222&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: tBQQt7f2seO1+RJd048A3Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: wtITfgAhLjWMC8X8GBDx39bEtRA=\r\n\r\n", + "id": "7.5.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": "cebae1bdb9cf83cebcceb5eda080656469746564", + "received": [], + "remoteCloseCode": null, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": {}, + "rxOctetStats": { + "257": 1 + }, + "started": "2025-09-11T20:05:53.000Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "24": 1, + "206": 1 + }, + "wasClean": false, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": "peer dropped the TCP connection without previous WebSocket closing handshake", + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323232266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 22, + "0x03e8cebae1bdb9cf83cebcceb5eda080656469746564" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 24, + "881603e8cebae1bdb9cf83cebcceb5eda080656469746564" + ], + false + ], + [ + "KL", + 1 + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_1.html b/autobahn/client/tungstenite_case_7_7_1.html new file mode 100644 index 0000000..f840d3e --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_1.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.1 : Pass - 1 ms @ 2025-09-11T20:05:53.001Z

+

Case Description

Send close with valid close code 1000

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=223&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: eW22sFSCh7ZtrzgIJane3w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ebaabva0DueC7PAQ9ipfEwmJrp4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323233266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
003 TX OCTETS: 880203e8
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888243a44de0404c
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3433613434646530
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_1.json b/autobahn/client/tungstenite_case_7_7_1.json new file mode 100644 index 0000000..e34d05f --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_1.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 223, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1000", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=223&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: eW22sFSCh7ZtrzgIJane3w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ebaabva0DueC7PAQ9ipfEwmJrp4=\r\n\r\n", + "id": "7.7.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.001Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323233266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "888243a44de0404c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "43a44de0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_10.html b/autobahn/client/tungstenite_case_7_7_10.html new file mode 100644 index 0000000..d13ffd5 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_10.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.10 : Pass - 1 ms @ 2025-09-11T20:05:53.017Z

+

Case Description

Send close with valid close code 3000

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=232&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: BZRUrQ9Sl4wM50HO2qzprg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: wHFXNoiun8LsZFdWYJMo3RS73ok=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode3000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode3000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323332266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x0bb8
+
003 TX OCTETS: 88020bb8
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882688a050d6332
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3638386130353064
+
               0x0bb8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_10.json b/autobahn/client/tungstenite_case_7_7_10.json new file mode 100644 index 0000000..98337a7 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_10.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 232, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 3000", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 3000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=232&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: BZRUrQ9Sl4wM50HO2qzprg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: wHFXNoiun8LsZFdWYJMo3RS73ok=\r\n\r\n", + "id": "7.7.10", + "isServer": true, + "localCloseCode": 3000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 3000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.017Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323332266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x0bb8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020bb8" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882688a050d6332" + ] + ], + [ + "RF", + [ + 2, + "0x0bb8" + ], + 8, + true, + 0, + true, + "688a050d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_11.html b/autobahn/client/tungstenite_case_7_7_11.html new file mode 100644 index 0000000..74153fb --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_11.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.11 : Pass - 0 ms @ 2025-09-11T20:05:53.018Z

+

Case Description

Send close with valid close code 3999

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=233&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 9boD3RpYzL8fdxKALLaSVA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NZAIwcZX3ZBa5oDr2u+cL0VzXbo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode3999The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode3999The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323333266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x0f9f
+
003 TX OCTETS: 88020f9f
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882b2245ec0bdbb
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6232323435656330
+
               0x0f9f
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_11.json b/autobahn/client/tungstenite_case_7_7_11.json new file mode 100644 index 0000000..e175149 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_11.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 233, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 3999", + "droppedByMe": true, + "duration": 0, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 3999 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=233&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 9boD3RpYzL8fdxKALLaSVA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NZAIwcZX3ZBa5oDr2u+cL0VzXbo=\r\n\r\n", + "id": "7.7.11", + "isServer": true, + "localCloseCode": 3999, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 3999, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.018Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323333266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x0f9f" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020f9f" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882b2245ec0bdbb" + ] + ], + [ + "RF", + [ + 2, + "0x0f9f" + ], + 8, + true, + 0, + true, + "b2245ec0" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_12.html b/autobahn/client/tungstenite_case_7_7_12.html new file mode 100644 index 0000000..3269a9b --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_12.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.12 : Pass - 1 ms @ 2025-09-11T20:05:53.019Z

+

Case Description

Send close with valid close code 4000

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=234&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: LHed9vXFZyG/xZU9VkbJcw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: lMcXyNbDKA87lQX58GbNpERS1DI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode4000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode4000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323334266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x0fa0
+
003 TX OCTETS: 88020fa0
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88822750168d28f0
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3237353031363864
+
               0x0fa0
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_12.json b/autobahn/client/tungstenite_case_7_7_12.json new file mode 100644 index 0000000..047bcdf --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_12.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 234, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 4000", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 4000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=234&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: LHed9vXFZyG/xZU9VkbJcw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: lMcXyNbDKA87lQX58GbNpERS1DI=\r\n\r\n", + "id": "7.7.12", + "isServer": true, + "localCloseCode": 4000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 4000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.019Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323334266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x0fa0" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020fa0" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88822750168d28f0" + ] + ], + [ + "RF", + [ + 2, + "0x0fa0" + ], + 8, + true, + 0, + true, + "2750168d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_13.html b/autobahn/client/tungstenite_case_7_7_13.html new file mode 100644 index 0000000..b6bbd01 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_13.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.13 : Pass - 1 ms @ 2025-09-11T20:05:53.020Z

+

Case Description

Send close with valid close code 4999

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=235&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: XSlPo55MG3zPvk8oGXcaRg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: thtbBVLW1d2pOA+DFWFDrEUjEQE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode4999The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode4999The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323335266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x1387
+
003 TX OCTETS: 88021387
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888200c5c7af1342
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3030633563376166
+
               0x1387
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_13.json b/autobahn/client/tungstenite_case_7_7_13.json new file mode 100644 index 0000000..ae51552 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_13.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 235, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 4999", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 4999 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=235&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: XSlPo55MG3zPvk8oGXcaRg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: thtbBVLW1d2pOA+DFWFDrEUjEQE=\r\n\r\n", + "id": "7.7.13", + "isServer": true, + "localCloseCode": 4999, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 4999, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.020Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323335266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x1387" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88021387" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "888200c5c7af1342" + ] + ], + [ + "RF", + [ + 2, + "0x1387" + ], + 8, + true, + 0, + true, + "00c5c7af" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_2.html b/autobahn/client/tungstenite_case_7_7_2.html new file mode 100644 index 0000000..df4649d --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_2.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.2 : Pass - 1 ms @ 2025-09-11T20:05:53.003Z

+

Case Description

Send close with valid close code 1001

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=224&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: IuHLANrZCKyQTrB2NlT4bw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: G6AvGMVdKwsQsvuym0BjW2AFyJ0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1001The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1001The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323234266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e9
+
003 TX OCTETS: 880203e9
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882a02c1acea3c5
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6130326331616365
+
               0x03e9
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_2.json b/autobahn/client/tungstenite_case_7_7_2.json new file mode 100644 index 0000000..35fbf5e --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_2.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 224, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1001", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1001 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=224&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: IuHLANrZCKyQTrB2NlT4bw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: G6AvGMVdKwsQsvuym0BjW2AFyJ0=\r\n\r\n", + "id": "7.7.2", + "isServer": true, + "localCloseCode": 1001, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1001, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.003Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323234266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e9" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e9" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882a02c1acea3c5" + ] + ], + [ + "RF", + [ + 2, + "0x03e9" + ], + 8, + true, + 0, + true, + "a02c1ace" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_3.html b/autobahn/client/tungstenite_case_7_7_3.html new file mode 100644 index 0000000..e667f8b --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_3.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.3 : Pass - 1 ms @ 2025-09-11T20:05:53.005Z

+

Case Description

Send close with valid close code 1002

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=225&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Ih3+pdSyWY+gFixfGQVptg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ojPBJjOQte8rY1QcHJ/omzPTcU0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1002The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323235266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ea
+
003 TX OCTETS: 880203ea
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882023dcd4201d7
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3032336463643432
+
               0x03ea
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_3.json b/autobahn/client/tungstenite_case_7_7_3.json new file mode 100644 index 0000000..8916c7b --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_3.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 225, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1002", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1002 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=225&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Ih3+pdSyWY+gFixfGQVptg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ojPBJjOQte8rY1QcHJ/omzPTcU0=\r\n\r\n", + "id": "7.7.3", + "isServer": true, + "localCloseCode": 1002, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.005Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323235266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ea" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ea" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882023dcd4201d7" + ] + ], + [ + "RF", + [ + 2, + "0x03ea" + ], + 8, + true, + 0, + true, + "023dcd42" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_4.html b/autobahn/client/tungstenite_case_7_7_4.html new file mode 100644 index 0000000..cf5fe58 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_4.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.4 : Pass - 1 ms @ 2025-09-11T20:05:53.006Z

+

Case Description

Send close with valid close code 1003

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=226&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: yVYWV3OlOSfzlFL3Q+xKSg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: QknSP4A9WprvBOaXewYNAfgsi4o=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1003The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1003The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323236266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03eb
+
003 TX OCTETS: 880203eb
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88820624461905cf
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3036323434363139
+
               0x03eb
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_4.json b/autobahn/client/tungstenite_case_7_7_4.json new file mode 100644 index 0000000..f87913f --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_4.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 226, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1003", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1003 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=226&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: yVYWV3OlOSfzlFL3Q+xKSg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: QknSP4A9WprvBOaXewYNAfgsi4o=\r\n\r\n", + "id": "7.7.4", + "isServer": true, + "localCloseCode": 1003, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1003, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.006Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323236266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03eb" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203eb" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88820624461905cf" + ] + ], + [ + "RF", + [ + 2, + "0x03eb" + ], + 8, + true, + 0, + true, + "06244619" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_5.html b/autobahn/client/tungstenite_case_7_7_5.html new file mode 100644 index 0000000..19ae8a1 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_5.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.5 : Pass - 1 ms @ 2025-09-11T20:05:53.008Z

+

Case Description

Send close with valid close code 1007

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=227&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: j2tb9+FThpeVcC1xySjKTQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: sDJjvjUqCjusXKTwS5lGhoRnU5A=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1007The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1007The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323237266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ef
+
003 TX OCTETS: 880203ef
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88824b736f31489c
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3462373336663331
+
               0x03ef
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_5.json b/autobahn/client/tungstenite_case_7_7_5.json new file mode 100644 index 0000000..9fb5be0 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_5.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 227, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1007", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1007 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=227&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: j2tb9+FThpeVcC1xySjKTQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: sDJjvjUqCjusXKTwS5lGhoRnU5A=\r\n\r\n", + "id": "7.7.5", + "isServer": true, + "localCloseCode": 1007, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1007, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.008Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323237266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ef" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ef" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88824b736f31489c" + ] + ], + [ + "RF", + [ + 2, + "0x03ef" + ], + 8, + true, + 0, + true, + "4b736f31" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_6.html b/autobahn/client/tungstenite_case_7_7_6.html new file mode 100644 index 0000000..7d7e55c --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_6.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.6 : Pass - 1 ms @ 2025-09-11T20:05:53.010Z

+

Case Description

Send close with valid close code 1008

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=228&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: qIE39PN/PpA/N9yTdYdMKQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4tzctDLQDNsuv5k+Ie8S8HYvc1E=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1008The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1008The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323238266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f0
+
003 TX OCTETS: 880203f0
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 888228743b512b84
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3238373433623531
+
               0x03f0
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_6.json b/autobahn/client/tungstenite_case_7_7_6.json new file mode 100644 index 0000000..aaacc60 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_6.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 228, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1008", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1008 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=228&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: qIE39PN/PpA/N9yTdYdMKQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4tzctDLQDNsuv5k+Ie8S8HYvc1E=\r\n\r\n", + "id": "7.7.6", + "isServer": true, + "localCloseCode": 1008, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1008, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.010Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323238266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f0" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f0" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "888228743b512b84" + ] + ], + [ + "RF", + [ + 2, + "0x03f0" + ], + 8, + true, + 0, + true, + "28743b51" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_7.html b/autobahn/client/tungstenite_case_7_7_7.html new file mode 100644 index 0000000..6d84e5b --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_7.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.7 : Pass - 1 ms @ 2025-09-11T20:05:53.012Z

+

Case Description

Send close with valid close code 1009

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=229&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: p+DThS2qIrT+z5gY1cArOw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: RY/IYoukG1+rviem3Vh5Rldu1Kk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1009The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1009The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323239266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f1
+
003 TX OCTETS: 880203f1
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882541b1b0257ea
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3534316231623032
+
               0x03f1
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_7.json b/autobahn/client/tungstenite_case_7_7_7.json new file mode 100644 index 0000000..4e463ee --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_7.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 229, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1009", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1009 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=229&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: p+DThS2qIrT+z5gY1cArOw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: RY/IYoukG1+rviem3Vh5Rldu1Kk=\r\n\r\n", + "id": "7.7.7", + "isServer": true, + "localCloseCode": 1009, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1009, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.012Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323239266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f1" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f1" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882541b1b0257ea" + ] + ], + [ + "RF", + [ + 2, + "0x03f1" + ], + 8, + true, + 0, + true, + "541b1b02" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_8.html b/autobahn/client/tungstenite_case_7_7_8.html new file mode 100644 index 0000000..b5b303e --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_8.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.8 : Pass - 1 ms @ 2025-09-11T20:05:53.013Z

+

Case Description

Send close with valid close code 1010

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=230&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: VfEoDtb0e802A6UJIkrT1g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1rkuKxBO5338K4qNVNHEmzSH+4A=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1010The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1010The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323330266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f2
+
003 TX OCTETS: 880203f2
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88827045642673b7
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3730343536343236
+
               0x03f2
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_8.json b/autobahn/client/tungstenite_case_7_7_8.json new file mode 100644 index 0000000..de1890e --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_8.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 230, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1010", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1010 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=230&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: VfEoDtb0e802A6UJIkrT1g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1rkuKxBO5338K4qNVNHEmzSH+4A=\r\n\r\n", + "id": "7.7.8", + "isServer": true, + "localCloseCode": 1010, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1010, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.013Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323330266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f2" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f2" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "88827045642673b7" + ] + ], + [ + "RF", + [ + 2, + "0x03f2" + ], + 8, + true, + 0, + true, + "70456426" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_7_9.html b/autobahn/client/tungstenite_case_7_7_9.html new file mode 100644 index 0000000..bdbf850 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_9.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.7.9 : Pass - 1 ms @ 2025-09-11T20:05:53.015Z

+

Case Description

Send close with valid close code 1011

+

Case Expectation

Clean close with normal or echoed code

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=231&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: erWb4mIpis4hHaa8G/YeOQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 65Op7BjrcIq8GN57MGXpbPMKmek=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1011The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1011The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
818
2571257
Total2265
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323331266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f3
+
003 TX OCTETS: 880203f3
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8882a51d9284a6ee
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6135316439323834
+
               0x03f3
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_7_9.json b/autobahn/client/tungstenite_case_7_7_9.json new file mode 100644 index 0000000..e3e76af --- /dev/null +++ b/autobahn/client/tungstenite_case_7_7_9.json @@ -0,0 +1,121 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 231, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with valid close code 1011", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with normal or echoed code", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1000, + 1011 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=231&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: erWb4mIpis4hHaa8G/YeOQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 65Op7BjrcIq8GN57MGXpbPMKmek=\r\n\r\n", + "id": "7.7.9", + "isServer": true, + "localCloseCode": 1011, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1011, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.015Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323331266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f3" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f3" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 8, + "8882a51d9284a6ee" + ] + ], + [ + "RF", + [ + 2, + "0x03f3" + ], + 8, + true, + 0, + true, + "a51d9284" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_9_1.html b/autobahn/client/tungstenite_case_7_9_1.html new file mode 100644 index 0000000..2feffba --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_1.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.9.1 : Pass - 1 ms @ 2025-09-11T20:05:53.022Z

+

Case Description

Send close with invalid close code 0

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=236&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: hTsQ93fz2mUqxZoOkT6ztw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 89hVX6szxm6YYQLF1DNOldXuCPM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode0The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323336266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               
+
003 TX OCTETS: 88020000
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8894afc1a041ac2bf033c0b5cf22c0ad8037c6aecc20dba8cf2f
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=6166633161303431
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_9_1.json b/autobahn/client/tungstenite_case_7_9_1.json new file mode 100644 index 0000000..de8ed20 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_1.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 236, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 0", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=236&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: hTsQ93fz2mUqxZoOkT6ztw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 89hVX6szxm6YYQLF1DNOldXuCPM=\r\n\r\n", + "id": "7.9.1", + "isServer": true, + "localCloseCode": 0, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.022Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323336266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u0000\u0000" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020000" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "8894afc1a041ac2bf033c0b5cf22c0ad8037c6aecc20dba8cf2f" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "afc1a041" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_9_2.html b/autobahn/client/tungstenite_case_7_9_2.html new file mode 100644 index 0000000..d1f833b --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_2.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.9.2 : Pass - 1 ms @ 2025-09-11T20:05:53.023Z

+

Case Description

Send close with invalid close code 999

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=237&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: HIwbWlzqOiXGTKulO4HHkg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5P+DFxM/Y1wp0bgQVqZquaLXH7E=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode999The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323337266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e7
+
003 TX OCTETS: 880203e7
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88943414374c37fe673e5b60582f5b78173a5d7b5b2d407d5822
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=3334313433373463
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_9_2.json b/autobahn/client/tungstenite_case_7_9_2.json new file mode 100644 index 0000000..7af5ab3 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_2.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 237, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 999", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=237&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: HIwbWlzqOiXGTKulO4HHkg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5P+DFxM/Y1wp0bgQVqZquaLXH7E=\r\n\r\n", + "id": "7.9.2", + "isServer": true, + "localCloseCode": 999, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.023Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323337266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03e7" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e7" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "88943414374c37fe673e5b60582f5b78173a5d7b5b2d407d5822" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "3414374c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_9_3.html b/autobahn/client/tungstenite_case_7_9_3.html new file mode 100644 index 0000000..31fbca1 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_3.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.9.3 : Pass - 1 ms @ 2025-09-11T20:05:53.024Z

+

Case Description

Send close with invalid close code 1004

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=238&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 0LhIUq+BwCZ/d8y1g7cHpQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +eAcCjVbwDFaCWk9BIPlFzEg2PU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1004The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323338266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ec
+
003 TX OCTETS: 880203ec
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8894ee548a8dedbedaff8120e5ee8138aafb873be6ec9a3de5e3
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=6565353438613864
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_9_3.json b/autobahn/client/tungstenite_case_7_9_3.json new file mode 100644 index 0000000..36366e2 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_3.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 238, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1004", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=238&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 0LhIUq+BwCZ/d8y1g7cHpQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +eAcCjVbwDFaCWk9BIPlFzEg2PU=\r\n\r\n", + "id": "7.9.3", + "isServer": true, + "localCloseCode": 1004, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.024Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323338266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ec" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ec" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "8894ee548a8dedbedaff8120e5ee8138aafb873be6ec9a3de5e3" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "ee548a8d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_9_4.html b/autobahn/client/tungstenite_case_7_9_4.html new file mode 100644 index 0000000..ebe9603 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_4.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.9.4 : Pass - 1 ms @ 2025-09-11T20:05:53.026Z

+

Case Description

Send close with invalid close code 1005

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=239&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: hdITsOev8Z6Oz+HhlqDt8w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: I6TjvvvRd1l1yHHQz7ZmV9O4qpI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1005The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323339266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ed
+
003 TX OCTETS: 880203ed
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8894087eaf4d0b94ff3f670ac02e67128f3b6111c32c7c17c023
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=3038376561663464
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_9_4.json b/autobahn/client/tungstenite_case_7_9_4.json new file mode 100644 index 0000000..00f4e0e --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_4.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 239, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1005", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=239&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: hdITsOev8Z6Oz+HhlqDt8w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: I6TjvvvRd1l1yHHQz7ZmV9O4qpI=\r\n\r\n", + "id": "7.9.4", + "isServer": true, + "localCloseCode": 1005, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.026Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323339266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ed" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ed" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "8894087eaf4d0b94ff3f670ac02e67128f3b6111c32c7c17c023" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "087eaf4d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_9_5.html b/autobahn/client/tungstenite_case_7_9_5.html new file mode 100644 index 0000000..2adf2a3 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_5.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.9.5 : Pass - 1 ms @ 2025-09-11T20:05:53.027Z

+

Case Description

Send close with invalid close code 1006

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=240&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: EoRC/1nCoBmNnZFwDsvaVQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: WXMCCAUmRMkcgAYUAhf7I6/e//Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1006The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323430266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03ee
+
003 TX OCTETS: 880203ee
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 8894bab07f42b95a2f30d5c41021d5dc5f34d3df1323ced9102c
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=6261623037663432
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_9_5.json b/autobahn/client/tungstenite_case_7_9_5.json new file mode 100644 index 0000000..73f846d --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_5.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 240, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1006", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=240&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: EoRC/1nCoBmNnZFwDsvaVQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: WXMCCAUmRMkcgAYUAhf7I6/e//Y=\r\n\r\n", + "id": "7.9.5", + "isServer": true, + "localCloseCode": 1006, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.027Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323430266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03ee" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203ee" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "8894bab07f42b95a2f30d5c41021d5dc5f34d3df1323ced9102c" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "bab07f42" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_9_6.html b/autobahn/client/tungstenite_case_7_9_6.html new file mode 100644 index 0000000..ad04715 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_6.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.9.6 : Pass - 0 ms @ 2025-09-11T20:05:53.028Z

+

Case Description

Send close with invalid close code 1016

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=241&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: WZOR6G48g1iLRHbQMxxOWg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Xlz/UUnnNiPH8Y6kF91/SiwZ4aM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1016The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323431266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03f8
+
003 TX OCTETS: 880203f8
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88942a780fb829925fca450c60db45142fce431763d95e1160d6
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=3261373830666238
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_9_6.json b/autobahn/client/tungstenite_case_7_9_6.json new file mode 100644 index 0000000..406f6a5 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_6.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 241, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1016", + "droppedByMe": true, + "duration": 0, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=241&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: WZOR6G48g1iLRHbQMxxOWg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Xlz/UUnnNiPH8Y6kF91/SiwZ4aM=\r\n\r\n", + "id": "7.9.6", + "isServer": true, + "localCloseCode": 1016, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.028Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323431266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x03f8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203f8" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "88942a780fb829925fca450c60db45142fce431763d95e1160d6" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "2a780fb8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_9_7.html b/autobahn/client/tungstenite_case_7_9_7.html new file mode 100644 index 0000000..3d7c6a2 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_7.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.9.7 : Pass - 1 ms @ 2025-09-11T20:05:53.029Z

+

Case Description

Send close with invalid close code 1100

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=242&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: VYREGpcWRGYqiDD3+9SkHQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: M1cEkd+bIKIU8On8uikM82e0YAg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1100The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323432266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               L
+
003 TX OCTETS: 8802044c
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88944c3812e84fd2429a234c7d8b2354329e25577e8938517d86
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=3463333831326538
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_9_7.json b/autobahn/client/tungstenite_case_7_9_7.json new file mode 100644 index 0000000..61eb0c3 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_7.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 242, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 1100", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=242&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: VYREGpcWRGYqiDD3+9SkHQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: M1cEkd+bIKIU8On8uikM82e0YAg=\r\n\r\n", + "id": "7.9.7", + "isServer": true, + "localCloseCode": 1100, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.029Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323432266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "\u0004L" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "8802044c" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "88944c3812e84fd2429a234c7d8b2354329e25577e8938517d86" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "4c3812e8" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_9_8.html b/autobahn/client/tungstenite_case_7_9_8.html new file mode 100644 index 0000000..d77bab8 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_8.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.9.8 : Pass - 1 ms @ 2025-09-11T20:05:53.030Z

+

Case Description

Send close with invalid close code 2000

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=243&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Aesi94G3GYIiHw49Q4iRQQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NI/h50MRILl9ZsVxXcOHuKZkG8E=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode2000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323433266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x07d0
+
003 TX OCTETS: 880207d0
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88940e26e32c0dccb35e61528c4f614ac35a67498f4d7a4f8c42
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=3065323665333263
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_9_8.json b/autobahn/client/tungstenite_case_7_9_8.json new file mode 100644 index 0000000..a67881d --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_8.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 243, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 2000", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=243&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Aesi94G3GYIiHw49Q4iRQQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NI/h50MRILl9ZsVxXcOHuKZkG8E=\r\n\r\n", + "id": "7.9.8", + "isServer": true, + "localCloseCode": 2000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.030Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323433266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x07d0" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880207d0" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "88940e26e32c0dccb35e61528c4f614ac35a67498f4d7a4f8c42" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "0e26e32c" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_7_9_9.html b/autobahn/client/tungstenite_case_7_9_9.html new file mode 100644 index 0000000..b01af47 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_9.html @@ -0,0 +1,293 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 7.9.9 : Pass - 1 ms @ 2025-09-11T20:05:53.031Z

+

Case Description

Send close with invalid close code 2999

+

Case Expectation

Clean close with protocol error code or drop TCP

+ +

+ Case Outcome

Actual events match at least one expected.

+ Expected:
{'OK': []}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=244&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: jkVyvqrPx2wC1PiLkhbidw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Mn9IA66Uoc6c9DhVlFUj3yoZHZ4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode2999The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1002The close code the peer sent me in close frame (if any).
remoteCloseReasonProtocol violationThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + +
Chop SizeCountOctets
26126
2571257
Total2283
+

Octets Transmitted by Chop Size

+ + + + + +
Chop SizeCountOctets
414
2061206
Total2210
+

Frames Received by Opcode

+ + + + +
OpcodeCount
81
Total1
+

Frames Transmitted by Opcode

+ + + + +
OpcodeCount
81
Total1
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323434266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x0bb7
+
003 TX OCTETS: 88020bb7
+
004 FAIL CONNECTION AFTER 1.000000 sec
+
005 RX OCTETS: 88949109e6c292e3b6b0fe7d89a1fe65c6b4f8668aa3e56089ac
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=20, MASKED=True, MASK=3931303965366332
+
               0x03ea50726f746f636f6c2076696f6c6174696f6e
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_7_9_9.json b/autobahn/client/tungstenite_case_7_9_9.json new file mode 100644 index 0000000..c9215f8 --- /dev/null +++ b/autobahn/client/tungstenite_case_7_9_9.json @@ -0,0 +1,120 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 244, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send close with invalid close code 2999", + "droppedByMe": true, + "duration": 1, + "expectation": "Clean close with protocol error code or drop TCP", + "expected": { + "OK": [] + }, + "expectedClose": { + "closeCode": [ + 1002 + ], + "closedByMe": true, + "requireClean": false + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=244&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: jkVyvqrPx2wC1PiLkhbidw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Mn9IA66Uoc6c9DhVlFUj3yoZHZ4=\r\n\r\n", + "id": "7.9.9", + "isServer": true, + "localCloseCode": 2999, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1002, + "remoteCloseReason": "Protocol violation", + "reportCompressionRatio": false, + "reportTime": false, + "result": "Actual events match at least one expected.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "8": 1 + }, + "rxOctetStats": { + "26": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:53.031Z", + "trafficStats": null, + "txFrameStats": { + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323434266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TF", + [ + 2, + "0x0bb7" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "88020bb7" + ], + false + ], + [ + "KL", + 1 + ], + [ + "RO", + [ + 26, + "88949109e6c292e3b6b0fe7d89a1fe65c6b4f8668aa3e56089ac" + ] + ], + [ + "RF", + [ + 20, + "0x03ea50726f746f636f6c2076696f6c6174696f6e" + ], + 8, + true, + 0, + true, + "9109e6c2" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_1_1.html b/autobahn/client/tungstenite_case_9_1_1.html new file mode 100644 index 0000000..99bfda3 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_1.html @@ -0,0 +1,298 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.1.1 : Pass - 2 ms @ 2025-09-11T20:05:53.035Z

+

Case Description

Send text message message with payload of length 64 * 2**10 (64k).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 65536.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=247&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: rWJajUfzdX8ORRh1+EWyJQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Bb1bESGxqs1McIgiOdtPtx4Ln84=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
2571257
32768132768
32782132782
Total465815
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65546165546
Total365756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323437266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88821bb194081859
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3162623139343038
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_1_1.json b/autobahn/client/tungstenite_case_9_1_1.json new file mode 100644 index 0000000..b0712df --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_1.json @@ -0,0 +1,123 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 247, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 64 * 2**10 (64k).", + "droppedByMe": true, + "duration": 2, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=247&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: rWJajUfzdX8ORRh1+EWyJQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Bb1bESGxqs1McIgiOdtPtx4Ln84=\r\n\r\n", + "id": "9.1.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 65536.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "32768": 1, + "32782": 1 + }, + "started": "2025-09-11T20:05:53.035Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65546": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323437266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821bb194081859" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1bb19408" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_1_2.html b/autobahn/client/tungstenite_case_9_1_2.html new file mode 100644 index 0000000..3d1e99b --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_2.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.1.2 : Pass - 3 ms @ 2025-09-11T20:05:53.037Z

+

Case Description

Send text message message with payload of length 256 * 2**10 (256k).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 262144.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=248&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: pD5A5vwKmEr+K/VwGMN3xA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: h+gKqPvcr0ba72cPVlKSg7Yazwk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
32768132768
47248147248
51070151070
655362131072
Total7262423
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
2621541262154
Total3262364
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323438266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888266d5def7653d
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3636643564656637
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_1_2.json b/autobahn/client/tungstenite_case_9_1_2.json new file mode 100644 index 0000000..b401125 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_2.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 248, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 256 * 2**10 (256k).", + "droppedByMe": true, + "duration": 3, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=248&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: pD5A5vwKmEr+K/VwGMN3xA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: h+gKqPvcr0ba72cPVlKSg7Yazwk=\r\n\r\n", + "id": "9.1.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 262144.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "32768": 1, + "47248": 1, + "51070": 1, + "65536": 2 + }, + "started": "2025-09-11T20:05:53.037Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "262154": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323438266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888266d5def7653d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "66d5def7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_1_3.html b/autobahn/client/tungstenite_case_9_1_3.html new file mode 100644 index 0000000..ae924ca --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_3.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.1.3 : Pass - 44 ms @ 2025-09-11T20:05:53.041Z

+

Case Description

Send text message message with payload of length 1 * 2**20 (1M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=249&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: x5BjVb7lp77n1z2Gz5kmhQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0i97ZcBXlKTYQ36OsC60jRUcMBI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
104858611048586
Total31048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323439266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882e32af533e0c2
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6533326166353333
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_1_3.json b/autobahn/client/tungstenite_case_9_1_3.json new file mode 100644 index 0000000..9e4e443 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_3.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 249, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 1 * 2**20 (1M).", + "droppedByMe": true, + "duration": 44, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=249&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: x5BjVb7lp77n1z2Gz5kmhQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0i97ZcBXlKTYQ36OsC60jRUcMBI=\r\n\r\n", + "id": "9.1.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:53.041Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "1048586": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323439266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e32af533e0c2" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e32af533" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_1_4.html b/autobahn/client/tungstenite_case_9_1_4.html new file mode 100644 index 0000000..6766ef2 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_4.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.1.4 : Pass - 44 ms @ 2025-09-11T20:05:53.087Z

+

Case Description

Send text message message with payload of length 4 * 2**20 (4M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=250&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ZqtyYU4rX1FzsBja8fRBKg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: aL/CknKQ0z2i9xMaNPfC+KLcAWk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29350129350
43440143440
58296158296
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
419431414194314
Total34194524
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323530266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888217efb8fa1407
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3137656662386661
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_1_4.json b/autobahn/client/tungstenite_case_9_1_4.json new file mode 100644 index 0000000..6c75c53 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_4.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 250, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 4 * 2**20 (4M).", + "droppedByMe": true, + "duration": 44, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=250&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ZqtyYU4rX1FzsBja8fRBKg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: aL/CknKQ0z2i9xMaNPfC+KLcAWk=\r\n\r\n", + "id": "9.1.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29350": 1, + "43440": 1, + "58296": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.087Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "4194314": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323530266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888217efb8fa1407" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "17efb8fa" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_1_5.html b/autobahn/client/tungstenite_case_9_1_5.html new file mode 100644 index 0000000..581ee3f --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_5.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.1.5 : Pass - 78 ms @ 2025-09-11T20:05:53.133Z

+

Case Description

Send text message message with payload of length 8 * 2**20 (8M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 8388608.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=251&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: aRJNp0jSnnIXBQFQ/1FmdA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +zP6D1jsMzBJ2yq7XH0cP3EgJ3w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
655361268257536
Total1318388887
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
838861818388618
Total38388828
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323531266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888271cee3d17226
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3731636565336431
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_1_5.json b/autobahn/client/tungstenite_case_9_1_5.json new file mode 100644 index 0000000..3a9e63d --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_5.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 251, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 8 * 2**20 (8M).", + "droppedByMe": true, + "duration": 78, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=251&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: aRJNp0jSnnIXBQFQ/1FmdA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +zP6D1jsMzBJ2yq7XH0cP3EgJ3w=\r\n\r\n", + "id": "9.1.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 8388608.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 126 + }, + "started": "2025-09-11T20:05:53.133Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "8388618": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323531266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888271cee3d17226" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "71cee3d1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_1_6.html b/autobahn/client/tungstenite_case_9_1_6.html new file mode 100644 index 0000000..6e43916 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_6.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.1.6 : Pass - 132 ms @ 2025-09-11T20:05:53.212Z

+

Case Description

Send text message message with payload of length 16 * 2**20 (16M).

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 16777216.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=252&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: M4lwS5dh2WjH4MCuvDtuOQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0t8Z//uJ5oL2HKk0bbzvIvgX9DQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
6553625416646144
Total25916777495
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
16777226116777226
Total316777436
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323532266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88827db33f347e5b
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3764623333663334
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_1_6.json b/autobahn/client/tungstenite_case_9_1_6.json new file mode 100644 index 0000000..1487595 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_1_6.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 252, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 16 * 2**20 (16M).", + "droppedByMe": true, + "duration": 132, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=252&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: M4lwS5dh2WjH4MCuvDtuOQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0t8Z//uJ5oL2HKk0bbzvIvgX9DQ=\r\n\r\n", + "id": "9.1.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 16777216.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 254 + }, + "started": "2025-09-11T20:05:53.212Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "16777226": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323532266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88827db33f347e5b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "7db33f34" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_2_1.html b/autobahn/client/tungstenite_case_9_2_1.html new file mode 100644 index 0000000..7a95f11 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_1.html @@ -0,0 +1,298 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.2.1 : Pass - 2 ms @ 2025-09-11T20:05:53.345Z

+

Case Description

Send binary message message with payload of length 64 * 2**10 (64k).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 65536.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=253&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 93aNdY3b9g2il6naDeaSUw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: IGkKvFmyIhDTVMvj1/S6bG0ZGpo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
2571257
22646122646
42904142904
Total465815
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
65546165546
Total365756
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323533266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88829de7526b9e0f
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3964653735323662
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_2_1.json b/autobahn/client/tungstenite_case_9_2_1.json new file mode 100644 index 0000000..3e6060c --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_1.json @@ -0,0 +1,123 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 253, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 64 * 2**10 (64k).", + "droppedByMe": true, + "duration": 2, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=253&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 93aNdY3b9g2il6naDeaSUw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: IGkKvFmyIhDTVMvj1/S6bG0ZGpo=\r\n\r\n", + "id": "9.2.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 65536.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "22646": 1, + "42904": 1 + }, + "started": "2025-09-11T20:05:53.345Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "65546": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323533266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829de7526b9e0f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9de7526b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_2_2.html b/autobahn/client/tungstenite_case_9_2_2.html new file mode 100644 index 0000000..d8f5855 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_2.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.2.2 : Pass - 4 ms @ 2025-09-11T20:05:53.349Z

+

Case Description

Send binary message message with payload of length 256 * 2**10 (256k).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 262144.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=254&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: FVUi1CkFCDvTgYGZc4OGqQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: UCoO1Gn99DRZqxnhs2/pN+HkGzg=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
56848156848
59758159758
655362131072
Total7262423
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
2621541262154
Total3262364
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323534266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888259f05fd15a18
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3539663035666431
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_2_2.json b/autobahn/client/tungstenite_case_9_2_2.json new file mode 100644 index 0000000..cf74788 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_2.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 254, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 256 * 2**10 (256k).", + "droppedByMe": true, + "duration": 4, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=254&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: FVUi1CkFCDvTgYGZc4OGqQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: UCoO1Gn99DRZqxnhs2/pN+HkGzg=\r\n\r\n", + "id": "9.2.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 262144.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "56848": 1, + "59758": 1, + "65536": 2 + }, + "started": "2025-09-11T20:05:53.349Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "262154": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323534266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888259f05fd15a18" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "59f05fd1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_2_3.html b/autobahn/client/tungstenite_case_9_2_3.html new file mode 100644 index 0000000..e803375 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_3.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.2.3 : Pass - 6 ms @ 2025-09-11T20:05:53.354Z

+

Case Description

Send binary message message with payload of length 1 * 2**20 (1M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=255&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: c3UMhr7egedtEn3+QeGDXQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: z24Z5+gYCcuKTmDNJLfLzK3Mt+w=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
104858611048586
Total31048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323535266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882070f751504e7
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3037306637353135
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_2_3.json b/autobahn/client/tungstenite_case_9_2_3.json new file mode 100644 index 0000000..9ad4d8e --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_3.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 255, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 1 * 2**20 (1M).", + "droppedByMe": true, + "duration": 6, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=255&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: c3UMhr7egedtEn3+QeGDXQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: z24Z5+gYCcuKTmDNJLfLzK3Mt+w=\r\n\r\n", + "id": "9.2.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:53.354Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "1048586": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323535266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882070f751504e7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "070f7515" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_2_4.html b/autobahn/client/tungstenite_case_9_2_4.html new file mode 100644 index 0000000..290b3b8 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_4.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.2.4 : Pass - 26 ms @ 2025-09-11T20:05:53.362Z

+

Case Description

Send binary message message with payload of length 4 * 2**20 (4M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=256&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: LKKIyxJguwKhc8Wt5sU30Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0yB/diZdYWIbAjNQ1CDv4CcWuQY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
419431414194314
Total34194524
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323536266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 10.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88828c00b04b8fe8
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3863303062303462
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_2_4.json b/autobahn/client/tungstenite_case_9_2_4.json new file mode 100644 index 0000000..d76bfcf --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_4.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 256, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 4 * 2**20 (4M).", + "droppedByMe": true, + "duration": 26, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=256&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: LKKIyxJguwKhc8Wt5sU30Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0yB/diZdYWIbAjNQ1CDv4CcWuQY=\r\n\r\n", + "id": "9.2.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.362Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "4194314": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323536266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 10 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88828c00b04b8fe8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "8c00b04b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_2_5.html b/autobahn/client/tungstenite_case_9_2_5.html new file mode 100644 index 0000000..bc2a13a --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_5.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.2.5 : Pass - 62 ms @ 2025-09-11T20:05:53.390Z

+

Case Description

Send binary message message with payload of length 8 * 2**20 (16M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 8388608.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=257&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: qX8w2DVb6VYGI7aVqpD73g==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: dptW2IhGOdXzojtQIl8eVSiV8q8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
655361268257536
Total1318388887
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
838861818388618
Total38388828
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323537266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882d4754e7dd79d
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6434373534653764
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_2_5.json b/autobahn/client/tungstenite_case_9_2_5.json new file mode 100644 index 0000000..55af338 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_5.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 257, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 8 * 2**20 (16M).", + "droppedByMe": true, + "duration": 62, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=257&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: qX8w2DVb6VYGI7aVqpD73g==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: dptW2IhGOdXzojtQIl8eVSiV8q8=\r\n\r\n", + "id": "9.2.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 8388608.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 126 + }, + "started": "2025-09-11T20:05:53.390Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "8388618": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323537266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d4754e7dd79d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d4754e7d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_2_6.html b/autobahn/client/tungstenite_case_9_2_6.html new file mode 100644 index 0000000..94cfa5a --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_6.html @@ -0,0 +1,298 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.2.6 : Pass - 96 ms @ 2025-09-11T20:05:53.452Z

+

Case Description

Send binary message message with payload of length 16 * 2**20 (16M).

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 16777216.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=258&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1tqDuYCb5dLH6G+Ha1jY/A==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: cWK5uoqNE0JGl4ic0U/CnUfjFO8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + +
Chop SizeCountOctets
818
14114
2571257
6553625616777216
Total25916777495
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
16777226116777226
Total316777436
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323538266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882bae94034b901
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6261653934303334
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_2_6.json b/autobahn/client/tungstenite_case_9_2_6.json new file mode 100644 index 0000000..4362fb6 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_2_6.json @@ -0,0 +1,123 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 258, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 16 * 2**20 (16M).", + "droppedByMe": true, + "duration": 96, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=258&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1tqDuYCb5dLH6G+Ha1jY/A==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: cWK5uoqNE0JGl4ic0U/CnUfjFO8=\r\n\r\n", + "id": "9.2.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 16777216.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "14": 1, + "257": 1, + "65536": 256 + }, + "started": "2025-09-11T20:05:53.452Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "16777226": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323538266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882bae94034b901" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "bae94034" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_3_1.html b/autobahn/client/tungstenite_case_9_3_1.html new file mode 100644 index 0000000..392722e --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_1.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.3.1 : Pass - 83 ms @ 2025-09-11T20:05:53.551Z

+

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=259&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 0BeEqpkcMeajZvPSFFtoSw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Bs+swcFeLbBrwn/Xz0uRH4zeiJQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + +
Chop SizeCountOctets
818
2571257
263812638
62912162912
65536634128768
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
66655364325376
2061206
Total655394325588
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
065536
11
81
Total65538
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323539266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888209c9fd210a21
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3039633966643231
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_3_1.json b/autobahn/client/tungstenite_case_9_3_1.json new file mode 100644 index 0000000..dfd2727 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_1.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 259, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.", + "droppedByMe": true, + "duration": 83, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=259&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 0BeEqpkcMeajZvPSFFtoSw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Bs+swcFeLbBrwn/Xz0uRH4zeiJQ=\r\n\r\n", + "id": "9.3.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2638": 1, + "62912": 1, + "65536": 63 + }, + "started": "2025-09-11T20:05:53.551Z", + "trafficStats": null, + "txFrameStats": { + "0": 65536, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "66": 65536, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323539266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888209c9fd210a21" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "09c9fd21" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_3_2.html b/autobahn/client/tungstenite_case_9_3_2.html new file mode 100644 index 0000000..d3469b7 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_2.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.3.2 : Pass - 40 ms @ 2025-09-11T20:05:53.636Z

+

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=260&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 2ekhqo4pS29WHeZbr6Lpew==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2FDrCSeugQtZ2BfmevkDkr7XE68=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
260163844259840
Total163874260052
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
016384
11
81
Total16386
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323630266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888298efe4a19b07
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3938656665346131
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_3_2.json b/autobahn/client/tungstenite_case_9_3_2.json new file mode 100644 index 0000000..950dbaa --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_2.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 260, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.", + "droppedByMe": true, + "duration": 40, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=260&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 2ekhqo4pS29WHeZbr6Lpew==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2FDrCSeugQtZ2BfmevkDkr7XE68=\r\n\r\n", + "id": "9.3.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.636Z", + "trafficStats": null, + "txFrameStats": { + "0": 16384, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "260": 16384 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323630266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888298efe4a19b07" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "98efe4a1" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_3_3.html b/autobahn/client/tungstenite_case_9_3_3.html new file mode 100644 index 0000000..2d58c56 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_3.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.3.3 : Pass - 26 ms @ 2025-09-11T20:05:53.678Z

+

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=261&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Q5J1w7WAMgLqozjpHEBElw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 6rkTnBenwApl/vCBFWdn86BGGjs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
102840964210688
Total40994210900
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
04096
11
81
Total4098
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323631266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88825bf5cce7581d
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3562663563636537
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_3_3.json b/autobahn/client/tungstenite_case_9_3_3.json new file mode 100644 index 0000000..9ccae03 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_3.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 261, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.", + "droppedByMe": true, + "duration": 26, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=261&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Q5J1w7WAMgLqozjpHEBElw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 6rkTnBenwApl/vCBFWdn86BGGjs=\r\n\r\n", + "id": "9.3.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.678Z", + "trafficStats": null, + "txFrameStats": { + "0": 4096, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "1028": 4096 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323631266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825bf5cce7581d" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5bf5cce7" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_3_4.html b/autobahn/client/tungstenite_case_9_3_4.html new file mode 100644 index 0000000..09ebeeb --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_4.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.3.4 : Pass - 23 ms @ 2025-09-11T20:05:53.705Z

+

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=262&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: FPCgibhfTxrLfWnwbZPz6w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: cHa9PJ8/nBHUdpX2NdYjetGgkog=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
183811838
724017240
56472156472
65536634128768
Total684194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
410010244198400
Total10274198612
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01024
11
81
Total1026
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323632266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888249e3c1424a0b
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3439653363313432
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_3_4.json b/autobahn/client/tungstenite_case_9_3_4.json new file mode 100644 index 0000000..f3b6a66 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_4.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 262, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.", + "droppedByMe": true, + "duration": 23, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=262&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: FPCgibhfTxrLfWnwbZPz6w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: cHa9PJ8/nBHUdpX2NdYjetGgkog=\r\n\r\n", + "id": "9.3.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1838": 1, + "7240": 1, + "56472": 1, + "65536": 63 + }, + "started": "2025-09-11T20:05:53.705Z", + "trafficStats": null, + "txFrameStats": { + "0": 1024, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "4100": 1024 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323632266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888249e3c1424a0b" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "49e3c142" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_3_5.html b/autobahn/client/tungstenite_case_9_3_5.html new file mode 100644 index 0000000..1bdc964 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_5.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.3.5 : Pass - 26 ms @ 2025-09-11T20:05:53.742Z

+

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=263&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: ABtxT22jDu/i3wwcPokCqA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: DfqPv4LGNHS4kKyJzl0N+CpKDOo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
56848156848
59758159758
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
163882564195328
Total2594195540
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
0256
11
81
Total258
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323633266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88823048ba4933a0
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3330343862613439
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_3_5.json b/autobahn/client/tungstenite_case_9_3_5.json new file mode 100644 index 0000000..51e589b --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_5.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 263, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.", + "droppedByMe": true, + "duration": 26, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=263&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ABtxT22jDu/i3wwcPokCqA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: DfqPv4LGNHS4kKyJzl0N+CpKDOo=\r\n\r\n", + "id": "9.3.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "56848": 1, + "59758": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.742Z", + "trafficStats": null, + "txFrameStats": { + "0": 256, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "16388": 256 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323633266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823048ba4933a0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3048ba49" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_3_6.html b/autobahn/client/tungstenite_case_9_3_6.html new file mode 100644 index 0000000..286f46d --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_6.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.3.6 : Pass - 25 ms @ 2025-09-11T20:05:53.769Z

+

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=264&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: CW2C85eNsJBc5Gp+eRIQNw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 56pVQ1W6fH6lZyCxIU66NNGRqV8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
65546644194944
Total674195156
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
064
11
81
Total66
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323634266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88822139061b22d1
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3231333930363162
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_3_6.json b/autobahn/client/tungstenite_case_9_3_6.json new file mode 100644 index 0000000..c43c3cb --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_6.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 264, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.", + "droppedByMe": true, + "duration": 25, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=264&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: CW2C85eNsJBc5Gp+eRIQNw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 56pVQ1W6fH6lZyCxIU66NNGRqV8=\r\n\r\n", + "id": "9.3.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.769Z", + "trafficStats": null, + "txFrameStats": { + "0": 64, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "65546": 64 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323634266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822139061b22d1" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2139061b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_3_7.html b/autobahn/client/tungstenite_case_9_3_7.html new file mode 100644 index 0000000..ec5e566 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_7.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.3.7 : Pass - 22 ms @ 2025-09-11T20:05:53.796Z

+

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=265&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 8QmGQXCQPl3jRY1PbKZFkw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ElxYLokIzCX5ZD+f8SYVcxkPRlU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
30262130262
42904142904
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
262154164194464
Total194194676
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
016
11
81
Total18
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323635266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 888208949cef0b7c
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3038393439636566
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_3_7.json b/autobahn/client/tungstenite_case_9_3_7.json new file mode 100644 index 0000000..08bfcae --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_7.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 265, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.", + "droppedByMe": true, + "duration": 22, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=265&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 8QmGQXCQPl3jRY1PbKZFkw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ElxYLokIzCX5ZD+f8SYVcxkPRlU=\r\n\r\n", + "id": "9.3.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "30262": 1, + "42904": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.796Z", + "trafficStats": null, + "txFrameStats": { + "0": 16, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "262154": 16 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323635266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888208949cef0b7c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "08949cef" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_3_8.html b/autobahn/client/tungstenite_case_9_3_8.html new file mode 100644 index 0000000..4e2a636 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_8.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.3.8 : Pass - 39 ms @ 2025-09-11T20:05:53.820Z

+

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=266&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Ery14RaCxZo2imCKQbh9Nw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: rhUDUrZjSKP9zwvwAKUri74fzTQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
104858644194344
Total74194556
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
04
11
81
Total6
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323636266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882cf5df19dccb5
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6366356466313964
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_3_8.json b/autobahn/client/tungstenite_case_9_3_8.json new file mode 100644 index 0000000..249e226 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_8.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 266, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.", + "droppedByMe": true, + "duration": 39, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=266&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Ery14RaCxZo2imCKQbh9Nw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: rhUDUrZjSKP9zwvwAKUri74fzTQ=\r\n\r\n", + "id": "9.3.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.820Z", + "trafficStats": null, + "txFrameStats": { + "0": 4, + "1": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "1048586": 4 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323636266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882cf5df19dccb5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "cf5df19d" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_3_9.html b/autobahn/client/tungstenite_case_9_3_9.html new file mode 100644 index 0000000..27943b7 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_9.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.3.9 : Pass - 23 ms @ 2025-09-11T20:05:53.861Z

+

Case Description

Send fragmented text message message with message payload of length 4 * 2**20 (8M). Sent out in fragments of 4M.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=267&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: c+O8djcvdL7u1PYvZ8rn1w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 7oCdlUyrEiSAZQh/UGUtEbRmESc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
419431414194314
Total34194524
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323637266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882683206db6bda
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3638333230366462
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_3_9.json b/autobahn/client/tungstenite_case_9_3_9.json new file mode 100644 index 0000000..0eb91bc --- /dev/null +++ b/autobahn/client/tungstenite_case_9_3_9.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 267, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented text message message with message payload of length 4 * 2**20 (8M). Sent out in fragments of 4M.", + "droppedByMe": true, + "duration": 23, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=267&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: c+O8djcvdL7u1PYvZ8rn1w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 7oCdlUyrEiSAZQh/UGUtEbRmESc=\r\n\r\n", + "id": "9.3.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.861Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "4194314": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323637266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882683206db6bda" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "683206db" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_4_1.html b/autobahn/client/tungstenite_case_9_4_1.html new file mode 100644 index 0000000..87e8f6e --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_1.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.4.1 : Pass - 45 ms @ 2025-09-11T20:05:53.886Z

+

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=268&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: VJx7UVWhLftN+10049AXQw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: fjzzgMaEoEKZVRJqdduvihkvoTQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
66655364325376
2061206
Total655394325588
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
065536
21
81
Total65538
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323638266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882331ffd1b30f7
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3333316666643162
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_4_1.json b/autobahn/client/tungstenite_case_9_4_1.json new file mode 100644 index 0000000..ec2f584 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_1.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 268, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64.", + "droppedByMe": true, + "duration": 45, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=268&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: VJx7UVWhLftN+10049AXQw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: fjzzgMaEoEKZVRJqdduvihkvoTQ=\r\n\r\n", + "id": "9.4.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.886Z", + "trafficStats": null, + "txFrameStats": { + "0": 65536, + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "66": 65536, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323638266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882331ffd1b30f7" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "331ffd1b" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_4_2.html b/autobahn/client/tungstenite_case_9_4_2.html new file mode 100644 index 0000000..d6d7209 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_2.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.4.2 : Pass - 22 ms @ 2025-09-11T20:05:53.933Z

+

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=269&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: y5wjt38kZwXT+UrBo9WwHg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: pWxnBdcBYSRSJSC35l7D1BVRBb4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
28960128960
43440143440
58686158686
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
260163844259840
Total163874260052
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
016384
21
81
Total16386
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323639266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882a2926151a17a
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6132393236313531
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_4_2.json b/autobahn/client/tungstenite_case_9_4_2.json new file mode 100644 index 0000000..7a6f7e4 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_2.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 269, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256.", + "droppedByMe": true, + "duration": 22, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=269&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: y5wjt38kZwXT+UrBo9WwHg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: pWxnBdcBYSRSJSC35l7D1BVRBb4=\r\n\r\n", + "id": "9.4.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "28960": 1, + "43440": 1, + "58686": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.933Z", + "trafficStats": null, + "txFrameStats": { + "0": 16384, + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "260": 16384 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323639266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882a2926151a17a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "a2926151" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_4_3.html b/autobahn/client/tungstenite_case_9_4_3.html new file mode 100644 index 0000000..3d7c287 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_3.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.4.3 : Pass - 16 ms @ 2025-09-11T20:05:53.956Z

+

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=270&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: EGo2yV5nsK0rPaqThsfmwg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 3w/i/Vd9WL5t+QqLdCKEaBSQ1gc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
102840964210688
Total40994210900
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
04096
21
81
Total4098
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323730266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882c7a26b74c44a
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6337613236623734
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_4_3.json b/autobahn/client/tungstenite_case_9_4_3.json new file mode 100644 index 0000000..2424f47 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_3.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 270, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1k.", + "droppedByMe": true, + "duration": 16, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=270&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: EGo2yV5nsK0rPaqThsfmwg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 3w/i/Vd9WL5t+QqLdCKEaBSQ1gc=\r\n\r\n", + "id": "9.4.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.956Z", + "trafficStats": null, + "txFrameStats": { + "0": 4096, + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "1028": 4096 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323730266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c7a26b74c44a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c7a26b74" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_4_4.html b/autobahn/client/tungstenite_case_9_4_4.html new file mode 100644 index 0000000..4ac6fe7 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_4.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.4.4 : Pass - 34 ms @ 2025-09-11T20:05:53.974Z

+

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=271&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: TAe9179hQUZkkBdaJWKUzg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xQJuzxa/tCP9cX4fEb0bBjMecBY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
410010244198400
Total10274198612
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
01024
21
81
Total1026
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323731266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882d7be7ce4d456
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6437626537636534
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_4_4.json b/autobahn/client/tungstenite_case_9_4_4.json new file mode 100644 index 0000000..14f1843 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_4.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 271, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4k.", + "droppedByMe": true, + "duration": 34, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=271&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: TAe9179hQUZkkBdaJWKUzg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xQJuzxa/tCP9cX4fEb0bBjMecBY=\r\n\r\n", + "id": "9.4.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:53.974Z", + "trafficStats": null, + "txFrameStats": { + "0": 1024, + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "4100": 1024 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323731266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d7be7ce4d456" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d7be7ce4" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_4_5.html b/autobahn/client/tungstenite_case_9_4_5.html new file mode 100644 index 0000000..a3da6e5 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_5.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.4.5 : Pass - 16 ms @ 2025-09-11T20:05:54.011Z

+

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=272&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: cvweahPhnhog8wTH1JOmfQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: A8fLgc5Uy0u9CfIzdkbow9rnCsQ=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
237412374
724017240
55936155936
65536634128768
Total684194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
163882564195328
Total2594195540
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
0256
21
81
Total258
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323732266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882fe69b348fd81
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6665363962333438
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_4_5.json b/autobahn/client/tungstenite_case_9_4_5.json new file mode 100644 index 0000000..9b39671 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_5.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 272, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 16k.", + "droppedByMe": true, + "duration": 16, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=272&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: cvweahPhnhog8wTH1JOmfQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: A8fLgc5Uy0u9CfIzdkbow9rnCsQ=\r\n\r\n", + "id": "9.4.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "2374": 1, + "7240": 1, + "55936": 1, + "65536": 63 + }, + "started": "2025-09-11T20:05:54.011Z", + "trafficStats": null, + "txFrameStats": { + "0": 256, + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "16388": 256 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323732266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fe69b348fd81" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fe69b348" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_4_6.html b/autobahn/client/tungstenite_case_9_4_6.html new file mode 100644 index 0000000..c31ea12 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_6.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.4.6 : Pass - 15 ms @ 2025-09-11T20:05:54.029Z

+

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=273&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: yJGWchHUGJ6Td9POKu6DXA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: V6ORS0mgkzF/wlAJgEZD2RB7VC8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
65546644194944
Total674195156
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
064
21
81
Total66
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323733266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88825538e39656d0
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3535333865333936
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_4_6.json b/autobahn/client/tungstenite_case_9_4_6.json new file mode 100644 index 0000000..885632e --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_6.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 273, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 64k.", + "droppedByMe": true, + "duration": 15, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=273&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: yJGWchHUGJ6Td9POKu6DXA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: V6ORS0mgkzF/wlAJgEZD2RB7VC8=\r\n\r\n", + "id": "9.4.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:54.029Z", + "trafficStats": null, + "txFrameStats": { + "0": 64, + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "65546": 64 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323733266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825538e39656d0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5538e396" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_4_7.html b/autobahn/client/tungstenite_case_9_4_7.html new file mode 100644 index 0000000..ca93750 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_7.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.4.7 : Pass - 16 ms @ 2025-09-11T20:05:54.046Z

+

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=274&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: M4qJDQsrtgbxzxf4fR8KQg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: CjJFF/itEzxqIGWecLAA+2/m5Pw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
262154164194464
Total194194676
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
016
21
81
Total18
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323734266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882c6c449bfc52c
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6336633434396266
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_4_7.json b/autobahn/client/tungstenite_case_9_4_7.json new file mode 100644 index 0000000..f2b90f7 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_7.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 274, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 256k.", + "droppedByMe": true, + "duration": 16, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=274&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: M4qJDQsrtgbxzxf4fR8KQg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: CjJFF/itEzxqIGWecLAA+2/m5Pw=\r\n\r\n", + "id": "9.4.7", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:54.046Z", + "trafficStats": null, + "txFrameStats": { + "0": 16, + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "262154": 16 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323734266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c6c449bfc52c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c6c449bf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_4_8.html b/autobahn/client/tungstenite_case_9_4_8.html new file mode 100644 index 0000000..2152aaf --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_8.html @@ -0,0 +1,302 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.4.8 : Pass - 16 ms @ 2025-09-11T20:05:54.064Z

+

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=275&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /1HHg31K5d1z/4cuvDfeEw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: AgUQ7PjeRadAhDSvhC7XEoHz4ko=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
32768132768
47248147248
51070151070
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
212
414
2061206
104858644194344
Total74194556
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + + +
OpcodeCount
04
21
81
Total6
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323735266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88821a0e340e19e6
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3161306533343065
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_4_8.json b/autobahn/client/tungstenite_case_9_4_8.json new file mode 100644 index 0000000..f91601d --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_8.json @@ -0,0 +1,127 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 275, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 1M.", + "droppedByMe": true, + "duration": 16, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=275&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /1HHg31K5d1z/4cuvDfeEw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: AgUQ7PjeRadAhDSvhC7XEoHz4ko=\r\n\r\n", + "id": "9.4.8", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "32768": 1, + "47248": 1, + "51070": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:54.064Z", + "trafficStats": null, + "txFrameStats": { + "0": 4, + "2": 1, + "8": 1 + }, + "txOctetStats": { + "2": 1, + "4": 1, + "206": 1, + "1048586": 4 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323735266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821a0e340e19e6" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "1a0e340e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_4_9.html b/autobahn/client/tungstenite_case_9_4_9.html new file mode 100644 index 0000000..2891047 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_9.html @@ -0,0 +1,300 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.4.9 : Pass - 14 ms @ 2025-09-11T20:05:54.082Z

+

Case Description

Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4M.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 4194304.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=276&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: /hIpQ30jFI0xkiFhDWo9vg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: j08Wu2qgZ6lh0kIuKNejMoHXF50=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
56848156848
59758159758
65536624063232
Total674194583
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
419431414194314
Total34194524
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323736266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 100.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882f09b3278f373
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6630396233323738
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_4_9.json b/autobahn/client/tungstenite_case_9_4_9.json new file mode 100644 index 0000000..87bae9c --- /dev/null +++ b/autobahn/client/tungstenite_case_9_4_9.json @@ -0,0 +1,125 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 276, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send fragmented binary message message with message payload of length 4 * 2**20 (4M). Sent out in fragments of 4M.", + "droppedByMe": true, + "duration": 14, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=276&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: /hIpQ30jFI0xkiFhDWo9vg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: j08Wu2qgZ6lh0kIuKNejMoHXF50=\r\n\r\n", + "id": "9.4.9", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 4194304.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "56848": 1, + "59758": 1, + "65536": 62 + }, + "started": "2025-09-11T20:05:54.082Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "4194314": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323736266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 100 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f09b3278f373" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f09b3278" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_5_1.html b/autobahn/client/tungstenite_case_9_5_1.html new file mode 100644 index 0000000..5b44bab --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_1.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.5.1 : Pass - 246 ms @ 2025-09-11T20:05:54.097Z

+

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=277&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 1fDDb+QYv+FW90yzsceG0Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: AArbPxxRKlQ/Gukf1TMmGDsbD9A=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
30262130262
42904142904
57920157920
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
64163841048576
2061206
Total163871048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323737266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88821150974612b8
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3131353039373436
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_5_1.json b/autobahn/client/tungstenite_case_9_5_1.json new file mode 100644 index 0000000..24343fb --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_1.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 277, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.", + "droppedByMe": true, + "duration": 246, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=277&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 1fDDb+QYv+FW90yzsceG0Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: AArbPxxRKlQ/Gukf1TMmGDsbD9A=\r\n\r\n", + "id": "9.5.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "30262": 1, + "42904": 1, + "57920": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.097Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "64": 16384, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323737266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88821150974612b8" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "11509746" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_5_2.html b/autobahn/client/tungstenite_case_9_5_2.html new file mode 100644 index 0000000..1065db6 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_2.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.5.2 : Pass - 130 ms @ 2025-09-11T20:05:54.344Z

+

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=278&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 5FGxIqe76tFPc7/9nG4COQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: xe/O6GTXSd+6FPhyEy3cvHgG/pA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
30262130262
42904142904
57920157920
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
12881921048576
2061206
Total81951048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323738266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882fba4ba11f84c
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6662613462613131
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_5_2.json b/autobahn/client/tungstenite_case_9_5_2.json new file mode 100644 index 0000000..2d8e9ae --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_2.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 278, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.", + "droppedByMe": true, + "duration": 130, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=278&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 5FGxIqe76tFPc7/9nG4COQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: xe/O6GTXSd+6FPhyEy3cvHgG/pA=\r\n\r\n", + "id": "9.5.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "30262": 1, + "42904": 1, + "57920": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.344Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "128": 8192, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323738266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882fba4ba11f84c" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "fba4ba11" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_5_3.html b/autobahn/client/tungstenite_case_9_5_3.html new file mode 100644 index 0000000..38fc8da --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_3.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.5.3 : Pass - 50 ms @ 2025-09-11T20:05:54.475Z

+

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=279&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: F2QKwRVxBZUNM0rT8eV8aQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 5wkuh9KvGTZZzKmPZBjThEfmUXw=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
29726129726
43440143440
57920157920
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
2061206
25640961048576
Total40991048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323739266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882f63d3805f5d5
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6636336433383035
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_5_3.json b/autobahn/client/tungstenite_case_9_5_3.json new file mode 100644 index 0000000..b28fbfc --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_3.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 279, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.", + "droppedByMe": true, + "duration": 50, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=279&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: F2QKwRVxBZUNM0rT8eV8aQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 5wkuh9KvGTZZzKmPZBjThEfmUXw=\r\n\r\n", + "id": "9.5.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "29726": 1, + "43440": 1, + "57920": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.475Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "206": 1, + "256": 4096 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323739266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f63d3805f5d5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f63d3805" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_5_4.html b/autobahn/client/tungstenite_case_9_5_4.html new file mode 100644 index 0000000..31c6d70 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_4.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.5.4 : Pass - 29 ms @ 2025-09-11T20:05:54.526Z

+

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=280&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: UbOzi8QAl4X+TCSFka8vKA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 1CZTAMMVlU7NJEc2MlCdAtc7YBY=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
56848156848
59758159758
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
2061206
51220481048576
Total20511048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323830266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882d818a926dbf0
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6438313861393236
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_5_4.json b/autobahn/client/tungstenite_case_9_5_4.json new file mode 100644 index 0000000..806930e --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_4.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 280, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.", + "droppedByMe": true, + "duration": 29, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=280&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: UbOzi8QAl4X+TCSFka8vKA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 1CZTAMMVlU7NJEc2MlCdAtc7YBY=\r\n\r\n", + "id": "9.5.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "56848": 1, + "59758": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.526Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "206": 1, + "512": 2048 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323830266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d818a926dbf0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d818a926" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_5_5.html b/autobahn/client/tungstenite_case_9_5_5.html new file mode 100644 index 0000000..ca9a87c --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_5.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.5.5 : Pass - 18 ms @ 2025-09-11T20:05:54.555Z

+

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=281&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: +MxuCCcAbUhS0QFkAIWTnQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NAN/lWP36BRBkRdlo3xeNV1HLZs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
56848156848
59758159758
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
2061206
102410241048576
Total10271048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323831266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88829f31c1f39cd9
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3966333163316633
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_5_5.json b/autobahn/client/tungstenite_case_9_5_5.json new file mode 100644 index 0000000..043dd11 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_5.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 281, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.", + "droppedByMe": true, + "duration": 18, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=281&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: +MxuCCcAbUhS0QFkAIWTnQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NAN/lWP36BRBkRdlo3xeNV1HLZs=\r\n\r\n", + "id": "9.5.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "56848": 1, + "59758": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.555Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "206": 1, + "1024": 1024 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323831266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829f31c1f39cd9" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9f31c1f3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_5_6.html b/autobahn/client/tungstenite_case_9_5_6.html new file mode 100644 index 0000000..f5a9208 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_6.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.5.6 : Pass - 22 ms @ 2025-09-11T20:05:54.574Z

+

Case Description

Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received text message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=282&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: oo73TZIDejk1bERVAZKkpg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: cAekWempxIL6o1Q2/Ps0pYV1gfk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
56848156848
59758159758
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
2061206
20485121048576
Total5151048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323832266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88829434ec8297dc
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3934333465633832
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_5_6.json b/autobahn/client/tungstenite_case_9_5_6.json new file mode 100644 index 0000000..47d5474 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_5_6.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 282, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send text message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.", + "droppedByMe": true, + "duration": 22, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=282&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: oo73TZIDejk1bERVAZKkpg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: cAekWempxIL6o1Q2/Ps0pYV1gfk=\r\n\r\n", + "id": "9.5.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received text message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "56848": 1, + "59758": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.574Z", + "trafficStats": null, + "txFrameStats": { + "1": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "206": 1, + "2048": 512 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323832266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829434ec8297dc" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9434ec82" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_6_1.html b/autobahn/client/tungstenite_case_9_6_1.html new file mode 100644 index 0000000..4be230e --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_1.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.6.1 : Pass - 189 ms @ 2025-09-11T20:05:54.597Z

+

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.

+

Case Expectation

Receive echo'ed binary message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=283&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: gOBzorg/elHYb7MWWNRKrA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: nph6UfsxE1rvhT9T22Yt5xECCIM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
30262130262
42904142904
57920157920
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
64163841048576
2061206
Total163871048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323833266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882f29b14ebf173
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6632396231346562
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_6_1.json b/autobahn/client/tungstenite_case_9_6_1.json new file mode 100644 index 0000000..1e74c4b --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_1.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 283, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 64 octets.", + "droppedByMe": true, + "duration": 189, + "expectation": "Receive echo'ed binary message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=283&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: gOBzorg/elHYb7MWWNRKrA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: nph6UfsxE1rvhT9T22Yt5xECCIM=\r\n\r\n", + "id": "9.6.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "30262": 1, + "42904": 1, + "57920": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.597Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "64": 16384, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323833266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882f29b14ebf173" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "f29b14eb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_6_2.html b/autobahn/client/tungstenite_case_9_6_2.html new file mode 100644 index 0000000..f30e6c2 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_2.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.6.2 : Pass - 96 ms @ 2025-09-11T20:05:54.787Z

+

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=284&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: nulz2bYgDFmReaoyQHPv6w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: ZrOArmHwexvPWEizmEnyvZgP4YU=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
30262130262
42904142904
57920157920
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
12881921048576
2061206
Total81951048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323834266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882e88a1f3eeb62
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6538386131663365
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_6_2.json b/autobahn/client/tungstenite_case_9_6_2.json new file mode 100644 index 0000000..3ba28aa --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_2.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 284, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 128 octets.", + "droppedByMe": true, + "duration": 96, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=284&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: nulz2bYgDFmReaoyQHPv6w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ZrOArmHwexvPWEizmEnyvZgP4YU=\r\n\r\n", + "id": "9.6.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "30262": 1, + "42904": 1, + "57920": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.787Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "128": 8192, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323834266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882e88a1f3eeb62" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "e88a1f3e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_6_3.html b/autobahn/client/tungstenite_case_9_6_3.html new file mode 100644 index 0000000..fab8f61 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_3.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.6.3 : Pass - 65 ms @ 2025-09-11T20:05:54.884Z

+

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=285&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: rziPJ6qGLyf60ovhZ0kELw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: NgEFEHqt+tYR1+7VwwyUm+RdKm8=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
30262130262
42904142904
57920157920
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
2061206
25640961048576
Total40991048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323835266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88826d25a7d96ecd
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3664323561376439
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_6_3.json b/autobahn/client/tungstenite_case_9_6_3.json new file mode 100644 index 0000000..d4b7c89 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_3.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 285, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 256 octets.", + "droppedByMe": true, + "duration": 65, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=285&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: rziPJ6qGLyf60ovhZ0kELw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: NgEFEHqt+tYR1+7VwwyUm+RdKm8=\r\n\r\n", + "id": "9.6.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "30262": 1, + "42904": 1, + "57920": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.884Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "206": 1, + "256": 4096 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323835266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88826d25a7d96ecd" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "6d25a7d9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_6_4.html b/autobahn/client/tungstenite_case_9_6_4.html new file mode 100644 index 0000000..b803c7b --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_4.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.6.4 : Pass - 42 ms @ 2025-09-11T20:05:54.951Z

+

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=286&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: rOlgI+TjFphsG0PRKkWLhg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: can9rHP3G1u5g0N/T3egEGdDD6U=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
56848156848
59758159758
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
2061206
51220481048576
Total20511048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323836266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88824b58a72548b0
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3462353861373235
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_6_4.json b/autobahn/client/tungstenite_case_9_6_4.json new file mode 100644 index 0000000..a3c18e3 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_4.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 286, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 512 octets.", + "droppedByMe": true, + "duration": 42, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=286&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: rOlgI+TjFphsG0PRKkWLhg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: can9rHP3G1u5g0N/T3egEGdDD6U=\r\n\r\n", + "id": "9.6.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "56848": 1, + "59758": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.951Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "206": 1, + "512": 2048 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323836266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88824b58a72548b0" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "4b58a725" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_6_5.html b/autobahn/client/tungstenite_case_9_6_5.html new file mode 100644 index 0000000..40c77ca --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_5.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.6.5 : Pass - 18 ms @ 2025-09-11T20:05:54.994Z

+

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=287&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: tOQBsvJhQKt/Gmyxv160cw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Xsle9vrc4xNEsDUxkkYjVinwt1A=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
56848156848
59758159758
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
2061206
102410241048576
Total10271048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323837266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 8882cca13983cf49
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6363613133393833
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_6_5.json b/autobahn/client/tungstenite_case_9_6_5.json new file mode 100644 index 0000000..97604ab --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_5.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 287, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 1024 octets.", + "droppedByMe": true, + "duration": 18, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=287&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: tOQBsvJhQKt/Gmyxv160cw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Xsle9vrc4xNEsDUxkkYjVinwt1A=\r\n\r\n", + "id": "9.6.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "56848": 1, + "59758": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:54.994Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "206": 1, + "1024": 1024 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323837266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882cca13983cf49" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "cca13983" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_6_6.html b/autobahn/client/tungstenite_case_9_6_6.html new file mode 100644 index 0000000..f7c1341 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_6.html @@ -0,0 +1,301 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.6.6 : Pass - 10 ms @ 2025-09-11T20:05:55.013Z

+

Case Description

Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.

+

Case Expectation

Receive echo'ed text message (with payload as sent).

+ +

+ Case Outcome

Received binary message of length 1048576.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=288&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: cECSEIOUTnjYukSLgTgQjQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: A0+paUBNWRUa1Cp2zC7z3y8v8w0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + + + + +
Chop SizeCountOctets
818
2571257
14480114480
56848156848
59758159758
6553614917504
Total191048855
+

Octets Transmitted by Chop Size

+ + + + + + + +
Chop SizeCountOctets
414
10110
2061206
20485121048576
Total5151048796
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21
81
Total2
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323838266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 CLOSE CONNECTION AFTER 1000.000000 sec
+
003 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
004 TX OCTETS: 880203e8
+
005 RX OCTETS: 88823b7cdbcb3894
+
006 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3362376364626362
+
               0x03e8
+
007 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_6_6.json b/autobahn/client/tungstenite_case_9_6_6.json new file mode 100644 index 0000000..ce57af9 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_6_6.json @@ -0,0 +1,126 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 288, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send binary message message with payload of length 1 * 2**20 (1M). Sent out data in chops of 2048 octets.", + "droppedByMe": true, + "duration": 10, + "expectation": "Receive echo'ed text message (with payload as sent).", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=288&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: cECSEIOUTnjYukSLgTgQjQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: A0+paUBNWRUa1Cp2zC7z3y8v8w0=\r\n\r\n", + "id": "9.6.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Received binary message of length 1048576.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "14480": 1, + "56848": 1, + "59758": 1, + "65536": 14 + }, + "started": "2025-09-11T20:05:55.013Z", + "trafficStats": null, + "txFrameStats": { + "2": 1, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "10": 1, + "206": 1, + "2048": 512 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323838266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "TI", + 1000 + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88823b7cdbcb3894" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "3b7cdbcb" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_7_1.html b/autobahn/client/tungstenite_case_9_7_1.html new file mode 100644 index 0000000..3634e9b --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_1.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.7.1 : Pass - 99 ms @ 2025-09-11T20:05:55.023Z

+

Case Description

Send 1000 text messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=289&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: c+I1ZTyB6wZ78ROp3q1XzQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: aDRggh+2f2maX/U83a7nS/Ftgj4=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
610006000
818
2571257
Total10026265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
210002000
414
2061206
Total10022210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323839266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88825f5ae0b95cb2
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3566356165306239
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_7_1.json b/autobahn/client/tungstenite_case_9_7_1.json new file mode 100644 index 0000000..f92b82e --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_1.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 289, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 text messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 99, + "expectation": "Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=289&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: c+I1ZTyB6wZ78ROp3q1XzQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: aDRggh+2f2maX/U83a7nS/Ftgj4=\r\n\r\n", + "id": "9.7.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "6": 1000, + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:55.023Z", + "trafficStats": null, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1000, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323839266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825f5ae0b95cb2" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5f5ae0b9" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_7_2.html b/autobahn/client/tungstenite_case_9_7_2.html new file mode 100644 index 0000000..c573dfd --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_2.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.7.2 : Pass - 79 ms @ 2025-09-11T20:05:55.123Z

+

Case Description

Send 1000 text messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=290&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: JWCCKjJXoRd6uadGAAQM+Q==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: AOHKMg2z57W62L45kbse9FbF1aM=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
22100022000
2571257
Total100222265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
18100018000
2061206
Total100218210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323930266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882af1cc2bfacf4
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6166316363326266
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_7_2.json b/autobahn/client/tungstenite_case_9_7_2.json new file mode 100644 index 0000000..fe50612 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_2.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 290, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 text messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 79, + "expectation": "Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=290&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: JWCCKjJXoRd6uadGAAQM+Q==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: AOHKMg2z57W62L45kbse9FbF1aM=\r\n\r\n", + "id": "9.7.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "22": 1000, + "257": 1 + }, + "started": "2025-09-11T20:05:55.123Z", + "trafficStats": null, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "18": 1000, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323930266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882af1cc2bfacf4" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "af1cc2bf" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_7_3.html b/autobahn/client/tungstenite_case_9_7_3.html new file mode 100644 index 0000000..dce9b64 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_3.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.7.3 : Pass - 34 ms @ 2025-09-11T20:05:55.203Z

+

Case Description

Send 1000 text messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=291&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: AB0679S2q83zHAws+YDz5w==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: OnNi2Y1ITZsKPY2XDEkOv4OiNiA=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
70100070000
2571257
Total100270265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
66100066000
2061206
Total100266210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323931266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882c2d77952c13f
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6332643737393532
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_7_3.json b/autobahn/client/tungstenite_case_9_7_3.json new file mode 100644 index 0000000..95f16fe --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_3.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 291, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 text messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 34, + "expectation": "Receive echo'ed text messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=291&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: AB0679S2q83zHAws+YDz5w==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: OnNi2Y1ITZsKPY2XDEkOv4OiNiA=\r\n\r\n", + "id": "9.7.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "70": 1000, + "257": 1 + }, + "started": "2025-09-11T20:05:55.203Z", + "trafficStats": null, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "66": 1000, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323931266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882c2d77952c13f" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "c2d77952" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_7_4.html b/autobahn/client/tungstenite_case_9_7_4.html new file mode 100644 index 0000000..7a96a48 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_4.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.7.4 : Pass - 82 ms @ 2025-09-11T20:05:55.238Z

+

Case Description

Send 1000 text messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=292&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: wzvCLqbHi7cAU6ViUt/9Rw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 0ypCCnagUfHeYoeVbyIV1EAFnfo=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
2571257
2641000264000
Total1002264265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
2601000260000
Total1002260210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323932266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888213a832911040
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3133613833323931
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_7_4.json b/autobahn/client/tungstenite_case_9_7_4.json new file mode 100644 index 0000000..01927d2 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_4.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 292, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 text messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 82, + "expectation": "Receive echo'ed text messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=292&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: wzvCLqbHi7cAU6ViUt/9Rw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0ypCCnagUfHeYoeVbyIV1EAFnfo=\r\n\r\n", + "id": "9.7.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "264": 1000 + }, + "started": "2025-09-11T20:05:55.238Z", + "trafficStats": null, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "260": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323932266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888213a832911040" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "13a83291" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_7_5.html b/autobahn/client/tungstenite_case_9_7_5.html new file mode 100644 index 0000000..7696e12 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_5.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.7.5 : Pass - 47 ms @ 2025-09-11T20:05:55.322Z

+

Case Description

Send 1000 text messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=293&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: fUNFWczN6RWQzTMO8fKktQ==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: +ST31TF8shZrHk6HtDy90Yhwh0Y=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
2571257
103210001032000
Total10021032265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
102810001028000
Total10021028210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323933266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 888202867f70016e
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3032383637663730
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_7_5.json b/autobahn/client/tungstenite_case_9_7_5.json new file mode 100644 index 0000000..ff7f7e7 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_5.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 293, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 text messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 47, + "expectation": "Receive echo'ed text messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=293&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: fUNFWczN6RWQzTMO8fKktQ==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: +ST31TF8shZrHk6HtDy90Yhwh0Y=\r\n\r\n", + "id": "9.7.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1032": 1000 + }, + "started": "2025-09-11T20:05:55.322Z", + "trafficStats": null, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "1028": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323933266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "888202867f70016e" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "02867f70" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_7_6.html b/autobahn/client/tungstenite_case_9_7_6.html new file mode 100644 index 0000000..c46de4d --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_6.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.7.6 : Pass - 78 ms @ 2025-09-11T20:05:55.369Z

+

Case Description

Send 1000 text messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed text messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=294&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: O4QuYefgjfEPK5mFE5LeEA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: m1PDDfhusQzjF50XYEzzxkbbOp0=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
2571257
410410004104000
Total10024104265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
410010004100000
Total10024100210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
11000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323934266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822ff14f242c19
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3266663134663234
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_7_6.json b/autobahn/client/tungstenite_case_9_7_6.json new file mode 100644 index 0000000..1931bdb --- /dev/null +++ b/autobahn/client/tungstenite_case_9_7_6.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 294, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 text messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 78, + "expectation": "Receive echo'ed text messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=294&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: O4QuYefgjfEPK5mFE5LeEA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: m1PDDfhusQzjF50XYEzzxkbbOp0=\r\n\r\n", + "id": "9.7.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "1": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4104": 1000 + }, + "started": "2025-09-11T20:05:55.369Z", + "trafficStats": null, + "txFrameStats": { + "1": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323934266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822ff14f242c19" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2ff14f24" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_8_1.html b/autobahn/client/tungstenite_case_9_8_1.html new file mode 100644 index 0000000..6a8eba4 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_1.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.8.1 : Pass - 56 ms @ 2025-09-11T20:05:55.448Z

+

Case Description

Send 1000 binary messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=295&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: H3WzZAkc169zFApZyWOGcg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 4F3b0SWMxYfQSXnNbWypsNp/WkE=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
610006000
818
2571257
Total10026265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
210002000
414
2061206
Total10022210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323935266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88825734e9bc54dc
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3537333465396263
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_8_1.json b/autobahn/client/tungstenite_case_9_8_1.json new file mode 100644 index 0000000..438e0be --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_1.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 295, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 binary messages of payload size 0 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 56, + "expectation": "Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=295&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: H3WzZAkc169zFApZyWOGcg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 4F3b0SWMxYfQSXnNbWypsNp/WkE=\r\n\r\n", + "id": "9.8.1", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "6": 1000, + "8": 1, + "257": 1 + }, + "started": "2025-09-11T20:05:55.448Z", + "trafficStats": null, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "2": 1000, + "4": 1, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323935266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88825734e9bc54dc" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "5734e9bc" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_8_2.html b/autobahn/client/tungstenite_case_9_8_2.html new file mode 100644 index 0000000..99f5a1a --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_2.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.8.2 : Pass - 49 ms @ 2025-09-11T20:05:55.505Z

+

Case Description

Send 1000 binary messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=296&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 3SHpOUkm2QrsV/2ecHB5EA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 7tUzK4X4SRgpRpViH5ZfnzpCuIk=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
22100022000
2571257
Total100222265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
18100018000
2061206
Total100218210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323936266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88820d8128920e69
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3064383132383932
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_8_2.json b/autobahn/client/tungstenite_case_9_8_2.json new file mode 100644 index 0000000..b7783c4 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_2.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 296, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 binary messages of payload size 16 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 49, + "expectation": "Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=296&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 3SHpOUkm2QrsV/2ecHB5EA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 7tUzK4X4SRgpRpViH5ZfnzpCuIk=\r\n\r\n", + "id": "9.8.2", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "22": 1000, + "257": 1 + }, + "started": "2025-09-11T20:05:55.505Z", + "trafficStats": null, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "18": 1000, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323936266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88820d8128920e69" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "0d812892" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_8_3.html b/autobahn/client/tungstenite_case_9_8_3.html new file mode 100644 index 0000000..67db290 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_3.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.8.3 : Pass - 35 ms @ 2025-09-11T20:05:55.555Z

+

Case Description

Send 1000 binary messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=297&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: CVQtLpaghz3D/6SqTlttzw==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: Wf2plApdiTmz4EAj7Q5J3OYtO9I=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
70100070000
2571257
Total100270265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
66100066000
2061206
Total100266210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323937266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 60.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822f5dc0732cb5
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3266356463303733
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_8_3.json b/autobahn/client/tungstenite_case_9_8_3.json new file mode 100644 index 0000000..d68e5f3 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_3.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 297, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 binary messages of payload size 64 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 35, + "expectation": "Receive echo'ed binary messages (with payload as sent). Timeout case after 60 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=297&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: CVQtLpaghz3D/6SqTlttzw==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: Wf2plApdiTmz4EAj7Q5J3OYtO9I=\r\n\r\n", + "id": "9.8.3", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "70": 1000, + "257": 1 + }, + "started": "2025-09-11T20:05:55.555Z", + "trafficStats": null, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "66": 1000, + "206": 1 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323937266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 60 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822f5dc0732cb5" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2f5dc073" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_8_4.html b/autobahn/client/tungstenite_case_9_8_4.html new file mode 100644 index 0000000..1fda116 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_4.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.8.4 : Pass - 52 ms @ 2025-09-11T20:05:55.591Z

+

Case Description

Send 1000 binary messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 120 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=298&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: 5apHTYA6HjJQyiXj7GGrCg==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: PdOu0I8c70phdY32sKvLtbA3jgI=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
2571257
2641000264000
Total1002264265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
2601000260000
Total1002260210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323938266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 120.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88822a704fa32998
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3261373034666133
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_8_4.json b/autobahn/client/tungstenite_case_9_8_4.json new file mode 100644 index 0000000..eafba22 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_4.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 298, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 binary messages of payload size 256 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 52, + "expectation": "Receive echo'ed binary messages (with payload as sent). Timeout case after 120 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=298&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: 5apHTYA6HjJQyiXj7GGrCg==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: PdOu0I8c70phdY32sKvLtbA3jgI=\r\n\r\n", + "id": "9.8.4", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "264": 1000 + }, + "started": "2025-09-11T20:05:55.591Z", + "trafficStats": null, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "260": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323938266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 120 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88822a704fa32998" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "2a704fa3" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_8_5.html b/autobahn/client/tungstenite_case_9_8_5.html new file mode 100644 index 0000000..069257a --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_5.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.8.5 : Pass - 42 ms @ 2025-09-11T20:05:55.644Z

+

Case Description

Send 1000 binary messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 240 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=299&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: Z5+DB07ZmPrwBceXffiMqA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: 2paT0fyFBPhV9D5Mw5vZjVNm0cs=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
2571257
103210001032000
Total10021032265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
102810001028000
Total10021028210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d323939266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 240.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 8882d4d2ef4ed73a
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=6434643265663465
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_8_5.json b/autobahn/client/tungstenite_case_9_8_5.json new file mode 100644 index 0000000..ec8863b --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_5.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 299, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 binary messages of payload size 1024 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 42, + "expectation": "Receive echo'ed binary messages (with payload as sent). Timeout case after 240 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=299&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: Z5+DB07ZmPrwBceXffiMqA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 2paT0fyFBPhV9D5Mw5vZjVNm0cs=\r\n\r\n", + "id": "9.8.5", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "1032": 1000 + }, + "started": "2025-09-11T20:05:55.644Z", + "trafficStats": null, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "1028": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d323939266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 240 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "8882d4d2ef4ed73a" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "d4d2ef4e" + ] + ] +} \ No newline at end of file diff --git a/autobahn/client/tungstenite_case_9_8_6.html b/autobahn/client/tungstenite_case_9_8_6.html new file mode 100644 index 0000000..d1105ab --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_6.html @@ -0,0 +1,299 @@ + + + + + + + + + +
+
Autobahn WebSocket Testsuite Report
+
Autobahn WebSocket
+
+

Tungstenite - Case 9.8.6 : Pass - 62 ms @ 2025-09-11T20:05:55.687Z

+

Case Description

Send 1000 binary messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.

+

Case Expectation

Receive echo'ed binary messages (with payload as sent). Timeout case after 480 secs.

+ +

+ Case Outcome

Ok, received all echo'ed messages in time.

+ Expected:
{}

+ Observed:
[] +

+

Case Closing Behavior

Connection was properly closed (OK)

+

+

Opening Handshake

+
GET /runCase?case=300&agent=Tungstenite HTTP/1.1
+Host: localhost:9001
+Connection: Upgrade
+Upgrade: websocket
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: KcvmZhTbmndz4WjEhTm5GA==
+sec-websocket-extensions: permessage-deflate; client_max_window_bits
+
HTTP/1.1 101 Switching Protocols
+Server: AutobahnTestSuite/0.8.2-0.10.9
+X-Powered-By: AutobahnPython/0.10.9
+Upgrade: WebSocket
+Connection: Upgrade
+Sec-WebSocket-Accept: tSEFmy1+Oi3r0M9SiKVUvHAosEc=
+

+

Closing Behavior

+ + + + + + + + + + + + + + + +
KeyValueDescription
isServerTrueTrue, iff I (the fuzzer) am a server, and the peer is a client.
closedByMeTrueTrue, iff I have initiated closing handshake (that is, did send close first).
failedByMeFalseTrue, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.
droppedByMeTrueTrue, iff I dropped the TCP connection.
wasCleanTrueTrue, iff full WebSocket closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).
wasNotCleanReasonNoneWhen wasClean == False, the reason what happened.
wasServerConnectionDropTimeoutFalseWhen we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.
wasOpenHandshakeTimeoutFalseWhen performing the opening handshake, but the peer did not finish in time, this gets True.
wasCloseHandshakeTimeoutFalseWhen we initiated a closing handshake, but the peer did not respond in time, this gets True.
localCloseCode1000The close code I sent in close frame (if any).
localCloseReasonNoneThe close reason I sent in close frame (if any).
remoteCloseCode1000The close code the peer sent me in close frame (if any).
remoteCloseReasonNoneThe close reason the peer sent me in close frame (if any).


+

Wire Statistics

+

Octets Received by Chop Size

+ + + + + + +
Chop SizeCountOctets
818
2571257
410410004104000
Total10024104265
+

Octets Transmitted by Chop Size

+ + + + + + +
Chop SizeCountOctets
414
2061206
410010004100000
Total10024100210
+

Frames Received by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

Frames Transmitted by Opcode

+ + + + + +
OpcodeCount
21000
81
Total1001
+

+

Wire Log

+
+
000 RX OCTETS: 474554202f72756e436173653f636173653d333030266167656e743d54756e677374656e69746520485454502f312e310d0a
+
               486f73743a206c6f63616c686f73 ...
+
001 TX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e
+
               5465737453756974652f302e382e ...
+
002 WIRELOG DISABLED
+
003 CLOSE CONNECTION AFTER 480.000000 sec
+
004 WIRELOG ENABLED
+
005 TX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASK=None, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False
+
               0x03e8
+
006 TX OCTETS: 880203e8
+
007 RX OCTETS: 88829c4bcd759fa3
+
008 RX FRAME : OPCODE=8, FIN=True, RSV=0, PAYLOAD-LEN=2, MASKED=True, MASK=3963346263643735
+
               0x03e8
+
009 TCP DROPPED BY ME
+
+

+ + diff --git a/autobahn/client/tungstenite_case_9_8_6.json b/autobahn/client/tungstenite_case_9_8_6.json new file mode 100644 index 0000000..94157a7 --- /dev/null +++ b/autobahn/client/tungstenite_case_9_8_6.json @@ -0,0 +1,130 @@ +{ + "agent": "Tungstenite", + "behavior": "OK", + "behaviorClose": "OK", + "case": 300, + "closedByMe": true, + "createStats": true, + "createWirelog": true, + "description": "Send 1000 binary messages of payload size 4096 to measure implementation/network RTT (round trip time) / latency.", + "droppedByMe": true, + "duration": 62, + "expectation": "Receive echo'ed binary messages (with payload as sent). Timeout case after 480 secs.", + "expected": {}, + "expectedClose": { + "closeCode": [ + 1000 + ], + "closedByMe": true, + "requireClean": true + }, + "failedByMe": false, + "httpRequest": "GET /runCase?case=300&agent=Tungstenite HTTP/1.1\r\nHost: localhost:9001\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: KcvmZhTbmndz4WjEhTm5GA==\r\nsec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\r\n", + "httpResponse": "HTTP/1.1 101 Switching Protocols\r\nServer: AutobahnTestSuite/0.8.2-0.10.9\r\nX-Powered-By: AutobahnPython/0.10.9\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: tSEFmy1+Oi3r0M9SiKVUvHAosEc=\r\n\r\n", + "id": "9.8.6", + "isServer": true, + "localCloseCode": 1000, + "localCloseReason": null, + "received": [], + "remoteCloseCode": 1000, + "remoteCloseReason": null, + "reportCompressionRatio": false, + "reportTime": true, + "result": "Ok, received all echo'ed messages in time.", + "resultClose": "Connection was properly closed", + "rxFrameStats": { + "2": 1000, + "8": 1 + }, + "rxOctetStats": { + "8": 1, + "257": 1, + "4104": 1000 + }, + "started": "2025-09-11T20:05:55.687Z", + "trafficStats": null, + "txFrameStats": { + "2": 1000, + "8": 1 + }, + "txOctetStats": { + "4": 1, + "206": 1, + "4100": 1000 + }, + "wasClean": true, + "wasCloseHandshakeTimeout": false, + "wasNotCleanReason": null, + "wasOpenHandshakeTimeout": false, + "wasServerConnectionDropTimeout": false, + "wirelog": [ + [ + "RO", + [ + 257, + "474554202f72756e436173653f636173653d333030266167656e743d54756e677374656e69746520485454502f312e310d0a486f73743a206c6f63616c686f73 ..." + ] + ], + [ + "TO", + [ + 206, + "485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204175746f6261686e5465737453756974652f302e382e ..." + ], + false + ], + [ + "WLM", + false + ], + [ + "TI", + 480 + ], + [ + "WLM", + true + ], + [ + "TF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + null, + null, + null, + false + ], + [ + "TO", + [ + 4, + "880203e8" + ], + false + ], + [ + "RO", + [ + 8, + "88829c4bcd759fa3" + ] + ], + [ + "RF", + [ + 2, + "0x03e8" + ], + 8, + true, + 0, + true, + "9c4bcd75" + ] + ] +} \ No newline at end of file diff --git a/src/error.rs b/src/error.rs index 25ca431..6b32ed8 100644 --- a/src/error.rs +++ b/src/error.rs @@ -2,7 +2,10 @@ use std::{io, result, str, string}; -use crate::protocol::{frame::coding::Data, Message}; +use crate::{ + extensions::compression::CompressionError, + protocol::{frame::coding::Data, Message}, +}; #[cfg(feature = "handshake")] use http::{header::HeaderName, Response}; use thiserror::Error; @@ -229,6 +232,9 @@ pub enum ProtocolError { /// Control frames must not be fragmented. #[error("Fragmented control frame")] FragmentedControlFrame, + /// Control frames must not be compressed. + #[error("Compressed control frame")] + CompressedControlFrame, /// Control frames must have a payload of 125 bytes or less. #[error("Control frame too big (payload must be 125 bytes or less)")] ControlFrameTooBig, @@ -241,6 +247,9 @@ pub enum ProtocolError { /// Received a continue frame despite there being nothing to continue. #[error("Continue frame but nothing to continue")] UnexpectedContinueFrame, + /// Received a compressed continue frame. + #[error("Continue frame must not have compress bit set")] + CompressedContinueFrame, /// Received data while waiting for more fragments. #[error("While waiting for more fragments received: {0}")] ExpectedFragment(Data), @@ -253,6 +262,9 @@ pub enum ProtocolError { /// The payload for the closing frame is invalid. #[error("Invalid close sequence")] InvalidCloseSequence, + /// Compression or decompression failure. + #[error("Compression/decompression failed: {0}")] + CompressionFailure(#[from] CompressionError), } /// Indicates the specific type/cause of URL error. diff --git a/src/protocol/frame/frame.rs b/src/protocol/frame/frame.rs index f230ced..dfe8551 100644 --- a/src/protocol/frame/frame.rs +++ b/src/protocol/frame/frame.rs @@ -300,6 +300,32 @@ impl Frame { } } + /// Create a new compressed data frame. + /// + /// `opcode` is of type `Data` because, per [RFC 7692 Section 6], "PMCEs + /// operate only on data messages". + /// + /// [RFC 7692 Section 6]: https://tools.ietf.org/html/rfc7692#section-6 + #[inline] + pub(crate) fn compressed_message(data: Bytes, opcode: Data, is_final: bool) -> Frame { + Frame { + header: FrameHeader { + is_final, + opcode: OpCode::Data(opcode), + // Per RFC 7692 Section 6: + // + // This document allocates the RSV1 bit of the WebSocket + // header for PMCEs and calls the bit the "Per-Message + // Compressed" bit. On a WebSocket connection where a PMCE is + // in use, this bit indicates whether a message is compressed + // or not. + rsv1: true, + ..FrameHeader::default() + }, + payload: data, + } + } + /// Create a new Pong control frame. #[inline] pub fn pong(data: impl Into) -> Frame { diff --git a/src/protocol/message.rs b/src/protocol/message.rs index 3d3310d..8f68576 100644 --- a/src/protocol/message.rs +++ b/src/protocol/message.rs @@ -83,6 +83,8 @@ use bytes::Bytes; #[derive(Debug)] pub struct IncompleteMessage { collector: IncompleteMessageCollector, + #[cfg(feature = "deflate")] + compressed: bool, } #[derive(Debug)] @@ -101,9 +103,32 @@ impl IncompleteMessage { IncompleteMessageCollector::Text(StringCollector::new()) } }, + #[cfg(feature = "deflate")] + compressed: false, } } + /// Create new instance that will hold compressed data. + #[cfg(feature = "deflate")] + pub fn new_compressed(message_type: IncompleteMessageType) -> Self { + IncompleteMessage { + collector: match message_type { + IncompleteMessageType::Binary => IncompleteMessageCollector::Binary(Vec::new()), + IncompleteMessageType::Text => { + IncompleteMessageCollector::Text(StringCollector::new()) + } + }, + compressed: true, + } + } + + pub fn compressed(&self) -> bool { + #[cfg(feature = "deflate")] + return self.compressed; + #[cfg(not(feature = "deflate"))] + return false; + } + /// Get the current filled size of the buffer. pub fn len(&self) -> usize { match self.collector { diff --git a/src/protocol/mod.rs b/src/protocol/mod.rs index bfbfea3..c4bf19b 100644 --- a/src/protocol/mod.rs +++ b/src/protocol/mod.rs @@ -15,7 +15,7 @@ use self::{ }; use crate::{ error::{CapacityError, Error, ProtocolError, Result}, - extensions::ExtensionsConfig, + extensions::{Extensions, ExtensionsConfig}, protocol::frame::Utf8Bytes, }; use log::*; @@ -377,6 +377,8 @@ pub struct WebSocketContext { unflushed_additional: bool, /// The configuration for the websocket session. config: WebSocketConfig, + // Container for extensions. + extensions: Extensions, } impl WebSocketContext { @@ -386,7 +388,12 @@ impl WebSocketContext { /// Panics if config is invalid e.g. `max_write_buffer_size <= write_buffer_size`. pub fn new(role: Role, config: Option) -> Self { let conf = config.unwrap_or_default(); - Self::_new(role, FrameCodec::new(conf.read_buffer_size), conf) + Self::_new( + role, + FrameCodec::new(conf.read_buffer_size), + conf, + conf.extensions.into_unnegotiated_context(role), + ) } /// Create a WebSocket context that manages an post-handshake stream. @@ -395,10 +402,21 @@ impl WebSocketContext { /// Panics if config is invalid e.g. `max_write_buffer_size <= write_buffer_size`. pub fn from_partially_read(part: Vec, role: Role, config: Option) -> Self { let conf = config.unwrap_or_default(); - Self::_new(role, FrameCodec::from_partially_read(part, conf.read_buffer_size), conf) + let extensions = conf.extensions.into_unnegotiated_context(role); + Self::_new( + role, + FrameCodec::from_partially_read(part, conf.read_buffer_size), + conf, + extensions, + ) } - fn _new(role: Role, mut frame: FrameCodec, config: WebSocketConfig) -> Self { + fn _new( + role: Role, + mut frame: FrameCodec, + config: WebSocketConfig, + extensions: Extensions, + ) -> Self { config.assert_valid(); frame.set_max_out_buffer_len(config.max_write_buffer_size); frame.set_out_buffer_write_len(config.write_buffer_size); @@ -410,6 +428,7 @@ impl WebSocketContext { additional_send: None, unflushed_additional: false, config, + extensions, } } @@ -502,9 +521,18 @@ impl WebSocketContext { return Err(Error::Protocol(ProtocolError::SendAfterClosing)); } + let mut prepare_data_frame = |data, opdata| -> Result { + const IS_FINAL: bool = true; + if let Some(compressor) = self.extensions.per_message_compressor() { + let compressed = compressor(&data)?; + return Ok(Frame::compressed_message(compressed, opdata, IS_FINAL)); + } + Ok(Frame::message(data, OpCode::Data(opdata), IS_FINAL)) + }; + let frame = match message { - Message::Text(data) => Frame::message(data, OpCode::Data(OpData::Text), true), - Message::Binary(data) => Frame::message(data, OpCode::Data(OpData::Binary), true), + Message::Text(data) => prepare_data_frame(data.into(), OpData::Text)?, + Message::Binary(data) => prepare_data_frame(data, OpData::Binary)?, Message::Ping(data) => Frame::ping(data), Message::Pong(data) => { self.set_additional(Frame::pong(data)); @@ -631,17 +659,31 @@ impl WebSocketContext { if !self.state.can_read() { return Err(Error::Protocol(ProtocolError::ReceivedAfterClosing)); } - // MUST be 0 unless an extension is negotiated that defines meanings - // for non-zero values. If a nonzero value is received and none of - // the negotiated extensions defines the meaning of such a nonzero - // value, the receiving endpoint MUST _Fail the WebSocket - // Connection_. - { + + let (is_compressed, decompressor) = { + let decompressor = self.extensions.per_message_decompressor(); let hdr = frame.header(); - if hdr.rsv1 || hdr.rsv2 || hdr.rsv3 { + // Per RFC 6455, the RSV1, RSV2, and RSV3 bits + // + // MUST be 0 unless an extension is negotiated that defines + // meanings for non-zero values. If a nonzero value is + // received and none of the negotiated extensions defines the + // meaning of such a nonzero value, the receiving endpoint + // MUST _Fail the WebSocket Connection_. + // + // Per RFC 7692: + // + // This document allocates the RSV1 bit of the WebSocket + // header for PMCEs and calls the bit the "Per-Message + // Compressed" bit. On a WebSocket connection where a PMCE is + // in use, this bit indicates whether a message is compressed + // or not. + if (hdr.rsv1 && decompressor.is_none()) || hdr.rsv2 || hdr.rsv3 { return Err(Error::Protocol(ProtocolError::NonZeroReservedBits)); } - } + + (hdr.rsv1, decompressor) + }; if self.role == Role::Client && frame.is_masked() { // A client MUST close a connection if it detects a masked frame. (RFC 6455) @@ -650,6 +692,7 @@ impl WebSocketContext { match frame.header().opcode { OpCode::Control(ctl) => { + drop(decompressor); match ctl { // All control frames MUST have a payload length of 125 bytes or less // and MUST NOT be fragmented. (RFC 6455) @@ -659,6 +702,15 @@ impl WebSocketContext { _ if frame.payload().len() > 125 => { Err(Error::Protocol(ProtocolError::ControlFrameTooBig)) } + // Per RFC 7692: + // + // An endpoint MUST NOT set the "Per-Message + // Compressed" bit of control frames and non-first + // fragments of a data message. An endpoint receiving + // such a frame MUST _Fail the WebSocket Connection_. + _ if is_compressed => { + Err(Error::Protocol(ProtocolError::CompressedControlFrame)) + } OpCtl::Close => Ok(self.do_close(frame.into_close()?).map(Message::Close)), OpCtl::Reserved(i) => { Err(Error::Protocol(ProtocolError::UnknownControlFrameType(i))) @@ -677,29 +729,76 @@ impl WebSocketContext { OpCode::Data(data) => { let fin = frame.header().is_final; + match data { OpData::Continue => { - let msg = self + let incomplete = self .incomplete .as_mut() .ok_or(Error::Protocol(ProtocolError::UnexpectedContinueFrame))?; - msg.extend(frame.into_payload(), self.config.max_message_size)?; + + // Per RFC 7692: + // + // An endpoint MUST NOT set the "Per-Message + // Compressed" bit of control frames and non-first + // fragments of a data message. An endpoint + // receiving such a frame MUST _Fail the WebSocket + // Connection_. + if is_compressed { + return Err(Error::Protocol(ProtocolError::CompressedContinueFrame)); + } + + let mut payload = frame.into_payload(); + if incomplete.compressed() { + let mut decompressor = decompressor.ok_or_else(|| { + // This is a continuation frame that was + // received with compression disabled, but + // the initial frame of the message was + // received with compression *enabled* and + // RSV1 set. + // + // The only way to get here is to manually + // disable compression for a stream after + // it's been established, which is arguably + // operator error. This is incorrect enough + // that it's not worth spending a lot of + // code on, but it's better to return an + // error here than crash. + log::debug!("compression was disabled between receiving frames"); + ProtocolError::CompressedContinueFrame + })?; + + payload = decompressor(&payload, fin).map_err(ProtocolError::from)? + }; + + incomplete.extend(payload, self.config.max_message_size)?; + if fin { Ok(Some(self.incomplete.take().unwrap().complete()?)) } else { Ok(None) } } + c if self.incomplete.is_some() => { Err(Error::Protocol(ProtocolError::ExpectedFragment(c))) } - OpData::Text if fin => { - check_max_size(frame.payload().len(), self.config.max_message_size)?; - Ok(Some(Message::Text(frame.into_text()?))) - } - OpData::Binary if fin => { - check_max_size(frame.payload().len(), self.config.max_message_size)?; - Ok(Some(Message::Binary(frame.into_payload()))) + OpData::Text | OpData::Binary if fin => { + let payload = frame.into_payload(); + let payload = match decompressor.filter(|_| is_compressed) { + Some(mut frame_decompressor) => { + frame_decompressor(&payload, fin).map_err(ProtocolError::from)? + } + None => payload, + }; + + check_max_size(payload.len(), self.config.max_message_size)?; + + match data { + OpData::Text => Ok(Some(Message::Text(payload.try_into()?))), + OpData::Binary => Ok(Some(Message::Binary(payload))), + _ => panic!("Bug: message is not text nor binary"), + } } OpData::Text | OpData::Binary => { let message_type = match data { @@ -707,8 +806,21 @@ impl WebSocketContext { OpData::Binary => IncompleteMessageType::Binary, _ => panic!("Bug: message is not text nor binary"), }; - let mut incomplete = IncompleteMessage::new(message_type); - incomplete.extend(frame.into_payload(), self.config.max_message_size)?; + + let payload = frame.into_payload(); + let payload = match decompressor.filter(|_| is_compressed) { + Some(mut frame_decompressor) => { + frame_decompressor(&payload, fin).map_err(ProtocolError::from)? + } + None => payload, + }; + let mut incomplete = match is_compressed { + #[cfg(feature = "deflate")] + true => IncompleteMessage::new_compressed(message_type), + _ => IncompleteMessage::new(message_type), + }; + incomplete.extend(payload, self.config.max_message_size)?; + self.incomplete = Some(incomplete); Ok(None) } @@ -918,4 +1030,87 @@ mod tests { Err(Error::Capacity(CapacityError::MessageTooLong { size: 3, max_size: 2 })) )); } + + #[cfg(feature = "deflate")] + #[test] + fn per_message_deflate_compression() { + // Example frames from RFC 7692 Section 7.2.3.2 + + use crate::{ + extensions::{compression, ExtensionsConfig}, + protocol::FrameCodec, + }; + + let mut stream = Cursor::new(Vec::new()); + + let config = WebSocketConfig { + extensions: ExtensionsConfig { + permessage_deflate: Some(compression::deflate::DeflateConfig::default()), + }, + ..Default::default() + }; + let mut socket = WebSocket::from_raw_socket(&mut stream, Role::Client, Some(config)); + + // The same message sent twice should compress better the second time + // because context takeover is enabled. + socket.write(Message::Text("Hello".into())).unwrap(); + socket.write(Message::Text("Hello".into())).unwrap(); + socket.flush().unwrap(); + + let written = stream.into_inner(); + let mut codec = FrameCodec::new(written.len()); + + let mut stream = Cursor::new(written); + let first_frame = codec.read_frame(&mut stream, None, true, false).unwrap().unwrap(); + let second_frame = codec.read_frame(&mut stream, None, true, false).unwrap().unwrap(); + + assert_eq!( + first_frame.payload(), + // First frame payload, from the RFC + &[0xf2, 0x48, 0xcd, 0xc9, 0xc9, 0x07, 0x00] + ); + + assert_eq!( + second_frame.payload(), + // Second frame payload, from the RFC + &[0xf2, 0x00, 0x11, 0x00, 0x00] + ); + } + + #[cfg(feature = "deflate")] + #[test] + fn per_message_deflate_decompression() { + // Example frames from RFC 7692 Section 7.2.3.2 + + use crate::extensions::{compression, ExtensionsConfig}; + + let incoming = + Cursor::new(&[0x41, 0x03, 0xf2, 0x48, 0xcd, 0x80, 0x04, 0xc9, 0xc9, 0x07, 0x00]); + let config = WebSocketConfig { + extensions: ExtensionsConfig { + permessage_deflate: Some(compression::deflate::DeflateConfig::default()), + }, + ..Default::default() + }; + let mut socket = WebSocket::from_raw_socket(WriteMoc(incoming), Role::Client, Some(config)); + + assert_eq!(socket.read().unwrap(), Message::Text("Hello".into())); + } + + #[test] + fn per_message_compression_not_recognized() { + // Without the extension configuration, frames with the RSV1 bit set are rejected. + use crate::extensions::ExtensionsConfig; + + let incoming = + Cursor::new(&[0x41, 0x03, 0xf2, 0x48, 0xcd, 0x80, 0x04, 0xc9, 0xc9, 0x07, 0x00]); + let config = + WebSocketConfig { extensions: ExtensionsConfig::default(), ..Default::default() }; + let mut socket = WebSocket::from_raw_socket(WriteMoc(incoming), Role::Client, Some(config)); + + assert!(matches!( + socket.read().unwrap_err(), + Error::Protocol(crate::error::ProtocolError::NonZeroReservedBits) + )); + } } From 9e8e06816e87cfc15d04b154f1312a0d654555ff Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Fri, 22 Aug 2025 13:47:38 -0400 Subject: [PATCH 09/12] Perform extension negotiation during handshaking Also enable construction of WebSocket instances with configured extensions. Based on work by Benjamin Swart --- README.md | 2 - src/error.rs | 5 ++- src/extensions/mod.rs | 1 - src/handshake/client.rs | 90 +++++++++++++++++++++++++++++++++++------ src/handshake/server.rs | 37 ++++++++++++++++- src/protocol/mod.rs | 46 ++++++++++++++++++++- 6 files changed, 162 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index fc1d293..ba70ed2 100644 --- a/README.md +++ b/README.md @@ -72,8 +72,6 @@ Choose the one that is appropriate for your needs. By default **no TLS feature is activated**, so make sure you use one of the TLS features, otherwise you won't be able to communicate with the TLS endpoints. -There is no support for permessage-deflate at the moment, but the PRs are welcome :wink: - Testing ------- diff --git a/src/error.rs b/src/error.rs index 6b32ed8..3583cb3 100644 --- a/src/error.rs +++ b/src/error.rs @@ -3,7 +3,7 @@ use std::{io, result, str, string}; use crate::{ - extensions::compression::CompressionError, + extensions::{compression::CompressionError, ExtensionsError}, protocol::{frame::coding::Data, Message}, }; #[cfg(feature = "handshake")] @@ -197,6 +197,9 @@ pub enum ProtocolError { /// The `Sec-WebSocket-Protocol` header was invalid #[error("SubProtocol error: {0}")] SecWebSocketSubProtocolError(SubProtocolError), + /// The `Sec-WebSocket-Extensions` header is invalid. + #[error("Invalid \"Sec-WebSocket-Extensions\" header: {0}")] + InvalidExtensionsHeader(#[from] ExtensionsError), /// Garbage data encountered after client request. #[error("Junk after client request")] JunkAfterRequest, diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs index 5d4e249..b95f833 100644 --- a/src/extensions/mod.rs +++ b/src/extensions/mod.rs @@ -1,6 +1,5 @@ //! WebSocket extensions. // Only `permessage-deflate` is supported at the moment. -#![allow(dead_code)] use bytes::Bytes; use thiserror::Error; diff --git a/src/handshake/client.rs b/src/handshake/client.rs index f93032d..c6b79ae 100644 --- a/src/handshake/client.rs +++ b/src/handshake/client.rs @@ -5,6 +5,7 @@ use std::{ marker::PhantomData, }; +use headers::{Header, HeaderMapExt}; use http::{ header::HeaderName, HeaderMap, Request as HttpRequest, Response as HttpResponse, StatusCode, }; @@ -19,6 +20,7 @@ use super::{ }; use crate::{ error::{Error, ProtocolError, Result, SubProtocolError, UrlError}, + extensions::{headers::SecWebsocketExtensions, Extensions, ExtensionsConfig}, protocol::{Role, WebSocket, WebSocketConfig}, }; @@ -58,7 +60,7 @@ impl ClientHandshake { // Convert and verify the `http::Request` and turn it into the request as per RFC. // Also extract the key from it (it must be present in a correct request). - let (request, key) = generate_request(request)?; + let (request, key) = generate_request(request, config.as_ref().map(|w| &w.extensions))?; let machine = HandshakeMachine::start_write(stream, request); @@ -89,7 +91,10 @@ impl HandshakeRole for ClientHandshake { ProcessingResult::Continue(HandshakeMachine::start_read(stream)) } StageResult::DoneReading { stream, result, tail } => { - let result = match self.verify_data.verify_response(result) { + let (result, extensions) = match self + .verify_data + .verify_response(result, self.config.as_ref().map(|c| &c.extensions)) + { Ok(r) => r, Err(Error::Http(mut e)) => { *e.body_mut() = Some(tail); @@ -99,8 +104,13 @@ impl HandshakeRole for ClientHandshake { }; debug!("Client handshake done."); - let websocket = - WebSocket::from_partially_read(stream, tail, Role::Client, self.config); + let websocket = WebSocket::from_partially_read_with_extensions( + stream, + tail, + Role::Client, + self.config, + extensions, + ); ProcessingResult::Done((websocket, result)) } }) @@ -108,7 +118,10 @@ impl HandshakeRole for ClientHandshake { } /// Verifies and generates a client WebSocket request from the original request and extracts a WebSocket key from it. -pub fn generate_request(mut request: Request) -> Result<(Vec, String)> { +pub fn generate_request( + mut request: Request, + extensions: Option<&ExtensionsConfig>, +) -> Result<(Vec, String)> { let mut req = Vec::new(); write!( req, @@ -160,6 +173,14 @@ pub fn generate_request(mut request: Request) -> Result<(Vec, String)> { .unwrap(); } + if let Some(header) = extensions + .map(ExtensionsConfig::generate_offers) + .map(SecWebsocketExtensions::new) + .filter(|header| header.len() != 0) + { + headers.append(SecWebsocketExtensions::name(), header.header_value()); + } + // Now we must ensure that the headers that we've written once are not anymore present in the map. // If they do, then the request is invalid (some headers are duplicated there for some reason). let insensitive: Vec = @@ -219,7 +240,11 @@ struct VerifyData { } impl VerifyData { - pub fn verify_response(&self, response: Response) -> Result { + pub fn verify_response( + &self, + response: Response, + extensions: Option<&ExtensionsConfig>, + ) -> Result<(Response, Extensions)> { // 1. If the status code received from the server is not 101, the // client handles the response per HTTP [RFC2616] procedures. (RFC 6455) if response.status() != StatusCode::SWITCHING_PROTOCOLS { @@ -264,7 +289,18 @@ impl VerifyData { // that was not present in the client's handshake (the server has // indicated an extension not requested by the client), the client // MUST _Fail the WebSocket Connection_. (RFC 6455) - // TODO + let extensions_header = + headers.typed_try_get::().map_err(|_| { + ProtocolError::InvalidHeader(SecWebsocketExtensions::name().clone().into()) + })?; + + let extensions = match extensions_header { + None => Extensions::default(), + Some(agreed) => extensions + .ok_or(ProtocolError::InvalidHeader(SecWebsocketExtensions::name().clone().into()))? + .verify_agreed_on(agreed) + .map_err(ProtocolError::from)?, + }; // 6. If the response includes a |Sec-WebSocket-Protocol| header field // and this header field indicates the use of a subprotocol that was @@ -293,7 +329,7 @@ impl VerifyData { } } - Ok(response) + Ok((response, extensions)) } } @@ -373,7 +409,7 @@ mod tests { #[test] fn request_formatting() { let request = "ws://localhost/getCaseCount".into_client_request().unwrap(); - let (request, key) = generate_request(request).unwrap(); + let (request, key) = generate_request(request, None).unwrap(); let correct = construct_expected("localhost", &key); assert_eq!(&request[..], &correct[..]); } @@ -381,7 +417,7 @@ mod tests { #[test] fn request_formatting_with_host() { let request = "wss://localhost:9001/getCaseCount".into_client_request().unwrap(); - let (request, key) = generate_request(request).unwrap(); + let (request, key) = generate_request(request, None).unwrap(); let correct = construct_expected("localhost:9001", &key); assert_eq!(&request[..], &correct[..]); } @@ -389,11 +425,41 @@ mod tests { #[test] fn request_formatting_with_at() { let request = "wss://user:pass@localhost:9001/getCaseCount".into_client_request().unwrap(); - let (request, key) = generate_request(request).unwrap(); + let (request, key) = generate_request(request, None).unwrap(); let correct = construct_expected("localhost:9001", &key); assert_eq!(&request[..], &correct[..]); } + #[cfg(feature = "deflate")] + #[test] + fn request_with_compression() { + use crate::extensions::{compression::deflate::DeflateConfig, ExtensionsConfig}; + + let request = "ws://localhost/getCaseCount".into_client_request().unwrap(); + let (request, key) = generate_request( + request, + Some(&ExtensionsConfig { + permessage_deflate: Some(DeflateConfig::default()), + ..ExtensionsConfig::default() + }), + ) + .unwrap(); + let correct = format!( + "\ + GET /getCaseCount HTTP/1.1\r\n\ + Host: {host}\r\n\ + Connection: Upgrade\r\n\ + Upgrade: websocket\r\n\ + Sec-WebSocket-Version: 13\r\n\ + Sec-WebSocket-Key: {key}\r\n\ + sec-websocket-extensions: permessage-deflate; client_max_window_bits\r\n\ + \r\n", + host = "localhost", + key = key + ); + assert_eq!(String::try_from(request).unwrap(), &correct[..]); + } + #[test] fn response_parsing() { const DATA: &[u8] = b"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"; @@ -405,6 +471,6 @@ mod tests { #[test] fn invalid_custom_request() { let request = http::Request::builder().method("GET").body(()).unwrap(); - assert!(generate_request(request).is_err()); + assert!(generate_request(request, None).is_err()); } } diff --git a/src/handshake/server.rs b/src/handshake/server.rs index 1303c21..c1b7e06 100644 --- a/src/handshake/server.rs +++ b/src/handshake/server.rs @@ -6,6 +6,7 @@ use std::{ result::Result as StdResult, }; +use headers::{Header, HeaderMapExt}; use http::{ response::Builder, HeaderMap, Request as HttpRequest, Response as HttpResponse, StatusCode, }; @@ -20,6 +21,7 @@ use super::{ }; use crate::{ error::{Error, ProtocolError, Result}, + extensions::{headers::SecWebsocketExtensions, Extensions}, protocol::{Role, WebSocket, WebSocketConfig}, }; @@ -202,6 +204,8 @@ pub struct ServerHandshake { config: Option, /// Error code/flag. If set, an error will be returned after sending response to the client. error_response: Option, + // Negotiated extension context for server. + extensions: Extensions, /// Internal stream type. _marker: PhantomData, } @@ -219,6 +223,7 @@ impl ServerHandshake { callback: Some(callback), config, error_response: None, + extensions: Extensions::default(), _marker: PhantomData, }, } @@ -240,7 +245,30 @@ impl HandshakeRole for ServerHandshake { return Err(Error::Protocol(ProtocolError::JunkAfterRequest)); } - let response = create_response(&result)?; + let mut response = create_response(&result)?; + if let Some(extensions) = + result.headers().typed_try_get::().map_err(|_| { + ProtocolError::InvalidHeader(SecWebsocketExtensions::name().clone().into()) + })? + { + let extensions_config = self + .config + .ok_or_else(|| { + ProtocolError::InvalidHeader( + SecWebsocketExtensions::name().clone().into(), + ) + })? + .extensions; + let (extensions, agreed) = extensions_config + .accept_offers(&extensions) + .map_err(ProtocolError::from)?; + + if let Some(agreed) = agreed { + response.headers_mut().typed_insert(agreed) + }; + self.extensions = extensions; + } + let callback_result = if let Some(callback) = self.callback.take() { callback.on_request(&result, response) } else { @@ -283,7 +311,12 @@ impl HandshakeRole for ServerHandshake { return Err(Error::Http(http::Response::from_parts(parts, body))); } else { debug!("Server handshake done."); - let websocket = WebSocket::from_raw_socket(stream, Role::Server, self.config); + let websocket = WebSocket::from_raw_socket_with_extensions( + stream, + Role::Server, + self.config, + std::mem::take(&mut self.extensions), + ); ProcessingResult::Done(websocket) } } diff --git a/src/protocol/mod.rs b/src/protocol/mod.rs index c4bf19b..21d2f56 100644 --- a/src/protocol/mod.rs +++ b/src/protocol/mod.rs @@ -186,6 +186,18 @@ impl WebSocket { WebSocket { socket: stream, context: WebSocketContext::new(role, config) } } + /// Convert a raw socket into a WebSocket without performing a handshake. + pub fn from_raw_socket_with_extensions( + stream: Stream, + role: Role, + config: Option, + extensions: Extensions, + ) -> Self { + let mut context = WebSocketContext::new(role, config); + context.extensions = extensions; + WebSocket { socket: stream, context } + } + /// Convert a raw socket into a WebSocket without performing a handshake. /// /// Call this function if you're using Tungstenite as a part of a web framework @@ -199,10 +211,22 @@ impl WebSocket { part: Vec, role: Role, config: Option, + ) -> Self { + Self::from_partially_read_with_extensions(stream, part, role, config, Extensions::default()) + } + + pub(crate) fn from_partially_read_with_extensions( + stream: Stream, + part: Vec, + role: Role, + config: Option, + extensions: Extensions, ) -> Self { WebSocket { socket: stream, - context: WebSocketContext::from_partially_read(part, role, config), + context: WebSocketContext::from_partially_read_with_extensions( + part, role, config, extensions, + ), } } @@ -411,6 +435,26 @@ impl WebSocketContext { ) } + /// Create a WebSocket context for a post-handshake stream with the enabled extensions. + /// + /// Where [`WebSocketContext::from_partially_read`] infers the enabled + /// extensions from the [`WebSocketConfig`], this allows the caller to + /// explicitly sets the extensions in use for the connection. + pub(crate) fn from_partially_read_with_extensions( + part: Vec, + role: Role, + config: Option, + extensions: Extensions, + ) -> Self { + let conf = config.unwrap_or_default(); + Self::_new( + role, + FrameCodec::from_partially_read(part, conf.read_buffer_size), + conf, + extensions, + ) + } + fn _new( role: Role, mut frame: FrameCodec, From bb7bfd32875dc0a61a72e2bf01e2afd74ea10cbd Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Mon, 25 Aug 2025 11:45:55 -0400 Subject: [PATCH 10/12] Enable autobahn testing with deflate support Based on work by Benjamin Swart --- .gitignore | 2 + Cargo.toml | 4 +- autobahn/expected-results.json | 720 ++++++++++++++++----------------- examples/autobahn-client.rs | 11 +- examples/autobahn-server.rs | 10 +- scripts/autobahn-client.sh | 2 +- scripts/autobahn-server.sh | 2 +- 7 files changed, 383 insertions(+), 368 deletions(-) diff --git a/.gitignore b/.gitignore index c8e9e48..fc1f302 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ target Cargo.lock .vscode +autobahn/client/ +autobahn/server/ diff --git a/Cargo.toml b/Cargo.toml index e5b03ef..2368338 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -114,11 +114,11 @@ required-features = ["handshake"] [[example]] name = "autobahn-client" -required-features = ["handshake"] +required-features = ["handshake", "deflate"] [[example]] name = "autobahn-server" -required-features = ["handshake"] +required-features = ["handshake", "deflate"] [[example]] name = "callback-error" diff --git a/autobahn/expected-results.json b/autobahn/expected-results.json index c3d82f4..55f8446 100644 --- a/autobahn/expected-results.json +++ b/autobahn/expected-results.json @@ -120,1514 +120,1514 @@ "reportfile": "tungstenite_case_10_1_1.json" }, "12.1.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 411, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_1.json" }, "12.1.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3952, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_10.json" }, "12.1.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 817, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_11.json" }, "12.1.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 818, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_12.json" }, "12.1.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 1421, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_13.json" }, "12.1.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 2126, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_14.json" }, "12.1.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3966, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_15.json" }, "12.1.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3751, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_16.json" }, "12.1.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3738, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_17.json" }, "12.1.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3726, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_18.json" }, "12.1.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 516, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_2.json" }, "12.1.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 307, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_3.json" }, "12.1.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 282, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_4.json" }, "12.1.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 450, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_5.json" }, "12.1.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 536, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_6.json" }, "12.1.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 741, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_7.json" }, "12.1.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 1328, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_8.json" }, "12.1.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 2133, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_1_9.json" }, "12.2.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 150, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_1.json" }, "12.2.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 14629, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_10.json" }, "12.2.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 1077, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_11.json" }, "12.2.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1962, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_12.json" }, "12.2.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3922, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_13.json" }, "12.2.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 8660, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_14.json" }, "12.2.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 16334, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_15.json" }, "12.2.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 15329, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_16.json" }, "12.2.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 15202, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_17.json" }, "12.2.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 15065, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_18.json" }, "12.2.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 106, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_2.json" }, "12.2.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 168, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_3.json" }, "12.2.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 271, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_4.json" }, "12.2.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 671, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_5.json" }, "12.2.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 1044, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_6.json" }, "12.2.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 2139, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_7.json" }, "12.2.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 3435, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_8.json" }, "12.2.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 7263, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_2_9.json" }, "12.3.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 101, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_1.json" }, "12.3.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 20119, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_10.json" }, "12.3.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1317, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_11.json" }, "12.3.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 2429, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_12.json" }, "12.3.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 4916, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_13.json" }, "12.3.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 10318, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_14.json" }, "12.3.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 20840, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_15.json" }, "12.3.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 20795, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_16.json" }, "12.3.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 20491, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_17.json" }, "12.3.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 20238, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_18.json" }, "12.3.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 122, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_2.json" }, "12.3.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 164, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_3.json" }, "12.3.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 315, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_4.json" }, "12.3.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 717, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_5.json" }, "12.3.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 2, + "duration": 1213, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_6.json" }, "12.3.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 2361, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_7.json" }, "12.3.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 4617, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_8.json" }, "12.3.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 9549, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_3_9.json" }, "12.4.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 407, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_1.json" }, "12.4.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 4848, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_10.json" }, "12.4.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 790, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_11.json" }, "12.4.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1050, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_12.json" }, "12.4.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1609, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_13.json" }, "12.4.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 2860, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_14.json" }, "12.4.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 5382, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_15.json" }, "12.4.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 5252, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_16.json" }, "12.4.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 5096, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_17.json" }, "12.4.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 5027, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_18.json" }, "12.4.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 469, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_2.json" }, "12.4.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 480, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_3.json" }, "12.4.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 610, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_4.json" }, "12.4.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 625, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_5.json" }, "12.4.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 922, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_6.json" }, "12.4.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1037, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_7.json" }, "12.4.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 1558, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_8.json" }, "12.4.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 2636, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_4_9.json" }, "12.5.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 145, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_1.json" }, "12.5.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 12087, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_10.json" }, "12.5.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 1830, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_11.json" }, "12.5.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1952, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_12.json" }, "12.5.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 4592, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_13.json" }, "12.5.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 8835, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_14.json" }, "12.5.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 13050, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_15.json" }, "12.5.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 11856, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_16.json" }, "12.5.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 11422, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_17.json" }, "12.5.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 11346, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_18.json" }, "12.5.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 171, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_2.json" }, "12.5.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 183, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_3.json" }, "12.5.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 302, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_4.json" }, "12.5.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 605, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_5.json" }, "12.5.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1020, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_6.json" }, "12.5.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 1466, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_7.json" }, "12.5.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3207, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_8.json" }, "12.5.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 5814, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_12_5_9.json" }, "13.1.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 205, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_1.json" }, "13.1.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3938, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_10.json" }, "13.1.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 536, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_11.json" }, "13.1.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 751, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_12.json" }, "13.1.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1562, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_13.json" }, "13.1.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 2147, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_14.json" }, "13.1.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 3936, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_15.json" }, "13.1.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3996, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_16.json" }, "13.1.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3912, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_17.json" }, "13.1.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 3924, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_18.json" }, "13.1.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 222, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_2.json" }, "13.1.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 247, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_3.json" }, "13.1.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 284, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_4.json" }, "13.1.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 368, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_5.json" }, "13.1.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 2, + "duration": 490, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_6.json" }, "13.1.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 2, + "duration": 722, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_7.json" }, "13.1.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1164, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_8.json" }, "13.1.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 2252, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_1_9.json" }, "13.2.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 260, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_1.json" }, "13.2.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 4048, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_10.json" }, "13.2.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 608, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_11.json" }, "13.2.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 734, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_12.json" }, "13.2.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 1301, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_13.json" }, "13.2.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 2085, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_14.json" }, "13.2.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 2, + "duration": 3887, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_15.json" }, "13.2.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 4, + "duration": 3807, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_16.json" }, "13.2.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 3766, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_17.json" }, "13.2.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 3852, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_18.json" }, "13.2.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 245, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_2.json" }, "13.2.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 275, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_3.json" }, "13.2.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 295, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_4.json" }, "13.2.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 373, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_5.json" }, "13.2.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 498, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_6.json" }, "13.2.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 734, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_7.json" }, "13.2.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 1106, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_8.json" }, "13.2.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 2428, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_2_9.json" }, "13.3.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_1.json" }, "13.3.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_10.json" }, "13.3.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_11.json" }, "13.3.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_12.json" }, "13.3.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_13.json" }, "13.3.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_14.json" }, "13.3.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_15.json" }, "13.3.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_16.json" }, "13.3.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_17.json" }, "13.3.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_18.json" }, "13.3.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_2.json" }, "13.3.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_3.json" }, "13.3.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_4.json" }, "13.3.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_5.json" }, "13.3.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_6.json" }, "13.3.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_7.json" }, "13.3.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_8.json" }, "13.3.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_3_9.json" }, "13.4.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_1.json" }, "13.4.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_10.json" }, "13.4.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_11.json" }, "13.4.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_12.json" }, "13.4.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_13.json" }, "13.4.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_14.json" }, "13.4.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_15.json" }, "13.4.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_16.json" }, "13.4.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_17.json" }, "13.4.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_18.json" }, "13.4.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_2.json" }, "13.4.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_3.json" }, "13.4.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_4.json" }, "13.4.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_5.json" }, "13.4.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 2, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_6.json" }, "13.4.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 2, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_7.json" }, "13.4.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_8.json" }, "13.4.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_4_9.json" }, "13.5.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_1.json" }, "13.5.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_10.json" }, "13.5.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_11.json" }, "13.5.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_12.json" }, "13.5.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_13.json" }, "13.5.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_14.json" }, "13.5.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 2, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_15.json" }, "13.5.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 2, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_16.json" }, "13.5.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_17.json" }, "13.5.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_18.json" }, "13.5.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_2.json" }, "13.5.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_3.json" }, "13.5.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_4.json" }, "13.5.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_5.json" }, "13.5.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_6.json" }, "13.5.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_7.json" }, "13.5.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_8.json" }, "13.5.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_5_9.json" }, "13.6.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_1.json" }, "13.6.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_10.json" }, "13.6.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_11.json" }, "13.6.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_12.json" }, "13.6.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_13.json" }, "13.6.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_14.json" }, "13.6.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_15.json" }, "13.6.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_16.json" }, "13.6.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_17.json" }, "13.6.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 1, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_18.json" }, "13.6.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_2.json" }, "13.6.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_3.json" }, "13.6.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_4.json" }, "13.6.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_5.json" }, "13.6.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_6.json" }, "13.6.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_7.json" }, "13.6.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_8.json" }, "13.6.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", "duration": 0, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_6_9.json" }, "13.7.1": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 271, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_1.json" }, "13.7.10": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 3822, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_10.json" }, "13.7.11": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 529, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_11.json" }, "13.7.12": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 716, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_12.json" }, "13.7.13": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 1263, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_13.json" }, "13.7.14": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 2147, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_14.json" }, "13.7.15": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 3948, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_15.json" }, "13.7.16": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 3864, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_16.json" }, "13.7.17": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 4061, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_17.json" }, "13.7.18": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 3912, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_18.json" }, "13.7.2": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 234, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_2.json" }, "13.7.3": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 271, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_3.json" }, "13.7.4": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 0, + "duration": 294, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_4.json" }, "13.7.5": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 372, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_5.json" }, "13.7.6": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 501, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_6.json" }, "13.7.7": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 2, + "duration": 709, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_7.json" }, "13.7.8": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 2, + "duration": 1147, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_8.json" }, "13.7.9": { - "behavior": "UNIMPLEMENTED", + "behavior": "OK", "behaviorClose": "OK", - "duration": 1, + "duration": 2040, "remoteCloseCode": 1000, "reportfile": "tungstenite_case_13_7_9.json" }, diff --git a/examples/autobahn-client.rs b/examples/autobahn-client.rs index 4304692..086634d 100644 --- a/examples/autobahn-client.rs +++ b/examples/autobahn-client.rs @@ -1,6 +1,9 @@ use log::*; -use tungstenite::{connect, Error, Message, Result}; +use tungstenite::{ + client::connect_with_config, connect, extensions::compression::deflate::DeflateConfig, + protocol::WebSocketConfig, Error, Message, Result, +}; const AGENT: &str = "Tungstenite"; @@ -20,7 +23,11 @@ fn update_reports() -> Result<()> { fn run_test(case: u32) -> Result<()> { info!("Running test case {}", case); let case_url = format!("ws://localhost:9001/runCase?case={case}&agent={AGENT}"); - let (mut socket, _) = connect(case_url)?; + + let mut config = WebSocketConfig::default(); + config.extensions.permessage_deflate = Some(DeflateConfig::default()); + + let (mut socket, _) = connect_with_config(case_url, Some(config), 3)?; loop { match socket.read()? { msg @ Message::Text(_) | msg @ Message::Binary(_) => { diff --git a/examples/autobahn-server.rs b/examples/autobahn-server.rs index 5b3f25f..d5efed2 100644 --- a/examples/autobahn-server.rs +++ b/examples/autobahn-server.rs @@ -4,7 +4,10 @@ use std::{ }; use log::*; -use tungstenite::{accept, handshake::HandshakeRole, Error, HandshakeError, Message, Result}; +use tungstenite::{ + accept_with_config, extensions::compression::deflate::DeflateConfig, handshake::HandshakeRole, + protocol::WebSocketConfig, Error, HandshakeError, Message, Result, +}; fn must_not_block(err: HandshakeError) -> Error { match err { @@ -14,7 +17,10 @@ fn must_not_block(err: HandshakeError) -> Error { } fn handle_client(stream: TcpStream) -> Result<()> { - let mut socket = accept(stream).map_err(must_not_block)?; + let mut config = WebSocketConfig::default(); + config.extensions.permessage_deflate = Some(DeflateConfig::default()); + + let mut socket = accept_with_config(stream, Some(config)).map_err(must_not_block)?; info!("Running test"); loop { match socket.read()? { diff --git a/scripts/autobahn-client.sh b/scripts/autobahn-client.sh index d0d8f1b..139ebd0 100755 --- a/scripts/autobahn-client.sh +++ b/scripts/autobahn-client.sh @@ -32,5 +32,5 @@ docker run -d --rm \ wstest -m fuzzingserver -s 'autobahn/fuzzingserver.json' sleep 3 -cargo run --release --example autobahn-client +cargo run --release --example autobahn-client --features=deflate test_diff diff --git a/scripts/autobahn-server.sh b/scripts/autobahn-server.sh index 63e89e3..ab737fe 100755 --- a/scripts/autobahn-server.sh +++ b/scripts/autobahn-server.sh @@ -22,7 +22,7 @@ function test_diff() { fi } -cargo run --release --example autobahn-server & WSSERVER_PID=$! +cargo run --release --example autobahn-server --features=deflate & WSSERVER_PID=$! sleep 3 docker run --rm \ From 6f0608bcfc2541f969cc6875f4a6f6973d788b66 Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Fri, 5 Sep 2025 15:12:10 -0400 Subject: [PATCH 11/12] Use low-level interface for compress/decompress Switch to using flate2's Compress and Decompress types directly instead of via std::io::Write-implementing wrappers. This lets us avoid an intermediate buffer in each direction. --- src/extensions/compression/deflate/mod.rs | 345 ++++++++++++++++++---- src/protocol/frame/mod.rs | 2 +- 2 files changed, 291 insertions(+), 56 deletions(-) diff --git a/src/extensions/compression/deflate/mod.rs b/src/extensions/compression/deflate/mod.rs index 8f864e8..698816b 100644 --- a/src/extensions/compression/deflate/mod.rs +++ b/src/extensions/compression/deflate/mod.rs @@ -1,13 +1,8 @@ //! Implements "permessage-deflate" PMCE defined in [RFC 7692 Section 7] //! //! [RFC 7692 Section 7]: https://tools.ietf.org/html/rfc7692#section-7 -use std::{io::Write, num::NonZeroU8}; - use bytes::Bytes; -use flate2::{ - write::{ZlibDecoder, ZlibEncoder}, - Compress, Decompress, -}; +use flate2::{Compress, Decompress, FlushCompress, FlushDecompress, Status}; use thiserror::Error; use crate::protocol::Role; @@ -41,14 +36,25 @@ pub enum DeflateError { #[derive(Debug)] struct DeflateCompress { own_context_takeover: bool, - compressor: ZlibEncoder>, + /// The actual compressor to run payloads through. + /// + /// Use the low-level [`Compress`] API instead of the higher-level + /// [`flate2::zlib::write::ZlibEncoder`] so we can compress directly into + /// the output buffer instead of the intermediate one that that type holds. + compressor: Compress, } #[derive(Debug)] struct DeflateDecompress { - decompressor: ZlibDecoder>, + /// The actual decompressor to run payloads through. + /// + /// Use the low-level [`Decompress`] API instead of the higher-level + /// [`flate2::zlib::write::ZlibDecoder`] so we can decompress directly into + /// the output buffer instead of the intermediate one that that type holds. + /// This also lets us avoid some decompression errors that the higher-level + /// version exhibited with certain highly-compressed payloads. + decompressor: Decompress, peer_context_takeover: bool, - peer_window_bits: NonZeroU8, } impl DeflateContext { @@ -91,22 +97,18 @@ impl DeflateContext { DeflateContext { compress: DeflateCompress { own_context_takeover: !own_no_context_takeover, - compressor: ZlibEncoder::new_with_compress( - Vec::new(), - Compress::new_with_window_bits( - compression, - false, - compressor_window_bits.get(), - ), + compressor: Compress::new_with_window_bits( + compression, + false, + compressor_window_bits.get(), ), }, decompress: DeflateDecompress { peer_context_takeover: !peer_no_context_takeover, - decompressor: ZlibDecoder::new_with_decompress( - Vec::new(), - Decompress::new_with_window_bits(false, decompressor_window_bits.get()), + decompressor: Decompress::new_with_window_bits( + false, + decompressor_window_bits.get(), ), - peer_window_bits: decompressor_window_bits, }, } } @@ -141,10 +143,22 @@ impl DeflateCompress { /// /// This is asymmetric with [`DeflateDecompress::decompress`] in that it /// operates on the contents of an entire message, not the comprising frames. - fn compress(&mut self, data: &[u8]) -> Result { - // Make sure the backing buffer doesn't start out empty. This isn't - // necessary for correctness. - self.compressor.get_mut().reserve(data.len()); + fn compress(&mut self, mut data: &[u8]) -> Result { + log::trace!("compressing message payload with {} bytes", data.len()); + if data.is_empty() { + // Fast path for an empty payload: it gets DEFLATE compressed to a + // zero-length uncompressed block, which conveniently is + // concat([0x00], ELIDED_TRAILER_BLOCK_CONTENTS). Then, per the RFC, + // we elide the trailing 4 bytes to get a single 0x00 byte as the + // compressed payload. + return Ok(Bytes::from_static(&[0x00])); + } + + let mut output = Vec::new(); + + // The amount of space that should be available in `output` before + // attempting to compress data into it. + const REQUIRED_OUTPUT_SPACE: usize = 4096; // Per RFC 7692 Section 7.2.1: // @@ -154,15 +168,84 @@ impl DeflateCompress { // DEFLATE. // - self.compressor.write_all(data)?; - self.compressor.flush()?; + { + let mut total_read = self.compressor.total_in(); + loop { + // Make sure there's space for compress_vec to write to. + output.reserve(REQUIRED_OUTPUT_SPACE); + + let r = self.compressor.compress_vec(data, &mut output, FlushCompress::None)?; + + let read_before = std::mem::replace(&mut total_read, self.compressor.total_in()); + let read = (total_read - read_before) as usize; + + data = &data[read..]; + log::trace!( + "compressed {read} bytes, {} remaining; partial output is {} bytes", + data.len(), + output.len() + ); + + match r { + Status::Ok => continue, + Status::BufError if read == 0 => { + // We made no progress, so this BufError means that + // we're out of input. + break; + } + Status::BufError => { + // We made some progress, so we can continue after + // making more output space. + continue; + } + Status::StreamEnd => break, + } + } + } + + log::trace!("flushing compressed data"); // 2. If the resulting data does not end with an empty DEFLATE // block with no compression (the "BTYPE" bits are set to 00), // append an empty DEFLATE block with no compression to the tail // end. - if !self.compressor.get_ref().ends_with(ELIDED_TRAILER_BLOCK_CONTENTS) { - self.compressor.flush()?; + + // Ideally, at this point, we'd be able to just call compress_vec once + // with an empty slice, FlushCompress::Sync, and a vector with more than + // enough output space, and then we'd get an empty block and be done. + // After all, compress_vec is documented to output "as much output as + // possible". Unfortunately, compress_vec does not actually do that for + // all backends. See: + // - https://github.com/rust-lang/flate2-rs/blob/1.1.2/src/ffi/rust.rs#L169 + // - https://github.com/Frommi/miniz_oxide/blob/0.8.8/miniz_oxide/src/deflate/stream.rs#L82 + // - https://github.com/Frommi/miniz_oxide/issues/105 + // + // This causes compress_vec to return Ok as soon as the compressor + // writes *any* output when called with an empty slice. + // + // So, instead, we need to keep calling compress_vec with an empty slice + // until we stop making progress. + // + // Once we have done that properly, we should always have an empty block + // at the end of the output, and then we can truncate the output to + // remove the empty block, per the RFC. + { + let mut total_out = self.compressor.total_out(); + loop { + output.reserve(REQUIRED_OUTPUT_SPACE); + let output_len_before = output.len(); + let output_available_before = output.capacity() - output_len_before; + + let _ = self.compressor.compress_vec(&[], &mut output, FlushCompress::Sync)?; + log::trace!( + "flushed {} bytes into an available {output_available_before} bytes", + output.len() - output_len_before, + ); + let out_before = std::mem::replace(&mut total_out, self.compressor.total_out()); + if total_out == out_before { + break; + } + } } // 3. Remove 4 octets (that are 0x00 0x00 0xff 0xff) from the tail @@ -170,16 +253,16 @@ impl DeflateCompress { // contains (possibly part of) the DEFLATE header bits with the // "BTYPE" bits set to 00. - let mut output = std::mem::take(self.compressor.get_mut()); debug_assert!(output.ends_with(ELIDED_TRAILER_BLOCK_CONTENTS), "output is {output:02x?}"); output.truncate(output.len() - ELIDED_TRAILER_BLOCK_CONTENTS.len()); if !self.own_context_takeover { // Reset if the next frame isn't supposed to be starting with the // same compression window. - self.compressor.reset(Vec::new())?; + self.compressor.reset(); } + log::trace!("finished compression into {} bytes", output.len()); Ok(Bytes::from(output)) } } @@ -199,38 +282,72 @@ impl DeflateDecompress { // // 2. Decompress the resulting data using DEFLATE. - self.decompressor.get_mut().reserve( - // Optimistically assume a 50% compression ratio of the input. - 2 * data.len(), - ); + let mut output = Vec::new(); - // Decompress the input received over the wire. That might not be all of - // the logical input to DEFLATE so don't try to sync. - self.decompressor.write_all(data)?; + let mut total_read = self.decompressor.total_in(); + + let mut decompress_from = |mut data: &[u8]| { + loop { + // Make sure there's some space to decompress into. + // Optimistically assume a 50% compression ratio of the input. + output.reserve(2 * data.len()); + + let r = + self.decompressor.decompress_vec(data, &mut output, FlushDecompress::None)?; + + let read_before = std::mem::replace(&mut total_read, self.decompressor.total_in()); + let read = (total_read - read_before) as usize; + + data = &data[read..]; + + match r { + Status::Ok => continue, + Status::BufError => { + // We've either run out of input data or output space. + // Since we reserve space ahead of time, this must mean + // we're out of input. + break; + } + Status::StreamEnd => { + // Finished a block with BFINAL set. This is legal; from + // RFC 7692 Section 7.2.3.4: + // + // On platforms on which the flush method using an + // empty DEFLATE block with no compression is not + // available, implementors can choose to flush data + // using DEFLATE blocks with "BFINAL" set to 1. + // + // On the decompression end we reset the compressor in + // response. This relies on the assumption that the + // client produced the block with BFINAL set by + // informing their compressor that the stream was + // ending, and so any blocks afterwards won't reference + // any context from this block or earlier. It's + // obviously not a perfect assumption, but it matches + // the behavior of other widely-deployed + // permessage-deflate implementations. + self.decompressor.reset(false); + total_read = 0; + } + } + } + std::io::Result::Ok(()) + }; + + decompress_from(data)?; - let mut output = None; if is_final { // Decompress the final block that is part of the logical input to - // DEFLATE but is elided from the message payloads. - self.decompressor.write_all(ELIDED_TRAILER_BLOCK_CONTENTS)?; - self.decompressor.flush()?; + // DEFLATE but is elided from the message payloads. This implicitly + // flushes out any pending bytes that were part of the previous + // block and doesn't leave any others since the trailer is explicitly + // an empty block. + decompress_from(&ELIDED_TRAILER_BLOCK_CONTENTS)?; if !self.peer_context_takeover { - // This wholesale replacement shouldn't be needed but - // `ZlibDecoder::finish` assumes that the new input will have a - // zlib header, which isn't the case here, and doesn't have a - // way to override it. - let decompressor = std::mem::replace( - &mut self.decompressor, - ZlibDecoder::new_with_decompress( - Vec::new(), - Decompress::new_with_window_bits(false, self.peer_window_bits.get()), - ), - ); - output = Some(decompressor.finish()?); + self.decompressor.reset(false); } } - let output = output.unwrap_or_else(|| std::mem::take(self.decompressor.get_mut())); Ok(Bytes::from(output)) } @@ -244,7 +361,7 @@ impl From for super::PerMessageCompressionContext { #[cfg(test)] mod test { - use rand::{RngCore, SeedableRng as _}; + use rand::{distr::Distribution as _, RngCore, SeedableRng as _}; use super::*; @@ -307,6 +424,100 @@ mod test { assert_eq!(&context.decompress(&compressed, true).unwrap(), &data); } + #[test] + fn compressible_payload_prefixes() { + let _ = env_logger::try_init(); + let data: Vec = rand::distr::Alphanumeric + .sample_iter(&mut rand::rngs::SmallRng::from_seed([59; 32])) + .take(1 << 16) + .collect(); + + let prefixes = + (5..).map(|i| 1 << i).take_while(|len| *len <= data.len()).map(|len| &data[..len]); + + for prefix in prefixes { + let mut context = DeflateContext::new(Role::Client, DeflateConfig::default()); + println!("compressing {} bytes of compressible data", prefix.len()); + + let compressed = context.compress(prefix).unwrap(); + assert_eq!(context.decompress(&compressed, true).unwrap(), prefix); + } + } + + #[test] + fn large_message_decompression() { + let _ = env_logger::try_init(); + // Compressed payload that decompresses to 50KB of zeroes. This was + // specifically chosen so that its compressed form aligns with a byte + // boundary, which lets us repeat it an arbitrary number of times to + // form the payload of a single message. + const VERY_COMPRESSED: &[u8; 66] = &[ + 0xec, 0xc1, 0x31, 0x01, 0x00, 0x00, 0x00, 0xc2, 0xa0, 0xf5, 0x4f, 0x6d, 0x0b, 0x2f, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x6f, + ]; + const DECOMPRESSED_LEN: usize = 50 * 1024; + + fn make_frames(frame_count: usize) -> impl Iterator { + std::iter::repeat_n(VERY_COMPRESSED, frame_count).enumerate().map(move |(i, bytes)| { + let is_final = i == frame_count - 1; + (bytes.iter().copied().chain(is_final.then_some(0x00)).collect(), is_final) + }) + } + + for frame_count in 1..=10 { + let mut context = DeflateContext::new(Role::Client, DeflateConfig::default()); + + let decompressed: Bytes = make_frames(frame_count) + .enumerate() + .flat_map(|(i, (frame, is_final))| { + context + .decompress + .decompress(&frame, is_final) + .unwrap_or_else(|e| panic!("deflating frame {i}/{frame_count} failed: {e}")) + }) + .collect(); + assert!(decompressed.iter().all(|b| *b == 0)); + assert_eq!(decompressed.len(), frame_count * DECOMPRESSED_LEN); + } + } + + #[test] + fn decompress_multiple_messages_that_each_set_bfinal() { + let _ = env_logger::try_init(); + + let mut rng = rand::rngs::SmallRng::from_seed([12; 32]); + let uncompressed_payloads = std::iter::repeat_with(|| { + let mut data: Vec = vec![0; 1 << 12]; + rng.fill_bytes(&mut data); + data + }); + + let mut context = DeflateContext::new(Role::Server, DeflateConfig::default()); + + for (i, payload) in uncompressed_payloads.enumerate().take(5) { + let mut compressed = context.compress(&payload).unwrap().try_into_mut().unwrap(); + // The final block in the stream is a 5-byte uncompressed block, but + // with the trailing 4 bytes of the body chopped off (per the RFC). + // We don't know where in the last *byte* the final block begins + // (since DEFLATE is a bit-oriented protocol), so to make sure the + // payload ends with a block with BFINAL set we need to append + // another block. First we reattach the chopped-off bytes from the + // last block. Then we push *another* 5-byte uncompressed block with + // BFINAL set. Lastly we chop off the trailing 4 bytes per the spec. + compressed.extend_from_slice(ELIDED_TRAILER_BLOCK_CONTENTS); + compressed.extend_from_slice(&[0x01, 0x00, 0x00, 0xff, 0xff]); + compressed.truncate(compressed.len() - ELIDED_TRAILER_BLOCK_CONTENTS.len()); + + println!("decompressing block {i}"); + let decompressed = context.decompress(&compressed, true).unwrap(); + assert_eq!(decompressed.len(), payload.len()); + assert_eq!(decompressed, payload); + } + } + mod rfc_7692_section_7_2_3_examples { use super::*; @@ -409,6 +620,30 @@ mod test { assert_eq!(&context.compress(b"Hello").unwrap()[..], NEW_SECOND_PAYLOAD); } + #[test] + fn deflate_block_with_bfinal_set() { + // From RFC 7692 Section 7.2.3.4: + // + // On platforms on which the flush method using an empty DEFLATE + // block with no compression is not available, implementors can + // choose to flush data using DEFLATE blocks with "BFINAL" set to + // 1. + + const PAYLOAD: &[u8] = &[0xf3, 0x48, 0xcd, 0xc9, 0xc9, 0x07, 0x00, 0x00]; + + // This is the payload of a message containing "Hello" compressed + // using a DEFLATE block with "BFINAL" set to 1. The first 7 + // octets constitute a DEFLATE block with "BFINAL" set to 1 and + // "BTYPE" set to 01 containing "Hello". The last 1 octet (0x00) + // contains the header bits with "BFINAL" set to 0 and "BTYPE" set + // to 00, and 5 padding bits of 0. This octet is necessary to + // allow the payload to be decompressed in the same manner as + // messages flushed using DEFLATE blocks with "BFINAL" unset. + + let mut context = DeflateContext::new(Role::Client, DeflateConfig::default()); + assert_eq!(context.decompress(PAYLOAD, true), Ok(Bytes::from_static(b"Hello"))); + } + #[test] fn two_deflate_blocks() { // From RFC 7692 Section 7.2.3.5: diff --git a/src/protocol/frame/mod.rs b/src/protocol/frame/mod.rs index 17906b6..ab5af4e 100644 --- a/src/protocol/frame/mod.rs +++ b/src/protocol/frame/mod.rs @@ -301,7 +301,7 @@ mod tests { #[test] fn read_frames() { - env_logger::init(); + let _ = env_logger::try_init(); let raw = Cursor::new(vec![ 0x82, 0x07, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x82, 0x03, 0x03, 0x02, 0x01, From 89336e61ed61eea6337efd7dba63e934db9c3526 Mon Sep 17 00:00:00 2001 From: Alex Bakon Date: Wed, 10 Sep 2025 17:39:27 -0400 Subject: [PATCH 12/12] Enforce message size limits when decompressing Add an argument to control how much compressed data is returned before an error is returned. Pass down the remaining per-message limit when decompressing a frame. --- src/extensions/compression/deflate/mod.rs | 110 +++++++++++----- src/extensions/compression/mod.rs | 38 +++++- src/extensions/mod.rs | 11 +- src/protocol/mod.rs | 147 +++++++++++++++++++--- 4 files changed, 249 insertions(+), 57 deletions(-) diff --git a/src/extensions/compression/deflate/mod.rs b/src/extensions/compression/deflate/mod.rs index 698816b..e081ad0 100644 --- a/src/extensions/compression/deflate/mod.rs +++ b/src/extensions/compression/deflate/mod.rs @@ -5,7 +5,7 @@ use bytes::Bytes; use flate2::{Compress, Decompress, FlushCompress, FlushDecompress, Status}; use thiserror::Error; -use crate::protocol::Role; +use crate::{extensions::compression::DecompressionError, protocol::Role}; mod config; #[cfg_attr(not(feature = "handshake"), allow(unused_imports))] @@ -128,10 +128,13 @@ impl DeflateContext { &mut self, data: &[u8], is_final: bool, - ) -> Result { - self.decompress.decompress(data, is_final).map_err(|e| { - log::debug!("decompression failed: {e}"); - DeflateError::Decompress + size_limit: usize, + ) -> Result> { + self.decompress.decompress(data, is_final, size_limit).map_err(|e| { + e.map(|e: std::io::Error| { + log::debug!("decompression failed: {e}"); + DeflateError::Decompress + }) }) } } @@ -271,8 +274,16 @@ impl DeflateDecompress { /// Decompress the contents of a single frame. /// /// The `is_final` argument must be `true` if and only if the frame is the - /// last one in a message. - fn decompress(&mut self, data: &[u8], is_final: bool) -> Result { + /// last one in a message. The `size_limit` argument is the maximum number + /// of bytes that can be decompressed. If the input `data` decompresses to + /// more than `size_limit` bytes, [`DecompressionError::SizeLimitReached`] + /// will be returned. + fn decompress( + &mut self, + data: &[u8], + is_final: bool, + size_limit: usize, + ) -> Result> { // From RFC 7692 Section 7.2.2: // // An endpoint uses the following algorithm to decompress a message. @@ -284,18 +295,29 @@ impl DeflateDecompress { let mut output = Vec::new(); + log::trace!( + "decompressing {} bytes in {} frame", + data.len(), + if is_final { "final" } else { "intermediate" } + ); let mut total_read = self.decompressor.total_in(); let mut decompress_from = |mut data: &[u8]| { loop { - // Make sure there's some space to decompress into. - // Optimistically assume a 50% compression ratio of the input. + // Make sure there's some space to decompress into, + // optimistically assuming a 50% compression ratio of the input. + // This might put us slightly beyond the requested size limit + // but it also might not all be used. output.reserve(2 * data.len()); let r = self.decompressor.decompress_vec(data, &mut output, FlushDecompress::None)?; + if output.len() > size_limit { + return Err(DecompressionError::SizeLimitReached); + } let read_before = std::mem::replace(&mut total_read, self.decompressor.total_in()); + let read = (total_read - read_before) as usize; data = &data[read..]; @@ -331,7 +353,7 @@ impl DeflateDecompress { } } } - std::io::Result::Ok(()) + Ok(()) }; decompress_from(data)?; @@ -360,7 +382,7 @@ impl From for super::PerMessageCompressionContext { } #[cfg(test)] -mod test { +pub(crate) mod test { use rand::{distr::Distribution as _, RngCore, SeedableRng as _}; use super::*; @@ -395,7 +417,7 @@ mod test { let mut it = compressed.chunks(frame_size).peekable(); while let Some(frame) = it.next() { decompressed.extend_from_slice( - &server.decompress(frame, it.peek().is_none()).unwrap(), + &server.decompress(frame, it.peek().is_none(), usize::MAX).unwrap(), ); } decompressed @@ -421,7 +443,23 @@ mod test { let compressed = context.compress(&data).unwrap(); - assert_eq!(&context.decompress(&compressed, true).unwrap(), &data); + assert_eq!(&context.decompress(&compressed, true, usize::MAX).unwrap(), &data); + } + + #[test] + fn decompression_limits_applied() { + let data = vec![0; 1 << 18]; + + let mut context = DeflateContext::new(Role::Client, DeflateConfig::default()); + let compressed = context.compress(&data).unwrap(); + + // A buffer of all zeros compresses very well. + assert!(compressed.len() < data.len() / 500); + + assert_eq!( + context.decompress(&compressed, true, data.len() - 1), + Err(DecompressionError::SizeLimitReached) + ); } #[test] @@ -440,47 +478,58 @@ mod test { println!("compressing {} bytes of compressible data", prefix.len()); let compressed = context.compress(prefix).unwrap(); - assert_eq!(context.decompress(&compressed, true).unwrap(), prefix); + assert_eq!(context.decompress(&compressed, true, usize::MAX).unwrap(), prefix); } } - #[test] - fn large_message_decompression() { - let _ = env_logger::try_init(); + /// Utilities for testing decomrpession of highly-compressed payloads. + pub(crate) mod very_compressed { + use bytes::Bytes; + // Compressed payload that decompresses to 50KB of zeroes. This was // specifically chosen so that its compressed form aligns with a byte // boundary, which lets us repeat it an arbitrary number of times to // form the payload of a single message. - const VERY_COMPRESSED: &[u8; 66] = &[ + pub(crate) const FRAME_PAYLOAD: &[u8; 66] = &[ 0xec, 0xc1, 0x31, 0x01, 0x00, 0x00, 0x00, 0xc2, 0xa0, 0xf5, 0x4f, 0x6d, 0x0b, 0x2f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x6f, ]; - const DECOMPRESSED_LEN: usize = 50 * 1024; + pub(crate) const DECOMPRESSED_LEN: usize = 50 * 1024; - fn make_frames(frame_count: usize) -> impl Iterator { - std::iter::repeat_n(VERY_COMPRESSED, frame_count).enumerate().map(move |(i, bytes)| { + pub(crate) fn make_frames(frame_count: usize) -> impl Iterator { + std::iter::repeat_n(FRAME_PAYLOAD, frame_count).enumerate().map(move |(i, bytes)| { let is_final = i == frame_count - 1; - (bytes.iter().copied().chain(is_final.then_some(0x00)).collect(), is_final) + let bytes = if is_final { + bytes.iter().copied().chain(std::iter::once(0x00)).collect() + } else { + Bytes::from_static(bytes) + }; + (bytes, is_final) }) } + } + + #[test] + fn large_message_decompression() { + let _ = env_logger::try_init(); for frame_count in 1..=10 { let mut context = DeflateContext::new(Role::Client, DeflateConfig::default()); - let decompressed: Bytes = make_frames(frame_count) + let decompressed: Bytes = very_compressed::make_frames(frame_count) .enumerate() .flat_map(|(i, (frame, is_final))| { context .decompress - .decompress(&frame, is_final) + .decompress(&frame, is_final, usize::MAX) .unwrap_or_else(|e| panic!("deflating frame {i}/{frame_count} failed: {e}")) }) .collect(); assert!(decompressed.iter().all(|b| *b == 0)); - assert_eq!(decompressed.len(), frame_count * DECOMPRESSED_LEN); + assert_eq!(decompressed.len(), frame_count * very_compressed::DECOMPRESSED_LEN); } } @@ -512,7 +561,7 @@ mod test { compressed.truncate(compressed.len() - ELIDED_TRAILER_BLOCK_CONTENTS.len()); println!("decompressing block {i}"); - let decompressed = context.decompress(&compressed, true).unwrap(); + let decompressed = context.decompress(&compressed, true, usize::MAX).unwrap(); assert_eq!(decompressed.len(), payload.len()); assert_eq!(decompressed, payload); } @@ -569,7 +618,7 @@ mod test { .iter() .enumerate() .map(|(index, payload)| { - context.decompress(payload, index == frame_payloads.len() - 1) + context.decompress(payload, index == frame_payloads.len() - 1, usize::MAX) }) .collect::, _>>() .unwrap() @@ -641,7 +690,10 @@ mod test { // messages flushed using DEFLATE blocks with "BFINAL" unset. let mut context = DeflateContext::new(Role::Client, DeflateConfig::default()); - assert_eq!(context.decompress(PAYLOAD, true), Ok(Bytes::from_static(b"Hello"))); + assert_eq!( + context.decompress(PAYLOAD, true, usize::MAX), + Ok(Bytes::from_static(b"Hello")) + ); } #[test] @@ -655,7 +707,7 @@ mod test { let mut context = DeflateContext::new(Role::Client, DeflateConfig::new()); - assert_eq!(&context.decompress(TWO_BLOCKS, true).unwrap()[..], b"Hello"); + assert_eq!(&context.decompress(TWO_BLOCKS, true, usize::MAX).unwrap()[..], b"Hello"); } } } diff --git a/src/extensions/compression/mod.rs b/src/extensions/compression/mod.rs index 69053f0..402d385 100644 --- a/src/extensions/compression/mod.rs +++ b/src/extensions/compression/mod.rs @@ -26,6 +26,17 @@ pub enum CompressionError { Deflate(deflate::DeflateError), } +#[derive(Debug, Error)] +#[cfg_attr(test, derive(PartialEq))] +pub(crate) enum DecompressionError { + /// The decompressed frame is larger than the configured limit. + #[error("decompressed data is too large")] + SizeLimitReached, + /// An error was encountered while decompressing. + #[error("{0}")] + Decompression(E), +} + impl PerMessageCompressionContext { #[inline] pub(crate) fn compressor<'s>( @@ -47,17 +58,32 @@ impl PerMessageCompressionContext { #[inline] pub(crate) fn decompressor<'s>( &'s mut self, - ) -> impl FnMut(&Bytes, bool) -> Result + 's { - move |payload, is_final| match self { + ) -> impl FnMut(&Bytes, bool, usize) -> Result + 's { + move |payload, is_final, size_limit| match self { #[cfg(feature = "deflate")] - Self::Deflate(deflate_config) => { - deflate_config.decompress(payload, is_final).map_err(CompressionError::Deflate) - } + Self::Deflate(deflate_config) => deflate_config + .decompress(payload, is_final, size_limit) + .map_err(|e| e.map(CompressionError::Deflate)), #[cfg(not(feature = "deflate"))] _ => { - let _ = (payload, is_final); + let _ = (payload, is_final, size_limit); unreachable!("*PerMessageCompressionContext is uninhabited") } } } } + +impl DecompressionError { + pub(crate) fn map(self, f: impl FnOnce(E) -> T) -> DecompressionError { + match self { + Self::SizeLimitReached => DecompressionError::SizeLimitReached, + Self::Decompression(e) => DecompressionError::Decompression(f(e)), + } + } +} + +impl> From for DecompressionError { + fn from(value: E) -> Self { + Self::Decompression(value.into()) + } +} diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs index b95f833..624d9fc 100644 --- a/src/extensions/mod.rs +++ b/src/extensions/mod.rs @@ -4,7 +4,9 @@ use bytes::Bytes; use thiserror::Error; -use crate::extensions::compression::{CompressionError, PerMessageCompressionContext}; +use crate::extensions::compression::{ + CompressionError, DecompressionError, PerMessageCompressionContext, +}; #[cfg(feature = "handshake")] use crate::extensions::headers::{SecWebsocketExtensions, WebsocketProtocolExtension}; use crate::protocol::Role; @@ -266,14 +268,15 @@ impl Extensions { /// The returned value will only be `Some` if a per-message compression /// extension, as specified by [RFC 7692], was configured for the connection /// state to which this `Extensions` applies. The closure takes as arguments - /// the frame payload, in bytes, and `true` if the frame is the final one - /// for a message, otherwise false. + /// the frame payload, in bytes, a boolean indicating whether the frame is + /// the final one for a message, and the maximum number of uncompressed + /// bytes to produce before returning an error. /// /// [RFC 7692]: https://tools.ietf.org/html/rfc7692 #[inline] pub(crate) fn per_message_decompressor<'s>( &'s mut self, - ) -> Option Result + 's> { + ) -> Option Result + 's> { let Self { per_message_compression } = self; per_message_compression.as_mut().map(PerMessageCompressionContext::decompressor) } diff --git a/src/protocol/mod.rs b/src/protocol/mod.rs index 21d2f56..b1172d2 100644 --- a/src/protocol/mod.rs +++ b/src/protocol/mod.rs @@ -15,13 +15,14 @@ use self::{ }; use crate::{ error::{CapacityError, Error, ProtocolError, Result}, - extensions::{Extensions, ExtensionsConfig}, + extensions::{compression::DecompressionError, Extensions, ExtensionsConfig}, protocol::frame::Utf8Bytes, }; use log::*; use std::{ io::{self, Read, Write}, mem::replace, + usize, }; /// Indicates a Client or Server role of the websocket @@ -726,7 +727,29 @@ impl WebSocketContext { return Err(Error::Protocol(ProtocolError::NonZeroReservedBits)); } - (hdr.rsv1, decompressor) + let decompressor_with_size_limit = decompressor.map(|mut f| { + let incomplete_len = + self.incomplete.as_ref().map(IncompleteMessage::len).unwrap_or(0); + let message_max = self.config.max_message_size.unwrap_or(usize::MAX); + + move |bytes, is_final| { + let decompress_limit = message_max.saturating_sub(incomplete_len); + + f(bytes, is_final, decompress_limit).map_err(|e| match e { + DecompressionError::SizeLimitReached => { + Error::Capacity(CapacityError::MessageTooLong { + size: incomplete_len.saturating_add(decompress_limit), + max_size: message_max, + }) + } + DecompressionError::Decompression(e) => { + Error::Protocol(ProtocolError::CompressionFailure(e)) + } + }) + } + }); + + (hdr.rsv1, decompressor_with_size_limit) }; if self.role == Role::Client && frame.is_masked() { @@ -812,7 +835,7 @@ impl WebSocketContext { ProtocolError::CompressedContinueFrame })?; - payload = decompressor(&payload, fin).map_err(ProtocolError::from)? + payload = decompressor(&payload, fin)?; }; incomplete.extend(payload, self.config.max_message_size)?; @@ -830,9 +853,7 @@ impl WebSocketContext { OpData::Text | OpData::Binary if fin => { let payload = frame.into_payload(); let payload = match decompressor.filter(|_| is_compressed) { - Some(mut frame_decompressor) => { - frame_decompressor(&payload, fin).map_err(ProtocolError::from)? - } + Some(mut frame_decompressor) => frame_decompressor(&payload, fin)?, None => payload, }; @@ -853,9 +874,7 @@ impl WebSocketContext { let payload = frame.into_payload(); let payload = match decompressor.filter(|_| is_compressed) { - Some(mut frame_decompressor) => { - frame_decompressor(&payload, fin).map_err(ProtocolError::from)? - } + Some(mut frame_decompressor) => frame_decompressor(&payload, fin)?, None => payload, }; let mut incomplete = match is_compressed { @@ -1014,6 +1033,7 @@ impl CheckConnectionReset for Result { mod tests { use super::{Message, Role, WebSocket, WebSocketConfig}; use crate::error::{CapacityError, Error}; + use crate::extensions::ExtensionsConfig; use std::{io, io::Cursor}; @@ -1080,10 +1100,7 @@ mod tests { fn per_message_deflate_compression() { // Example frames from RFC 7692 Section 7.2.3.2 - use crate::{ - extensions::{compression, ExtensionsConfig}, - protocol::FrameCodec, - }; + use crate::{extensions::compression, protocol::FrameCodec}; let mut stream = Cursor::new(Vec::new()); @@ -1126,14 +1143,12 @@ mod tests { fn per_message_deflate_decompression() { // Example frames from RFC 7692 Section 7.2.3.2 - use crate::extensions::{compression, ExtensionsConfig}; + use crate::extensions::compression::deflate::DeflateConfig; let incoming = Cursor::new(&[0x41, 0x03, 0xf2, 0x48, 0xcd, 0x80, 0x04, 0xc9, 0xc9, 0x07, 0x00]); let config = WebSocketConfig { - extensions: ExtensionsConfig { - permessage_deflate: Some(compression::deflate::DeflateConfig::default()), - }, + extensions: ExtensionsConfig { permessage_deflate: Some(DeflateConfig::default()) }, ..Default::default() }; let mut socket = WebSocket::from_raw_socket(WriteMoc(incoming), Role::Client, Some(config)); @@ -1144,7 +1159,6 @@ mod tests { #[test] fn per_message_compression_not_recognized() { // Without the extension configuration, frames with the RSV1 bit set are rejected. - use crate::extensions::ExtensionsConfig; let incoming = Cursor::new(&[0x41, 0x03, 0xf2, 0x48, 0xcd, 0x80, 0x04, 0xc9, 0xc9, 0x07, 0x00]); @@ -1157,4 +1171,101 @@ mod tests { Error::Protocol(crate::error::ProtocolError::NonZeroReservedBits) )); } + + #[cfg(feature = "deflate")] + #[test] + fn per_message_compression_decompress_respects_message_size_limit() { + use crate::extensions::compression::deflate::test::very_compressed; + use crate::extensions::compression::deflate::DeflateConfig; + use crate::protocol::frame::{ + coding::{Data, OpCode}, + FrameHeader, + }; + + let _ = env_logger::try_init(); + + let base_config = WebSocketConfig { + extensions: ExtensionsConfig { + permessage_deflate: Some(DeflateConfig::default()), + ..Default::default() + }, + ..Default::default() + }; + + fn make_message(frame_count: usize) -> Vec { + let mut is_first = true; + let mut output = Vec::new(); + + for (frame, is_final) in very_compressed::make_frames(frame_count) { + let is_first = std::mem::replace(&mut is_first, false); + let header = FrameHeader { + opcode: OpCode::Data(if is_first { Data::Binary } else { Data::Continue }), + rsv1: is_first, + is_final, + ..Default::default() + }; + header.format(frame.len() as u64, &mut output).unwrap(); + output.extend_from_slice(&frame); + } + output + } + + // With the default configuration, a short message of these frames is fine. + { + let input = Cursor::new(make_message(4)); + let mut socket = + WebSocket::from_raw_socket(input, Role::Client, Some(base_config.clone())); + + let message = socket.read().unwrap(); + assert_eq!( + message, + Message::Binary( + bytes::BytesMut::zeroed(4 * very_compressed::DECOMPRESSED_LEN).into() + ) + ); + } + + // The maximum frame size limits on-the-wire frame size, not + // decompressed size, so this still decompresses. + { + let input = Cursor::new(make_message(2)); + const MAX_FRAME_SIZE: usize = very_compressed::DECOMPRESSED_LEN - 1; + + let mut socket = WebSocket::from_raw_socket( + input, + Role::Client, + Some(base_config.clone().max_frame_size(Some(MAX_FRAME_SIZE))), + ); + + let message = socket.read().unwrap(); + assert_eq!( + message, + Message::Binary( + bytes::BytesMut::zeroed(2 * very_compressed::DECOMPRESSED_LEN).into() + ) + ); + } + + // With a reduced maximum message size, decompressing the whole message + // fails. + { + let input = Cursor::new(make_message(5)); + const MAX_MESSAGE_SIZE: usize = 3 * very_compressed::DECOMPRESSED_LEN; + + let mut socket = WebSocket::from_raw_socket( + input, + Role::Client, + Some(base_config.clone().max_message_size(Some(MAX_MESSAGE_SIZE))), + ); + + let error = socket.read().unwrap_err(); + assert!(matches!( + error, + Error::Capacity(CapacityError::MessageTooLong { + size: _, + max_size: MAX_MESSAGE_SIZE + }) + )); + } + } }