[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
commit-queue at webkit.org
commit-queue at webkit.org
Wed Dec 22 11:10:15 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit a2fd534edc4bdbc73960ef93f76b6a17f7846925
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Jul 14 09:35:42 2010 +0000
2010-07-14 Yuta Kitamura <yutak at chromium.org>
Reviewed by Alexey Proskuryakov.
Add tests to check if WebSocket's challenge value is random
https://bugs.webkit.org/show_bug.cgi?id=42163
Chromium has a bug that it always sends a same challenge value due to
inability to generate a random value in a worker process. The new test checks
if WebSocket does not generate the same challenge value in a row.
In theory, there is a very small possibility of collision between two challenge
values, but you will not observe such an event in reality (unless random number
generator is broken).
* websocket/tests/echo-challenge_wsh.py: Added.
* websocket/tests/handshake-challenge-randomness-expected.txt: Added.
* websocket/tests/handshake-challenge-randomness.html: Added.
* websocket/tests/script-tests/handshake-challenge-randomness.js: Added.
(endTest):
(ws1.onmessage):
(ws1.onclose.ws2.onmessage):
(ws1.onclose.ws2.onclose):
(ws1.onclose):
* websocket/tests/workers/resources/worker-handshake-challenge-randomness.js: Added.
(endTest):
(runTests.try.ws1.onmessage):
(runTests.try.ws1.onclose.ws2.onmessage):
(runTests.try.ws1.onclose.ws2.onclose):
(runTests.try.ws1.onclose):
(runTests):
* websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt: Added.
* websocket/tests/workers/worker-handshake-challenge-randomness.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63298 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 0f32216..87502db 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,37 @@
+2010-07-14 Yuta Kitamura <yutak at chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Add tests to check if WebSocket's challenge value is random
+ https://bugs.webkit.org/show_bug.cgi?id=42163
+
+ Chromium has a bug that it always sends a same challenge value due to
+ inability to generate a random value in a worker process. The new test checks
+ if WebSocket does not generate the same challenge value in a row.
+
+ In theory, there is a very small possibility of collision between two challenge
+ values, but you will not observe such an event in reality (unless random number
+ generator is broken).
+
+ * websocket/tests/echo-challenge_wsh.py: Added.
+ * websocket/tests/handshake-challenge-randomness-expected.txt: Added.
+ * websocket/tests/handshake-challenge-randomness.html: Added.
+ * websocket/tests/script-tests/handshake-challenge-randomness.js: Added.
+ (endTest):
+ (ws1.onmessage):
+ (ws1.onclose.ws2.onmessage):
+ (ws1.onclose.ws2.onclose):
+ (ws1.onclose):
+ * websocket/tests/workers/resources/worker-handshake-challenge-randomness.js: Added.
+ (endTest):
+ (runTests.try.ws1.onmessage):
+ (runTests.try.ws1.onclose.ws2.onmessage):
+ (runTests.try.ws1.onclose.ws2.onclose):
+ (runTests.try.ws1.onclose):
+ (runTests):
+ * websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt: Added.
+ * websocket/tests/workers/worker-handshake-challenge-randomness.html: Added.
+
2010-07-14 Eric Seidel <eric at webkit.org>
Reviewed by Nikolas Zimmermann.
diff --git a/LayoutTests/websocket/tests/echo-challenge_wsh.py b/LayoutTests/websocket/tests/echo-challenge_wsh.py
new file mode 100644
index 0000000..0fd1485
--- /dev/null
+++ b/LayoutTests/websocket/tests/echo-challenge_wsh.py
@@ -0,0 +1,10 @@
+from mod_pywebsocket import msgutil
+
+def web_socket_do_extra_handshake(request):
+ pass
+
+def web_socket_transfer_data(request):
+ msgutil.send_message(request, _hexify(request.ws_challenge))
+
+def _hexify(bytes):
+ return ':'.join(['%02X' % ord(byte) for byte in bytes])
diff --git a/LayoutTests/websocket/tests/handshake-challenge-randomness-expected.txt b/LayoutTests/websocket/tests/handshake-challenge-randomness-expected.txt
new file mode 100644
index 0000000..c1bdcd7
--- /dev/null
+++ b/LayoutTests/websocket/tests/handshake-challenge-randomness-expected.txt
@@ -0,0 +1,9 @@
+Handshake request should contain random challenge values.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS challenge1 === challenge2 is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/websocket/tests/handshake-challenge-randomness.html b/LayoutTests/websocket/tests/handshake-challenge-randomness.html
new file mode 100644
index 0000000..1160f77
--- /dev/null
+++ b/LayoutTests/websocket/tests/handshake-challenge-randomness.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+<script src="../../fast/js/resources/js-test-post-function.js"></script>
+</head>
+<body>
+<div id="description"></div>
+<div id="console"></div>
+<script src="script-tests/handshake-challenge-randomness.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/websocket/tests/script-tests/handshake-challenge-randomness.js b/LayoutTests/websocket/tests/script-tests/handshake-challenge-randomness.js
new file mode 100644
index 0000000..5bc1200
--- /dev/null
+++ b/LayoutTests/websocket/tests/script-tests/handshake-challenge-randomness.js
@@ -0,0 +1,45 @@
+description('Handshake request should contain random challenge values.');
+
+if (window.layoutTestController)
+ layoutTestController.waitUntilDone();
+
+var challenge1;
+var challenge2;
+
+function endTest()
+{
+ shouldBeFalse('challenge1 === challenge2');
+ if (challenge1 === challenge2)
+ debug('challenge was ' + challenge1);
+
+ isSuccessfullyParsed();
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+}
+
+var url = 'ws://localhost:8880/websocket/tests/echo-challenge';
+var ws1 = new WebSocket(url);
+
+ws1.onmessage = function(messageEvent)
+{
+ challenge1 = messageEvent.data;
+ ws1.close();
+}
+
+ws1.onclose = function()
+{
+ var ws2 = new WebSocket(url);
+
+ ws2.onmessage = function(messageEvent)
+ {
+ challenge2 = messageEvent.data;
+ ws2.close();
+ }
+
+ ws2.onclose = function()
+ {
+ endTest();
+ }
+}
+
+var successfullyParsed = true;
diff --git a/LayoutTests/websocket/tests/workers/resources/worker-handshake-challenge-randomness.js b/LayoutTests/websocket/tests/workers/resources/worker-handshake-challenge-randomness.js
new file mode 100644
index 0000000..9bd42ac
--- /dev/null
+++ b/LayoutTests/websocket/tests/workers/resources/worker-handshake-challenge-randomness.js
@@ -0,0 +1,48 @@
+var challenge1;
+var challenge2;
+
+function endTest()
+{
+ if (challenge1 === challenge2)
+ postMessage('FAIL: worker: challenge1 === challenge2 (challenge was ' + challenge1 + ')');
+ else
+ postMessage('PASS: worker: challenge1 !== challenge2');
+
+ postMessage('DONE');
+}
+
+function runTests()
+{
+ try {
+ var url = 'ws://localhost:8880/websocket/tests/echo-challenge';
+ var ws1 = new WebSocket(url);
+
+ ws1.onmessage = function(messageEvent)
+ {
+ challenge1 = messageEvent.data;
+ ws1.close();
+ }
+
+ ws1.onclose = function()
+ {
+ var ws2 = new WebSocket(url);
+
+ ws2.onmessage = function(messageEvent)
+ {
+ challenge2 = messageEvent.data;
+ ws2.close();
+ }
+
+ ws2.onclose = function()
+ {
+ endTest();
+ }
+ }
+ } catch (e) {
+ postMessage('FAIL: worker: Unexpected exception: ' + e);
+ } finally {
+ postMessage('PASS: worker: Parsed successfully.');
+ }
+}
+
+runTests();
diff --git a/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt b/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt
new file mode 100644
index 0000000..18c9880
--- /dev/null
+++ b/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness-expected.txt
@@ -0,0 +1,9 @@
+Handshake request should contain random challenge values (in a worker process).
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS: worker: Parsed successfully.
+PASS: worker: challenge1 !== challenge2
+DONE
+TEST COMPLETE
+
diff --git a/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness.html b/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness.html
new file mode 100644
index 0000000..b846daa
--- /dev/null
+++ b/LayoutTests/websocket/tests/workers/worker-handshake-challenge-randomness.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head></head>
+<body>
+<p>Handshake request should contain random challenge values (in a worker process).</p>
+<p></p>
+<p>On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".</p>
+<pre id=log>
+</pre>
+<script>
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+}
+
+function log(message)
+{
+ document.getElementById("log").innerHTML += message + "\n";
+}
+
+function endTest()
+{
+ log("TEST COMPLETE");
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+}
+var worker = new Worker('resources/worker-handshake-challenge-randomness.js');
+worker.onmessage = function (evt) {
+ log(evt.data);
+ if (evt.data == "DONE")
+ endTest();
+};
+</script>
+</body>
+</html>
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list