Skip to content

Commit 8f51ca8

Browse files
authored
tests: stop using UpdateSubConnState (#6527)
1 parent cea77bb commit 8f51ca8

File tree

5 files changed

+47
-50
lines changed

5 files changed

+47
-50
lines changed

clientconn_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1146,7 +1146,9 @@ type stateRecordingBalancer struct {
11461146
balancer.Balancer
11471147
}
11481148

1149-
func (b *stateRecordingBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.SubConnState) {}
1149+
func (b *stateRecordingBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.SubConnState) {
1150+
panic(fmt.Sprintf("UpdateSubConnState(%v, %+v) called unexpectedly", sc, s))
1151+
}
11501152

11511153
func (b *stateRecordingBalancer) Close() {
11521154
b.Balancer.Close()

test/balancer_switching_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -483,10 +483,6 @@ func (s) TestBalancerSwitch_Graceful(t *testing.T) {
483483
}()
484484
return nil
485485
},
486-
UpdateSubConnState: func(bd *stub.BalancerData, sc balancer.SubConn, state balancer.SubConnState) {
487-
bal := bd.Data.(balancer.Balancer)
488-
bal.UpdateSubConnState(sc, state)
489-
},
490486
})
491487

492488
// Push a resolver update with the service config specifying our stub

test/balancer_test.go

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ func (b *testBalancer) UpdateClientConnState(state balancer.ClientConnState) err
8787
// Only create a subconn at the first time.
8888
if b.sc == nil {
8989
var err error
90+
b.newSubConnOptions.StateListener = b.updateSubConnState
9091
b.sc, err = b.cc.NewSubConn(state.ResolverState.Addresses, b.newSubConnOptions)
9192
if err != nil {
9293
logger.Errorf("testBalancer: failed to NewSubConn: %v", err)
@@ -99,21 +100,17 @@ func (b *testBalancer) UpdateClientConnState(state balancer.ClientConnState) err
99100
}
100101

101102
func (b *testBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.SubConnState) {
102-
logger.Infof("testBalancer: UpdateSubConnState: %p, %v", sc, s)
103-
if b.sc != sc {
104-
logger.Infof("testBalancer: ignored state change because sc is not recognized")
105-
return
106-
}
107-
if s.ConnectivityState == connectivity.Shutdown {
108-
b.sc = nil
109-
return
110-
}
103+
panic(fmt.Sprintf("UpdateSubConnState(%v, %+v) called unexpectedly", sc, s))
104+
}
105+
106+
func (b *testBalancer) updateSubConnState(s balancer.SubConnState) {
107+
logger.Infof("testBalancer: updateSubConnState: %v", s)
111108

112109
switch s.ConnectivityState {
113110
case connectivity.Ready:
114-
b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{sc: sc, bal: b}})
111+
b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{bal: b}})
115112
case connectivity.Idle:
116-
b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{sc: sc, bal: b, idle: true}})
113+
b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{bal: b, idle: true}})
117114
case connectivity.Connecting:
118115
b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{err: balancer.ErrNoSubConnAvailable, bal: b}})
119116
case connectivity.TransientFailure:
@@ -127,7 +124,6 @@ func (b *testBalancer) ExitIdle() {}
127124

128125
type picker struct {
129126
err error
130-
sc balancer.SubConn
131127
bal *testBalancer
132128
idle bool
133129
}
@@ -137,14 +133,14 @@ func (p *picker) Pick(info balancer.PickInfo) (balancer.PickResult, error) {
137133
return balancer.PickResult{}, p.err
138134
}
139135
if p.idle {
140-
p.sc.Connect()
136+
p.bal.sc.Connect()
141137
return balancer.PickResult{}, balancer.ErrNoSubConnAvailable
142138
}
143139
extraMD, _ := grpcutil.ExtraMetadata(info.Ctx)
144140
info.Ctx = nil // Do not validate context.
145141
p.bal.pickInfos = append(p.bal.pickInfos, info)
146142
p.bal.pickExtraMDs = append(p.bal.pickExtraMDs, extraMD)
147-
return balancer.PickResult{SubConn: p.sc, Done: func(d balancer.DoneInfo) { p.bal.doneInfo = append(p.bal.doneInfo, d) }}, nil
143+
return balancer.PickResult{SubConn: p.bal.sc, Done: func(d balancer.DoneInfo) { p.bal.doneInfo = append(p.bal.doneInfo, d) }}, nil
148144
}
149145

