<!doctype html>
<!--
Copyright 2018 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<html>
<script>
let done = false;
let index;
let numberOfWorkers;
let closeWorker;
let allocationsPerWorker;
function spawnWorker() {
if (index === numberOfWorkers) {
done = true;
document.getElementById("counter").innerHTML = "Done";
return;
}
let worker = new Worker("worker.js");
worker.postMessage({
index: index,
closeWorker: closeWorker,
allocationsPerWorker: allocationsPerWorker});
document.getElementById("counter").innerHTML =
"Spawned " + index + " workers.";
++index;
worker.onmessage = spawnWorker;
}
function go() {
index = 0;
numberOfWorkers = parseInt(document.getElementById("numberOfWorkers").value);
closeWorker = document.getElementById("closeWorker").checked;
allocationsPerWorker =
parseInt(document.getElementById("allocationsPerWorker").value) *
1024 * 1024;
spawnWorker();
}
function onLoad() {
let url = window.document.URL;
let workers = url.match(/workers=(\d+)/);
if (workers) {
document.getElementById("numberOfWorkers").value = workers[1];
}
let allocations = url.match(/allocations=(\d+)/);
if (allocations) {
document.getElementById("allocationsPerWorker").value = allocations[1];
}
if (url.indexOf("close=0") >= 0) {
document.getElementById("closeWorker").checked = false;
}
if (url.indexOf("auto=1") >= 0) {
go();
}
}
</script>
<body onload="onLoad()">
<div>
Number of workers:
<input type="text" id="numberOfWorkers" value="1000" size="3"></input>
</div>
<div>
Allocations per worker in MB:
<input type="text" id="allocationsPerWorker" value="5" size="3"></input>
</div>
<div>
<input type="checkbox" id="closeWorker" checked>
Call <b>close()</b> on Worker
</div>
<div>
<button onclick="go()">Go</button>
</div>
<p id="counter"></p>
</body>
</html>