github.com/cloudcredo/cloudrocker@v0.0.0-20160108110610-1320f8cc2dfd/sample-apps/node/node_modules/logfmt/test/log_time.js (about) 1 var logfmt = require('../logfmt'), 2 assert = require('assert'); 3 4 var logfmt = new logfmt(); 5 var OutStream = require('./outstream'); 6 7 suite('logfmt.time', function() { 8 setup(function(){ 9 logfmt.stream = new OutStream; 10 }) 11 12 test("logs the time as elapsed", function(){ 13 var logger = logfmt.time(); 14 logger.log(); 15 var actual = logfmt.stream.logline; 16 assert(/^elapsed=\dms\n$/.test(actual), actual) 17 }) 18 19 test("logs the time with your label", function(){ 20 var logger = logfmt.time('time'); 21 logger.log(); 22 var actual = logfmt.stream.logline; 23 assert(/^time=\dms\n$/.test(actual), actual) 24 }) 25 26 test("logs the time with your data", function(){ 27 var logger = logfmt.time('time1').namespace({foo: 'bar'}); 28 logger.log({foo: 'bar'}); 29 var actual = logfmt.stream.logline; 30 assert(/^foo=bar time1=\d+ms\n$/.test(actual), actual) 31 }) 32 33 test("logs the time with your label and your data", function(){ 34 var logger = logfmt.time('time').namespace({foo: 'bar'}) 35 logger.log(); 36 var actual = logfmt.stream.logline; 37 assert(/^foo=bar time=\dms\n$/.test(actual), actual) 38 }) 39 40 //now we're using setTimeout to ensure the elapsed 41 //time reflects a known delay 42 test("accurancy in milliseconds", function(done){ 43 var logger = logfmt.time(); 44 var wrapped = function() { 45 logger.log(); 46 var actual = logfmt.stream.logline; 47 assert(/^elapsed=2\dms\n$/.test(actual), actual) 48 done(); 49 } 50 setTimeout(wrapped, 20); 51 }) 52 53 test("supports log(data, stream) interface", function(){ 54 var mock_sink = new OutStream; 55 var logger = logfmt.time() 56 logger.log({foo: 'bar'}, mock_sink); 57 var actual = mock_sink.logline; 58 assert(/^foo=bar elapsed=\d+ms\n$/.test(actual), actual) 59 }) 60 61 test('returns a logfmt', function(){ 62 var logger1 = logfmt.time(); 63 64 for(var prop in logfmt){ 65 assert(logger1[prop]); 66 } 67 }) 68 69 test('can nest multiple timers', function(){ 70 71 var logger = logfmt.time('foo'); 72 var logger2 = logger.time('foo2'); 73 var logger3 = logger2.time('foo3'); 74 75 var mock_sink = new OutStream; 76 77 logger2.log({}, mock_sink); 78 var recovered = logfmt.parse(mock_sink.logline); 79 console.log(recovered); 80 assert(/^\d+ms/.test(recovered.foo)); 81 assert(/^\d+ms/.test(recovered.foo2)); 82 assert(recovered.foo3 === undefined); 83 84 var mock_sink2 = new OutStream; 85 logger3.log({}, mock_sink2); 86 var recovered = logfmt.parse(mock_sink2.logline); 87 console.log(recovered); 88 assert(/^\d+ms/.test(recovered.foo)); 89 assert(/^\d+ms/.test(recovered.foo2)); 90 assert(/^\d+ms/.test(recovered.foo3)); 91 }) 92 93 // tests you can pass the logger into a closure 94 // and call `log` multiple times. 95 // uses setTimeout to ensure the timing happens in 20ms 96 test("can log twice", function(done){ 97 var mock_sink = new OutStream; 98 var logger = logfmt.time() 99 logger.log({foo: 'bar'}, mock_sink); 100 var actual = mock_sink.logline; 101 assert(/^foo=bar elapsed=\d+ms\n$/.test(actual), actual) 102 var wrapped = function() { 103 logger.log({bar: 'foo'}, mock_sink); 104 var actual = mock_sink.logline; 105 assert(/^bar=foo elapsed=2\d+ms\n$/.test(actual), actual) 106 done(); 107 } 108 setTimeout(wrapped, 20); 109 }) 110 })