Skip to content

Commit b02cf52

Browse files
committed
Merge pull request moby#12115 from cpuguy83/fix_events_filter_test
Cleanup events filter by container test
2 parents c77ac8e + 7e70998 commit b02cf52

File tree

1 file changed

+44
-63
lines changed

1 file changed

+44
-63
lines changed

integration-cli/docker_cli_events_test.go

Lines changed: 44 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -330,87 +330,68 @@ func TestEventsFilterImageName(t *testing.T) {
330330
logDone("events - filters using image")
331331
}
332332

333-
func TestEventsFilterContainerID(t *testing.T) {
334-
since := daemonTime(t).Unix()
333+
func TestEventsFilterContainer(t *testing.T) {
335334
defer deleteAllContainers()
335+
since := fmt.Sprintf("%d", daemonTime(t).Unix())
336+
nameID := make(map[string]string)
336337

337-
out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "run", "-d", "busybox", "true"))
338-
if err != nil {
339-
t.Fatal(out, err)
340-
}
341-
container1 := strings.TrimSpace(out)
342-
343-
out, _, err = runCommandWithOutput(exec.Command(dockerBinary, "run", "-d", "busybox", "true"))
344-
if err != nil {
345-
t.Fatal(out, err)
346-
}
347-
container2 := strings.TrimSpace(out)
348-
349-
for _, s := range []string{container1, container2, container1[:12], container2[:12]} {
350-
if err := waitInspect(s, "{{.State.Running}}", "false", 5); err != nil {
351-
t.Fatalf("Failed to get container %s state, error: %s", s, err)
352-
}
353-
354-
eventsCmd := exec.Command(dockerBinary, "events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", daemonTime(t).Unix()), "--filter", fmt.Sprintf("container=%s", s))
355-
out, _, err := runCommandWithOutput(eventsCmd)
338+
for _, name := range []string{"container_1", "container_2"} {
339+
out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "run", "-d", "--name", name, "busybox", "true"))
356340
if err != nil {
357-
t.Fatalf("Failed to get events, error: %s(%s)", err, out)
341+
t.Fatal(err)
358342
}
359-
events := strings.Split(out, "\n")
360-
checkEvents(t, events[:len(events)-1])
343+
nameID[name] = strings.TrimSpace(out)
344+
waitInspect(name, "{{.State.Runing }}", "false", 5)
361345
}
362346

363-
logDone("events - filters using container id")
364-
}
347+
until := fmt.Sprintf("%d", daemonTime(t).Unix())
365348

366-
func TestEventsFilterContainerName(t *testing.T) {
367-
since := daemonTime(t).Unix()
368-
defer deleteAllContainers()
349+
checkEvents := func(id string, events []string) error {
350+
if len(events) != 3 { // create, start, die
351+
return fmt.Errorf("expected 3 events, got %v", events)
352+
}
353+
for _, event := range events {
354+
e := strings.Fields(event)
355+
if len(e) < 3 {
356+
return fmt.Errorf("got malformed event: %s", event)
357+
}
369358

370-
_, _, err := runCommandWithOutput(exec.Command(dockerBinary, "run", "--name", "container_1", "busybox", "true"))
371-
if err != nil {
372-
t.Fatal(err)
359+
// Check the id
360+
parsedID := strings.TrimSuffix(e[1], ":")
361+
if parsedID != id {
362+
return fmt.Errorf("expected event for container id %s: %s - parsed container id: %s", id, event, parsedID)
363+
}
364+
}
365+
return nil
373366
}
374367

375-
_, _, err = runCommandWithOutput(exec.Command(dockerBinary, "run", "--name", "container_2", "busybox", "true"))
376-
if err != nil {
377-
t.Fatal(err)
378-
}
368+
for name, ID := range nameID {
369+
// filter by names
370+
eventsCmd := exec.Command(dockerBinary, "events", "--since", since, "--until", until, "--filter", "container="+name)
371+
out, _, err := runCommandWithOutput(eventsCmd)
372+
if err != nil {
373+
t.Fatal(err)
374+
}
379375

380-
for _, s := range []string{"container_1", "container_2"} {
381-
if err := waitInspect(s, "{{.State.Running}}", "false", 5); err != nil {
382-
t.Fatalf("Failed to get container %s state, error: %s", s, err)
376+
events := strings.Split(strings.TrimSuffix(out, "\n"), "\n")
377+
if err := checkEvents(ID, events); err != nil {
378+
t.Fatal(err)
383379
}
384380

385-
eventsCmd := exec.Command(dockerBinary, "events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", daemonTime(t).Unix()), "--filter", fmt.Sprintf("container=%s", s))
386-
out, _, err := runCommandWithOutput(eventsCmd)
381+
// filter by ID's
382+
eventsCmd = exec.Command(dockerBinary, "events", "--since", since, "--until", until, "--filter", "container="+ID)
383+
out, _, err = runCommandWithOutput(eventsCmd)
387384
if err != nil {
388-
t.Fatalf("Failed to get events, error : %s(%s)", err, out)
385+
t.Fatal(err)
389386
}
390-
events := strings.Split(out, "\n")
391-
checkEvents(t, events[:len(events)-1])
392-
}
393387

394-
logDone("events - filters using container name")
395-
}
396-
397-
func checkEvents(t *testing.T, events []string) {
398-
if len(events) != 3 {
399-
t.Fatalf("Expected 3 events, got %d: %v", len(events), events)
400-
}
401-
createEvent := strings.Fields(events[0])
402-
if createEvent[len(createEvent)-1] != "create" {
403-
t.Fatalf("first event should be create, not %#v", createEvent)
404-
}
405-
startEvent := strings.Fields(events[1])
406-
if startEvent[len(startEvent)-1] != "start" {
407-
t.Fatalf("second event should be start, not %#v", startEvent)
408-
}
409-
dieEvent := strings.Fields(events[len(events)-1])
410-
if dieEvent[len(dieEvent)-1] != "die" {
411-
t.Fatalf("event should be die, not %#v", dieEvent)
388+
events = strings.Split(strings.TrimSuffix(out, "\n"), "\n")
389+
if err := checkEvents(ID, events); err != nil {
390+
t.Fatal(err)
391+
}
412392
}
413393

394+
logDone("events - filters using container name")
414395
}
415396

416397
func TestEventsStreaming(t *testing.T) {

0 commit comments

Comments
 (0)