150146
func (s) TestCredsBundleFromBalancer(t *testing.T) {
@@ -397,16 +393,18 @@ func (s) TestAddressAttributesInNewSubConn(t *testing.T) {
397393
// Only use the first address.
398394
attr := attributes.New(testAttrKey, testAttrVal)
399395
addrs[0].Attributes = attr
400-
sc, err := bd.ClientConn.NewSubConn([]resolver.Address{addrs[0]}, balancer.NewSubConnOptions{})
396+
var sc balancer.SubConn
397+
sc, err := bd.ClientConn.NewSubConn([]resolver.Address{addrs[0]}, balancer.NewSubConnOptions{
398+
StateListener: func(state balancer.SubConnState) {
399+
bd.ClientConn.UpdateState(balancer.State{ConnectivityState: state.ConnectivityState, Picker: &aiPicker{result: balancer.PickResult{SubConn: sc}, err: state.ConnectionError}})
400+
},
401+
})
401402
if err != nil {
402403
return err
403404
}
404405
sc.Connect()
405406
return nil
406407
},
407-
UpdateSubConnState: func(bd *stub.BalancerData, sc balancer.SubConn, state balancer.SubConnState) {
408-
bd.ClientConn.UpdateState(balancer.State{ConnectivityState: state.ConnectivityState, Picker: &aiPicker{result: balancer.PickResult{SubConn: sc}, err: state.ConnectionError}})
409-
},
410408
}
411409
stub.Register(attrBalancerName, bf)
412410
t.Logf("Registered balancer %s...", attrBalancerName)
@@ -483,18 +481,20 @@ func (s) TestMetadataInAddressAttributes(t *testing.T) {
483481
return nil
484482
}
485483
// Only use the first address.
484+
var sc balancer.SubConn
486485
sc, err := bd.ClientConn.NewSubConn([]resolver.Address{
487486
imetadata.Set(addrs[0], metadata.Pairs(testMDKey, testMDValue)),
488-
}, balancer.NewSubConnOptions{})
487+
}, balancer.NewSubConnOptions{
488+
StateListener: func(state balancer.SubConnState) {
489+
bd.ClientConn.UpdateState(balancer.State{ConnectivityState: state.ConnectivityState, Picker: &aiPicker{result: balancer.PickResult{SubConn: sc}, err: state.ConnectionError}})
490+
},
491+
})
489492
if err != nil {
490493
return err
491494
}
492495
sc.Connect()
493496
return nil
494497
},
495-
UpdateSubConnState: func(bd *stub.BalancerData, sc balancer.SubConn, state balancer.SubConnState) {
496-
bd.ClientConn.UpdateState(balancer.State{ConnectivityState: state.ConnectivityState, Picker: &aiPicker{result: balancer.PickResult{SubConn: sc}, err: state.ConnectionError}})
497-
},
498498
}
499499
stub.Register(mdBalancerName, bf)
500500
t.Logf("Registered balancer %s...", mdBalancerName)
@@ -717,16 +717,18 @@ func (s) TestAuthorityInBuildOptions(t *testing.T) {
717717
}
718718

719719
// Only use the first address.
720-
sc, err := bd.ClientConn.NewSubConn([]resolver.Address{addrs[0]}, balancer.NewSubConnOptions{})
720+
var sc balancer.SubConn
721+
sc, err := bd.ClientConn.NewSubConn([]resolver.Address{addrs[0]}, balancer.NewSubConnOptions{
722+
StateListener: func(state balancer.SubConnState) {
723+
bd.ClientConn.UpdateState(balancer.State{ConnectivityState: state.ConnectivityState, Picker: &aiPicker{result: balancer.PickResult{SubConn: sc}, err: state.ConnectionError}})
724+
},
725+
})
721726
if err != nil {
722727
return err
723728
}
724729
sc.Connect()
725730
return nil
726731
},
727-
UpdateSubConnState: func(bd *stub.BalancerData, sc balancer.SubConn, state balancer.SubConnState) {
728-
bd.ClientConn.UpdateState(balancer.State{ConnectivityState: state.ConnectivityState, Picker: &aiPicker{result: balancer.PickResult{SubConn: sc}, err: state.ConnectionError}})
729-
},
730732
}
731733
balancerName := "stub-balancer-" + test.name
732734
stub.Register(balancerName, bf)

test/resolver_update_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,6 @@ func (s) TestResolverUpdate_InvalidServiceConfigAfterGoodUpdate(t *testing.T) {
177177
ccs.BalancerConfig = nil
178178
return bal.UpdateClientConnState(ccs)
179179
},
180-
UpdateSubConnState: func(bd *stub.BalancerData, sc balancer.SubConn, state balancer.SubConnState) {
181-
bal := bd.Data.(balancer.Balancer)
182-
bal.UpdateSubConnState(sc, state)
183-
},
184180
})
185181

186182
// Start a backend exposing the test service.

test/subconn_test.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,22 @@ func (s) TestSubConnEmpty(t *testing.T) {
5959
UpdateClientConnState: func(d *stub.BalancerData, ccs balancer.ClientConnState) error {
6060
if sc == nil {
6161
var err error
62-
sc, err = d.ClientConn.NewSubConn(ccs.ResolverState.Addresses, balancer.NewSubConnOptions{})
62+
sc, err = d.ClientConn.NewSubConn(ccs.ResolverState.Addresses, balancer.NewSubConnOptions{
63+
StateListener: func(state balancer.SubConnState) {
64+
switch state.ConnectivityState {
65+
case connectivity.Ready:
66+
d.ClientConn.UpdateState(balancer.State{
67+
ConnectivityState: connectivity.Ready,
68+
Picker: &tsccPicker{sc: sc},
69+
})
70+
case connectivity.TransientFailure:
71+
d.ClientConn.UpdateState(balancer.State{
72+
ConnectivityState: connectivity.TransientFailure,
73+
Picker: base.NewErrPicker(fmt.Errorf("error connecting: %v", state.ConnectionError)),
74+
})
75+
}
76+
},
77+
})
6378
if err != nil {
6479
t.Errorf("error creating initial subconn: %v", err)
6580
}
@@ -81,20 +96,6 @@ func (s) TestSubConnEmpty(t *testing.T) {
8196
}
8297
return nil
8398
},
84-
UpdateSubConnState: func(d *stub.BalancerData, sc balancer.SubConn, scs balancer.SubConnState) {
85-
switch scs.ConnectivityState {
86-
case connectivity.Ready:
87-
d.ClientConn.UpdateState(balancer.State{
88-
ConnectivityState: connectivity.Ready,
89-
Picker: &tsccPicker{sc: sc},
90-
})
91-
case connectivity.TransientFailure:
92-
d.ClientConn.UpdateState(balancer.State{
93-
ConnectivityState: connectivity.TransientFailure,
94-
Picker: base.NewErrPicker(fmt.Errorf("error connecting: %v", scs.ConnectionError)),
95-
})
96-
}
97-
},
9899
}
99100
stub.Register("tscc", bal)
100101

0 commit comments

Comments
 (0)