package dao_test import ( "bytes" "fmt" "testing" "github.com/derailed/k9s/internal/client" "github.com/derailed/k9s/internal/dao" "github.com/stretchr/testify/assert" ) func TestLogItemEmpty(t *testing.T) { uu := map[string]struct { s string e bool }{ "empty": {s: "", e: true}, "full": {s: "Testing 1,2,3..."}, } for k := range uu { u := uu[k] t.Run(k, func(t *testing.T) { i := dao.NewLogItemFromString(u.s) assert.Equal(t, u.e, i.IsEmpty()) }) } } func TestLogItemRender(t *testing.T) { uu := map[string]struct { opts dao.LogOptions e string }{ "empty": { opts: dao.LogOptions{}, e: "Testing 1,2,3...\n", }, "container": { opts: dao.LogOptions{ Container: "fred", }, e: "[yellow::b]fred[-::-] Testing 1,2,3...\n", }, "pod": { opts: dao.LogOptions{ Path: "blee/fred", Container: "blee", SingleContainer: true, }, e: "[yellow::]fred [yellow::b]blee[-::-] Testing 1,2,3...\n", }, "full": { opts: dao.LogOptions{ Path: "blee/fred", Container: "blee", SingleContainer: true, ShowTimestamp: true, }, e: "[gray::]2018-12-14T10:36:43.326972-07:00 [yellow::]fred [yellow::b]blee[-::-] Testing 1,2,3...\n", }, } s := []byte(fmt.Sprintf("%s %s\n", "2018-12-14T10:36:43.326972-07:00", "Testing 1,2,3...")) for k := range uu { u := uu[k] t.Run(k, func(t *testing.T) { i := dao.NewLogItem(s) _, n := client.Namespaced(u.opts.Path) i.Pod, i.Container = n, u.opts.Container bb := bytes.NewBuffer(make([]byte, 0, i.Size())) i.Render("yellow", u.opts.ShowTimestamp, bb) assert.Equal(t, u.e, bb.String()) }) } } func BenchmarkLogItemRender(b *testing.B) { s := []byte(fmt.Sprintf("%s %s\n", "2018-12-14T10:36:43.326972-07:00", "Testing 1,2,3...")) i := dao.NewLogItem(s) i.Pod, i.Container = "fred", "blee" b.ResetTimer() b.ReportAllocs() for n := 0; n < b.N; n++ { bb := bytes.NewBuffer(make([]byte, 0, i.Size())) i.Render("yellow", true, bb) } } func BenchmarkLogItemRenderNoTS(b *testing.B) { s := []byte(fmt.Sprintf("%s %s\n", "2018-12-14T10:36:43.326972-07:00", "Testing 1,2,3...")) i := dao.NewLogItem(s) i.Pod, i.Container = "fred", "blee" b.ResetTimer() b.ReportAllocs() for n := 0; n < b.N; n++ { bb := bytes.NewBuffer(make([]byte, 0, i.Size())) i.Render("yellow", false, bb) } }