Skip to content

Commit 7e70998

Browse files
committed
Cleanup events filter by container test
This also seemed to be checking the ordering of the events, which doesn't seem like something we sould be interested in this particular test. Added check to make sure the filtered events have the expected ID's. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
1 parent 281b8f6 commit 7e70998

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
@@ -329,85 +329,66 @@ func TestEventsFilterImageName(t *testing.T) {
329329
logDone("events - filters using image")
330330
}
331331

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

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

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

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

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

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

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

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

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

393+
logDone("events - filters using container name")
413394
}

0 commit comments

Comments
 (0)