Browse code

Merge pull request #10998 from jfrazelle/fix-filter-events-test-better

Fix events test so it doesnt need new daemon

Jessie Frazelle authored on 2015/02/28 05:05:48
Showing 1 changed files
... ...
@@ -3,6 +3,7 @@ package main
3 3
 import (
4 4
 	"fmt"
5 5
 	"os/exec"
6
+	"regexp"
6 7
 	"strconv"
7 8
 	"strings"
8 9
 	"testing"
... ...
@@ -203,68 +204,43 @@ func TestEventsImageImport(t *testing.T) {
203 203
 }
204 204
 
205 205
 func TestEventsFilters(t *testing.T) {
206
-	// we need a new daemon here
207
-	// otherwise events picks up the container from the previous
208
-	// function as a die event (some sort of race)
209
-	// I am not proud of this - jessfraz
210
-	d := NewDaemon(t)
211
-	if err := d.StartWithBusybox(); err != nil {
212
-		t.Fatalf("Could not start daemon with busybox: %v", err)
206
+	parseEvents := func(out, match string) {
207
+		events := strings.Split(out, "\n")
208
+		events = events[:len(events)-1]
209
+		for _, event := range events {
210
+			eventFields := strings.Fields(event)
211
+			eventName := eventFields[len(eventFields)-1]
212
+			if ok, err := regexp.MatchString(match, eventName); err != nil || !ok {
213
+				t.Fatalf("event should match %s, got %#v, err: %v", match, eventFields, err)
214
+			}
215
+		}
213 216
 	}
214
-	defer d.Stop()
215 217
 
216 218
 	since := time.Now().Unix()
217
-	out, err := d.Cmd("run", "--rm", "busybox", "true")
219
+	out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "run", "--rm", "busybox", "true"))
218 220
 	if err != nil {
219 221
 		t.Fatal(out, err)
220 222
 	}
221
-	out, err = d.Cmd("run", "--rm", "busybox", "true")
223
+	out, _, err = runCommandWithOutput(exec.Command(dockerBinary, "run", "--rm", "busybox", "true"))
222 224
 	if err != nil {
223 225
 		t.Fatal(out, err)
224 226
 	}
225
-	out, err = d.Cmd("events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", time.Now().Unix()), "--filter", "event=die")
227
+	out, _, err = runCommandWithOutput(exec.Command(dockerBinary, "events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", time.Now().Unix()), "--filter", "event=die"))
226 228
 	if err != nil {
227 229
 		t.Fatalf("Failed to get events: %s", err)
228 230
 	}
229
-	events := strings.Split(out, "\n")
230
-	events = events[:len(events)-1]
231
-	if len(events) != 2 {
232
-		t.Fatalf("Expected 2 events, got %d: %v", len(events), events)
233
-	}
234
-	dieEvent := strings.Fields(events[len(events)-1])
235
-	if dieEvent[len(dieEvent)-1] != "die" {
236
-		t.Fatalf("event should be die, not %#v", dieEvent)
237
-	}
231
+	parseEvents(out, "die")
238 232
 
239
-	dieEvent = strings.Fields(events[len(events)-2])
240
-	if dieEvent[len(dieEvent)-1] != "die" {
241
-		t.Fatalf("event should be die, not %#v", dieEvent)
242
-	}
243
-
244
-	out, err = d.Cmd("events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", time.Now().Unix()), "--filter", "event=die", "--filter", "event=start")
233
+	out, _, err = runCommandWithOutput(exec.Command(dockerBinary, "events", fmt.Sprintf("--since=%d", since), fmt.Sprintf("--until=%d", time.Now().Unix()), "--filter", "event=die", "--filter", "event=start"))
245 234
 	if err != nil {
246 235
 		t.Fatalf("Failed to get events: %s", err)
247 236
 	}
248
-	events = strings.Split(out, "\n")
249
-	events = events[:len(events)-1]
250
-	if len(events) != 4 {
251
-		t.Fatalf("Expected 4 events, got %d: %v", len(events), events)
252
-	}
253
-	startEvent := strings.Fields(events[len(events)-4])
254
-	if startEvent[len(startEvent)-1] != "start" {
255
-		t.Fatalf("event should be start, not %#v", startEvent)
256
-	}
257
-	dieEvent = strings.Fields(events[len(events)-3])
258
-	if dieEvent[len(dieEvent)-1] != "die" {
259
-		t.Fatalf("event should be die, not %#v", dieEvent)
260
-	}
261
-	startEvent = strings.Fields(events[len(events)-2])
262
-	if startEvent[len(startEvent)-1] != "start" {
263
-		t.Fatalf("event should be start, not %#v", startEvent)
264
-	}
265
-	dieEvent = strings.Fields(events[len(events)-1])
266
-	if dieEvent[len(dieEvent)-1] != "die" {
267
-		t.Fatalf("event should be die, not %#v", dieEvent)
237
+	parseEvents(out, "((die)|(start))")
238
+
239
+	// make sure we at least got 2 start events
240
+	count := strings.Count(out, "start")
241
+	if count != 2 {
242
+		t.Fatalf("should have had 2 start events but had %d, out: %s", count, out)
268 243
 	}
269 244
 
270 245
 	logDone("events - filters")