Переглянути джерело

Benchmark for jsonlog.WriteLog

Signed-off-by: Alexandr Morozov <lk4d4@docker.com>
Alexandr Morozov 10 роки тому
батько
коміт
81c9927f8f
1 змінених файлів з 33 додано та 0 видалено
  1. 33 0
      pkg/jsonlog/jsonlog_test.go

+ 33 - 0
pkg/jsonlog/jsonlog_test.go

@@ -0,0 +1,33 @@
+package jsonlog
+
+import (
+	"bytes"
+	"encoding/json"
+	"io/ioutil"
+	"testing"
+	"time"
+
+	"github.com/docker/docker/pkg/timeutils"
+)
+
+func BenchmarkWriteLog(b *testing.B) {
+	var buf bytes.Buffer
+	e := json.NewEncoder(&buf)
+	testLine := "Line that thinks that it is log line from docker\n"
+	for i := 0; i < 30; i++ {
+		e.Encode(JSONLog{Log: testLine, Stream: "stdout", Created: time.Now()})
+	}
+	r := bytes.NewReader(buf.Bytes())
+	w := ioutil.Discard
+	format := timeutils.RFC3339NanoFixed
+	b.SetBytes(int64(r.Len()))
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		if err := WriteLog(r, w, format); err != nil {
+			b.Fatal(err)
+		}
+		b.StopTimer()
+		r.Seek(0, 0)
+		b.StartTimer()
+	}
+}