add function to measure event loop run times

pull/39/head
Fabian Jakobs 2015-02-18 09:34:10 +00:00
rodzic 6490a22d8d
commit 86e03b7501
2 zmienionych plików z 81 dodań i 0 usunięć

16
node_modules/c9/blocked.js wygenerowano vendored 100644
Wyświetl plik

@ -0,0 +1,16 @@
// module.exports = function (callback) {
// var start = Date.now();
// setImmediate(function () {
// var took = Date.now() - start;
// return callback(null, took);
// }, 0);
// };
module.exports = function (callback) {
var start = Date.now();
// setInterval is handled after setImmediate and setTimeout handlers
var interval = setTimeout(function () {
clearInterval(interval);
var took = Date.now() - start;
return callback(null, took);
}, 0);
};

65
node_modules/c9/blocked_test.js wygenerowano vendored 100644
Wyświetl plik

@ -0,0 +1,65 @@
"use strict";
"use server";
var assert = require("assert");
var blocked = require("./blocked");
module.exports = {
"test normal run should return low blocked time": function(next) {
blocked(function(err, time) {
assert(!err, err);
assert(time < 10);
next();
});
},
"test busy loop should report high blocked time": function(next) {
blocked(function(err, time) {
assert(!err, err);
assert(time >= 100);
next();
});
var start = Date.now();
while (Date.now() - start < 100) {}
},
"test busy loop in setTimeout should report high blocked time": function(next) {
setTimeout(function() {
var start = Date.now();
while (Date.now() - start < 100) {}
}, 0);
blocked(function(err, time) {
assert(!err, err);
assert(time >= 100);
next();
});
},
"test busy loop in setInterval should report high blocked time": function(next) {
var interval = setInterval(function() {
clearInterval(interval);
var start = Date.now();
while (Date.now() - start < 100) {}
});
blocked(function(err, time) {
assert(!err, err);
assert(time >= 100);
next();
});
},
"test busy loop in setImmediate should report high blocked time": function(next) {
setImmediate(function() {
var start = Date.now();
while (Date.now() - start < 100) {}
});
blocked(function(err, time) {
assert(!err, err);
assert(time >= 100);
next();
});
}
};
!module.parent && require("asyncjs").test.testcase(module.exports).exec();