mirror of
https://github.com/Luzifer/ansible-role-version.git
synced 2024-12-23 11:01:20 +00:00
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
|
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")
|
||
|
}
|
||
|
})
|
||
|
}
|