Skip to content

Commit ab923b3

Browse files
fix registry grpc unit test intermittent failure (#2521)
Signed-off-by: akihikokuroda <[email protected]>
1 parent bee0b68 commit ab923b3

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

pkg/controller/registry/grpc/source_test.go

+20-14
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ type FakeSourceSyncer struct {
5050
History map[registry.CatalogKey][]connectivity.State
5151

5252
sync.Mutex
53-
expectedEvents int
54-
done chan struct{}
53+
expectedReadies int
54+
done chan struct{}
5555
}
5656

5757
func (f *FakeSourceSyncer) sync(state SourceState) {
@@ -60,18 +60,20 @@ func (f *FakeSourceSyncer) sync(state SourceState) {
6060
f.History[state.Key] = []connectivity.State{}
6161
}
6262
f.History[state.Key] = append(f.History[state.Key], state.State)
63-
f.expectedEvents--
64-
if f.expectedEvents == 0 {
63+
if state.State == connectivity.Ready {
64+
f.expectedReadies--
65+
}
66+
if f.expectedReadies == 0 {
6567
f.done <- struct{}{}
6668
}
6769
f.Unlock()
6870
}
6971

70-
func NewFakeSourceSyncer(expectedEvents int) *FakeSourceSyncer {
72+
func NewFakeSourceSyncer(expectedReadies int) *FakeSourceSyncer {
7173
return &FakeSourceSyncer{
72-
History: map[registry.CatalogKey][]connectivity.State{},
73-
expectedEvents: expectedEvents,
74-
done: make(chan struct{}),
74+
History: map[registry.CatalogKey][]connectivity.State{},
75+
expectedReadies: expectedReadies,
76+
done: make(chan struct{}),
7577
}
7678
}
7779

@@ -84,21 +86,19 @@ func TestConnectionEvents(t *testing.T) {
8486
test := func(tt testcase) func(t *testing.T) {
8587
return func(t *testing.T) {
8688
// start server for each catalog
87-
totalEvents := 0
8889
addresses := map[registry.CatalogKey]string{}
8990

90-
for catalog, events := range tt.expectedHistory {
91-
totalEvents += len(events)
91+
for catalog := range tt.expectedHistory {
9292
serve, address, stop := server(&fakes.FakeQuery{})
9393
addresses[catalog] = address
9494
go serve()
9595
defer stop()
9696
}
9797

9898
// start source manager
99-
syncer := NewFakeSourceSyncer(totalEvents)
99+
syncer := NewFakeSourceSyncer(len(tt.expectedHistory))
100100
sources := NewSourceStore(logrus.New(), 1*time.Second, 5*time.Second, syncer.sync)
101-
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
101+
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
102102
defer cancel()
103103
sources.Start(ctx)
104104

@@ -115,7 +115,13 @@ func TestConnectionEvents(t *testing.T) {
115115
for catalog, events := range tt.expectedHistory {
116116
recordedEvents := syncer.History[catalog]
117117
for i := 0; i < len(recordedEvents); i++ {
118-
require.Equal(t, (events[i]).String(), (recordedEvents[i]).String())
118+
found := false
119+
for _, event := range events {
120+
if event.String() == recordedEvents[i].String() {
121+
found = true
122+
}
123+
}
124+
require.True(t, found)
119125
}
120126
}
121127
}

0 commit comments

Comments
 (0)