OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / github.com / sirupsen / logrus / formatter_bench_test.go
diff --git a/vendor/github.com/sirupsen/logrus/formatter_bench_test.go b/vendor/github.com/sirupsen/logrus/formatter_bench_test.go
new file mode 100644 (file)
index 0000000..d948158
--- /dev/null
@@ -0,0 +1,101 @@
+package logrus
+
+import (
+       "fmt"
+       "testing"
+       "time"
+)
+
+// smallFields is a small size data set for benchmarking
+var smallFields = Fields{
+       "foo":   "bar",
+       "baz":   "qux",
+       "one":   "two",
+       "three": "four",
+}
+
+// largeFields is a large size data set for benchmarking
+var largeFields = Fields{
+       "foo":       "bar",
+       "baz":       "qux",
+       "one":       "two",
+       "three":     "four",
+       "five":      "six",
+       "seven":     "eight",
+       "nine":      "ten",
+       "eleven":    "twelve",
+       "thirteen":  "fourteen",
+       "fifteen":   "sixteen",
+       "seventeen": "eighteen",
+       "nineteen":  "twenty",
+       "a":         "b",
+       "c":         "d",
+       "e":         "f",
+       "g":         "h",
+       "i":         "j",
+       "k":         "l",
+       "m":         "n",
+       "o":         "p",
+       "q":         "r",
+       "s":         "t",
+       "u":         "v",
+       "w":         "x",
+       "y":         "z",
+       "this":      "will",
+       "make":      "thirty",
+       "entries":   "yeah",
+}
+
+var errorFields = Fields{
+       "foo": fmt.Errorf("bar"),
+       "baz": fmt.Errorf("qux"),
+}
+
+func BenchmarkErrorTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{DisableColors: true}, errorFields)
+}
+
+func BenchmarkSmallTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{DisableColors: true}, smallFields)
+}
+
+func BenchmarkLargeTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{DisableColors: true}, largeFields)
+}
+
+func BenchmarkSmallColoredTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{ForceColors: true}, smallFields)
+}
+
+func BenchmarkLargeColoredTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{ForceColors: true}, largeFields)
+}
+
+func BenchmarkSmallJSONFormatter(b *testing.B) {
+       doBenchmark(b, &JSONFormatter{}, smallFields)
+}
+
+func BenchmarkLargeJSONFormatter(b *testing.B) {
+       doBenchmark(b, &JSONFormatter{}, largeFields)
+}
+
+func doBenchmark(b *testing.B, formatter Formatter, fields Fields) {
+       logger := New()
+
+       entry := &Entry{
+               Time:    time.Time{},
+               Level:   InfoLevel,
+               Message: "message",
+               Data:    fields,
+               Logger:  logger,
+       }
+       var d []byte
+       var err error
+       for i := 0; i < b.N; i++ {
+               d, err = formatter.Format(entry)
+               if err != nil {
+                       b.Fatal(err)
+               }
+               b.SetBytes(int64(len(d)))
+       }
+}