diff --git a/dual/dual_test.go b/dual/dual_test.go index 5e00de01..78c8713b 100644 --- a/dual/dual_test.go +++ b/dual/dual_test.go @@ -323,17 +323,32 @@ func TestSearchValue(t *testing.T) { t.Error("error putting value to lan DHT:", err) } - valCh, err = d.SearchValue(ctx, "/v/hello", dht.Quorum(0)) - if err != nil { - t.Fatal(err) - } + maxAttempts := 5 + success := false + // if value not propagated yet, try again to avoid flakiness + for i := 0; i < maxAttempts; i++ { + valCh, err = d.SearchValue(ctx, "/v/hello", dht.Quorum(0)) + if err != nil { + t.Fatal(err) + } + + var lastVal []byte + vals := make([]string, 0) + for c := range valCh { + lastVal = c + vals = append(vals, string(c)) + } + if string(lastVal) == "newer" { + success = true + break + } - var lastVal []byte - for c := range valCh { - lastVal = c + t.Log(vals) + t.Log("incorrect best search value", string(lastVal)) + time.Sleep(5 * time.Millisecond) } - if string(lastVal) != "newer" { - t.Fatal("incorrect best search value") + if !success { + t.Fatal("fatal: incorrect best search value", maxAttempts, "times") } }