[pkg-go] Bug#976403: mtail: racy TestReadFromPipe test in internal/mtail/read_pipe_integration_test.go

Filippo Giunchedi filippo at debian.org
Fri Dec 4 17:21:37 GMT 2020


Subject: mtail: racy TestReadFromPipe test in internal/mtail/read_pipe_integration_test.go
Package: mtail
Version: 3.0.0~rc38-1
Severity: normal

The latest upload has produced mixed results between buildd and autopkgtest
failing to run TestReadFromPipe, e.g.
https://buildd.debian.org/status/fetch.php?pkg=mtail&arch=armhf&ver=3.0.0%7Erc38-1&stamp=1606840174&raw=0
is a success:

=== RUN   TestReadFromPipe
=== RUN   TestReadFromPipe/0s_true
=== RUN   TestReadFromPipe/10ms_false
--- PASS: TestReadFromPipe (10.02s)
    --- PASS: TestReadFromPipe/0s_true (5.00s)
    --- PASS: TestReadFromPipe/10ms_false (5.01s)


But for example autopkgtest amd64 failed: https://ci.debian.net/data/autopkgtest/testing/amd64/m/mtail/8626687/log.gz

=== RUN   TestReadFromPipe
=== RUN   TestReadFromPipe/0s_true
=== RUN   TestReadFromPipe/10ms_false
    read_pipe_integration_test.go:53: Did not see "lines_total" have delta by deadline: got 0 - 0 = 0, want 3
--- FAIL: TestReadFromPipe (65.01s)
    --- PASS: TestReadFromPipe/0s_true (5.00s)
    --- FAIL: TestReadFromPipe/10ms_false (60.00s)
=== RUN   TestTruncatedLogRead
=== RUN   TestTruncatedLogRead/0s_true
=== RUN   TestTruncatedLogRead/10ms_false
--- PASS: TestTruncatedLogRead (0.09s)
    --- PASS: TestTruncatedLogRead/0s_true (0.05s)
    --- PASS: TestTruncatedLogRead/10ms_false (0.04s)
FAIL
FAIL  github.com/google/mtail/internal/mtail  69.897s


The internal/mtail/read_pipe_integration_test.go test file has been changed
recently upstream, specifically removing the "integration" tag in f45531acd69a
and refactoring the pollInterval initialization in a2353dd63. The latter commit
seems to have changed the number of invocations for this test from one with 0
pollInterval and fsnotify disable to running the test twice based on
LogWatcherTestTable (below) which I think is part of the culprit.

+// logWatcherTestTable contains reusable inputs to NewLogWatcher under test.
+var LogWatcherTestTable = []struct {
+       PollInterval   time.Duration
+       EnableFsNotify bool
+}{
+       {0, true},                      // notify only
+       {10 * time.Millisecond, false}, // poll only
+}



More information about the Pkg-go-maintainers mailing list