Browse code

Benchmark for jsonlog.WriteLog

Signed-off-by: Alexandr Morozov <lk4d4@docker.com>

Alexandr Morozov authored on 2014/09/23 22:55:14
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,33 @@
0
+package jsonlog
1
+
2
+import (
3
+	"bytes"
4
+	"encoding/json"
5
+	"io/ioutil"
6
+	"testing"
7
+	"time"
8
+
9
+	"github.com/docker/docker/pkg/timeutils"
10
+)
11
+
12
+func BenchmarkWriteLog(b *testing.B) {
13
+	var buf bytes.Buffer
14
+	e := json.NewEncoder(&buf)
15
+	testLine := "Line that thinks that it is log line from docker\n"
16
+	for i := 0; i < 30; i++ {
17
+		e.Encode(JSONLog{Log: testLine, Stream: "stdout", Created: time.Now()})
18
+	}
19
+	r := bytes.NewReader(buf.Bytes())
20
+	w := ioutil.Discard
21
+	format := timeutils.RFC3339NanoFixed
22
+	b.SetBytes(int64(r.Len()))
23
+	b.ResetTimer()
24
+	for i := 0; i < b.N; i++ {
25
+		if err := WriteLog(r, w, format); err != nil {
26
+			b.Fatal(err)
27
+		}
28
+		b.StopTimer()
29
+		r.Seek(0, 0)
30
+		b.StartTimer()
31
+	}
32
+}