Fix flakey test for log file rotate.
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
parent
4e102ab1f0
commit
5ea5c02c88
1 changed files with 21 additions and 10 deletions
|
@ -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/v3/assert"
|
||||
"gotest.tools/v3/poll"
|
||||
)
|
||||
|
||||
type testDecoder struct {
|
||||
|
@ -259,21 +261,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.
|
||||
|
@ -299,3 +295,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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue