func waitForJobEvents(t *c.C, events chan *ct.JobEvent, diff map[string]int) error { actual := make(map[string]int) for { select { case event := <-events: switch event.State { case "up": actual[event.Type] += 1 case "down": actual[event.Type] -= 1 } if processesEqual(diff, actual) { return nil } case <-time.After(5 * time.Second): t.Fatal("timed out waiting for job events") } } }