| 197 | h.waitFor(nodeName, SourceStdout, pattern, true) |
| 198 | } |
| 199 | func (h *Harness) WaitForStatus(t *testing.T, nodeName string, check func(*protocol.StatusResponse) bool) { |
| 200 | t.Helper() |
| 201 | start := time.Now() |
| 202 | for { |
| 203 | if time.Since(start) > WaitTimeout { |
| 204 | stdout, _, _ := h.Exec(nodeName, []string{"nylon", "status", "-i", "nylon0", "--json"}) |
| 205 | h.t.Fatalf("timed out waiting for status predicate in node %s. Current status:\n%s", nodeName, stdout) |
| 206 | } |
| 207 | status, err := h.ReadStatus(nodeName) |
| 208 | if err == nil && check(status) { |
| 209 | return |
| 210 | } |
| 211 | time.Sleep(500 * time.Millisecond) |
| 212 | } |
| 213 | } |
| 214 | |
| 215 | func (h *Harness) ReadStatus(nodeName string) (*protocol.StatusResponse, error) { |
| 216 | stdout, _, err := h.Exec(nodeName, []string{"nylon", "status", "-i", "nylon0", "--json"}) |