Merge pull request #28203 from shaynewang/27687-fix-tail-flag-returning-more-lines

Fixes #27687 docker logs --tails returns less lines than expected
This commit is contained in:
Vincent Demeester 2016-11-14 10:17:38 +01:00 коммит произвёл GitHub
Родитель e7769e29e0 63904eb674
Коммит 28094357ed
2 изменённых файлов: 13 добавлений и 7 удалений

Просмотреть файл

@ -117,22 +117,28 @@ func (s *DockerSuite) TestLogsTail(c *check.C) {
id := strings.TrimSpace(out) id := strings.TrimSpace(out)
dockerCmd(c, "wait", id) dockerCmd(c, "wait", id)
out, _ = dockerCmd(c, "logs", "--tail", "5", id) out, _ = dockerCmd(c, "logs", "--tail", "0", id)
lines := strings.Split(out, "\n") lines := strings.Split(out, "\n")
c.Assert(lines, checker.HasLen, 1)
out, _ = dockerCmd(c, "logs", "--tail", "5", id)
lines = strings.Split(out, "\n")
c.Assert(lines, checker.HasLen, 6) c.Assert(lines, checker.HasLen, 6)
out, _ = dockerCmd(c, "logs", "--tail", "all", id) out, _ = dockerCmd(c, "logs", "--tail", "99", id)
lines = strings.Split(out, "\n") lines = strings.Split(out, "\n")
c.Assert(lines, checker.HasLen, 100)
out, _ = dockerCmd(c, "logs", "--tail", "all", id)
lines = strings.Split(out, "\n")
c.Assert(lines, checker.HasLen, testLen+1)
out, _ = dockerCmd(c, "logs", "--tail", "-1", id)
lines = strings.Split(out, "\n")
c.Assert(lines, checker.HasLen, testLen+1) c.Assert(lines, checker.HasLen, testLen+1)
out, _, _ = dockerCmdWithStdoutStderr(c, "logs", "--tail", "random", id) out, _, _ = dockerCmdWithStdoutStderr(c, "logs", "--tail", "random", id)
lines = strings.Split(out, "\n") lines = strings.Split(out, "\n")
c.Assert(lines, checker.HasLen, testLen+1) c.Assert(lines, checker.HasLen, testLen+1)
} }

Просмотреть файл

@ -44,7 +44,7 @@ func TailFile(f io.ReadSeeker, n int) ([][]byte, error) {
break break
} else { } else {
b = make([]byte, blockSize) b = make([]byte, blockSize)
if _, err := f.Seek(step, os.SEEK_END); err != nil { if _, err := f.Seek(left, os.SEEK_SET); err != nil {
return nil, err return nil, err
} }
if _, err := f.Read(b); err != nil { if _, err := f.Read(b); err != nil {