Skip to content

Commit a1cf7bd

Browse files
committed
#5 more tests for multiple logfile tailer
1 parent b6b5e1a commit a1cf7bd

File tree

1 file changed

+48
-5
lines changed

1 file changed

+48
-5
lines changed

tailer/fswatcher_test.go

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,22 @@ const tests = `
134134
- [logrotate, logdir/logfile.log, logdir/logfile.log.1]
135135
- [log, line 3, logdir/logfile.log]
136136
- [expect, line 3, logdir/logfile.log]
137+
138+
- name: overwrite
139+
param_filters:
140+
logrotateMvCfg: [mv]
141+
commands:
142+
- [mkdir, logdir]
143+
- [log, file 1 line 1, logdir/logfile1.log]
144+
- [log, file 2 line 1, logdir/logfile2.log]
145+
- [start file tailer, readall=true, fail_on_missing_logfile=false, logdir/*]
146+
- [expect, file 1 line 1, logdir/logfile1.log]
147+
- [expect, file 2 line 1, logdir/logfile2.log]
148+
- [logrotate, logdir/logfile1.log, logdir/logfile2.log]
149+
- [log, file 2 line 2, logdir/logfile2.log]
150+
- [log, file 1 line 2, logdir/logfile1.log]
151+
- [expect, file 1 line 2, logdir/logfile1.log]
152+
- [expect, file 2 line 2, logdir/logfile2.log]
137153
`
138154

139155
// // The following test fails on Windows in tearDown() when removing logdir.
@@ -146,13 +162,14 @@ const tests = `
146162
// `
147163

148164
type testConfigType struct {
149-
Name string
150-
Commands [][]string
165+
Name string
166+
ParamFilters map[string][]string `yaml:"param_filters"`
167+
Commands [][]string
151168
}
152169

153170
func TestAll(t *testing.T) {
154171
testConfigs := make([]testConfigType, 0)
155-
err := yaml.Unmarshal([]byte(tests), &testConfigs)
172+
err := yaml.UnmarshalStrict([]byte(tests), &testConfigs)
156173
if err != nil {
157174
t.Fatal(err)
158175
}
@@ -162,15 +179,19 @@ func TestAll(t *testing.T) {
162179
// All logratate configs except for copy and copytruncate can be combined with logratateMoveConfig.
163180
for _, logrotateCfg := range []logrotateConfig{_create, _nocreate, _create_from_temp} {
164181
for _, logrotateMvCfg := range []logrotateMoveConfig{mv, cp, rm} {
165-
runTest(t, testConfig.Name, loggerCfg, tailerOpt, logrotateCfg, logrotateMvCfg, testConfig.Commands)
182+
if !skip(testConfig, loggerCfg, logrotateCfg, logrotateMvCfg) {
183+
runTest(t, testConfig.Name, loggerCfg, tailerOpt, logrotateCfg, logrotateMvCfg, testConfig.Commands)
184+
}
166185
}
167186
}
168187
for _, loggerCfg := range []loggerConfig{keepOpen, closeFileAfterEachLine} {
169188
// When the logger keeps the file open, only the logrotate options 'copy' and 'copytruncate' make sense.
170189
for _, logrotateCfg := range []logrotateConfig{_copy, _copytruncate} {
171190
for _, logrotateMvCfg := range []logrotateMoveConfig{none} {
172191
// The logroatate configs copytruncate and copy require logroatateMoveConfig == none.
173-
runTest(t, testConfig.Name, loggerCfg, tailerOpt, logrotateCfg, logrotateMvCfg, testConfig.Commands)
192+
if !skip(testConfig, loggerCfg, logrotateCfg, logrotateMvCfg) {
193+
runTest(t, testConfig.Name, loggerCfg, tailerOpt, logrotateCfg, logrotateMvCfg, testConfig.Commands)
194+
}
174195
}
175196
}
176197
}
@@ -225,6 +246,28 @@ func TestFileMissingOnStartup(t *testing.T) {
225246
runTest(t, "fail on missing startup", closeFileAfterEachLine, fseventTailer, _nocreate, mv, test)
226247
}
227248

249+
func skip(config testConfigType, loggerCfg loggerConfig, logrotateCfg logrotateConfig, logrotateMvCfg logrotateMoveConfig) bool {
250+
if len(config.ParamFilters["loggerCfg"]) > 0 && !containsAsString(loggerCfg, config.ParamFilters["loggerCfg"]) {
251+
return true
252+
}
253+
if len(config.ParamFilters["logrotateCfg"]) > 0 && !containsAsString(logrotateCfg, config.ParamFilters["logrotateCfg"]) {
254+
return true
255+
}
256+
if len(config.ParamFilters["logrotateMvCfg"]) > 0 && !containsAsString(logrotateMvCfg, config.ParamFilters["logrotateMvCfg"]) {
257+
return true
258+
}
259+
return false
260+
}
261+
262+
func containsAsString(item fmt.Stringer, slice []string) bool {
263+
for _, entry := range slice {
264+
if item.String() == entry {
265+
return true
266+
}
267+
}
268+
return false
269+
}
270+
228271
func runTest(t *testing.T, testName string, loggerCfg loggerConfig, tailerCfg fileTailerConfig, logrotateCfg logrotateConfig, logrotateMvCfg logrotateMoveConfig, cmds [][]string) {
229272
params := []fmt.Stringer{loggerCfg, tailerCfg, logrotateCfg, logrotateMvCfg}
230273
join(params, ",")

0 commit comments

Comments
 (0)