Fix events test so it doesnt need new daemon
| ... | ... |
@@ -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")
|