From 0e6961366a8c5fb2e86fc9c847684704b8c1c399 Mon Sep 17 00:00:00 2001 From: piersy Date: Fri, 25 Jun 2021 11:40:37 +0100 Subject: [PATCH] cmd/geth: fix IPC probe in les test (#23094) Previously, the test waited a second and then failed if geth had not started. This caused the test to fail intermittently. This change checks whether the IPC is open 10 times over a 5 second period and then fails if geth is still not available. --- cmd/geth/les_test.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cmd/geth/les_test.go b/cmd/geth/les_test.go index 053ce96aa3..151c12c68c 100644 --- a/cmd/geth/les_test.go +++ b/cmd/geth/les_test.go @@ -137,14 +137,18 @@ func startGethWithIpc(t *testing.T, name string, args ...string) *gethrpc { name: name, geth: runGeth(t, args...), } - // wait before we can attach to it. TODO: probe for it properly - time.Sleep(1 * time.Second) - var err error ipcpath := ipcEndpoint(ipcName, g.geth.Datadir) - if g.rpc, err = rpc.Dial(ipcpath); err != nil { - t.Fatalf("%v rpc connect to %v: %v", name, ipcpath, err) + // We can't know exactly how long geth will take to start, so we try 10 + // times over a 5 second period. + var err error + for i := 0; i < 10; i++ { + time.Sleep(500 * time.Millisecond) + if g.rpc, err = rpc.Dial(ipcpath); err == nil { + return g + } } - return g + t.Fatalf("%v rpc connect to %v: %v", name, ipcpath, err) + return nil } func initGeth(t *testing.T) string {