diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/http/2015-11-10_01_50000.out.xz | bin | 0 -> 730360 bytes | |||
-rw-r--r-- | tests/http/agent.js | 2 | ||||
-rwxr-xr-x | tests/http/big-test-start.sh | 2 | ||||
-rw-r--r-- | tests/http/crunch-results.js | 80 | ||||
-rw-r--r-- | tests/http/server.js | 15 |
5 files changed, 55 insertions, 44 deletions
diff --git a/tests/http/2015-11-10_01_50000.out.xz b/tests/http/2015-11-10_01_50000.out.xz Binary files differnew file mode 100644 index 00000000..d3e2a666 --- /dev/null +++ b/tests/http/2015-11-10_01_50000.out.xz diff --git a/tests/http/agent.js b/tests/http/agent.js index 8afe517f..0595ada4 100644 --- a/tests/http/agent.js +++ b/tests/http/agent.js @@ -115,7 +115,7 @@ function doTest() try { var peers = JSON.parse(body); if (Array.isArray(peers)) - allOtherAgents = peers; + allOtherAgents = allOtherAgents.concat(peers); } catch (e) {} } diff --git a/tests/http/big-test-start.sh b/tests/http/big-test-start.sh index 1b462285..2411eeda 100755 --- a/tests/http/big-test-start.sh +++ b/tests/http/big-test-start.sh @@ -4,7 +4,7 @@ # 250 with a 16GB RAM VM like Amazon m4.xlarge seems good NUM_CONTAINERS=250 CONTAINER_IMAGE=zerotier/http-test -SCALE_UP_DELAY=4 +SCALE_UP_DELAY=10 export PATH=/bin:/usr/bin:/usr/local/bin:/usr/sbin:/sbin diff --git a/tests/http/crunch-results.js b/tests/http/crunch-results.js index 85c021d7..8da8915d 100644 --- a/tests/http/crunch-results.js +++ b/tests/http/crunch-results.js @@ -3,56 +3,58 @@ // suitable for graphing. // -// Average over this interval of time -var GRAPH_INTERVAL = 60000; +// Number of requests per statistical bracket +var BRACKET_SIZE = 1000; // Number of bytes expected from each test var EXPECTED_BYTES = 5000; var readline = require('readline'); var rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - terminal: false + input: process.stdin, + output: process.stdout, + terminal: false }); -var startTS = 0; - var count = 0.0; -var totalFailures = 0; -var totalPartialFailures = 0; +var overallCount = 0.0; +var totalFailures = 0.0; +var totalOverallFailures = 0.0; var totalMs = 0; var totalData = 0; +var devices = {}; rl.on('line',function(line) { - line = line.trim(); - var ls = line.split(','); - if (ls.length == 7) { - var ts = parseInt(ls[0]); - var from = ls[1]; - var to = ls[2]; - var ms = parseFloat(ls[3]); - var bytes = parseInt(ls[4]); - var timedOut = (ls[5] == 'true') ? true : false; - var errMsg = ls[6]; - - count += 1.0; - if ((bytes <= 0)||(timedOut)) - ++totalFailures; - if (bytes !== EXPECTED_BYTES) - ++totalPartialFailures; - totalMs += ms; - totalData += bytes; - - if (startTS === 0) { - startTS = ts; - } else if (((ts - startTS) >= GRAPH_INTERVAL)&&(count > 0.0)) { - console.log(count.toString()+','+(totalMs / count)+','+totalFailures+','+totalPartialFailures+','+totalData); - - count = 0.0; - totalFailures = 0; - totalPartialFailures = 0; - totalMs = 0; - } - } // else ignore junk + line = line.trim(); + var ls = line.split(','); + if (ls.length == 7) { + var ts = parseInt(ls[0]); + var fromId = ls[1]; + var toId = ls[2]; + var ms = parseFloat(ls[3]); + var bytes = parseInt(ls[4]); + var timedOut = (ls[5] == 'true') ? true : false; + var errMsg = ls[6]; + + count += 1.0; + overallCount += 1.0; + if ((bytes !== EXPECTED_BYTES)||(timedOut)) { + totalFailures += 1.0; + totalOverallFailures += 1.0; + } + totalMs += ms; + totalData += bytes; + + devices[fromId] = true; + devices[toId] = true; + + if (count >= BRACKET_SIZE) { + console.log(count.toString()+','+overallCount.toString()+','+(totalMs / count)+','+(totalFailures / count)+','+(totalOverallFailures / overallCount)+','+totalData+','+Object.keys(devices).length); + + count = 0.0; + totalFailures = 0.0; + totalMs = 0; + totalData = 0; + } + } // else ignore junk }); diff --git a/tests/http/server.js b/tests/http/server.js index 1abe624b..681f1069 100644 --- a/tests/http/server.js +++ b/tests/http/server.js @@ -30,12 +30,21 @@ app.post('/:agentId',function(req,res) { var resultData = null; try { resultData = JSON.parse(req.rawBody); - console.log(Date.now()+','+resultData.source+','+resultData.target+','+resultData.time+','+resultData.bytes+','+resultData.timedOut+',"'+((resultData.error) ? resultData.error : '')+'"'); + console.log(Date.now().toString()+','+resultData.source+','+resultData.target+','+resultData.time+','+resultData.bytes+','+resultData.timedOut+',"'+((resultData.error) ? resultData.error : '')+'"'); } catch (e) {} } - knownAgents[agentId] = Date.now(); - return res.status(200).send(JSON.stringify(Object.keys(knownAgents))); + var thisUpdate = null; + if (!(agentId in knownAgents)) { + thisUpdate = Object.keys(knownAgents); + for(var id in knownAgents) + knownAgents[id].push(agentId); + knownAgents[agentId] = []; + } else { + thisUpdate = knownAgents[agentId]; + knownAgents[agentId] = []; + } + return res.status(200).send(JSON.stringify(thisUpdate)); }); var expressServer = app.listen(SERVER_PORT,function () { |