Skip to content

Commit e542192

Browse files
committed
fix(logwatchers/kmsg): improve tests
1 parent ea22add commit e542192

2 files changed

Lines changed: 431 additions & 164 deletions

File tree

pkg/systemlogmonitor/logwatchers/kmsg/log_watcher_linux.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ type kernelLogWatcher struct {
4242
tomb *tomb.Tomb
4343

4444
kmsgParser kmsgparser.Parser
45+
// newParser creates a kmsgparser. Overridable in tests; defaults to kmsgparser.NewParser.
46+
newParser func() (kmsgparser.Parser, error)
4547
}
4648

4749
// NewKmsgWatcher creates a watcher which will read messages from /dev/kmsg
@@ -60,7 +62,8 @@ func NewKmsgWatcher(cfg types.WatcherConfig) types.LogWatcher {
6062
startTime: startTime,
6163
tomb: tomb.NewTomb(),
6264
// Arbitrary capacity
63-
logCh: make(chan *logtypes.Log, 100),
65+
logCh: make(chan *logtypes.Log, 100),
66+
newParser: kmsgparser.NewParser,
6467
}
6568
}
6669

@@ -69,7 +72,7 @@ var _ types.WatcherCreateFunc = NewKmsgWatcher
6972
func (k *kernelLogWatcher) Watch() (<-chan *logtypes.Log, error) {
7073
if k.kmsgParser == nil {
7174
// nil-check to make mocking easier
72-
parser, err := kmsgparser.NewParser()
75+
parser, err := k.newParser()
7376
if err != nil {
7477
return nil, fmt.Errorf("failed to create kmsg parser: %v", err)
7578
}
@@ -150,7 +153,7 @@ func (k *kernelLogWatcher) watchLoop() {
150153
// It returns the new message channel and true on success, or nil and false if stopping was signaled.
151154
func (k *kernelLogWatcher) retryCreateParser() (<-chan kmsgparser.Message, bool) {
152155
for {
153-
parser, err := kmsgparser.NewParser()
156+
parser, err := k.newParser()
154157
if err != nil {
155158
klog.Errorf("Failed to create new kmsg parser, retrying in %v: %v", retryDelay, err)
156159
} else if seekErr := parser.SeekEnd(); seekErr != nil {

0 commit comments

Comments
 (0)