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