blob: e55e1fa469f8b02b178f3c26c2ecf92467240b5f [file] [log] [blame]
<!DOCTYPE html>
<script src="/js-test-resources/js-test.js"></script>
<script>
description("Test that WebSockets are not subject to the HTTP connection limit.");
window.jsTestIsAsync = true;
const SOCKETS_TO_OPEN = 50;
// PARALLELISM limits the number of connections we try to open simultaneously.
// This avoids triggering the throttling added in http://crrev.com/972963002,
// which slows the test down considerably. 4 is the maximum number of
// simultaneous pending connections guaranteeed to have zero throttling delay
// applied, but parallelism of 2 seems to give the best performance in practice.
const PARALLELISM = 2;
var socketsOpened = 0;
var sockets = [];
function createNewWebSocket()
{
var ws = new WebSocket("ws://127.0.0.1:8880/echo");
sockets.push(ws);
ws.onopen = function() {
if (sockets.length < SOCKETS_TO_OPEN) {
createNewWebSocket();
}
++socketsOpened;
if (socketsOpened == SOCKETS_TO_OPEN) {
cleanUpSocketsAndFinish();
}
};
ws.onclose = function() {
testFailed("unexpected close event");
cleanUpSocketsAndFinish();
};
}
function cleanUpSocketsAndFinish()
{
for (var ws of sockets) {
ws.onclose = null;
ws.close();
}
shouldBeEqualToNumber("socketsOpened", SOCKETS_TO_OPEN);
finishJSTest();
}
for (var i = 0; i < PARALLELISM; ++i) {
createNewWebSocket();
}
</script>