Bug 744663. (Av1) Improve documentation and logs, Nits. r=smaug.
authorSerge Gautherie <sgautherie.bz@free.fr>
Tue, 24 Apr 2012 03:00:43 +0200
changeset 95460 30404871c57ec6de3373acf7f0954706da15ef1f
parent 95459 72fcb7c13613c9a721a8eb1db7fc5d39f2dca626
child 95461 03b56b258f69ee8b54a47d807f4fe34c407b5215
push id886
push userlsblakk@mozilla.com
push dateMon, 04 Jun 2012 19:57:52 +0000
treeherdermozilla-beta@bbd8d5efd6d1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssmaug
bugs744663
milestone14.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 744663. (Av1) Improve documentation and logs, Nits. r=smaug. (a=test-only)
content/base/test/test_websocket_basic.html
--- a/content/base/test/test_websocket_basic.html
+++ b/content/base/test/test_websocket_basic.html
@@ -1,179 +1,205 @@
 <!DOCTYPE HTML>
 <html>
-<!--
--->
 <head>
-  <title>Basic websocket test</title>
+  <title>Basic WebSocket test</title>
   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
 </head>
+
 <body onload="testWebSocket()">
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=472529">Mozilla Bug </a>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=472529">Mozilla Bug 472529</a>
 <p id="display"></p>
 <div id="content" style="display: none">
 </div>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
+const kUrl = "ws://mochi.test:8888/tests/content/base/test/file_websocket_basic";
+
 var ws;
 
-var params = ["protocol", "resource", "origin", "end"];
 var results = ["test", "/tests/content/base/test/file_websocket_basic", "http://mochi.test:8888", "end"];
 
-function forcegc(){
+function forcegc() {
   SpecialPowers.forceGC();
   SpecialPowers.gc();
 }
 
 function finishWSTest() {
-    SimpleTest.finish();
+  SimpleTest.finish();
+}
+
+function testWebSocket() {
+  testWebSocket1();
 }
 
-function testWebSocket () {
-  var url = "ws://mochi.test:8888/tests/content/base/test/file_websocket_basic";
-  ws = new WebSocket("ws://mochi.test:8888/tests/content/base/test/file_websocket_basic", "test");
-  is(ws.url, url, "Wrong Websocket.url!");
+/**
+ * Sends message keywords, then receives their values.
+ */
+function testWebSocket1() {
+  ws = new WebSocket(kUrl, "test");
+  is(ws.url, kUrl, "[1] WebSocket.url");
   ws.onopen = function(e) {
+    const params = ["protocol", "resource", "origin", "end"];
+
     for (var i = 0; i < params.length; ++i) {
       document.getElementById('log').textContent += "sending " + params[i] + "\n";
       ws.send(params[i]);
     }
-  }
+  };
   ws.onclose = function(e) {
-    is(results.length, 0, "All the messages should have been processed!");
-    ok(e.wasClean, "Connection closed cleanly");
+    is(results.length, 0, "[1] Number of unreceived messages");
+    ok(e.wasClean, "[1] Connection closed cleanly");
+
     testWebSocket2();
-  }
+  };
   ws.onerror = function(e) {
-    ok(false, "onerror called!");
+    ok(false, "[1] onerror() should not have been called!");
     finishWSTest();
-  }
+  };
   ws.onmessage = function(e) {
     document.getElementById('log').textContent += "\n" + e.data;
-    is(e.data, results[0], "Unexpected message");
+    is(e.data, results[0], "[1] Received message");
     results.shift();
-  }
+  };
 }
 
+/**
+ * Sends 1000(+1) test messages, then receives them.
+ */
 function testWebSocket2() {
-  ws = new WebSocket("ws://mochi.test:8888/tests/content/base/test/file_websocket_basic", "test");
-  var testCount = 1000; // Send lots of messages
+  const testCount = 1000;
+
   var messageCount = 0;
   var testMessage = "test message";
+
+  ws = new WebSocket(kUrl, "test");
   ws.onopen = function(e) {
-    for (var i = 0; i < testCount; ++i) {
-      ws.send(testMessage + (i + 1));
+    for (var i = 1; i <= testCount; ++i) {
+      ws.send(testMessage + i);
     }
     ws.send("end");
-  }
+  };
   ws.onclose = function(e) {
-    is(messageCount, testCount, "Didn't receive all the messages!");
-    ok(e.wasClean, "Connection closed cleanly");
+    is(messageCount, testCount, "[2] Number of received messages");
+    ok(e.wasClean, "[2] Connection closed cleanly");
+
     testWebSocket3();
-  }
+  };
   ws.onerror = function(e) {
-    ok(false, "onerror called!");
+    ok(false, "[2] onerror() should not have been called!");
     finishWSTest();
-  }
+  };
   ws.onmessage = function(e) {
     ++messageCount;
-    is(e.data, testMessage + messageCount, "Wrong message");
+    is(e.data, testMessage + messageCount, "[2] Received message");
     document.getElementById('log').textContent = messageCount;
     if (messageCount == testCount) {
       this.onmessage = null;
     }
-  }
+  };
 }
 
