<!DOCTYPE HTML>
<script src="/js-test-resources/js-test.js"></script>
<script>
description("Test that WebSocket connections are throttled.");
window.jsTestIsAsync = true;
var socketCount = 300;
var openedCount = 0;
var closedCount = 0;
// Expected behavior:
// 1. A handshake to "ws://127.0.0.1:8880/delayed-handshake" is started.
// This stays pending for 1 second.
// 2. Another 299 WebSockets to "ws://127.0.0.1:8880/echo" are created.
// 45 connections are rejected by per-renderer WebSocket throttling,
// and 254 connections to "ws://127.0.0.1:8880/echo" stay pending.
// 3. The handshake to "ws://127.0.0.1:8880/delayed-handshake"
// (started in Step 1) is completed.
// 4. The handshakes of 254 connections to "ws://127.0.0.1:8880/echo"
// (created in Step 2) are started and are completed without delay.
for (i = 0; i < socketCount; ++i) {
var ws = new WebSocket(i == 0 ?
"ws://127.0.0.1:8880/delayed-handshake" :
"ws://127.0.0.1:8880/echo");
ws.onopen = function(ws) {
++openedCount;
ws.close();
}.bind(undefined, ws);
ws.onclose = function() {
++closedCount;
if (closedCount === socketCount) {
shouldBeEqualToNumber("openedCount", 255);
finishJSTest();
}
};
}
</script>