1package agent
2
3import (
4	"testing"
5)
6
7type MockLogHandler struct {
8	logs []string
9}
10
11func (m *MockLogHandler) HandleLog(l string) {
12	m.logs = append(m.logs, l)
13}
14
15func TestLogWriter(t *testing.T) {
16	h := &MockLogHandler{}
17	w := NewLogWriter(4)
18
19	// Write some logs
20	w.Write([]byte("one")) // Gets dropped!
21	w.Write([]byte("two"))
22	w.Write([]byte("three"))
23	w.Write([]byte("four"))
24	w.Write([]byte("five"))
25
26	// Register a handler, sends old!
27	w.RegisterHandler(h)
28
29	w.Write([]byte("six"))
30	w.Write([]byte("seven"))
31
32	// Deregister
33	w.DeregisterHandler(h)
34
35	w.Write([]byte("eight"))
36	w.Write([]byte("nine"))
37
38	out := []string{
39		"two",
40		"three",
41		"four",
42		"five",
43		"six",
44		"seven",
45	}
46	for idx := range out {
47		if out[idx] != h.logs[idx] {
48			t.Fatalf("mismatch %v", h.logs)
49		}
50	}
51}
52