+/**
+ * Sends 100(+1) test messages, then receives them, calling forcegc() at each step.
+ */
 function testWebSocket3() {
-  ws = new WebSocket("ws://mochi.test:8888/tests/content/base/test/file_websocket_basic", "test");
-  var testCount = 100; // Send lots of messages
+  const testCount = 100;
+
   var messageCount = 0;
   var testMessage = "test message";
+
+  ws = new WebSocket(kUrl, "test");
   ws.onopen = function(e) {
-    for (var i = 0; i < testCount; ++i) {
-      forcegc(); // Do something evil, call cycle collector a lot.
-      ws.send(testMessage + (i + 1));
+    for (var i = 1; i <= testCount; ++i) {
+      forcegc();
+      ws.send(testMessage + i);
     }
     ws.send("end");
-  }
+  };
   ws.onclose = function(e) {
-    is(messageCount, testCount, "Didn't receive all the messages!");
-    ok(e.wasClean, "Connection closed cleanly");
+    is(messageCount, testCount, "[3] Number of received messages");
+    ok(e.wasClean, "[3] Connection closed cleanly");
+
     testWebSocket4();
-  }
+  };
   ws.onerror = function(e) {
-    ok(false, "onerror called!");
+    ok(false, "[3] onerror() should not have been called!");
     finishWSTest();
-  }
+  };
   ws.onmessage = function(e) {
-    forcegc(); // Do something evil, call cycle collector a lot.
+    forcegc();
     ++messageCount;
-    is(e.data, testMessage + messageCount, "Wrong message");
+    is(e.data, testMessage + messageCount, "[3] Received message");
     document.getElementById('log').textContent = messageCount;
     if (messageCount == testCount) {
       this.onmessage = null;
     }
-  }
+  };
 }
 
+/**
+ * Sends a huge test message, then receives it, then closes the WebSocket from client-side.
+ */
 function testWebSocket4() {
-  ws = new WebSocket("ws://mochi.test:8888/tests/content/base/test/file_websocket_basic", "test");
+  ws = new WebSocket(kUrl, "test");
   // String length = (10,000 - 1) * 23 = 229,977 = almost 225 KiB.
   var longString = new Array(10000).join("-huge websocket message");
   ws.onopen = function(e) {
-    is(this, ws, "'this' should point to the WebSocket. (1)");
+    is(this, ws, "[4, onopen()] 'this' should point to the WebSocket.");
     ws.send(longString);
-  }
+  };
   ws.onclose = function(e) {
-    is(this, ws, "'this' should point to the WebSocket. (2)");
-    ok(e.wasClean, "Connection closed cleanly");
+    is(this, ws, "[4, onclose()] 'this' should point to the WebSocket.");
+    ok(e.wasClean, "[4] Connection closed cleanly");
+
     testWebSocket5();
-  }
+  };
   ws.onerror = function(e) {
-    ok(false, "onerror called!");
+    is(this, ws, "[4, onerror()] 'this' should point to the WebSocket.");
+    ok(false, "[4, onerror()] should not have been called!");
     finishWSTest();
-  }
+  };
   ws.onmessage = function(e) {
-    is(this, ws, "'this' should point to the WebSocket. (3)");
+    is(this, ws, "[4, onmessage()] 'this' should point to the WebSocket.");
     // Do not use |is(e.data, longString, "...");| that results in a _very_ long line.
-    is(e.data.length, longString.length, "Length of received message");
-    ok(e.data == longString, "Content of received message");
+    is(e.data.length, longString.length, "[4] Length of received message");
+    ok(e.data == longString, "[4] Content of received message");
     document.getElementById('log').textContent += "\nReceived the huge message";
     this.close();
-  }
+  };
 }
 
+/**
+ * Closes the WebSocket from client-side, then sends a test message that should be buffered.
+ */
 function testWebSocket5() {
-  ws = new WebSocket("ws://mochi.test:8888/tests/content/base/test/file_websocket_basic", "test");
+  ws = new WebSocket(kUrl, "test");
   ws.onopen = function(e) {
+    is(this.bufferedAmount, 0, "[5] Length of empty buffer before closing");
     this.close();
-  }
+  };
   ws.onclose = function(e) {
-    ok(e.wasClean, "Connection closed cleanly");
-    is(this.bufferedAmount, 0, "Shouldn't have anything buffered");
-    var msg = "some data";
+    ok(e.wasClean, "[5] Connection closed cleanly");
+    is(this.bufferedAmount, 0, "[5] Length of empty buffer after closing");
+
+    var msg = "test message to be buffered";
     this.send(msg);
-    is(this.bufferedAmount, msg.length, "Should have some data buffered");
+    is(this.bufferedAmount, msg.length, "[5] Length of buffered message sent after closing");
+
     finishWSTest();
-  }
+  };
   ws.onerror = function(e) {
-    ok(false, "onerror called!");
+    ok(false, "[5] onerror() should not have been called!");
     finishWSTest();
-  }
+  };
 }
 
 SimpleTest.waitForExplicitFinish();
 
 </script>
 <pre id="log">
 </pre>
 </pre>
-<div>
-
-
-</div>
-
-
 </body>
 </html>