Compare commits

...

11 Commits

Author SHA1 Message Date
james-prysm
b84eac9c39 Merge branch 'develop' into fix-key-active-tests 2023-04-17 17:01:56 -05:00
james-prysm
1012da4087 Merge branch 'develop' into fix-key-active-tests 2023-04-17 13:29:14 -05:00
james-prysm
3c88688773 test with sleep 2023-04-12 15:16:17 -05:00
james-prysm
3400d0329f trying without lock agian 2023-04-12 14:07:28 -05:00
james-prysm
f7a1f7c9ae Merge branch 'develop' into fix-key-active-tests 2023-04-12 11:49:57 -05:00
james-prysm
2fea48f90e trying with wait group 2023-04-12 11:46:34 -05:00
james-prysm
5eceedbf2e adding sort to fetch keys for flaky test 2023-04-04 14:41:36 -05:00
james-prysm
a6e1c5f718 Merge branch 'develop' into fix-key-active-tests 2023-04-03 10:47:05 -05:00
james-prysm
d401e5307f trying different fix 2023-04-03 10:23:14 -05:00
james-prysm
71a3e089e5 Merge branch 'develop' into fix-key-active-tests 2023-03-31 12:54:46 -05:00
james-prysm
bdc940955e adding fix 2023-03-31 12:46:08 -05:00
2 changed files with 32 additions and 6 deletions

View File

@@ -2,6 +2,7 @@ package client
import (
"context"
"sync"
"testing"
"time"
@@ -205,12 +206,24 @@ func TestKeyReload_ActiveKey(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
km := &mockKeymanager{}
v := &testutil.FakeValidator{Km: km}
go func() {
km.SimulateAccountChanges([][fieldparams.BLSPubkeyLength]byte{testutil.ActiveKey})
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
time.Sleep(time.Second)
for {
if km.accountsChangedFeed != nil {
km.SimulateAccountChanges([][fieldparams.BLSPubkeyLength]byte{testutil.ActiveKey})
break
}
}
cancel()
}()
run(ctx, v)
wg.Wait()
assert.Equal(t, true, v.HandleKeyReloadCalled)
// We expect that WaitForActivation will only be called once,
// at the very beginning, and not after account changes.
@@ -223,12 +236,21 @@ func TestKeyReload_NoActiveKey(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
km := &mockKeymanager{}
v := &testutil.FakeValidator{Km: km}
var wg sync.WaitGroup
wg.Add(1)
go func() {
km.SimulateAccountChanges(make([][fieldparams.BLSPubkeyLength]byte, 0))
defer wg.Done()
time.Sleep(time.Second)
for {
if km.accountsChangedFeed != nil {
km.SimulateAccountChanges(make([][fieldparams.BLSPubkeyLength]byte, 0))
break
}
}
cancel()
}()
run(ctx, v)
wg.Wait()
assert.Equal(t, true, v.HandleKeyReloadCalled)
assert.Equal(t, 2, v.WaitForActivationCalled)
}

View File

@@ -6,6 +6,7 @@ import (
"fmt"
"io"
"math"
"sort"
"strings"
"sync"
"testing"
@@ -71,12 +72,11 @@ type mockKeymanager struct {
lock sync.RWMutex
keysMap map[[fieldparams.BLSPubkeyLength]byte]bls.SecretKey
fetchNoKeys bool
EventFeedSetCh chan bool
accountsChangedFeed *event.Feed
}
func (m *mockKeymanager) FetchValidatingPublicKeys(_ context.Context) ([][fieldparams.BLSPubkeyLength]byte, error) {
m.lock.RLock()
defer m.lock.RUnlock()
keys := make([][fieldparams.BLSPubkeyLength]byte, 0)
if m.fetchNoKeys {
m.fetchNoKeys = false
@@ -85,6 +85,10 @@ func (m *mockKeymanager) FetchValidatingPublicKeys(_ context.Context) ([][fieldp
for pubKey := range m.keysMap {
keys = append(keys, pubKey)
}
comparator := func(i, j int) bool {
return string(keys[i][:]) < string(keys[j][:])
}
sort.Slice(keys, comparator)
return keys, nil
}