GitHub - elgohr/stop-and-go: Testing helper for concurrency (original) (raw)

func TestExample(t *testing.T) { w1 := wait.NewWaiter(time.Second) w2 := wait.NewWaiter(time.Second) w3 := wait.NewWaiter(time.Second)

ts1 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    w2.Done()
}))
defer ts1.Close()

go func() {
    w3.Done()
}()

go func() {
    if _, err := http.Get(ts1.URL); err != nil {
        t.Error(err)
    }
    w1.Done()
}()

if err := wait.For(
    constraint.NoOrder(w3),
    constraint.Before(w1, w2),
); err != nil {
    t.Error(err)
}

}