|
@@ -7,7 +7,6 @@ import (
|
|
|
"net/http"
|
|
|
"os"
|
|
|
"os/exec"
|
|
|
- "strconv"
|
|
|
"strings"
|
|
|
"sync"
|
|
|
"time"
|
|
@@ -50,7 +49,6 @@ func (s *DockerSuite) TestEventsTimestampFormats(c *check.C) {
|
|
|
c.Assert(containerEvents[3], checker.Equals, "die", check.Commentf(out))
|
|
|
c.Assert(containerEvents[4], checker.Equals, "destroy", check.Commentf(out))
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsUntag(c *check.C) {
|
|
@@ -77,7 +75,7 @@ func (s *DockerSuite) TestEventsContainerFailStartDie(c *check.C) {
|
|
|
_, _, err := dockerCmdWithError("run", "--name", "testeventdie", "busybox", "blerg")
|
|
|
c.Assert(err, checker.NotNil, check.Commentf("Container run with command blerg should have failed, but it did not"))
|
|
|
|
|
|
- out, _ := dockerCmd(c, "events", "--since=0", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
|
|
|
+ out, _ := dockerCmd(c, "events", "--since=0", "--until", daemonUnixTime(c))
|
|
|
events := strings.Split(strings.TrimSpace(out), "\n")
|
|
|
|
|
|
nEvents := len(events)
|
|
@@ -128,17 +126,16 @@ func (s *DockerSuite) TestEventsLimit(c *check.C) {
|
|
|
c.Assert(err, checker.IsNil, check.Commentf("%q failed with error", strings.Join(args, " ")))
|
|
|
}
|
|
|
|
|
|
- out, _ := dockerCmd(c, "events", "--since=0", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
|
|
|
+ out, _ := dockerCmd(c, "events", "--since=0", "--until", daemonUnixTime(c))
|
|
|
events := strings.Split(out, "\n")
|
|
|
nEvents := len(events) - 1
|
|
|
c.Assert(nEvents, checker.Equals, 64, check.Commentf("events should be limited to 64, but received %d", nEvents))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsContainerEvents(c *check.C) {
|
|
|
- containerID, _ := dockerCmd(c, "run", "--rm", "--name", "container-events-test", "busybox", "true")
|
|
|
- containerID = strings.TrimSpace(containerID)
|
|
|
+ dockerCmd(c, "run", "--rm", "--name", "container-events-test", "busybox", "true")
|
|
|
|
|
|
- out, _ := dockerCmd(c, "events", "--since=0", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
|
|
|
+ out, _ := dockerCmd(c, "events", "--until", daemonUnixTime(c))
|
|
|
events := strings.Split(out, "\n")
|
|
|
events = events[:len(events)-1]
|
|
|
|
|
@@ -155,11 +152,10 @@ func (s *DockerSuite) TestEventsContainerEvents(c *check.C) {
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsContainerEventsAttrSort(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
- containerID, _ := dockerCmd(c, "run", "-d", "--name", "container-events-test", "busybox", "true")
|
|
|
- containerID = strings.TrimSpace(containerID)
|
|
|
+ since := daemonUnixTime(c)
|
|
|
+ dockerCmd(c, "run", "--rm", "--name", "container-events-test", "busybox", "true")
|
|
|
|
|
|
- out, _ := dockerCmd(c, "events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
|
|
|
+ out, _ := dockerCmd(c, "events", "--filter", "container=container-events-test", "--since", since, "--until", daemonUnixTime(c))
|
|
|
events := strings.Split(out, "\n")
|
|
|
|
|
|
nEvents := len(events)
|
|
@@ -167,9 +163,6 @@ func (s *DockerSuite) TestEventsContainerEventsAttrSort(c *check.C) {
|
|
|
matchedEvents := 0
|
|
|
for _, event := range events {
|
|
|
matches := eventstestutils.ScanMap(event)
|
|
|
- if matches["id"] != containerID {
|
|
|
- continue
|
|
|
- }
|
|
|
if matches["eventType"] == "container" && matches["action"] == "create" {
|
|
|
matchedEvents++
|
|
|
c.Assert(out, checker.Contains, "(image=busybox, name=container-events-test)", check.Commentf("Event attributes not sorted"))
|
|
@@ -178,14 +171,14 @@ func (s *DockerSuite) TestEventsContainerEventsAttrSort(c *check.C) {
|
|
|
c.Assert(out, checker.Contains, "(image=busybox, name=container-events-test)", check.Commentf("Event attributes not sorted"))
|
|
|
}
|
|
|
}
|
|
|
- c.Assert(matchedEvents, checker.Equals, 2)
|
|
|
+ c.Assert(matchedEvents, checker.Equals, 2, check.Commentf("missing events for container container-events-test:\n%s", out))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsContainerEventsSinceUnixEpoch(c *check.C) {
|
|
|
dockerCmd(c, "run", "--rm", "--name", "since-epoch-test", "busybox", "true")
|
|
|
timeBeginning := time.Unix(0, 0).Format(time.RFC3339Nano)
|
|
|
timeBeginning = strings.Replace(timeBeginning, "Z", ".000000000Z", -1)
|
|
|
- out, _ := dockerCmd(c, "events", fmt.Sprintf("--since='%s'", timeBeginning), fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
|
|
|
+ out, _ := dockerCmd(c, "events", "--since", timeBeginning, "--until", daemonUnixTime(c))
|
|
|
events := strings.Split(out, "\n")
|
|
|
events = events[:len(events)-1]
|
|
|
|
|
@@ -203,13 +196,12 @@ func (s *DockerSuite) TestEventsContainerEventsSinceUnixEpoch(c *check.C) {
|
|
|
|
|
|
func (s *DockerSuite) TestEventsImageTag(c *check.C) {
|
|
|
time.Sleep(1 * time.Second) // because API has seconds granularity
|
|
|
- since := daemonTime(c).Unix()
|
|
|
+ since := daemonUnixTime(c)
|
|
|
image := "testimageevents:tag"
|
|
|
dockerCmd(c, "tag", "busybox", image)
|
|
|
|
|
|
out, _ := dockerCmd(c, "events",
|
|
|
- fmt.Sprintf("--since=%d", since),
|
|
|
- fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
|
|
|
+ "--since", since, "--until", daemonUnixTime(c))
|
|
|
|
|
|
events := strings.Split(strings.TrimSpace(out), "\n")
|
|
|
c.Assert(events, checker.HasLen, 1, check.Commentf("was expecting 1 event. out=%s", out))
|
|
@@ -223,14 +215,13 @@ func (s *DockerSuite) TestEventsImageTag(c *check.C) {
|
|
|
func (s *DockerSuite) TestEventsImagePull(c *check.C) {
|
|
|
// TODO Windows: Enable this test once pull and reliable image names are available
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
- since := daemonTime(c).Unix()
|
|
|
+ since := daemonUnixTime(c)
|
|
|
testRequires(c, Network)
|
|
|
|
|
|
dockerCmd(c, "pull", "hello-world")
|
|
|
|
|
|
out, _ := dockerCmd(c, "events",
|
|
|
- fmt.Sprintf("--since=%d", since),
|
|
|
- fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
|
|
|
+ "--since", since, "--until", daemonUnixTime(c))
|
|
|
|
|
|
events := strings.Split(strings.TrimSpace(out), "\n")
|
|
|
event := strings.TrimSpace(events[len(events)-1])
|
|
@@ -248,7 +239,7 @@ func (s *DockerSuite) TestEventsImageImport(c *check.C) {
|
|
|
out, _ := dockerCmd(c, "run", "-d", "busybox", "true")
|
|
|
cleanedContainerID := strings.TrimSpace(out)
|
|
|
|
|
|
- since := daemonTime(c).Unix()
|
|
|
+ since := daemonUnixTime(c)
|
|
|
out, _, err := runCommandPipelineWithOutput(
|
|
|
exec.Command(dockerBinary, "export", cleanedContainerID),
|
|
|
exec.Command(dockerBinary, "import", "-"),
|
|
@@ -256,7 +247,7 @@ func (s *DockerSuite) TestEventsImageImport(c *check.C) {
|
|
|
c.Assert(err, checker.IsNil, check.Commentf("import failed with output: %q", out))
|
|
|
imageRef := strings.TrimSpace(out)
|
|
|
|
|
|
- out, _ = dockerCmd(c, "events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", daemonTime(c).Unix()), "--filter", "event=import")
|
|
|
+ out, _ = dockerCmd(c, "events", "--since", since, "--until", daemonUnixTime(c), "--filter", "event=import")
|
|
|
events := strings.Split(strings.TrimSpace(out), "\n")
|
|
|
c.Assert(events, checker.HasLen, 1)
|
|
|
matches := eventstestutils.ScanMap(events[0])
|
|
@@ -265,13 +256,13 @@ func (s *DockerSuite) TestEventsImageImport(c *check.C) {
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsFilters(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
+ since := daemonUnixTime(c)
|
|
|
dockerCmd(c, "run", "--rm", "busybox", "true")
|
|
|
dockerCmd(c, "run", "--rm", "busybox", "true")
|
|
|
- out, _ := dockerCmd(c, "events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", daemonTime(c).Unix()), "--filter", "event=die")
|
|
|
+ out, _ := dockerCmd(c, "events", "--since", since, "--until", daemonUnixTime(c), "--filter", "event=die")
|
|
|
parseEvents(c, out, "die")
|
|
|
|
|
|
- out, _ = dockerCmd(c, "events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", daemonTime(c).Unix()), "--filter", "event=die", "--filter", "event=start")
|
|
|
+ out, _ = dockerCmd(c, "events", "--since", since, "--until", daemonUnixTime(c), "--filter", "event=die", "--filter", "event=start")
|
|
|
parseEvents(c, out, "die|start")
|
|
|
|
|
|
// make sure we at least got 2 start events
|
|
@@ -281,7 +272,7 @@ func (s *DockerSuite) TestEventsFilters(c *check.C) {
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsFilterImageName(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
+ since := daemonUnixTime(c)
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "--name", "container_1", "-d", "busybox:latest", "true")
|
|
|
container1 := strings.TrimSpace(out)
|
|
@@ -290,7 +281,7 @@ func (s *DockerSuite) TestEventsFilterImageName(c *check.C) {
|
|
|
container2 := strings.TrimSpace(out)
|
|
|
|
|
|
name := "busybox"
|
|
|
- out, _ = dockerCmd(c, "events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", daemonTime(c).Unix()), "--filter", fmt.Sprintf("image=%s", name))
|
|
|
+ out, _ = dockerCmd(c, "events", "--since", since, "--until", daemonUnixTime(c), "--filter", fmt.Sprintf("image=%s", name))
|
|
|
events := strings.Split(out, "\n")
|
|
|
events = events[:len(events)-1]
|
|
|
c.Assert(events, checker.Not(checker.HasLen), 0) //Expected events but found none for the image busybox:latest
|
|
@@ -310,7 +301,7 @@ func (s *DockerSuite) TestEventsFilterImageName(c *check.C) {
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsFilterLabels(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
+ since := daemonUnixTime(c)
|
|
|
label := "io.docker.testing=foo"
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "-d", "-l", label, "busybox:latest", "true")
|
|
@@ -322,8 +313,8 @@ func (s *DockerSuite) TestEventsFilterLabels(c *check.C) {
|
|
|
out, _ = dockerCmd(
|
|
|
c,
|
|
|
"events",
|
|
|
- fmt.Sprintf("--since=%d", since),
|
|
|
- fmt.Sprintf("--until=%d", daemonTime(c).Unix()),
|
|
|
+ "--since", since,
|
|
|
+ "--until", daemonUnixTime(c),
|
|
|
"--filter", fmt.Sprintf("label=%s", label))
|
|
|
|
|
|
events := strings.Split(strings.TrimSpace(out), "\n")
|
|
@@ -336,7 +327,7 @@ func (s *DockerSuite) TestEventsFilterLabels(c *check.C) {
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsFilterImageLabels(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
+ since := daemonUnixTime(c)
|
|
|
name := "labelfiltertest"
|
|
|
label := "io.docker.testing=image"
|
|
|
|
|
@@ -353,8 +344,8 @@ func (s *DockerSuite) TestEventsFilterImageLabels(c *check.C) {
|
|
|
out, _ := dockerCmd(
|
|
|
c,
|
|
|
"events",
|
|
|
- fmt.Sprintf("--since=%d", since),
|
|
|
- fmt.Sprintf("--until=%d", daemonTime(c).Unix()),
|
|
|
+ "--since", since,
|
|
|
+ "--until", daemonUnixTime(c),
|
|
|
"--filter", fmt.Sprintf("label=%s", label),
|
|
|
"--filter", "type=image")
|
|
|
|
|
@@ -368,7 +359,7 @@ func (s *DockerSuite) TestEventsFilterImageLabels(c *check.C) {
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsFilterContainer(c *check.C) {
|
|
|
- since := fmt.Sprintf("%d", daemonTime(c).Unix())
|
|
|
+ since := daemonUnixTime(c)
|
|
|
nameID := make(map[string]string)
|
|
|
|
|
|
for _, name := range []string{"container_1", "container_2"} {
|
|
@@ -377,7 +368,7 @@ func (s *DockerSuite) TestEventsFilterContainer(c *check.C) {
|
|
|
nameID[name] = id
|
|
|
}
|
|
|
|
|
|
- until := fmt.Sprintf("%d", daemonTime(c).Unix())
|
|
|
+ until := daemonUnixTime(c)
|
|
|
|
|
|
checkEvents := func(id string, events []string) error {
|
|
|
if len(events) != 4 { // create, attach, start, die
|
|
@@ -408,22 +399,21 @@ func (s *DockerSuite) TestEventsFilterContainer(c *check.C) {
|
|
|
func (s *DockerSuite) TestEventsCommit(c *check.C) {
|
|
|
// Problematic on Windows as cannot commit a running container
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
- since := daemonTime(c).Unix()
|
|
|
|
|
|
- out, _ := runSleepingContainer(c, "-d")
|
|
|
+ out, _ := runSleepingContainer(c)
|
|
|
cID := strings.TrimSpace(out)
|
|
|
c.Assert(waitRun(cID), checker.IsNil)
|
|
|
|
|
|
dockerCmd(c, "commit", "-m", "test", cID)
|
|
|
dockerCmd(c, "stop", cID)
|
|
|
+ c.Assert(waitExited(cID, 5*time.Second), checker.IsNil)
|
|
|
|
|
|
- out, _ = dockerCmd(c, "events", "--since=0", "-f", "container="+cID, "--until="+strconv.Itoa(int(since)))
|
|
|
+ until := daemonUnixTime(c)
|
|
|
+ out, _ = dockerCmd(c, "events", "-f", "container="+cID, "--until="+until)
|
|
|
c.Assert(out, checker.Contains, "commit", check.Commentf("Missing 'commit' log event"))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsCopy(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
-
|
|
|
// Build a test image.
|
|
|
id, err := buildImage("cpimg", `
|
|
|
FROM busybox
|
|
@@ -441,18 +431,18 @@ func (s *DockerSuite) TestEventsCopy(c *check.C) {
|
|
|
|
|
|
dockerCmd(c, "cp", "cptest:/file", tempFile.Name())
|
|
|
|
|
|
- out, _ := dockerCmd(c, "events", "--since=0", "-f", "container=cptest", "--until="+strconv.Itoa(int(since)))
|
|
|
+ until := daemonUnixTime(c)
|
|
|
+ out, _ := dockerCmd(c, "events", "--since=0", "-f", "container=cptest", "--until="+until)
|
|
|
c.Assert(out, checker.Contains, "archive-path", check.Commentf("Missing 'archive-path' log event\n"))
|
|
|
|
|
|
dockerCmd(c, "cp", tempFile.Name(), "cptest:/filecopy")
|
|
|
|
|
|
- out, _ = dockerCmd(c, "events", "--since=0", "-f", "container=cptest", "--until="+strconv.Itoa(int(since)))
|
|
|
+ until = daemonUnixTime(c)
|
|
|
+ out, _ = dockerCmd(c, "events", "-f", "container=cptest", "--until="+until)
|
|
|
c.Assert(out, checker.Contains, "extract-to-dir", check.Commentf("Missing 'extract-to-dir' log event"))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsResize(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
-
|
|
|
out, _ := runSleepingContainer(c, "-d")
|
|
|
cID := strings.TrimSpace(out)
|
|
|
c.Assert(waitRun(cID), checker.IsNil)
|
|
@@ -464,17 +454,18 @@ func (s *DockerSuite) TestEventsResize(c *check.C) {
|
|
|
|
|
|
dockerCmd(c, "stop", cID)
|
|
|
|
|
|
- out, _ = dockerCmd(c, "events", "--since=0", "-f", "container="+cID, "--until="+strconv.Itoa(int(since)))
|
|
|
+ until := daemonUnixTime(c)
|
|
|
+ out, _ = dockerCmd(c, "events", "-f", "container="+cID, "--until="+until)
|
|
|
c.Assert(out, checker.Contains, "resize", check.Commentf("Missing 'resize' log event"))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsAttach(c *check.C) {
|
|
|
// TODO Windows CI: Figure out why this test fails intermittently (TP4 and TP5).
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
- since := daemonTime(c).Unix()
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "-di", "busybox", "cat")
|
|
|
cID := strings.TrimSpace(out)
|
|
|
+ c.Assert(waitRun(cID), checker.IsNil)
|
|
|
|
|
|
cmd := exec.Command(dockerBinary, "attach", cID)
|
|
|
stdin, err := cmd.StdinPipe()
|
|
@@ -496,25 +487,27 @@ func (s *DockerSuite) TestEventsAttach(c *check.C) {
|
|
|
c.Assert(stdin.Close(), checker.IsNil)
|
|
|
|
|
|
dockerCmd(c, "kill", cID)
|
|
|
+ c.Assert(waitExited(cID, 5*time.Second), checker.IsNil)
|
|
|
|
|
|
- out, _ = dockerCmd(c, "events", "--since=0", "-f", "container="+cID, "--until="+strconv.Itoa(int(since)))
|
|
|
+ until := daemonUnixTime(c)
|
|
|
+ out, _ = dockerCmd(c, "events", "-f", "container="+cID, "--until="+until)
|
|
|
c.Assert(out, checker.Contains, "attach", check.Commentf("Missing 'attach' log event"))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsRename(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
-
|
|
|
- dockerCmd(c, "run", "--name", "oldName", "busybox", "true")
|
|
|
+ out, _ := dockerCmd(c, "run", "--name", "oldName", "busybox", "true")
|
|
|
+ cID := strings.TrimSpace(out)
|
|
|
dockerCmd(c, "rename", "oldName", "newName")
|
|
|
|
|
|
- out, _ := dockerCmd(c, "events", "--since=0", "-f", "container=newName", "--until="+strconv.Itoa(int(since)))
|
|
|
+ until := daemonUnixTime(c)
|
|
|
+ // filter by the container id because the name in the event will be the new name.
|
|
|
+ out, _ = dockerCmd(c, "events", "-f", "container="+cID, "--until", until)
|
|
|
c.Assert(out, checker.Contains, "rename", check.Commentf("Missing 'rename' log event\n"))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsTop(c *check.C) {
|
|
|
// Problematic on Windows as Windows does not support top
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
- since := daemonTime(c).Unix()
|
|
|
|
|
|
out, _ := runSleepingContainer(c, "-d")
|
|
|
cID := strings.TrimSpace(out)
|
|
@@ -523,24 +516,17 @@ func (s *DockerSuite) TestEventsTop(c *check.C) {
|
|
|
dockerCmd(c, "top", cID)
|
|
|
dockerCmd(c, "stop", cID)
|
|
|
|
|
|
- out, _ = dockerCmd(c, "events", "--since=0", "-f", "container="+cID, "--until="+strconv.Itoa(int(since)))
|
|
|
+ until := daemonUnixTime(c)
|
|
|
+ out, _ = dockerCmd(c, "events", "-f", "container="+cID, "--until="+until)
|
|
|
c.Assert(out, checker.Contains, " top", check.Commentf("Missing 'top' log event"))
|
|
|
}
|
|
|
|
|
|
-// #13753
|
|
|
-func (s *DockerSuite) TestEventsDefaultEmpty(c *check.C) {
|
|
|
- dockerCmd(c, "run", "busybox")
|
|
|
- out, _ := dockerCmd(c, "events", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, "")
|
|
|
-}
|
|
|
-
|
|
|
// #14316
|
|
|
func (s *DockerRegistrySuite) TestEventsImageFilterPush(c *check.C) {
|
|
|
// Problematic to port for Windows CI during TP4/TP5 timeframe while
|
|
|
// not supporting push
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
testRequires(c, Network)
|
|
|
- since := daemonTime(c).Unix()
|
|
|
repoName := fmt.Sprintf("%v/dockercli/testf", privateRegistryURL)
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
|
@@ -551,12 +537,13 @@ func (s *DockerRegistrySuite) TestEventsImageFilterPush(c *check.C) {
|
|
|
dockerCmd(c, "stop", cID)
|
|
|
dockerCmd(c, "push", repoName)
|
|
|
|
|
|
- out, _ = dockerCmd(c, "events", "--since=0", "-f", "image="+repoName, "-f", "event=push", "--until="+strconv.Itoa(int(since)))
|
|
|
+ until := daemonUnixTime(c)
|
|
|
+ out, _ = dockerCmd(c, "events", "-f", "image="+repoName, "-f", "event=push", "--until", until)
|
|
|
c.Assert(out, checker.Contains, repoName, check.Commentf("Missing 'push' log event for %s", repoName))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsFilterType(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
+ since := daemonUnixTime(c)
|
|
|
name := "labelfiltertest"
|
|
|
label := "io.docker.testing=image"
|
|
|
|
|
@@ -573,8 +560,8 @@ func (s *DockerSuite) TestEventsFilterType(c *check.C) {
|
|
|
out, _ := dockerCmd(
|
|
|
c,
|
|
|
"events",
|
|
|
- fmt.Sprintf("--since=%d", since),
|
|
|
- fmt.Sprintf("--until=%d", daemonTime(c).Unix()),
|
|
|
+ "--since", since,
|
|
|
+ "--until", daemonUnixTime(c),
|
|
|
"--filter", fmt.Sprintf("label=%s", label),
|
|
|
"--filter", "type=image")
|
|
|
|
|
@@ -589,8 +576,8 @@ func (s *DockerSuite) TestEventsFilterType(c *check.C) {
|
|
|
out, _ = dockerCmd(
|
|
|
c,
|
|
|
"events",
|
|
|
- fmt.Sprintf("--since=%d", since),
|
|
|
- fmt.Sprintf("--until=%d", daemonTime(c).Unix()),
|
|
|
+ "--since", since,
|
|
|
+ "--until", daemonUnixTime(c),
|
|
|
"--filter", fmt.Sprintf("label=%s", label),
|
|
|
"--filter", "type=container")
|
|
|
events = strings.Split(strings.TrimSpace(out), "\n")
|
|
@@ -601,19 +588,19 @@ func (s *DockerSuite) TestEventsFilterType(c *check.C) {
|
|
|
out, _ = dockerCmd(
|
|
|
c,
|
|
|
"events",
|
|
|
- fmt.Sprintf("--since=%d", since),
|
|
|
- fmt.Sprintf("--until=%d", daemonTime(c).Unix()),
|
|
|
+ "--since", since,
|
|
|
+ "--until", daemonUnixTime(c),
|
|
|
"--filter", "type=network")
|
|
|
events = strings.Split(strings.TrimSpace(out), "\n")
|
|
|
c.Assert(len(events), checker.GreaterOrEqualThan, 1, check.Commentf("Events == %s", events))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestEventsFilterImageInContainerAction(c *check.C) {
|
|
|
- since := daemonTime(c).Unix()
|
|
|
+ since := daemonUnixTime(c)
|
|
|
dockerCmd(c, "run", "--name", "test-container", "-d", "busybox", "true")
|
|
|
waitRun("test-container")
|
|
|
|
|
|
- out, _ := dockerCmd(c, "events", "--filter", "image=busybox", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
|
|
|
+ out, _ := dockerCmd(c, "events", "--filter", "image=busybox", "--since", since, "--until", daemonUnixTime(c))
|
|
|
events := strings.Split(strings.TrimSpace(out), "\n")
|
|
|
c.Assert(len(events), checker.GreaterThan, 1, check.Commentf(out))
|
|
|
}
|
|
@@ -636,7 +623,7 @@ func (s *DockerSuite) TestEventsContainerRestart(c *check.C) {
|
|
|
startCount int
|
|
|
dieCount int
|
|
|
)
|
|
|
- out, _ := dockerCmd(c, "events", "--since=0", fmt.Sprintf("--until=%d", daemonTime(c).Unix()), "-f", "container=testEvent")
|
|
|
+ out, _ := dockerCmd(c, "events", "--since=0", "--until", daemonUnixTime(c), "-f", "container=testEvent")
|
|
|
events := strings.Split(strings.TrimSpace(out), "\n")
|
|
|
|
|
|
nEvents := len(events)
|
|
@@ -656,5 +643,33 @@ func (s *DockerSuite) TestEventsContainerRestart(c *check.C) {
|
|
|
c.Assert(createCount, checker.Equals, 1, check.Commentf("testEvent should be created 1 times: %v", actions))
|
|
|
c.Assert(startCount, checker.Equals, 4, check.Commentf("testEvent should start 4 times: %v", actions))
|
|
|
c.Assert(dieCount, checker.Equals, 4, check.Commentf("testEvent should die 4 times: %v", actions))
|
|
|
+}
|
|
|
+
|
|
|
+func (s *DockerSuite) TestEventsSinceInTheFuture(c *check.C) {
|
|
|
+ dockerCmd(c, "run", "--name", "test-container", "-d", "busybox", "true")
|
|
|
+ waitRun("test-container")
|
|
|
+
|
|
|
+ since := daemonTime(c)
|
|
|
+ until := since.Add(time.Duration(-24) * time.Hour)
|
|
|
+ out, _, err := dockerCmdWithError("events", "--filter", "image=busybox", "--since", parseEventTime(since), "--until", parseEventTime(until))
|
|
|
+
|
|
|
+ c.Assert(err, checker.NotNil)
|
|
|
+ c.Assert(out, checker.Contains, "cannot be after `until`")
|
|
|
+}
|
|
|
+
|
|
|
+func (s *DockerSuite) TestEventsUntilInThePast(c *check.C) {
|
|
|
+ since := daemonUnixTime(c)
|
|
|
+
|
|
|
+ dockerCmd(c, "run", "--name", "test-container", "-d", "busybox", "true")
|
|
|
+ waitRun("test-container")
|
|
|
+
|
|
|
+ until := daemonUnixTime(c)
|
|
|
+
|
|
|
+ dockerCmd(c, "run", "--name", "test-container2", "-d", "busybox", "true")
|
|
|
+ waitRun("test-container2")
|
|
|
+
|
|
|
+ out, _ := dockerCmd(c, "events", "--filter", "image=busybox", "--since", since, "--until", until)
|
|
|
|
|
|
+ c.Assert(out, checker.Not(checker.Contains), "test-container2")
|
|
|
+ c.Assert(out, checker.Contains, "test-container")
|
|
|
}
|