diff --git a/integration-cli/docker_cli_events_test.go b/integration-cli/docker_cli_events_test.go index b9d184c09e..c82322c779 100644 --- a/integration-cli/docker_cli_events_test.go +++ b/integration-cli/docker_cli_events_test.go @@ -1,12 +1,14 @@ package main import ( + "fmt" "os/exec" "strings" "testing" + "time" ) -func TestCLIGetEvents(t *testing.T) { +func TestCLIGetEventsUntag(t *testing.T) { out, _, _ := cmd(t, "images", "-q") image := strings.Split(out, "\n")[0] cmd(t, "tag", image, "utest:tag1") @@ -27,3 +29,29 @@ func TestCLIGetEvents(t *testing.T) { } logDone("events - untags are logged") } + +func TestCLIGetEventsPause(t *testing.T) { + out, _, _ := cmd(t, "images", "-q") + image := strings.Split(out, "\n")[0] + cmd(t, "run", "-d", "--name", "testeventpause", image, "sleep", "2") + cmd(t, "pause", "testeventpause") + cmd(t, "unpause", "testeventpause") + eventsCmd := exec.Command(dockerBinary, "events", "--since=0", fmt.Sprintf("--until=%d", time.Now().Unix())) + out, _, _ = runCommandWithOutput(eventsCmd) + events := strings.Split(out, "\n") + if len(events) <= 1 { + t.Fatalf("Missing expected event") + } + + pauseEvent := strings.Fields(events[len(events)-3]) + unpauseEvent := strings.Fields(events[len(events)-2]) + + if pauseEvent[len(pauseEvent)-1] != "pause" { + t.Fatalf("event should be pause, not %#v", pauseEvent) + } + if unpauseEvent[len(unpauseEvent)-1] != "unpause" { + t.Fatalf("event should be pause, not %#v", unpauseEvent) + } + + logDone("events - pause/unpause is logged") +} diff --git a/server/server.go b/server/server.go index 2d1e8022f3..e9a2c93819 100644 --- a/server/server.go +++ b/server/server.go @@ -183,6 +183,7 @@ func (srv *Server) ContainerPause(job *engine.Job) engine.Status { if err := container.Pause(); err != nil { return job.Errorf("Cannot pause container %s: %s", name, err) } + srv.LogEvent("pause", container.ID, srv.daemon.Repositories().ImageName(container.Image)) return engine.StatusOK } @@ -198,6 +199,7 @@ func (srv *Server) ContainerUnpause(job *engine.Job) engine.Status { if err := container.Unpause(); err != nil { return job.Errorf("Cannot unpause container %s: %s", name, err) } + srv.LogEvent("unpause", container.ID, srv.daemon.Repositories().ImageName(container.Image)) return engine.StatusOK }