testutils

package
v1.42.1-triple Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 7, 2021 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Overview

Package testutils provides utility types, for use in xds tests.

Index

Constants

View Source
const TestSubConnsCount = 16

TestSubConnsCount is the number of TestSubConns initialized as part of package init.

Variables

View Source
var EmptyNodeProtoV2 = &v2corepb.Node{}

EmptyNodeProtoV2 is a v2 Node proto with no fields set.

View Source
var EmptyNodeProtoV3 = &v3corepb.Node{}

EmptyNodeProtoV3 is a v3 Node proto with no fields set.

View Source
var ErrTestConstPicker = fmt.Errorf("const picker error")

ErrTestConstPicker is error returned by test const picker.

View Source
var TestSubConns []*TestSubConn

TestSubConns contains a list of SubConns to be used in tests.

Functions

func IsRoundRobin

func IsRoundRobin(want []balancer.SubConn, f func() balancer.SubConn) error

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 LocalityIDToProto

func LocalityIDToProto(l internal.LocalityID) *v2corepb.Locality

LocalityIDToProto converts a LocalityID to its proto representation.

func NewTestWRR

func NewTestWRR() wrr.WRR

NewTestWRR return a WRR for testing. It's deterministic instead of random.

Types

type AddLocalityOptions

type AddLocalityOptions struct {
	Health []v2corepb.HealthStatus
	Weight []uint32
}

AddLocalityOptions contains options when adding locality to the builder.

type ClusterLoadAssignmentBuilder

type ClusterLoadAssignmentBuilder struct {
	// contains filtered or unexported fields
}

ClusterLoadAssignmentBuilder builds a ClusterLoadAssignment, aka EDS response.

func NewClusterLoadAssignmentBuilder

func NewClusterLoadAssignmentBuilder(clusterName string, dropPercents map[string]uint32) *ClusterLoadAssignmentBuilder

NewClusterLoadAssignmentBuilder creates a ClusterLoadAssignmentBuilder.

func (*ClusterLoadAssignmentBuilder) AddLocality

func (clab *ClusterLoadAssignmentBuilder) AddLocality(subzone string, weight uint32, priority uint32, addrsWithPort []string, opts *AddLocalityOptions)

AddLocality adds a locality to the builder.

func (*ClusterLoadAssignmentBuilder) Build

Build builds ClusterLoadAssignment.

type TestClientConn

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.
	UpdateAddressesAddrsCh chan []resolver.Address // last updated address via UpdateAddresses().

	NewPickerCh  chan balancer.Picker            // the last picker updated.
	NewStateCh   chan connectivity.State         // the last state.
	ResolveNowCh chan resolver.ResolveNowOptions // the last ResolveNow().
	// contains filtered or unexported fields
}

TestClientConn is a mock balancer.ClientConn used in tests.

func NewTestClientConn

func NewTestClientConn(t *testing.T) *TestClientConn

NewTestClientConn creates a TestClientConn.

func (*TestClientConn) NewSubConn

NewSubConn creates a new SubConn.

func (*TestClientConn) RemoveSubConn

func (tcc *TestClientConn) RemoveSubConn(sc balancer.SubConn)

RemoveSubConn removes the SubConn.

func (*TestClientConn) ResolveNow

func (tcc *TestClientConn) ResolveNow(o resolver.ResolveNowOptions)

ResolveNow panics.

func (*TestClientConn) Target

func (tcc *TestClientConn) Target() string

Target panics.

func (*TestClientConn) UpdateAddresses

func (tcc *TestClientConn) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address)

UpdateAddresses updates the addresses on the SubConn.

func (*TestClientConn) UpdateState

func (tcc *TestClientConn) UpdateState(bs balancer.State)

UpdateState updates connectivity state and picker.

func (*TestClientConn) WaitForErrPicker

func (tcc *TestClientConn) WaitForErrPicker(ctx context.Context) error

WaitForErrPicker waits until an error picker is pushed to this ClientConn. Returns error if the provided context expires or a non-error picker is pushed to the ClientConn.

type TestConstPicker

type TestConstPicker struct {
	Err error
	SC  balancer.SubConn
}

TestConstPicker is a const picker for tests.

func (*TestConstPicker) Pick

Pick returns the const SubConn or the error.

type TestSubConn

type TestSubConn struct {
	ConnectCh chan struct{}
	// contains filtered or unexported fields
}

TestSubConn implements the SubConn interface, to be used in tests.

func (*TestSubConn) Connect

func (tsc *TestSubConn) Connect()

Connect is a no-op.

func (*TestSubConn) String

func (tsc *TestSubConn) String() string

String implements stringer to print human friendly error message.

func (*TestSubConn) UpdateAddresses

func (tsc *TestSubConn) UpdateAddresses([]resolver.Address)

UpdateAddresses is a no-op.

Directories

Path Synopsis
Package e2e provides utilities for end2end testing of xDS functionality.
Package e2e provides utilities for end2end testing of xDS functionality.
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 the management server.
Package fakeserver provides a fake implementation of the management server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL