github.com/lmars/docker@v1.6.0-rc2/daemon/logger/jsonfilelog/jsonfilelog_test.go (about) 1 package jsonfilelog 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "testing" 8 "time" 9 10 "github.com/docker/docker/daemon/logger" 11 "github.com/docker/docker/pkg/jsonlog" 12 ) 13 14 func TestJSONFileLogger(t *testing.T) { 15 tmp, err := ioutil.TempDir("", "docker-logger-") 16 if err != nil { 17 t.Fatal(err) 18 } 19 defer os.RemoveAll(tmp) 20 filename := filepath.Join(tmp, "container.log") 21 l, err := New(filename) 22 if err != nil { 23 t.Fatal(err) 24 } 25 defer l.Close() 26 cid := "a7317399f3f857173c6179d44823594f8294678dea9999662e5c625b5a1c7657" 27 if err := l.Log(&logger.Message{ContainerID: cid, Line: []byte("line1"), Source: "src1"}); err != nil { 28 t.Fatal(err) 29 } 30 if err := l.Log(&logger.Message{ContainerID: cid, Line: []byte("line2"), Source: "src2"}); err != nil { 31 t.Fatal(err) 32 } 33 if err := l.Log(&logger.Message{ContainerID: cid, Line: []byte("line3"), Source: "src3"}); err != nil { 34 t.Fatal(err) 35 } 36 res, err := ioutil.ReadFile(filename) 37 if err != nil { 38 t.Fatal(err) 39 } 40 expected := `{"log":"line1\n","stream":"src1","time":"0001-01-01T00:00:00Z"} 41 {"log":"line2\n","stream":"src2","time":"0001-01-01T00:00:00Z"} 42 {"log":"line3\n","stream":"src3","time":"0001-01-01T00:00:00Z"} 43 ` 44 45 if string(res) != expected { 46 t.Fatalf("Wrong log content: %q, expected %q", res, expected) 47 } 48 } 49 50 func BenchmarkJSONFileLogger(b *testing.B) { 51 tmp, err := ioutil.TempDir("", "docker-logger-") 52 if err != nil { 53 b.Fatal(err) 54 } 55 defer os.RemoveAll(tmp) 56 filename := filepath.Join(tmp, "container.log") 57 l, err := New(filename) 58 if err != nil { 59 b.Fatal(err) 60 } 61 defer l.Close() 62 cid := "a7317399f3f857173c6179d44823594f8294678dea9999662e5c625b5a1c7657" 63 testLine := "Line that thinks that it is log line from docker\n" 64 msg := &logger.Message{ContainerID: cid, Line: []byte(testLine), Source: "stderr", Timestamp: time.Now().UTC()} 65 jsonlog, err := (&jsonlog.JSONLog{Log: string(msg.Line) + "\n", Stream: msg.Source, Created: msg.Timestamp}).MarshalJSON() 66 if err != nil { 67 b.Fatal(err) 68 } 69 b.SetBytes(int64(len(jsonlog)+1) * 30) 70 b.ResetTimer() 71 for i := 0; i < b.N; i++ { 72 for j := 0; j < 30; j++ { 73 if err := l.Log(msg); err != nil { 74 b.Fatal(err) 75 } 76 } 77 } 78 }