Parcourir la source

Added configuration for custom compensation factor; Fixed a problem where xhr_ignoreErrors could not be changed

dosse91 il y a 9 ans
Parent
commit
62a06fa7d3
3 fichiers modifiés avec 12 ajouts et 5 suppressions
  1. 5 1
      doc.md
  2. 7 4
      speedtest_worker.js
  3. 0 0
      speedtest_worker.min.js

+ 5 - 1
doc.md

@@ -1,7 +1,7 @@
 # HTML5 Speedtest
 
 > by Federico Dossena  
-> Version 4.2.3, June 14 2017  
+> Version 4.2.4, June 15 2017  
 > [https://github.com/adolfintel/speedtest/](https://github.com/adolfintel/speedtest/)
 
 
@@ -178,6 +178,10 @@ Fetch API are used if the following conditions are met:
     * allow_fetchAPI is true
     * Chromium-based browser with support for Fetch API and enable_quirks is true
 OR force_fetchAPI is true and the browser supports Fetch API
+* __overheadCompensationFactor__: compensation for HTTP and network overhead. Default value assumes typical MTUs used over the Internet. You might want to change this if you're using this in your internal network with different MTUs, or if you're using IPv6 instead of IPv4.
+    * Default: `1.13359567567567567568` (1048576/925000) assumes HTTP+TCP+IPv4+ETH with typical MTUs used over the Internet
+    * `1460 / 1514`: TCP+IPv4+ETH, ignoring HTTP overhead (this measures the speed at which you actually download/upload files instead of estimating the speed of the connection)
+    * `1440 / 1514`: TCP+IPv6+ETH, ignoring HTTP overhead (this measures the speed at which you actually download/upload files instead of estimating the speed of the connection)
 
 ### Aborting the test prematurely
 The test can be aborted at any time by sending an abort command to the worker:

+ 7 - 4
speedtest_worker.js

@@ -1,5 +1,5 @@
 /*
-	HTML5 Speedtest v4.2.3
+	HTML5 Speedtest v4.2.4
 	by Federico Dossena
 	https://github.com/adolfintel/speedtest/
 	GNU LGPLv3 License
@@ -29,7 +29,8 @@ var settings = {
   garbagePhp_chunkSize: 20, // size of chunks sent by garbage.php (can be different if enable_quirks is active)
   enable_quirks: true, // enable quirks for specific browsers. currently it overrides settings to optimize for specific browsers, unless they are already being overridden with the start command
   allow_fetchAPI: false, // enables Fetch API. currently disabled because it leaks memory like no tomorrow
-  force_fetchAPI: false // when Fetch API is enabled, it will force usage on every browser that supports it
+  force_fetchAPI: false, // when Fetch API is enabled, it will force usage on every browser that supports it
+  overheadCompensationFactor: 1048576/925000 //compensation for HTTP+TCP+IP+ETH overhead. 925000 is how much data is actually carried over 1048576 (1mb) bytes downloaded/uploaded. This default value assumes HTTP+TCP+IPv4+ETH with typical MTUs over the Internet. You may want to change this if you're going through your local network with a different MTU or if you're going over IPv6 (see doc.md for some other values)
 }
 
 var xhr = null // array of currently active xhr requests
@@ -95,9 +96,11 @@ this.addEventListener('message', function (e) {
       if (typeof s.count_ping !== 'undefined') settings.count_ping = s.count_ping // number of pings for ping test
       if (typeof s.xhr_dlMultistream !== 'undefined') settings.xhr_dlMultistream = s.xhr_dlMultistream // number of download streams
       if (typeof s.xhr_ulMultistream !== 'undefined') settings.xhr_ulMultistream = s.xhr_ulMultistream // number of upload streams
+      if (typeof s.xhr_ignoreErrors !== 'undefined') settings.xhr_ignoreErrors = s.xhr_ignoreErrors // what to do in case of errors during the test
       if (typeof s.xhr_dlUseBlob !== 'undefined') settings.xhr_dlUseBlob = s.xhr_dlUseBlob // use blob for download test
       if (typeof s.garbagePhp_chunkSize !== 'undefined') settings.garbagePhp_chunkSize = s.garbagePhp_chunkSize // size of garbage.php chunks
       if (typeof s.force_fetchAPI !== 'undefined') settings.force_fetchAPI = s.force_fetchAPI // use fetch api on all browsers that support it if enabled
+      if (typeof s.overheadCompensationFactor !== 'undefined') settings.overheadCompensationFactor = s.overheadCompensationFactor //custom overhead compensation factor (default assumes HTTP+TCP+IP+ETH with typical MTUs)
       if (settings.allow_fetchAPI && settings.force_fetchAPI && (!!self.fetch)) useFetchAPI = true
     } catch (e) { }
     // run the tests
@@ -203,7 +206,7 @@ function dlTest (done) {
     var t = new Date().getTime() - startT
     if (t < 200) return
     var speed = totLoaded / (t / 1000.0)
-    dlStatus = ((speed * 8) / 925000.0).toFixed(2) // 925000 instead of 1048576 to account for overhead
+    dlStatus = ((speed * 8 * settings.overheadCompensationFactor)/1048576).toFixed(2) // speed is multiplied by 8 to go from bytes to bits, overhead compensation is applied, then everything is divided by 1048576 to go to megabits/s
     if ((t / 1000.0) > settings.time_dl || failed) { // test is over, stop streams and timer
       if (failed || isNaN(dlStatus)) dlStatus = 'Fail'
       clearRequests()
@@ -297,7 +300,7 @@ function ulTest (done) {
     var t = new Date().getTime() - startT
     if (t < 200) return
     var speed = totLoaded / (t / 1000.0)
-    ulStatus = ((speed * 8) / 925000.0).toFixed(2) // 925000 instead of 1048576 to account for overhead
+    ulStatus = ((speed * 8 * settings.overheadCompensationFactor)/1048576).toFixed(2) // speed is multiplied by 8 to go from bytes to bits, overhead compensation is applied, then everything is divided by 1048576 to go to megabits/s
     if ((t / 1000.0) > settings.time_ul || failed) { // test is over, stop streams and timer
       if (failed || isNaN(ulStatus)) ulStatus = 'Fail'
       clearRequests()

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
speedtest_worker.min.js


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff