Cleanup events filter by container test
| ... | ... |
@@ -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) {
|