github.com/argoproj/argo-cd/v2@v2.10.9/server/application/logs_test.go (about) 1 package application 2 3 import ( 4 "io" 5 "strings" 6 "testing" 7 "time" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestParseLogsStream_Successful(t *testing.T) { 14 r := io.NopCloser(strings.NewReader(`2021-02-09T22:13:45.916570818Z hello 15 2021-02-09T22:13:45.916570818Z world`)) 16 17 res := make(chan logEntry) 18 go func() { 19 parseLogsStream("test", r, res) 20 close(res) 21 }() 22 23 var entries []logEntry 24 expectedTimestamp, err := time.Parse(time.RFC3339Nano, "2021-02-09T22:13:45.916570818Z") 25 require.NoError(t, err) 26 27 for entry := range res { 28 entries = append(entries, entry) 29 } 30 31 assert.Equal(t, []logEntry{ 32 {timeStamp: expectedTimestamp, podName: "test", line: "hello"}, 33 {timeStamp: expectedTimestamp, podName: "test", line: "world"}, 34 }, entries) 35 } 36 37 func TestParseLogsStream_ParsingError(t *testing.T) { 38 r := io.NopCloser(strings.NewReader(`hello world`)) 39 40 res := make(chan logEntry) 41 go func() { 42 parseLogsStream("test", r, res) 43 close(res) 44 }() 45 46 var entries []logEntry 47 for entry := range res { 48 entries = append(entries, entry) 49 } 50 51 require.Len(t, entries, 1) 52 assert.Error(t, entries[0].err) 53 } 54 55 func TestMergeLogStreams(t *testing.T) { 56 57 first := make(chan logEntry) 58 go func() { 59 parseLogsStream("first", io.NopCloser(strings.NewReader(`2021-02-09T00:00:01Z 1 60 2021-02-09T00:00:03Z 3`)), first) 61 close(first) 62 }() 63 64 second := make(chan logEntry) 65 go func() { 66 parseLogsStream("second", io.NopCloser(strings.NewReader(`2021-02-09T00:00:02Z 2 67 2021-02-09T00:00:04Z 4`)), second) 68 close(second) 69 }() 70 71 merged := mergeLogStreams([]chan logEntry{first, second}, time.Second) 72 var lines []string 73 for entry := range merged { 74 lines = append(lines, entry.line) 75 } 76 77 assert.Equal(t, []string{"1", "2", "3", "4"}, lines) 78 }