Documentation ¶
Overview ¶
Package testutils provides utility types, for use in xds tests.
Index ¶
- Constants
- Variables
- func IsRoundRobin(want []balancer.SubConn, f func() balancer.SubConn) error
- func NewTestWRR() wrr.WRR
- type Channel
- type TestClientConn
- func (tcc *TestClientConn) NewSubConn(a []resolver.Address, o balancer.NewSubConnOptions) (balancer.SubConn, error)
- func (tcc *TestClientConn) RemoveSubConn(sc balancer.SubConn)
- func (tcc *TestClientConn) ResolveNow(resolver.ResolveNowOptions)
- func (tcc *TestClientConn) Target() string
- func (tcc *TestClientConn) UpdateBalancerState(s connectivity.State, p balancer.Picker)
- func (tcc *TestClientConn) UpdateState(bs balancer.State)
- type TestConstBalancerBuilder
- type TestConstPicker
- type TestLoadStore
- func (*TestLoadStore) CallDropped(category string)
- func (tls *TestLoadStore) CallFinished(l internal.LocalityID, err error)
- func (tls *TestLoadStore) CallServerLoad(l internal.LocalityID, name string, d float64)
- func (tls *TestLoadStore) CallStarted(l internal.LocalityID)
- func (*TestLoadStore) ReportTo(ctx context.Context, cc *grpc.ClientConn, clusterName string, ...)
- type TestServerLoad
- type TestSubConn
Constants ¶
const ( // DefaultChanRecvTimeout is the default timeout for receive operations on the // underlying channel. DefaultChanRecvTimeout = 1 * time.Second // DefaultChanBufferSize is the default buffer size of the underlying channel. DefaultChanBufferSize = 1 )
Variables ¶
var ErrRecvTimeout = errors.New("timed out when waiting for value on channel")
ErrRecvTimeout is an error to indicate that a receive operation on the channel timed out.
var ErrTestConstPicker = fmt.Errorf("const picker error")
ErrTestConstPicker is error returned by test const picker.
var TestSubConns []*TestSubConn
TestSubConns contains a list of SubConns to be used in tests.
Functions ¶
func IsRoundRobin ¶ added in v1.29.0
IsRoundRobin checks whether f's return value is roundrobin of elements from want. But it doesn't check for the order. Note that want can contain duplicate items, which makes it weight-round-robin.
Step 1. the return values of f should form a permutation of all elements in want, but not necessary in the same order. E.g. if want is {a,a,b}, the check fails if f returns:
- {a,a,a}: third a is returned before b
- {a,b,b}: second b is returned before the second a
If error is found in this step, the returned error contains only the first iteration until where it goes wrong.
Step 2. the return values of f should be repetitions of the same permutation. E.g. if want is {a,a,b}, the check failes if f returns:
- {a,b,a,b,a,a}: though it satisfies step 1, the second iteration is not repeating the first iteration.
If error is found in this step, the returned error contains the first iteration + the second iteration until where it goes wrong.
func NewTestWRR ¶ added in v1.29.0
NewTestWRR return a WRR for testing. It's deterministic instead random.
Types ¶
type Channel ¶
type Channel struct {
// contains filtered or unexported fields
}
Channel wraps a generic channel and provides a timed receive operation.
func NewChannelWithSize ¶
NewChannelWithSize returns a new Channel with a buffer of bufSize.
func (*Channel) Receive ¶
Receive returns the value received on the underlying channel, or ErrRecvTimeout if DefaultChanRecvTimeout amount of time elapses.
func (*Channel) Replace ¶ added in v1.30.0
func (cwt *Channel) Replace(value interface{})
Replace clears the value on the underlying channel, and sends the new value.
It's expected to be used with a size-1 channel, to only keep the most up-to-date item.
type TestClientConn ¶ added in v1.29.0
type TestClientConn struct { NewSubConnAddrsCh chan []resolver.Address // the last 10 []Address to create subconn. NewSubConnCh chan balancer.SubConn // the last 10 subconn created. RemoveSubConnCh chan balancer.SubConn // the last 10 subconn removed. NewPickerCh chan balancer.Picker // the last picker updated. NewStateCh chan connectivity.State // the last state. // contains filtered or unexported fields }
TestClientConn is a mock balancer.ClientConn used in tests.
func NewTestClientConn ¶ added in v1.29.0
func NewTestClientConn(t *testing.T) *TestClientConn
NewTestClientConn creates a TestClientConn.
func (*TestClientConn) NewSubConn ¶ added in v1.29.0
func (tcc *TestClientConn) NewSubConn(a []resolver.Address, o balancer.NewSubConnOptions) (balancer.SubConn, error)
NewSubConn creates a new SubConn.
func (*TestClientConn) RemoveSubConn ¶ added in v1.29.0
func (tcc *TestClientConn) RemoveSubConn(sc balancer.SubConn)
RemoveSubConn removes the SubConn.
func (*TestClientConn) ResolveNow ¶ added in v1.29.0
func (tcc *TestClientConn) ResolveNow(resolver.ResolveNowOptions)
ResolveNow panics.
func (*TestClientConn) Target ¶ added in v1.29.0
func (tcc *TestClientConn) Target() string
Target panics.
func (*TestClientConn) UpdateBalancerState ¶ added in v1.29.0
func (tcc *TestClientConn) UpdateBalancerState(s connectivity.State, p balancer.Picker)
UpdateBalancerState implements balancer.Balancer API. It will be removed when switching to the new balancer interface.
func (*TestClientConn) UpdateState ¶ added in v1.29.0
func (tcc *TestClientConn) UpdateState(bs balancer.State)
UpdateState updates connectivity state and picker.
type TestConstBalancerBuilder ¶ added in v1.29.0
type TestConstBalancerBuilder struct{}
TestConstBalancerBuilder is a balancer builder for tests.
func (*TestConstBalancerBuilder) Build ¶ added in v1.29.0
func (*TestConstBalancerBuilder) Build(cc balancer.ClientConn, opts balancer.BuildOptions) balancer.Balancer
Build builds a test const balancer.
func (*TestConstBalancerBuilder) Name ¶ added in v1.29.0
func (*TestConstBalancerBuilder) Name() string
Name returns test-const-balancer name.
type TestConstPicker ¶ added in v1.29.0
TestConstPicker is a const picker for tests.
func (*TestConstPicker) Pick ¶ added in v1.29.0
func (tcp *TestConstPicker) Pick(info balancer.PickInfo) (balancer.PickResult, error)
Pick returns the const SubConn or the error.
type TestLoadStore ¶ added in v1.29.0
type TestLoadStore struct { CallsStarted []internal.LocalityID CallsEnded []internal.LocalityID CallsCost []TestServerLoad }
TestLoadStore is a load store to be used in tests.
func NewTestLoadStore ¶ added in v1.29.0
func NewTestLoadStore() *TestLoadStore
NewTestLoadStore creates a new TestLoadStore.
func (*TestLoadStore) CallDropped ¶ added in v1.29.0
func (*TestLoadStore) CallDropped(category string)
CallDropped records a call dropped.
func (*TestLoadStore) CallFinished ¶ added in v1.29.0
func (tls *TestLoadStore) CallFinished(l internal.LocalityID, err error)
CallFinished records a call finished.
func (*TestLoadStore) CallServerLoad ¶ added in v1.29.0
func (tls *TestLoadStore) CallServerLoad(l internal.LocalityID, name string, d float64)
CallServerLoad records a call server load.
func (*TestLoadStore) CallStarted ¶ added in v1.29.0
func (tls *TestLoadStore) CallStarted(l internal.LocalityID)
CallStarted records a call started.
func (*TestLoadStore) ReportTo ¶ added in v1.29.0
func (*TestLoadStore) ReportTo(ctx context.Context, cc *grpc.ClientConn, clusterName string, node *corepb.Node)
ReportTo panics.
type TestServerLoad ¶ added in v1.29.0
TestServerLoad is testing Load for testing LRS.
type TestSubConn ¶ added in v1.29.0
type TestSubConn struct {
// contains filtered or unexported fields
}
TestSubConn implements the SubConn interface, to be used in tests.
func (*TestSubConn) Connect ¶ added in v1.29.0
func (tsc *TestSubConn) Connect()
Connect is a no-op.
func (*TestSubConn) String ¶ added in v1.29.0
func (tsc *TestSubConn) String() string
String implements stringer to print human friendly error message.
func (*TestSubConn) UpdateAddresses ¶ added in v1.29.0
func (tsc *TestSubConn) UpdateAddresses([]resolver.Address)
UpdateAddresses panics.
Directories ¶
Path | Synopsis |
---|---|
Package fakeclient provides a fake implementation of an xDS client.
|
Package fakeclient provides a fake implementation of an xDS client. |
Package fakeserver provides a fake implementation of an xDS server.
|
Package fakeserver provides a fake implementation of an xDS server. |