Browse code

Merge pull request #12115 from cpuguy83/fix_events_filter_test

Cleanup events filter by container test

Alexander Morozov authored on 2015/04/10 03:40:08
Showing 1 changed files
... ...
@@ -330,87 +330,68 @@ func TestEventsFilterImageName(t *testing.T) {
330 330
 	logDone("events - filters using image")
331 331
 }
332 332
 
333
-func TestEventsFilterContainerID(t *testing.T) {
334
-	since := daemonTime(t).Unix()
333
+func TestEventsFilterContainer(t *testing.T) {
335 334
 	defer deleteAllContainers()
335
+	since := fmt.Sprintf("%d", daemonTime(t).Unix())
336
+	nameID := make(map[string]string)
336 337
 
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"))
356 340
 		if err != nil {
357
-			t.Fatalf("Failed to get events, error: %s(%s)", err, out)
341
+			t.Fatal(err)
358 342
 		}
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)
361 345
 	}
362 346
 
363
-	logDone("events - filters using container id")
364
-}
347
+	until := fmt.Sprintf("%d", daemonTime(t).Unix())
365 348
 
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
+			}
369 358
 
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
373 366
 	}
374 367
 
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
+		}
379 375
 
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)
383 379
 		}
384 380
 
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)
387 384
 		if err != nil {
388
-			t.Fatalf("Failed to get events, error : %s(%s)", err, out)
385
+			t.Fatal(err)
389 386
 		}
390
-		events := strings.Split(out, "\n")
391
-		checkEvents(t, events[:len(events)-1])
392
-	}
393 387
 
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
+		}
412 392
 	}
413 393
 
394
+	logDone("events - filters using container name")
414 395
 }
415 396
 
416 397
 func TestEventsStreaming(t *testing.T) {