OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / tendermint / tmlibs / log / tm_logger_test.go
1 package log_test
2
3 import (
4         "bytes"
5         "io/ioutil"
6         "strings"
7         "testing"
8
9         "github.com/go-logfmt/logfmt"
10         "github.com/tendermint/tmlibs/log"
11 )
12
13 func TestLoggerLogsItsErrors(t *testing.T) {
14         var buf bytes.Buffer
15
16         logger := log.NewTMLogger(&buf)
17         logger.Info("foo", "baz baz", "bar")
18         msg := strings.TrimSpace(buf.String())
19         if !strings.Contains(msg, logfmt.ErrInvalidKey.Error()) {
20                 t.Errorf("Expected logger msg to contain ErrInvalidKey, got %s", msg)
21         }
22 }
23
24 func BenchmarkTMLoggerSimple(b *testing.B) {
25         benchmarkRunner(b, log.NewTMLogger(ioutil.Discard), baseInfoMessage)
26 }
27
28 func BenchmarkTMLoggerContextual(b *testing.B) {
29         benchmarkRunner(b, log.NewTMLogger(ioutil.Discard), withInfoMessage)
30 }
31
32 func benchmarkRunner(b *testing.B, logger log.Logger, f func(log.Logger)) {
33         lc := logger.With("common_key", "common_value")
34         b.ReportAllocs()
35         b.ResetTimer()
36         for i := 0; i < b.N; i++ {
37                 f(lc)
38         }
39 }
40
41 var (
42         baseInfoMessage = func(logger log.Logger) { logger.Info("foo_message", "foo_key", "foo_value") }
43         withInfoMessage = func(logger log.Logger) { logger.With("a", "b").Info("c", "d", "f") }
44 )