From a958fc3e658683daa3c0eacc17cfa262783e84bb Mon Sep 17 00:00:00 2001 From: Brian Goff Date: Thu, 14 May 2020 14:25:20 -0700 Subject: Fix flakey test for log file rotate. Signed-off-by: Brian Goff (cherry picked from commit 5ea5c02c887392be1560e559a3c4d53445cf6505) Signed-off-by: Sebastiaan van Stijn --- daemon/logger/loggerutils/logfile_test.go | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/daemon/logger/loggerutils/logfile_test.go b/daemon/logger/loggerutils/logfile_test.go index d7ff34e242..c63d67ab36 100644 --- a/daemon/logger/loggerutils/logfile_test.go +++ b/daemon/logger/loggerutils/logfile_test.go @@ -6,6 +6,7 @@ import ( "io" "io/ioutil" "os" + "path/filepath" "strings" "testing" "time" @@ -14,6 +15,7 @@ import ( "github.com/docker/docker/pkg/pubsub" "github.com/docker/docker/pkg/tailfile" "gotest.tools/assert" + "gotest.tools/poll" ) func TestTailFiles(t *testing.T) { @@ -225,21 +227,15 @@ func TestCheckCapacityAndRotate(t *testing.T) { defer l.Close() assert.NilError(t, l.WriteLogEntry(&logger.Message{Line: []byte("hello world!")})) - - dStringer := dirStringer{dir} - _, err = os.Stat(f.Name() + ".1") - assert.Assert(t, os.IsNotExist(err), dStringer) + assert.Assert(t, os.IsNotExist(err), dirStringer{dir}) assert.NilError(t, l.WriteLogEntry(&logger.Message{Line: []byte("hello world!")})) - _, err = os.Stat(f.Name() + ".1") - assert.NilError(t, err, dStringer) + poll.WaitOn(t, checkFileExists(f.Name()+".1"), poll.WithTimeout(30*time.Second)) assert.NilError(t, l.WriteLogEntry(&logger.Message{Line: []byte("hello world!")})) - _, err = os.Stat(f.Name() + ".1") - assert.NilError(t, err, dStringer) - _, err = os.Stat(f.Name() + ".2.gz") - assert.NilError(t, err, dStringer) + poll.WaitOn(t, checkFileExists(f.Name()+".1"), poll.WithTimeout(30*time.Second)) + poll.WaitOn(t, checkFileExists(f.Name()+".2.gz"), poll.WithTimeout(30*time.Second)) // Now let's simulate a failed rotation where the file was able to be closed but something else happened elsewhere // down the line. @@ -265,3 +261,18 @@ func (d dirStringer) String() string { } return s.String() } + +func checkFileExists(name string) poll.Check { + return func(t poll.LogT) poll.Result { + _, err := os.Stat(name) + switch { + case err == nil: + return poll.Success() + case os.IsNotExist(err): + return poll.Continue("waiting for %s to exist", name) + default: + t.Logf("%s", dirStringer{filepath.Dir(name)}) + return poll.Error(err) + } + } +} -- cgit v1.2.1