|  | package logrus | 
|  |  | 
|  | import ( | 
|  | "os" | 
|  | "testing" | 
|  | ) | 
|  |  | 
|  | // smallFields is a small size data set for benchmarking | 
|  | var loggerFields = Fields{ | 
|  | "foo":   "bar", | 
|  | "baz":   "qux", | 
|  | "one":   "two", | 
|  | "three": "four", | 
|  | } | 
|  |  | 
|  | func BenchmarkDummyLogger(b *testing.B) { | 
|  | nullf, err := os.OpenFile("/dev/null", os.O_WRONLY, 0666) | 
|  | if err != nil { | 
|  | b.Fatalf("%v", err) | 
|  | } | 
|  | defer nullf.Close() | 
|  | doLoggerBenchmark(b, nullf, &TextFormatter{DisableColors: true}, smallFields) | 
|  | } | 
|  |  | 
|  | func BenchmarkDummyLoggerNoLock(b *testing.B) { | 
|  | nullf, err := os.OpenFile("/dev/null", os.O_WRONLY|os.O_APPEND, 0666) | 
|  | if err != nil { | 
|  | b.Fatalf("%v", err) | 
|  | } | 
|  | defer nullf.Close() | 
|  | doLoggerBenchmarkNoLock(b, nullf, &TextFormatter{DisableColors: true}, smallFields) | 
|  | } | 
|  |  | 
|  | func doLoggerBenchmark(b *testing.B, out *os.File, formatter Formatter, fields Fields) { | 
|  | logger := Logger{ | 
|  | Out:       out, | 
|  | Level:     InfoLevel, | 
|  | Formatter: formatter, | 
|  | } | 
|  | entry := logger.WithFields(fields) | 
|  | b.RunParallel(func(pb *testing.PB) { | 
|  | for pb.Next() { | 
|  | entry.Info("aaa") | 
|  | } | 
|  | }) | 
|  | } | 
|  |  | 
|  | func doLoggerBenchmarkNoLock(b *testing.B, out *os.File, formatter Formatter, fields Fields) { | 
|  | logger := Logger{ | 
|  | Out:       out, | 
|  | Level:     InfoLevel, | 
|  | Formatter: formatter, | 
|  | } | 
|  | logger.SetNoLock() | 
|  | entry := logger.WithFields(fields) | 
|  | b.RunParallel(func(pb *testing.PB) { | 
|  | for pb.Next() { | 
|  | entry.Info("aaa") | 
|  | } | 
|  | }) | 
|  | } |