Browse Source

debug push takes function & beginTimer returns Date

pull/946/head
Lily He 7 years ago
parent
commit
af03e706b2
  1. 61
      helper/debug.js
  2. 49
      test/unit/helper/debug.js

61
helper/debug.js

@ -6,38 +6,47 @@ class Debug {
this.name = moduleName || 'unnamed module';
}
push(req, debugMsg){
if (!_.isEmpty(req.clean) && req.clean.enableDebug){
req.debug = req.debug || [];
// remove the extra space character
req.debug.push({[this.name]: debugMsg});
// req.debug.push(`[${this.name}] ${debugMsg}`);
push(req, value){
if (!req || _.isEmpty(req.clean) || !req.clean.enableDebug){
return;
}
}
// optional debugMsg passed to timer
beginTimer(req, debugMsg){
if (!_.isEmpty(req.clean) && req.clean.enableDebug){
// internal object debugTimers. Doesn't get displayed in geocodeJSON
req.debugTimers = req.debugTimers || {};
req.debugTimers[this.name] = Date.now();
if (debugMsg){
this.push(req, `Timer Began: ${debugMsg}`);
} else {
this.push(req, `Timer Began`);
}
req.debug = req.debug || [];
switch(typeof value) {
case 'function':
req.debug.push({[this.name]: value()});
break;
default:
req.debug.push({[this.name]: value});
}
}
stopTimer(req, debugMsg){
if (!_.isEmpty(req.clean) && req.clean.enableDebug){
let timeElapsed = Date.now() - req.debugTimers[this.name];
if (debugMsg){
this.push(req, `Timer Stopped: ${timeElapsed} ms: ${debugMsg}`);
} else {
this.push(req, `Timer Stopped: ${timeElapsed} ms`);
beginTimer(req, debugMsg){
if (req && !_.isEmpty(req.clean) && req.clean.enableDebug){
// debugMsg is optional
this.push(req, () => {
if (debugMsg){
return `Timer Began. ${debugMsg}`;
} else {
return `Timer Began`;
}
});
return Date.now();
}
}
stopTimer(req, startTime, debugMsg){
if (req && !_.isEmpty(req.clean) && req.clean.enableDebug){
let timeElapsed = Date.now() - startTime;
this.push(req, () => {
if (debugMsg){
return `Timer Stopped. ${timeElapsed} ms. ${debugMsg}`;
} else {
return `Timer Stopped. ${timeElapsed} ms`;
}
});
}
}
}
}
module.exports = Debug;

49
test/unit/helper/debug.js

@ -50,35 +50,50 @@ module.exports.tests.debug = function(test, common) {
enableDebug: true
}
};
const expected_req = {
debug: [
{
debugger: 'This should be pushed'
},
{
debugger: 'Timer Began: Timer 1'
}
]
};
const expected_req = [
{
debugger: 'This should be pushed'
},
{
debugger: 'Timer Began. Timer 1'
}
];
debugLog.push(req, 'This should be pushed');
debugLog.beginTimer(req, 'Timer 1');
t.deepEquals(req.debug, expected_req);
t.end();
});
test('Timer should return positive number of milliseconds', (t) => {
test('Push messages can take output of function', (t) => {
const debugLog = new Debug('debugger');
const req = {
clean: {
enableDebug: true
}
};
debugLog.beginTimer(req);
setTimeout(() => {
debugLog.stopTimer(req);
t.deepEquals(parseInt(req.debug[1].debugger.slice(15, -3)) > 0, true);
t.end();
}, 2);
const expected_req = [
{
debugger: 'This should be pushed'
}
];
debugLog.push(req, () => ('This should be pushed'));
t.deepEquals(req.debug, expected_req);
t.end();
});
test('Timer should return number of milliseconds', (t) => {
const debugLog = new Debug('debugger');
const req = {
clean: {
enableDebug: true
}
};
const timer = debugLog.beginTimer(req);
debugLog.stopTimer(req, timer);
// Checks that there is a debug message
// that matches the pattern "Timer Stopped. [number] ms"
t.deepEquals(req.debug[1].debugger.match(/Timer Stopped\. \d+ ms/i).length, 1);
t.end();
});
};

Loading…
Cancel
Save