Improve test daemon logging
1. On failed start tail the daemon logs
2. Exposes generic tailing functions to make test debugging simpler
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
(cherry picked from commit 914888cf8b
)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
801e90549a
commit
b97c8a0325
1 changed files with 32 additions and 0 deletions
|
@ -18,6 +18,7 @@ import (
|
|||
"github.com/docker/docker/client"
|
||||
"github.com/docker/docker/pkg/ioutils"
|
||||
"github.com/docker/docker/pkg/stringid"
|
||||
"github.com/docker/docker/pkg/tailfile"
|
||||
"github.com/docker/docker/testutil/request"
|
||||
"github.com/docker/go-connections/sockets"
|
||||
"github.com/docker/go-connections/tlsconfig"
|
||||
|
@ -295,10 +296,41 @@ func (d *Daemon) Cleanup(t testing.TB) {
|
|||
cleanupNetworkNamespace(t, d)
|
||||
}
|
||||
|
||||
// TailLogsT attempts to tail N lines from the daemon logs.
|
||||
// If there is an error the error is only logged, it does not cause an error with the test.
|
||||
func (d *Daemon) TailLogsT(t LogT, n int) {
|
||||
lines, err := d.TailLogs(n)
|
||||
if err != nil {
|
||||
t.Logf("[%s] %v", d.id, err)
|
||||
return
|
||||
}
|
||||
for _, l := range lines {
|
||||
t.Logf("[%s] %s", d.id, string(l))
|
||||
}
|
||||
}
|
||||
|
||||
// TailLogs tails N lines from the daemon logs
|
||||
func (d *Daemon) TailLogs(n int) ([][]byte, error) {
|
||||
logF, err := os.Open(d.logFile.Name())
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "error opening daemon log file after failed start")
|
||||
}
|
||||
|
||||
defer logF.Close()
|
||||
lines, err := tailfile.TailFile(logF, n)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "error tailing log daemon logs")
|
||||
}
|
||||
|
||||
return lines, nil
|
||||
|
||||
}
|
||||
|
||||
// Start starts the daemon and return once it is ready to receive requests.
|
||||
func (d *Daemon) Start(t testing.TB, args ...string) {
|
||||
t.Helper()
|
||||
if err := d.StartWithError(args...); err != nil {
|
||||
d.TailLogsT(t, 20)
|
||||
d.DumpStackAndQuit() // in case the daemon is stuck
|
||||
t.Fatalf("[%s] failed to start daemon with arguments %v : %v", d.id, d.args, err)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue