Explorar o código

d/logger/journald: sync logger on close in tests

The journald reader test harness injects an artificial asynchronous
delay into the logging pipeline: a logged message won't be written to
the journal until at least 150ms after the Log() call returns. If a test
returns while log messages are still in flight to be written, the logs
may attempt to be written after the TempDir has been cleaned up, leading
to spurious errors.

The logger read tests which interleave writing and reading have to
include explicit synchronization points to work reliably with this delay
in place. On the other hand, tests should not be required to sync the
logger explicitly before returning. Override the Close() method in the
test harness wrapper to wait for in-flight logs to be flushed to disk.

Signed-off-by: Cory Snider <csnider@mirantis.com>
Cory Snider hai 1 ano
pai
achega
d53b7d7e46
Modificáronse 1 ficheiros con 5 adicións e 0 borrados
  1. 5 0
      daemon/logger/journald/read_test.go

+ 5 - 0
daemon/logger/journald/read_test.go

@@ -117,3 +117,8 @@ func (l *syncLogger) Sync() error {
 	<-notify
 	return nil
 }
+
+func (l *syncLogger) Close() error {
+	_ = l.Sync()
+	return l.journald.Close()
+}