summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Goff <cpuguy83@gmail.com>2020-05-14 14:25:20 -0700
committerSebastiaan van Stijn <github@gone.nl>2020-08-05 12:48:17 +0200
commita958fc3e658683daa3c0eacc17cfa262783e84bb (patch)
treee63bcaf17dbe867b7deba3cf66e6d3c0f81685d2
parent88820a4793eabd2a5624e7a16772207cfa073f98 (diff)
downloaddocker-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.go31
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)
+ }
+ }
+}