Skip to content

Commit 2ccc031

Browse files
committed
test: Added a sync.WaitGroup to properly track when goroutines complete in TestFailoverMechanism
1 parent c6328aa commit 2ccc031

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

clients/tfchain-client-go/impl_test.go

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package substrate
22

33
import (
4+
"sync"
45
"testing"
5-
"time"
66

77
"github.com/stretchr/testify/assert"
88
"github.com/stretchr/testify/require"
@@ -86,27 +86,33 @@ func TestFailoverMechanism(t *testing.T) {
8686
sub1.cl.Client.Close()
8787
sub2.cl.Client.Close()
8888

89+
// Create WaitGroup to ensure all goroutines complete before test ends
90+
var wg sync.WaitGroup
91+
wg.Add(2)
92+
8993
// Try to use both connections concurrently
90-
done := make(chan bool)
94+
errs := make(chan error, 2)
9195
go func() {
96+
defer wg.Done()
9297
_, err := sub1.Time()
93-
assert.NoError(t, err)
94-
done <- true
98+
errs <- err
9599
}()
96100

97101
go func() {
102+
defer wg.Done()
98103
_, err := sub2.Time()
99-
assert.NoError(t, err)
100-
done <- true
104+
errs <- err
101105
}()
102106

103107
// Wait for both operations to complete
104-
for i := 0; i < 2; i++ {
105-
select {
106-
case <-done:
107-
case <-time.After(5 * time.Second):
108-
t.Fatal("timeout waiting for concurrent failover")
109-
}
108+
go func() {
109+
wg.Wait()
110+
close(errs)
111+
}()
112+
113+
// Check errors from both goroutines
114+
for err := range errs {
115+
require.NoError(t, err)
110116
}
111117
})
112118
}

0 commit comments

Comments
 (0)