Browse code

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>

Brian Goff authored on 2015/04/07 02:18:38
Showing 1 changed files
... ...
@@ -329,85 +329,66 @@ func TestEventsFilterImageName(t *testing.T) {
329 329
 	logDone("events - filters using image")
330 330
 }
331 331
 
332
-func TestEventsFilterContainerID(t *testing.T) {
333
-	since := daemonTime(t).Unix()
332
+func TestEventsFilterContainer(t *testing.T) {
334 333
 	defer deleteAllContainers()
334
+	since := fmt.Sprintf("%d", daemonTime(t).Unix())
335
+	nameID := make(map[string]string)
335 336
 
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"))
355 339
 		if err != nil {
356
-			t.Fatalf("Failed to get events, error: %s(%s)", err, out)
340
+			t.Fatal(err)
357 341
 		}
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)
360 344
 	}
361 345
 
362
-	logDone("events - filters using container id")
363
-}
346
+	until := fmt.Sprintf("%d", daemonTime(t).Unix())
364 347
 
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
+			}
368 357
 
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
372 365
 	}
373 366
 
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
+		}
378 374
 
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)
382 378
 		}
383 379
 
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)
386 383
 		if err != nil {
387
-			t.Fatalf("Failed to get events, error : %s(%s)", err, out)
384
+			t.Fatal(err)
388 385
 		}
389
-		events := strings.Split(out, "\n")
390
-		checkEvents(t, events[:len(events)-1])
391
-	}
392 386
 
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
+		}
411 391
 	}
412 392
 
393
+	logDone("events - filters using container name")
413 394
 }