Not working yet!

This commit is contained in:
Yehuda Eisenberg
2021-09-30 13:43:57 +03:00
committed by GitHub
parent 98bb7ae567
commit d259fd2ff9

View File

@@ -1,134 +1,190 @@
let serverEUrl = "http://localhost/speedtest/"; const serverEUrl = "https://localhost/speedtest/";
let serverGUrl = "http://localhost/speedtest/blank.file"; const serverGUrl = "https://localhost/speedtest/blank.file";
const connectionTogether = 5;
let status = ""; let status = "";
let multi = false; //multi connection together (5)
// TODO - check 5 connection together async function startTest() {
if (status == "" || status == "stop") {
status = "start";
setText("button", "Stop Test");
setText("ping", "");
setText("down", "");
setText("up", "");
setText("status", "");
async function startTest(){ multi = document.getElementById("multi-signal").checked;
if(status == "" || status == "stop"){ } else if (status == "start") {
status = "start"; status = "stop";
setText("button", "Stop Test"); setText("status", "stoping...");
setText("ping", ""); return;
setText("down", ""); }
setText("up", "");
setText("status", "");
}
else if(status == "start"){
status = "stop";
setText("status", "stoping...");
return;
}
setText("status", "checking ping..."); setText("status", "checking ping...");
var pingMS = await ping(); var pingMS = await ping();
setText("ping", pingMS); setText("ping", pingMS);
if(status == "stop"){stopTest();return;} if (status == "stop") {
stopTest();
return;
}
setText("status", "checking download..."); setText("status", "checking download...");
var downMB = await download(); var downMB = await download((multi ? connectionTogether : 1));
setText("down", downMB); setText("down", downMB);
if(status == "stop"){stopTest();return;} if (status == "stop") {
stopTest();
return;
}
setText("status", "checking upload..."); setText("status", "checking upload...");
var upMB = await upload(); var upMB = await upload((multi ? connectionTogether : 1));
setText("up", upMB); setText("up", upMB);
status = ""; status = "";
setText("status", "done."); setText("status", "done.");
setText("button", "Start Test"); setText("button", "Start Test");
} }
function stopTest(){ function stopTest() {
status = ""; status = "";
setText("button", "Start Test"); setText("button", "Start Test");
setText("status", "stoped."); setText("status", "stoped.");
} }
function setText(elm, text){ function setText(elm, text) {
document.getElementById(elm).innerText = text; document.getElementById(elm).innerText = text;
} }
async function ping() { async function ping() {
return new Promise(resolve => { return new Promise(resolve => {
var startTime = 0; var startTime = 0;
var request = new XMLHttpRequest(); var request = new XMLHttpRequest();
request.open("HEAD", serverEUrl + "?_=" + Math.random(), true); request.open("HEAD", serverEUrl + "?_=" + Math.random(), true);
request.onreadystatechange = function() { request.onreadystatechange = function() {
if (request.readyState === 4) { if (request.readyState === 4) {
var endTime = new Date().getTime(); var endTime = new Date().getTime();
resolve((endTime - startTime) + " ms"); resolve((endTime - startTime) + " ms");
} }
}; };
try { try {
startTime = new Date().getTime(); startTime = new Date().getTime();
request.send(null); request.send(null);
} catch(exception) { } catch (exception) {
alert("Your internet connection is unavelible..."); alert("Your internet connection is unavelible...");
} }
}); });
} }
async function download(){ async function download(multiConnection) {
return new Promise(resolve => { return new Promise(resolve => {
var startTime = 0; var totalStartTime = 0;
var request = new XMLHttpRequest(); requests = [];
request.open("GET", serverGUrl + "?_=" + Math.random(), true); requestsHelper = [];
request.onreadystatechange = function() { function temp(i){
if (request.readyState === 4 && request.status === 200) { setTimeout(
var endTime = new Date().getTime(); function() {
var reqLength = request.responseText.length * 8; var startTime = 0;
var sumTime = (endTime - startTime) / 1000; requests[i] = new XMLHttpRequest();
var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2); requestsHelper[i] = [];
resolve(speed + " Mbps (" + sumTime + " s)"); requestsHelper[i].done = false;
} requests[i].open("GET", serverGUrl + "?_=" + Math.random(), true);
}; requests[i].onreadystatechange = function() {
request.onprogress = function() { if (requests[i].readyState === 4 && requests[i].status === 200) {
if(status == "stop"){request.abort();resolve("Stopped.");} var endTime = new Date().getTime();
var reqLength = requests[i].responseText.length * 8;
var endTime = new Date().getTime(); var sumTime = (endTime - startTime) / 1000;
var reqLength = request.responseText.length * 8; var speed = (((reqLength / sumTime) / 1024 /* Kbps */ ) / 1024 /* Mbps */ ).toFixed(2);
var sumTime = (endTime - startTime) / 1000;
var speed = (((reqLength / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2); requestsHelper[i].speed = speed;
setText("down", speed + " Mbps (" + sumTime + " s)"); requestsHelper[i].sumTime = sumTime;
}; requestsHelper[i].done = true;
try { alert("request " + i + " done.");
startTime = new Date().getTime(); }
request.send(null); };
} catch(exception) { requests[i].onprogress = function() {
alert("Your internet connection is unavelible..."); if (status == "stop") {
} requests[i].abort();
}); }
var endTime = new Date().getTime();
var reqLength = requests[i].responseText.length * 8;
var sumTime = (endTime - startTime) / 1000;
var speed = (((reqLength / sumTime) / 1024 /* Kbps */ ) / 1024 /* Mbps */ ).toFixed(2);
requestsHelper[i].speed = speed;
requestsHelper[i].sumTime = sumTime;
};
try {
startTime = new Date().getTime();
requests[i].send(null);
} catch (exception) {
alert("Your internet connection is unavelible...");
}
},
1);
}
totalStartTime = new Date().getTime();
for (var i = 0; i < multiConnection; i++) {
temp(i);
}
while(true){
done = true;
var tmpTotalSpeed = 0;
requestsHelper.forEach(function (request){
if(done && !request.done) done = false;
tmpTotalSpeed += request.speed
});
var totalEndTime = new Date().getTime();
var totalSpeed = tmpTotalSpeed / multiConnection;
var totalSumTime = (totalEndTime - totalStartTime) / 1000;
if(done){
resolve(totalSpeed + " Mbps (" + totalSumTime + " s)");
return;
}
else{
setText("down", totalSpeed + " Mbps (" + totalSumTime + " s)");
}
}
});
} }
function junkData(length){ function junkData(length) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', result = ''; var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
for (var i = 0; i < length; i++) result += chars[Math.floor(Math.random() * chars.length)]; result = '';
return result; for (var i = 0; i < length; i++) result += chars[Math.floor(Math.random() * chars.length)];
return result;
} }
async function upload(){ async function upload(multiConnection) {
return new Promise(resolve => { return new Promise(resolve => {
var startTime = 0; var startTime = 0;
var junkLength = 5000000; //=~5 Mb var junkLength = 5000000; //=~5 Mb
var junk = JSON.stringify({data: junkData(junkLength)}); var junk = JSON.stringify({
var request = new XMLHttpRequest(); data: junkData(junkLength)
request.open("POST", serverEUrl + "?_=" + Math.random(), true); });
request.setRequestHeader("Content-Type", "application/octet-stream"); var request = new XMLHttpRequest();
request.onreadystatechange = function() { request.open("POST", serverEUrl + "?_=" + Math.random(), true);
if (request.readyState === 4 && request.status === 200) { request.setRequestHeader("Content-Type", "application/octet-stream");
var endTime = new Date().getTime(); request.onreadystatechange = function() {
var sumTime = (endTime - startTime) / 1000; if (request.readyState === 4 && request.status === 200) {
var speed = ((((junkLength * 8 /* byte (not bit) */) / sumTime) / 1024 /* Kbps */) / 1024 /* Mbps */).toFixed(2); var endTime = new Date().getTime();
resolve(speed + " Mbps (" + sumTime + " s)"); var sumTime = (endTime - startTime) / 1000;
} var speed = ((((junkLength * 8 /* byte (not bit) */ ) / sumTime) / 1024 /* Kbps */ ) / 1024 /* Mbps */ ).toFixed(2);
}; resolve(speed + " Mbps (" + sumTime + " s)");
try { }
startTime = new Date().getTime(); };
request.send(junk); try {
} catch(exception) { startTime = new Date().getTime();
alert("Your internet connection is unavelible..."); request.send(junk);
} } catch (exception) {
}); alert("Your internet connection is unavelible...");
}
});
} }