diff options
author | Brian Goff <cpuguy83@gmail.com> | 2020-05-14 14:25:20 -0700 |
---|---|---|
committer | Sebastiaan van Stijn <github@gone.nl> | 2020-08-05 12:48:17 +0200 |
commit | a958fc3e658683daa3c0eacc17cfa262783e84bb (patch) | |
tree | e63bcaf17dbe867b7deba3cf66e6d3c0f81685d2 | |
parent | 88820a4793eabd2a5624e7a16772207cfa073f98 (diff) | |
download | docker-a958fc3e658683daa3c0eacc17cfa262783e84bb.tar.gz |
Fix flakey test for log file rotate.
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
(cherry picked from commit 5ea5c02c887392be1560e559a3c4d53445cf6505)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
-rw-r--r-- | daemon/logger/loggerutils/logfile_test.go | 31 |
1 files 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) + } + } +} |