added autobahn server reports
This commit is contained in:
Родитель
d23d08fc8e
Коммит
9fb98fc64e
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,305 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_non_strict">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 3.2</b></span> : Non-Strict - <span style="font-size: 0.9em;"><b>2</b> ms @ 2012-02-04T15:41:06Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send small text message, then send again with <b>RSV = 2</b>, then send Ping.</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>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 negoiated. The Pong is not received.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'NON-STRICT': [], 'OK': [('message', 'Hello, world!', False)]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: naQpeQXM16oTsQGgFhzkCw==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: GWrmDJGkZekAGDtxltB9SFScv/0=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">False</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td><td>131</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td><td>8</td></tr>
|
||||
<tr class="stats_row"><td>19</td><td>2</td><td>38</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>5</td><td>253</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>1</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>4</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a206e615170</pre>
|
||||
<pre class="wirelog_tx_octets"> 6551584d31366f547351476746687a6b43773d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20475772</pre>
|
||||
<pre class="wirelog_rx_octets"> 6d444a476b5a656b41474474786c74423953465363762f303d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=c8e7cd39, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Hello, world!</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 818dc8e7cd398082a155a7cbed4ea795a15de9</pre>
|
||||
<pre class="wirelog_tx_frame">004 TX FRAME : OPCODE=1, FIN=True, RSV=2, MASK=48cf9b10, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Hello, world!</pre>
|
||||
<pre class="wirelog_tx_octets">005 TX OCTETS: a18d48cf9b1000aaf77c27e3bb6727bdf77469</pre>
|
||||
<pre class="wirelog_tx_frame">006 TX FRAME : OPCODE=9, FIN=True, RSV=0, MASK=ba7b6257, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">007 TX OCTETS: 8980ba7b6257</pre>
|
||||
<pre class="wirelog_kill_after">008 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">009 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">010 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tx_frame">011 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=c2125d8a, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">012 TX OCTETS: 8882c2125d8ac1fa</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">013 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,305 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_non_strict">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 4.1.3</b></span> : Non-Strict - <span style="font-size: 0.9em;"><b>2</b> ms @ 2012-02-04T15:41:06Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send small text message, then send frame with reserved non-control <b>Opcode = 5</b>, then send Ping.</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'NON-STRICT': [], 'OK': [('message', 'Hello, world!', False)]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: xsPC4lQvjb4PhpJeBNWHdQ==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: ZT0DfgjT9h2dF3tlZwQbiVc8r5s=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">False</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td><td>131</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>2</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td><td>8</td></tr>
|
||||
<tr class="stats_row"><td>19</td><td>1</td><td>19</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>5</td><td>240</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>1</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>5</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>4</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2078735043</pre>
|
||||
<pre class="wirelog_tx_octets"> 346c51766a62345068704a65424e574864513d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a205a5430</pre>
|
||||
<pre class="wirelog_rx_octets"> 4466676a54396832644633746c5a775162695663387235733d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=c591fc05, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Hello, world!</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 818dc591fc058df49069aabddc72aae39061e4</pre>
|
||||
<pre class="wirelog_tx_frame">004 TX FRAME : OPCODE=5, FIN=True, RSV=0, MASK=245c9b85, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">005 TX OCTETS: 8580245c9b85</pre>
|
||||
<pre class="wirelog_tx_frame">006 TX FRAME : OPCODE=9, FIN=True, RSV=0, MASK=235abec4, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">007 TX OCTETS: 8980235abec4</pre>
|
||||
<pre class="wirelog_kill_after">008 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">009 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">010 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tx_frame">011 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=3b961406, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">012 TX OCTETS: 88823b961406387e</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">013 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,306 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_non_strict">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 4.1.4</b></span> : Non-Strict - <span style="font-size: 0.9em;"><b>2</b> ms @ 2012-02-04T15:41:06Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send small text message, then send frame with reserved non-control <b>Opcode = 6</b> and non-empty payload, then send Ping.</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'NON-STRICT': [], 'OK': [('message', 'Hello, world!', False)]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: lWjk0P7OM1q+JBUPL0HfZA==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: d7k1A19qGfNKwuf0DJJ9pJTFpII=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">False</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td><td>131</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td><td>8</td></tr>
|
||||
<tr class="stats_row"><td>19</td><td>2</td><td>38</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>5</td><td>253</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>1</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>4</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a206c576a6b</pre>
|
||||
<pre class="wirelog_tx_octets"> 3050374f4d31712b4a4255504c3048665a413d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a2064376b</pre>
|
||||
<pre class="wirelog_rx_octets"> 314131397147664e4b77756630444a4a39704a54467049493d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=45843e64, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Hello, world!</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 818d45843e640de152082aa81e132af6520064</pre>
|
||||
<pre class="wirelog_tx_frame">004 TX FRAME : OPCODE=6, FIN=True, RSV=0, MASK=fa380a4b, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Hello, world!</pre>
|
||||
<pre class="wirelog_tx_octets">005 TX OCTETS: 868dfa380a4bb25d662795142a3c954a662fdb</pre>
|
||||
<pre class="wirelog_tx_frame">006 TX FRAME : OPCODE=9, FIN=True, RSV=0, MASK=cfe1af5c, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">007 TX OCTETS: 8980cfe1af5c</pre>
|
||||
<pre class="wirelog_kill_after">008 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">009 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">010 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tx_frame">011 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=4f85959a, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">012 TX OCTETS: 88824f85959a4c6d</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">013 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,305 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_non_strict">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 4.2.3</b></span> : Non-Strict - <span style="font-size: 0.9em;"><b>3</b> ms @ 2012-02-04T15:41:06Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send small text message, then send frame with reserved control <b>Opcode = 13</b>, then send Ping.</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'NON-STRICT': [], 'OK': [('message', 'Hello, world!', False)]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: QWLCYu7pAj1LS5HIqlz7mg==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: ctI9BeFJRgdrhJO7B0QsoaPVOkI=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">False</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td><td>131</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>2</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td><td>8</td></tr>
|
||||
<tr class="stats_row"><td>19</td><td>1</td><td>19</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>5</td><td>240</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>1</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>13</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>4</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2051574c43</pre>
|
||||
<pre class="wirelog_tx_octets"> 59753770416a314c53354849716c7a376d673d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20637449</pre>
|
||||
<pre class="wirelog_rx_octets"> 394265464a52676472684a4f37423051736f6150564f6b493d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=24435521, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Hello, world!</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 818d244355216c26394d4b6f75564b31394505</pre>
|
||||
<pre class="wirelog_tx_frame">004 TX FRAME : OPCODE=13, FIN=True, RSV=0, MASK=b81daa6e, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">005 TX OCTETS: 8d80b81daa6e</pre>
|
||||
<pre class="wirelog_tx_frame">006 TX FRAME : OPCODE=9, FIN=True, RSV=0, MASK=a52d50b5, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">007 TX OCTETS: 8980a52d50b5</pre>
|
||||
<pre class="wirelog_kill_after">008 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">009 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">010 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tx_frame">011 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=1564e876, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">012 TX OCTETS: 88821564e876168c</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">013 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,306 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_non_strict">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 4.2.4</b></span> : Non-Strict - <span style="font-size: 0.9em;"><b>3</b> ms @ 2012-02-04T15:41:06Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send small text message, then send frame with reserved control <b>Opcode = 14</b> and non-empty payload, then send Ping.</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>Echo for first message is received, but then connection is failed immediately, since reserved opcode frame is used. A Pong is not received.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'NON-STRICT': [], 'OK': [('message', 'Hello, world!', False)]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: Kh3b3ltcf0ADlsGo2EnkTg==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: 1v44L9ZzUJ6KHZJ5yJYvz+wLNC4=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">False</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td><td>131</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td><td>8</td></tr>
|
||||
<tr class="stats_row"><td>19</td><td>2</td><td>38</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>5</td><td>253</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>1</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>14</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>4</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a204b683362</pre>
|
||||
<pre class="wirelog_tx_octets"> 336c7463663041446c73476f32456e6b54673d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20317634</pre>
|
||||
<pre class="wirelog_rx_octets"> 344c395a7a554a364b485a4a35794a59767a2b774c4e43343d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=4a1e0f77, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Hello, world!</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 818d4a1e0f77027b631b25322f00256c63136b</pre>
|
||||
<pre class="wirelog_tx_frame">004 TX FRAME : OPCODE=14, FIN=True, RSV=0, MASK=8a729523, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Hello, world!</pre>
|
||||
<pre class="wirelog_tx_octets">005 TX OCTETS: 8e8d8a729523c217f94fe55eb554e500f947ab</pre>
|
||||
<pre class="wirelog_tx_frame">006 TX FRAME : OPCODE=9, FIN=True, RSV=0, MASK=158f23ed, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">007 TX OCTETS: 8980158f23ed</pre>
|
||||
<pre class="wirelog_kill_after">008 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">009 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">010 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tx_frame">011 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=9ff83713, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">012 TX OCTETS: 88829ff837139c10</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">013 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.20.1</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:19Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í €<br>eda080</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '?', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: 8hQi20KtwNAl024fziMiZA==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: 2vQQWjYeEC/rYsn25QkOUP1J64E=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>3</td><td>1</td><td>3</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>134</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td><td>9</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>228</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2038685169</pre>
|
||||
<pre class="wirelog_tx_octets"> 32304b74774e416c303234667a694d695a413d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20327651</pre>
|
||||
<pre class="wirelog_rx_octets"> 51576a596545432f7259736e3235516b4f5550314a3634453d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=09392f03, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í €</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 818309392f03e499af</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 81013f</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ?</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=1a762475, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c1a762475199f631a731843555b01450c</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.20.2</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:19Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í¿<br>edadbf</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '?', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: TIQj7T90U3MBd7UDV/Tkeg==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: mKV6+d9BjSDvtA484tge96+03HE=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>3</td><td>1</td><td>3</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>134</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td><td>9</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>228</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a205449516a</pre>
|
||||
<pre class="wirelog_tx_octets"> 3754393055334d4264375544562f546b65673d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a206d4b56</pre>
|
||||
<pre class="wirelog_rx_octets"> 362b6439426a534476744134383474676539362b303348453d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=5711da46, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í¿</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 81835711da46babc65</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 81013f</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ?</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=d65c7a61, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888cd65c7a61d5b53d0ebf321d41972b1b18</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.20.3</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:20Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í®€<br>edae80</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '?', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: 0CmjM4vLTi5KG77RquVjKQ==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: rsX/MnJlDY6UxbWeADBpCfev0IQ=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>3</td><td>1</td><td>3</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>134</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td><td>9</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>228</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2030436d6a</pre>
|
||||
<pre class="wirelog_tx_octets"> 4d34764c5469354b473737527175566a4b513d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20727358</pre>
|
||||
<pre class="wirelog_rx_octets"> 2f4d6e4a6c445936557862576541444270436665763049513d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=ccfdb4e5, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í®€</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 8183ccfdb4e5215334</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 81013f</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ?</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=459bc411, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c459bc4114672837e2cf5a33104eca568</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.20.4</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:20Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í¯¿<br>edafbf</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '?', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: 9Xx5xE9r30LfukV3JZQxMg==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: IsjbPBLW/m9/EBoONc42PJANrK0=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>3</td><td>1</td><td>3</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>134</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td><td>9</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>228</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2039587835</pre>
|
||||
<pre class="wirelog_tx_octets"> 7845397233304c66756b56334a5a51784d673d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a2049736a</pre>
|
||||
<pre class="wirelog_rx_octets"> 6250424c572f6d392f45426f4f4e633432504a414e724b303d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=a58665e4, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í¯¿</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 8183a58665e44829da</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 81013f</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ?</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=3ec8dc0c, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c3ec8dc0c3d219b6357a6bb2c7fbfbd75</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.20.5</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:21Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í°€<br>edb080</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '?', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: kaPj4eOJvtYO/p1+SUWjFA==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: gjAUZ7QN+QSE+ENjYD8MxlmR9fg=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>3</td><td>1</td><td>3</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>134</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td><td>9</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>228</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a206b61506a</pre>
|
||||
<pre class="wirelog_tx_octets"> 34654f4a7674594f2f70312b5355576a46413d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20676a41</pre>
|
||||
<pre class="wirelog_rx_octets"> 555a37514e2b5153452b454e6a5944384d786c6d523966673d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=a90dd396, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í°€</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 8183a90dd39644bd53</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 81013f</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ?</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=e0ae2699, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888ce0ae2699e34761f689c041b9a1d947e0</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.20.6</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:21Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í¾€<br>edbe80</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '?', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: D3AO5HGDbIPBkfq4kMmnpA==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: hv3czFZ5FFyETGd0ABBqDf9iiMs=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>3</td><td>1</td><td>3</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>134</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td><td>9</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>228</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a204433414f</pre>
|
||||
<pre class="wirelog_tx_octets"> 35484744624950426b6671346b4d6d6e70413d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20687633</pre>
|
||||
<pre class="wirelog_rx_octets"> 637a465a3546467945544764304142427144663969694d733d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=5bd63f0e, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í¾€</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 81835bd63f0eb668bf</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 81013f</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ?</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=022b8ad0, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c022b8ad001c2cdbf6b45edf0435ceba9</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.20.7</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:22Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í¿¿<br>edbfbf</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '?', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: W6Be3rM7Egj4hNIscD5zEA==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: G36lsKHfg04ueUxN92iO/nJvKO8=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>3</td><td>1</td><td>3</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>134</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>9</td><td>1</td><td>9</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>228</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2057364265</pre>
|
||||
<pre class="wirelog_tx_octets"> 33724d3745676a34684e49736344357a45413d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20473336</pre>
|
||||
<pre class="wirelog_rx_octets"> 6c734b4866673034756555784e3932694f2f6e4a764b4f383d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=af65e8a8, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í¿¿</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 8183af65e8a842da57</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 81013f</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ?</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=87dcfe76, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c87dcfe768435b919eeb29956c6ab9f0f</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.21.1</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:22Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í €í°€<br>eda080edb080</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xf0\x90\x80\x80', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: 4+A0RTBdoXG1pq8BzP6v7A==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: hOGfIW+mXTQpFxEAAzhJQZBq3D0=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>137</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>231</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a20342b4130</pre>
|
||||
<pre class="wirelog_tx_octets"> 525442646f584731707138427a50367637413d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20684f47</pre>
|
||||
<pre class="wirelog_rx_octets"> 6649572b6d5854517046784541417a684a515a42713344303d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=fa43fe25, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í €í°€</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 8186fa43fe2517e37ec84ac3</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 8104f0908080</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ð<>€€</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=9d22e55b, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c9d22e55b9ecba234f44c827bdc558422</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.21.2</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:23Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í €í¿¿<br>eda080edbfbf</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xf0\x90\x8f\xbf', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: iPuOK+BgWhbmEfm05SYBXA==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: nFtyv6PfaFkNa7HnveKzhe3IZ30=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>137</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>231</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a206950754f</pre>
|
||||
<pre class="wirelog_tx_octets"> 4b2b42675768626d45666d303553594258413d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a206e4674</pre>
|
||||
<pre class="wirelog_rx_octets"> 797636506661466b4e6137486e76654b7a686533495a33303d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=3cf02dbc, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í €í¿¿</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 81863cf02dbcd150ad51834f</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 8104f0908fbf</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ð<><C3B0>¿</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=28c01a4b, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c28c01a4b2b295d2441ae7d6b69b77b32</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.21.3</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:23Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í¿í°€<br>edadbfedb080</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xf3\xaf\xb0\x80', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: IxlOTYbZXdgzf0DqE51BTQ==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: /BBFWqSURVgKaSzwpkh/xBflPdw=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>137</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>231</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2049786c4f</pre>
|
||||
<pre class="wirelog_tx_octets"> 5459625a5864677a663044714535314254513d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a202f4242</pre>
|
||||
<pre class="wirelog_rx_octets"> 46577153555256674b61537a77706b682f7842666c5064773d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=826ee366, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í¿í°€</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 8186826ee3666fc35c8b32ee</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 8104f3afb080</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ó¯°€</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=bebc7f7d, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888cbebc7f7dbd553812d7d2185dffcb1e04</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.21.4</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:24Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>í¿í¿¿<br>edadbfedbfbf</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xf3\xaf\xbf\xbf', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: 2dVkikWX/+l/pkvKSrgYMg==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: FZu8BS6bWe/A9bdToW/oxTah8fI=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>137</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>231</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a203264566b</pre>
|
||||
<pre class="wirelog_tx_octets"> 696b57582f2b6c2f706b764b537267594d673d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20465a75</pre>
|
||||
<pre class="wirelog_rx_octets"> 384253366257652f41396264546f572f6f785461683866493d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=0a2a18c5, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í¿í¿¿</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 81860a2a18c5e787a728b595</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 8104f3afbfbf</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> 󯿿</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=16433ff0, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c16433ff015aa789f7f2d58d057345e89</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.21.5</b></span> : Fail - <span style="font-size: 0.9em;"><b>502</b> ms @ 2012-02-04T15:41:24Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>󰀀<br>edae80edb080</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xf3\xb0\x80\x80', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: PM0Ykka0trj5Ks54acrZRw==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: 0rB4RXL5G/swTTfmBlmWgyUkAZQ=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>137</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>231</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a20504d3059</pre>
|
||||
<pre class="wirelog_tx_octets"> 6b6b613074726a354b7335346163725a52773d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20307242</pre>
|
||||
<pre class="wirelog_rx_octets"> 3452584c35472f73775454666d426c6d576779556b415a513d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=a4035bc2, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> 󰀀</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 8186a4035bc249addb2f1483</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 8104f3b08080</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ó°€€</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=04cc48c4, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c04cc48c407250fab6da22fe445bb29bd</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.21.6</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:25Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>󰏿<br>edae80edbfbf</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xf3\xb0\x8f\xbf', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: 3HjHLxTtDIUsMmTglsvCEQ==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: jlA618sXEEsPiOOzZdRjjkUAls8=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>137</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>231</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2033486a48</pre>
|
||||
<pre class="wirelog_tx_octets"> 4c785474444955734d6d54676c73764345513d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a206a6c41</pre>
|
||||
<pre class="wirelog_rx_octets"> 363138735845457350694f4f7a5a64526a6a6b55416c73383d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=76c7ad31, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> 󰏿</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 818676c7ad319b692ddcc978</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 8104f3b08fbf</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ó°<C3B3>¿</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=e1eb5d93, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888ce1eb5d93e2021afc88853ab3a09c3cea</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.21.7</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:25Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>􏰀<br>edafbfedb080</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xf4\x8f\xb0\x80', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: ZIp0mbBtxEyXUFyOCJ+3+Q==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: DwOv/co2P4JILRERO9r1utPeUz4=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>137</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>231</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a205a497030</pre>
|
||||
<pre class="wirelog_tx_octets"> 6d624274784579585546794f434a2b332b513d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a2044774f</pre>
|
||||
<pre class="wirelog_rx_octets"> 762f636f3250344a494c5245524f39723175745065557a343d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=2ae4c89f, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> 􏰀</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 81862ae4c89fc74b77729a64</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 8104f48fb080</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ô<>°€</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=367f674f, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c367f674f359620205f11006f77080636</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.21.8</b></span> : Fail - <span style="font-size: 0.9em;"><b>501</b> ms @ 2012-02-04T15:41:26Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is not valid UTF-8 in one fragment.<br><br>MESSAGE:<br>􏿿<br>edafbfedbfbf</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xf4\x8f\xbf\xbf', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: OaUcFV4MSdP7nxBXK+S38Q==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: j0hDBbytdKrxduaM2lyuEGp5b+M=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>137</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>231</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a204f615563</pre>
|
||||
<pre class="wirelog_tx_octets"> 4656344d536450376e7842584b2b533338513d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a206a3068</pre>
|
||||
<pre class="wirelog_rx_octets"> 4442627974644b72786475614d326c797545477035622b4d3d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=7c269b4e, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> 􏿿</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 81867c269b4e918924a3c399</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 8104f48fbfbf</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> ô<>¿¿</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=9603c3bf, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c9603c3bf95ea84d0ff6da49fd774a2c6</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,304 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.3.1</b></span> : Fail - <span style="font-size: 0.9em;"><b>1001</b> ms @ 2012-02-04T15:41:08Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send invalid UTF-8 text message unfragmented.<br><br>MESSAGE:<br>Îºá½¹ÏƒÎ¼Îµí €edited<br>cebae1bdb9cf83cebcceb5eda080656469746564</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xce\xba\xe1\xbd\xb9\xcf\x83\xce\xbc\xce\xb5?edited', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: giRxaADMiudnciYu2X3Ntw==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: VbnTiF6FgXdncLIxXEj+z/bK0y8=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>20</td><td>1</td><td>20</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>151</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>26</td><td>1</td><td>26</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>245</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2067695278</pre>
|
||||
<pre class="wirelog_tx_octets"> 6141444d6975646e636959753258334e74773d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a2056626e</pre>
|
||||
<pre class="wirelog_rx_octets"> 54694636466758646e634c497858456a2b7a2f624b3079383d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=35445993, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Îºá½¹ÏƒÎ¼Îµí €edited</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 819435445993fbfeb82e8c8bda5d898aec7e95c43cf75c303cf7</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 8112cebae1bdb9cf83cebcceb53f656469746564</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> κόσμε?edited</pre>
|
||||
<pre class="wirelog_kill_after">007 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=79a473a8, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 888c79a473a87a4d34c710ca148838d312d1</pre>
|
||||
<pre class="wirelog_rx_octets">010 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">011 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">012 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,365 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_failed">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.3.2</b></span> : Fail - <span style="font-size: 0.9em;"><b>1002</b> ms @ 2012-02-04T15:41:09Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send invalid UTF-8 text message in fragments of 1 octet, resulting in frames ending on positions which are not code point ends.<br><br>MESSAGE:<br>Îºá½¹ÏƒÎ¼Îµí €edited<br>cebae1bdb9cf83cebcceb5eda080656469746564</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The connection is failed immediately, since the payload is not valid UTF-8.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events differ from any expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': []}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xce\xba\xe1\xbd\xb9\xcf\x83\xce\xbc\xce\xb5?edited', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>The connection was failed by the wrong endpoint (FAILED)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: +0fzXkyvkSjPhQlQQX66GA==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: LgO0/Am1g9xEfcTU2myHtnWvixQ=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">True</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1001</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">Going Away</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>20</td><td>1</td><td>20</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>151</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>1</td><td>6</td></tr>
|
||||
<tr class="stats_row"><td>7</td><td>20</td><td>140</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>23</td><td>365</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>0</td><td>20</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>22</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a202b30667a</pre>
|
||||
<pre class="wirelog_tx_octets"> 586b79766b536a5068516c515158363647413d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a204c674f</pre>
|
||||
<pre class="wirelog_rx_octets"> 302f416d316739784566635455326d7948746e57766978513d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=False, RSV=0, MASK=b2f15302, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Î</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 0181b2f153027c</pre>
|
||||
<pre class="wirelog_tx_frame">004 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=c90d6517, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> º</pre>
|
||||
<pre class="wirelog_tx_octets">005 TX OCTETS: 0081c90d651773</pre>
|
||||
<pre class="wirelog_tx_frame">006 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=cd667264, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> á</pre>
|
||||
<pre class="wirelog_tx_octets">007 TX OCTETS: 0081cd6672642c</pre>
|
||||
<pre class="wirelog_tx_frame">008 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=024afe11, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> ½</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 0081024afe11bf</pre>
|
||||
<pre class="wirelog_tx_frame">010 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=80b6c518, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> ¹</pre>
|
||||
<pre class="wirelog_tx_octets">011 TX OCTETS: 008180b6c51839</pre>
|
||||
<pre class="wirelog_tx_frame">012 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=62a7724e, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Ï</pre>
|
||||
<pre class="wirelog_tx_octets">013 TX OCTETS: 008162a7724ead</pre>
|
||||
<pre class="wirelog_tx_frame">014 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=42f77b2b, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> ƒ</pre>
|
||||
<pre class="wirelog_tx_octets">015 TX OCTETS: 008142f77b2bc1</pre>
|
||||
<pre class="wirelog_tx_frame">016 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=c1f0a0f1, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Î</pre>
|
||||
<pre class="wirelog_tx_octets">017 TX OCTETS: 0081c1f0a0f10f</pre>
|
||||
<pre class="wirelog_tx_frame">018 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=7f9e2838, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> ¼</pre>
|
||||
<pre class="wirelog_tx_octets">019 TX OCTETS: 00817f9e2838c3</pre>
|
||||
<pre class="wirelog_tx_frame">020 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=06f47c2c, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> Î</pre>
|
||||
<pre class="wirelog_tx_octets">021 TX OCTETS: 008106f47c2cc8</pre>
|
||||
<pre class="wirelog_tx_frame">022 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=e139a1e1, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> µ</pre>
|
||||
<pre class="wirelog_tx_octets">023 TX OCTETS: 0081e139a1e154</pre>
|
||||
<pre class="wirelog_tx_frame">024 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=d00820e1, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> í</pre>
|
||||
<pre class="wirelog_tx_octets">025 TX OCTETS: 0081d00820e13d</pre>
|
||||
<pre class="wirelog_tx_frame">026 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=a93ed31b, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> </pre>
|
||||
<pre class="wirelog_tx_octets">027 TX OCTETS: 0081a93ed31b09</pre>
|
||||
<pre class="wirelog_tx_frame">028 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=86fe9fa7, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> €</pre>
|
||||
<pre class="wirelog_tx_octets">029 TX OCTETS: 008186fe9fa706</pre>
|
||||
<pre class="wirelog_tx_frame">030 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=da4f747e, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> e</pre>
|
||||
<pre class="wirelog_tx_octets">031 TX OCTETS: 0081da4f747ebf</pre>
|
||||
<pre class="wirelog_tx_frame">032 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=0906c2df, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> d</pre>
|
||||
<pre class="wirelog_tx_octets">033 TX OCTETS: 00810906c2df6d</pre>
|
||||
<pre class="wirelog_tx_frame">034 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=9c8128e5, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> i</pre>
|
||||
<pre class="wirelog_tx_octets">035 TX OCTETS: 00819c8128e5f5</pre>
|
||||
<pre class="wirelog_tx_frame">036 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=c0b043ed, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> t</pre>
|
||||
<pre class="wirelog_tx_octets">037 TX OCTETS: 0081c0b043edb4</pre>
|
||||
<pre class="wirelog_tx_frame">038 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=1723209b, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> e</pre>
|
||||
<pre class="wirelog_tx_octets">039 TX OCTETS: 00811723209b72</pre>
|
||||
<pre class="wirelog_tx_frame">040 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=a1194c70, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> d</pre>
|
||||
<pre class="wirelog_tx_octets">041 TX OCTETS: 0081a1194c70c5</pre>
|
||||
<pre class="wirelog_tx_frame">042 TX FRAME : OPCODE=0, FIN=True, RSV=0, MASK=73e98929, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">043 TX OCTETS: 808073e98929</pre>
|
||||
<pre class="wirelog_kill_after">044 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">045 RX OCTETS: 8112cebae1bdb9cf83cebcceb53f656469746564</pre>
|
||||
<pre class="wirelog_rx_frame">046 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> κόσμε?edited</pre>
|
||||
<pre class="wirelog_kill_after">047 FAILING CONNECTION</pre>
|
||||
<pre class="wirelog_tx_frame">048 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=52a40872, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> éGoing Away</pre>
|
||||
<pre class="wirelog_tx_octets">049 TX OCTETS: 888c52a40872514d4f1d3bca6f5213d3690b</pre>
|
||||
<pre class="wirelog_rx_octets">050 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">051 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">052 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,318 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_non_strict">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.4.1</b></span> : Non-Strict - <span style="font-size: 0.9em;"><b>2004</b> ms @ 2012-02-04T15:41:10Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>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 0x11000 encoded as in the UTF-8 integer encoding scheme, but the codepoint is invalid (out of range).
|
||||
<br><br>MESSAGE PARTS:<br>
|
||||
PART1 = κόσμε (cebae1bdb9cf83cebcceb5)<br>
|
||||
PART2 = ô<>€€ (f4908080)<br>
|
||||
PART3 = edited (656469746564)<br>
|
||||
</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>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.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')], 'OK': [('timeout', 'A')]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('timeout', 'A'), ('timeout', 'B')]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: UpAkZ//RWLrHfexyOMj3mw==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: HUMfuAwHoYZqlf78+bKZQrSw5t0=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">False</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td><td>131</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td><td>8</td></tr>
|
||||
<tr class="stats_row"><td>10</td><td>1</td><td>10</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>17</td><td>1</td><td>17</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>5</td><td>248</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>1</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>0</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>4</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a205570416b</pre>
|
||||
<pre class="wirelog_tx_octets"> 5a2f2f52574c7248666578794f4d6a336d773d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a2048554d</pre>
|
||||
<pre class="wirelog_rx_octets"> 66754177486f595a716c6637382b624b5a517253773574303d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=False, RSV=0, MASK=7ae1bfb5, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> κόσμε</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 018b7ae1bfb5b45b5e08c32e3c7bc62f0a</pre>
|
||||
<pre class="wirelog_delay">004 DELAY 1.000000 sec for TAG A</pre>
|
||||
<pre class="wirelog_delay">005 DELAY TIMEOUT on TAG A</pre>
|
||||
<pre class="wirelog_tx_frame">006 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=98cbbec9, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> ô<>€€</pre>
|
||||
<pre class="wirelog_tx_octets">007 TX OCTETS: 008498cbbec96c5b3e49</pre>
|
||||
<pre class="wirelog_delay">008 DELAY 1.000000 sec for TAG B</pre>
|
||||
<pre class="wirelog_delay">009 DELAY TIMEOUT on TAG B</pre>
|
||||
<pre class="wirelog_tx_frame">010 TX FRAME : OPCODE=0, FIN=True, RSV=0, MASK=61ebbee3, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> edited</pre>
|
||||
<pre class="wirelog_tx_octets">011 TX OCTETS: 808661ebbee3048fd797048f</pre>
|
||||
<pre class="wirelog_kill_after">012 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">013 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">014 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tx_frame">015 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=6bde347c, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">016 TX OCTETS: 88826bde347c6836</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">017 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,316 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_non_strict">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.4.2</b></span> : Non-Strict - <span style="font-size: 0.9em;"><b>2002</b> ms @ 2012-02-04T15:41:12Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Same as Case 6.4.1, but in 2nd frame, we send only up to and including the octet making the complete payload invalid.
|
||||
<br><br>MESSAGE PARTS:<br>
|
||||
PART1 = κόσμεô (cebae1bdb9cf83cebcceb5f4)<br>
|
||||
PART2 = <20> (90)<br>
|
||||
PART3 = €€edited (8080656469746564)<br>
|
||||
</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>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.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')], 'OK': [('timeout', 'A')]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('timeout', 'A'), ('timeout', 'B')]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: Otomp9wsvzxBkXQi+T/5PQ==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: ATAg9VNP6aeymyNC0M0XC/eIdaU=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">False</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td><td>131</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>7</td><td>1</td><td>7</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td><td>8</td></tr>
|
||||
<tr class="stats_row"><td>14</td><td>1</td><td>14</td></tr>
|
||||
<tr class="stats_row"><td>18</td><td>1</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>5</td><td>248</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>1</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>0</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>4</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a204f746f6d</pre>
|
||||
<pre class="wirelog_tx_octets"> 70397773767a78426b5851692b542f3550513d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20415441</pre>
|
||||
<pre class="wirelog_rx_octets"> 6739564e50366165796d794e43304d3058432f65496461553d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=False, RSV=0, MASK=a71060dd, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> κόσμεô</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 018ca71060dd69aa81601edfe3131bded529</pre>
|
||||
<pre class="wirelog_delay">004 DELAY 1.000000 sec for TAG A</pre>
|
||||
<pre class="wirelog_delay">005 DELAY TIMEOUT on TAG A</pre>
|
||||
<pre class="wirelog_tx_frame">006 TX FRAME : OPCODE=0, FIN=False, RSV=0, MASK=0dd9f64a, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> <20></pre>
|
||||
<pre class="wirelog_tx_octets">007 TX OCTETS: 00810dd9f64a9d</pre>
|
||||
<pre class="wirelog_delay">008 DELAY 1.000000 sec for TAG B</pre>
|
||||
<pre class="wirelog_delay">009 DELAY TIMEOUT on TAG B</pre>
|
||||
<pre class="wirelog_tx_frame">010 TX FRAME : OPCODE=0, FIN=True, RSV=0, MASK=ac34c7f6, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> €€edited</pre>
|
||||
<pre class="wirelog_tx_octets">011 TX OCTETS: 8088ac34c7f62cb4a292c540a292</pre>
|
||||
<pre class="wirelog_kill_after">012 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">013 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">014 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tx_frame">015 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=a38e00e8, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">016 TX OCTETS: 8882a38e00e8a066</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">017 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,312 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_non_strict">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.4.3</b></span> : Non-Strict - <span style="font-size: 0.9em;"><b>2003</b> ms @ 2012-02-04T15:41:14Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Same as Case 6.4.1, but we send message not in 3 frames, but in 3 chops of the same message frame.
|
||||
<br><br>MESSAGE PARTS:<br>
|
||||
PART1 = κόσμε (cebae1bdb9cf83cebcceb5)<br>
|
||||
PART2 = ô<>€€ (f4908080)<br>
|
||||
PART3 = edited (656469746564)<br>
|
||||
</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>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.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')], 'OK': [('timeout', 'A')]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('timeout', 'A'), ('timeout', 'B')]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: m117Mgw+RaqCkrbu2OKKcg==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: gsC/JxGAgNUyZuw4sE8CAkazaoY=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">False</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td><td>131</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>4</td><td>1</td><td>4</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>3</td><td>18</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td><td>8</td></tr>
|
||||
<tr class="stats_row"><td>11</td><td>1</td><td>11</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>7</td><td>242</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>1</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>0</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a206d313137</pre>
|
||||
<pre class="wirelog_tx_octets"> 4d67772b526171436b726275324f4b4b63673d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20677343</pre>
|
||||
<pre class="wirelog_rx_octets"> 2f4a784741674e55795a75773473453843416b617a616f593d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_octets">002 TX OCTETS: 0195fffcbd31</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 31465c8c46333eff433208</pre>
|
||||
<pre class="wirelog_delay">004 DELAY 1.000000 sec for TAG A</pre>
|
||||
<pre class="wirelog_delay">005 DELAY TIMEOUT on TAG A</pre>
|
||||
<pre class="wirelog_tx_octets">006 TX OCTETS: c56f7c3d</pre>
|
||||
<pre class="wirelog_delay">007 DELAY 1.000000 sec for TAG B</pre>
|
||||
<pre class="wirelog_delay">008 DELAY TIMEOUT on TAG B</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 549b95c9549b</pre>
|
||||
<pre class="wirelog_tx_frame">010 TX FRAME : OPCODE=0, FIN=True, RSV=0, MASK=3da3495d, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">011 TX OCTETS: 80803da3495d</pre>
|
||||
<pre class="wirelog_kill_after">012 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">013 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">014 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tx_frame">015 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=c041f88e, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">016 TX OCTETS: 8882c041f88ec3a9</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">017 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,312 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_non_strict">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.4.4</b></span> : Non-Strict - <span style="font-size: 0.9em;"><b>2003</b> ms @ 2012-02-04T15:41:16Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Same as Case 6.4.2, but we send message not in 3 frames, but in 3 chops of the same message frame.
|
||||
<br><br>MESSAGE PARTS:<br>
|
||||
PART1 = κόσμεô (cebae1bdb9cf83cebcceb5f4)<br>
|
||||
PART2 = <20> (90)<br>
|
||||
PART3 = ()<br>
|
||||
</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>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.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'NON-STRICT': [('timeout', 'A'), ('timeout', 'B')], 'OK': [('timeout', 'A')]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('timeout', 'A'), ('timeout', 'B')]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: XEU6Kj9j1CXrVXerZqPZug==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: m+kDAJTxrTpxSNSgA+UFnbv9xr8=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">False</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td><td>131</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>6</td><td>2</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>2</td><td>16</td></tr>
|
||||
<tr class="stats_row"><td>12</td><td>1</td><td>12</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>7</td><td>242</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>1</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>0</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a2058455536</pre>
|
||||
<pre class="wirelog_tx_octets"> 4b6a396a31435872565865725a71505a75673d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a206d2b6b</pre>
|
||||
<pre class="wirelog_rx_octets"> 44414a547872547078534e5367412b55466e6276397872383d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_octets">002 TX OCTETS: 019564bd3c28</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: aa07dd95dd72bfe6d87389dc</pre>
|
||||
<pre class="wirelog_delay">004 DELAY 1.000000 sec for TAG A</pre>
|
||||
<pre class="wirelog_delay">005 DELAY TIMEOUT on TAG A</pre>
|
||||
<pre class="wirelog_tx_octets">006 TX OCTETS: f4</pre>
|
||||
<pre class="wirelog_delay">007 DELAY 1.000000 sec for TAG B</pre>
|
||||
<pre class="wirelog_delay">008 DELAY TIMEOUT on TAG B</pre>
|
||||
<pre class="wirelog_tx_octets">009 TX OCTETS: 3dbc4d00d4484d00</pre>
|
||||
<pre class="wirelog_tx_frame">010 TX FRAME : OPCODE=0, FIN=True, RSV=0, MASK=3a12500f, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_octets">011 TX OCTETS: 80803a12500f</pre>
|
||||
<pre class="wirelog_kill_after">012 FAIL CONNECTION AFTER 1.000000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">013 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">014 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tx_frame">015 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=b230610d, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">016 TX OCTETS: 8882b230610db1d8</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">017 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,303 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style lang="css">
|
||||
body {
|
||||
background-color: #F4F4F4;
|
||||
color: #333;
|
||||
font-family: Segoe UI,Tahoma,Arial,Verdana,sans-serif;
|
||||
}
|
||||
|
||||
p#intro {
|
||||
font-family: Cambria,serif;
|
||||
font-size: 1.1em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p#intro a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block {
|
||||
background-color: #e0e0e0;
|
||||
padding: 16px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
p.case_text_block {
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
p.case_desc {
|
||||
}
|
||||
|
||||
p.case_expect {
|
||||
}
|
||||
|
||||
p.case_outcome {
|
||||
}
|
||||
|
||||
p.case_closing_beh {
|
||||
}
|
||||
|
||||
pre.http_dump {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
color: #333;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 16px;
|
||||
margin: 4px 20px;
|
||||
}
|
||||
|
||||
span.case_pickle {
|
||||
font-family: Consolas, "Courier New", monospace;
|
||||
font-size: 0.7em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p#case_result,p#close_result {
|
||||
border-radius: 10px;
|
||||
background-color: #e8e2d1;
|
||||
padding: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
a.up {
|
||||
float: right;
|
||||
border-radius: 16px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
margin-right: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 2px;
|
||||
background-color: #666;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
a.up:visited {
|
||||
}
|
||||
|
||||
a.up:hover {
|
||||
background-color: #028ec9;
|
||||
}
|
||||
</style>
|
||||
<style lang="css">
|
||||
p.case {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin: 12px 20px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
p.case_ok {
|
||||
background-color: #0a0;
|
||||
}
|
||||
|
||||
p.case_non_strict, p.case_no_close {
|
||||
background-color: #9a0;
|
||||
}
|
||||
|
||||
p.case_info {
|
||||
background-color: #4095BF;
|
||||
}
|
||||
|
||||
p.case_failed {
|
||||
background-color: #900;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
margin-left: 80px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
td
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 0.8em;
|
||||
border: 1px #fff solid;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.stats_header {
|
||||
color: #eee;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
tr.stats_row {
|
||||
color: #000;
|
||||
background-color: #fc3;
|
||||
}
|
||||
|
||||
tr.stats_total {
|
||||
color: #fff;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
div#wirelog {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
pre.wirelog_rx_octets {color: #aaa; margin: 0; background-color: #060; padding: 2px;}
|
||||
pre.wirelog_tx_octets {color: #aaa; margin: 0; background-color: #600; padding: 2px;}
|
||||
pre.wirelog_tx_octets_sync {color: #aaa; margin: 0; background-color: #606; padding: 2px;}
|
||||
|
||||
pre.wirelog_rx_frame {color: #fff; margin: 0; background-color: #0a0; padding: 2px;}
|
||||
pre.wirelog_tx_frame {color: #fff; margin: 0; background-color: #a00; padding: 2px;}
|
||||
pre.wirelog_tx_frame_sync {color: #fff; margin: 0; background-color: #a0a; padding: 2px;}
|
||||
|
||||
pre.wirelog_delay {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
pre.wirelog_kill_after {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
|
||||
pre.wirelog_tcp_closed_by_me {color: #fff; margin: 0; background-color: #008; padding: 2px;}
|
||||
pre.wirelog_tcp_closed_by_peer {color: #fff; margin: 0; background-color: #000; padding: 2px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<br/>
|
||||
<center><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report.png" border="0" width="820" height="46" alt="WebSockets Protocol Test Report"></img></a></center>
|
||||
<center><a href="http://www.tavendo.de/autobahn" title="Autobahn WebSockets"><img src="http://www.tavendo.de/static/autobahn/ws_protocol_test_report_autobahn.png" border="0" width="300" height="68" alt="Autobahn WebSockets"></img></a></center>
|
||||
<br/>
|
||||
<p class="case case_ok">tootallnate/websocket - <span style="font-size: 1.3em;"><b>Case 6.5.1</b></span> : Pass - <span style="font-size: 0.9em;"><b>2</b> ms @ 2012-02-04T15:41:18Z</a></p>
|
||||
<p class="case_text_block case_desc"><b>Case Description</b><br/><br/>Send a text message with payload which is valid UTF-8 in one fragment.<br><br>MESSAGE:<br>κόσμε<br>cebae1bdb9cf83cebcceb5</p>
|
||||
<p class="case_text_block case_expect"><b>Case Expectation</b><br/><br/>The message is echo'ed back to us.</p>
|
||||
|
||||
<p class="case_text_block case_outcome">
|
||||
<b>Case Outcome</b><br/><br/>Actual events match at least one expected.<br/><br/>
|
||||
<i>Expected:</i><br/><span class="case_pickle">{'OK': [('message', '\xce\xba\xe1\xbd\xb9\xcf\x83\xce\xbc\xce\xb5', False)]}</span><br/><br/>
|
||||
<i>Observed:</i><br><span class="case_pickle">[('message', '\xce\xba\xe1\xbd\xb9\xcf\x83\xce\xbc\xce\xb5', False)]</span>
|
||||
</p>
|
||||
<p class="case_text_block case_closing_beh"><b>Case Closing Behavior</b><br/><br/>Connection was properly closed (OK)</p>
|
||||
<br/><hr/>
|
||||
<h2>Opening Handshake</h2>
|
||||
<pre class="http_dump">GET / HTTP/1.1
|
||||
User-Agent: AutobahnWebSocketsTestSuite/0.4.10
|
||||
Host: localhost:9003
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Key: Ntl0ifPncXw3kcnMyqYI6A==
|
||||
Sec-WebSocket-Version: 13</pre>
|
||||
<pre class="http_dump">HTTP/1.1 101 Switching Protocols
|
||||
Upgrade: websocket
|
||||
Connection: Upgrade
|
||||
Sec-WebSocket-Accept: EOTzOwYD8bhNnxS8IX/Rcx+8Ess=</pre>
|
||||
<br/><hr/>
|
||||
<h2>Closing Behavior</h2>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Key</td><td class="left">Value</td><td class="left">Description</td></tr>
|
||||
<tr class="stats_row"><td>isServer</td><td class="left">False</td><td class="left">True, iff I (the fuzzer) am a server, and the peer is a client.</td></tr>
|
||||
<tr class="stats_row"><td>closedByMe</td><td class="left">True</td><td class="left">True, iff I have initiated closing handshake (that is, did send close first).</td></tr>
|
||||
<tr class="stats_row"><td>failedByMe</td><td class="left">False</td><td class="left">True, iff I have failed the WS connection (i.e. due to protocol error). Failing can be either by initiating closing handshake or brutal drop TCP.</td></tr>
|
||||
<tr class="stats_row"><td>droppedByMe</td><td class="left">False</td><td class="left">True, iff I dropped the TCP connection.</td></tr>
|
||||
<tr class="stats_row"><td>wasClean</td><td class="left">True</td><td class="left">True, iff full WebSockets closing handshake was performed (close frame sent and received) _and_ the server dropped the TCP (which is its responsibility).</td></tr>
|
||||
<tr class="stats_row"><td>wasNotCleanReason</td><td class="left">None</td><td class="left">When wasClean == False, the reason what happened.</td></tr>
|
||||
<tr class="stats_row"><td>wasServerConnectionDropTimeout</td><td class="left">False</td><td class="left">When we are a client, and we expected the server to drop the TCP, but that didn't happen in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>wasCloseHandshakeTimeout</td><td class="left">False</td><td class="left">When we initiated a closing handshake, but the peer did not respond in time, this gets True.</td></tr>
|
||||
<tr class="stats_row"><td>localCloseCode</td><td class="left">1000</td><td class="left">The close code I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>localCloseReason</td><td class="left">None</td><td class="left">The close reason I sent in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseCode</td><td class="left">None</td><td class="left">The close code the peer sent me in close frame (if any).</td></tr>
|
||||
<tr class="stats_row"><td>remoteCloseReason</td><td class="left">None</td><td class="left">The close reason the peer sent me in close frame (if any).</td></tr>
|
||||
</table> <br/><hr/>
|
||||
<h2>Wire Statistics</h2>
|
||||
<h3>Octets Received by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>2</td><td>1</td><td>2</td></tr>
|
||||
<tr class="stats_row"><td>13</td><td>1</td><td>13</td></tr>
|
||||
<tr class="stats_row"><td>129</td><td>1</td><td>129</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>144</td></tr>
|
||||
</table>
|
||||
<h3>Octets Transmitted by Chop Size</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Chop Size</td><td>Count</td><td>Octets</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td><td>8</td></tr>
|
||||
<tr class="stats_row"><td>17</td><td>1</td><td>17</td></tr>
|
||||
<tr class="stats_row"><td>201</td><td>1</td><td>201</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>3</td><td>226</td></tr>
|
||||
</table>
|
||||
<h3>Frames Received by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<h3>Frames Transmitted by Opcode</h3>
|
||||
<table>
|
||||
<tr class="stats_header"><td>Opcode</td><td>Count</td></tr>
|
||||
<tr class="stats_row"><td>1</td><td>1</td></tr>
|
||||
<tr class="stats_row"><td>8</td><td>1</td></tr>
|
||||
<tr class="stats_total"><td>Total</td><td>2</td></tr>
|
||||
</table>
|
||||
<br/><hr/>
|
||||
<h2>Wire Log</h2>
|
||||
<div id="wirelog">
|
||||
<pre class="wirelog_tx_octets">000 TX OCTETS: 474554202f20485454502f312e310d0a557365722d4167656e743a204175746f6261686e576562536f636b65747354657374</pre>
|
||||
<pre class="wirelog_tx_octets"> 53756974652f302e342e31300d0a486f73743a206c6f63616c686f73743a393030330d0a557067726164653a20776562736f</pre>
|
||||
<pre class="wirelog_tx_octets"> 636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4b65793a204e746c30</pre>
|
||||
<pre class="wirelog_tx_octets"> 6966506e635877336b636e4d7971594936413d3d0d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a0d</pre>
|
||||
<pre class="wirelog_tx_octets"> 0a</pre>
|
||||
<pre class="wirelog_rx_octets">001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a557067726164653a20776562736f636b</pre>
|
||||
<pre class="wirelog_rx_octets"> 65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d4163636570743a20454f54</pre>
|
||||
<pre class="wirelog_rx_octets"> 7a4f7759443862684e6e78533849582f5263782b384573733d0d0a0d0a</pre>
|
||||
<pre class="wirelog_tx_frame">002 TX FRAME : OPCODE=1, FIN=True, RSV=0, MASK=a3eccd2d, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> κόσμε</pre>
|
||||
<pre class="wirelog_tx_octets">003 TX OCTETS: 818ba3eccd2d6d562c901a234ee31f2278</pre>
|
||||
<pre class="wirelog_kill_after">004 FAIL CONNECTION AFTER 0.500000 sec</pre>
|
||||
<pre class="wirelog_rx_octets">005 RX OCTETS: 810bcebae1bdb9cf83cebcceb5</pre>
|
||||
<pre class="wirelog_rx_frame">006 RX FRAME : OPCODE=1, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_rx_frame"> κόσμε</pre>
|
||||
<pre class="wirelog_tx_frame">007 TX FRAME : OPCODE=8, FIN=True, RSV=0, MASK=77c74274, PAYLOAD-REPEAT-LEN=None, CHOPSIZE=None, SYNC=False</pre>
|
||||
<pre class="wirelog_tx_frame"> è</pre>
|
||||
<pre class="wirelog_tx_octets">008 TX OCTETS: 888277c74274742f</pre>
|
||||
<pre class="wirelog_rx_octets">009 RX OCTETS: 8800</pre>
|
||||
<pre class="wirelog_rx_frame">010 RX FRAME : OPCODE=8, FIN=True, RSV=0, MASKED=False, MASK=None</pre>
|
||||
<pre class="wirelog_tcp_closed_by_peer">011 TCP DROPPED BY PEER</pre>
|
||||
</div>
|
||||
<br/><hr/>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче