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  })