Documentation ¶
Index ¶
- Constants
- func DefaultCallRetryOptions() []retry.Option
- func DefaultCallsPerWorkload() int
- func DefaultReadinessTimeout() time.Duration
- type CallOptions
- type CallResult
- type Caller
- type Callers
- type Checker
- type Cluster
- type Config
- func (c Config) AccountName() string
- func (c Config) ClusterLocalFQDN() string
- func (c Config) ClusterSetLocalFQDN() string
- func (c Config) DeepCopy() Config
- func (c *Config) FillDefaults(ctx resource.Context) (err error)
- func (c Config) HasAnyWaypointProxy() bool
- func (c Config) HasProxyCapabilities() bool
- func (c Config) HasServiceAddressedWaypointProxy() bool
- func (c Config) HasSidecar() bool
- func (c Config) HasWorkloadAddressedWaypointProxy() bool
- func (c Config) HostHeader() string
- func (c Config) HostnameVariants() []string
- func (c Config) IsAllNaked() bool
- func (c Config) IsExternal() bool
- func (c Config) IsHeadless() bool
- func (c Config) IsNaked() bool
- func (c Config) IsProxylessGRPC() bool
- func (c Config) IsRegularPod() bool
- func (c Config) IsSotw() bool
- func (c Config) IsStatefulSet() bool
- func (c Config) IsTProxy() bool
- func (c Config) IsUncaptured() bool
- func (c Config) IsVM() bool
- func (c Config) NamespaceName() string
- func (c Config) NamespacedName() NamespacedName
- func (c Config) ServiceAccountName() string
- func (c Config) String() string
- func (c Config) WaypointClient() bool
- func (c Config) WorkloadClass() WorkloadClass
- func (c Config) ZTunnelCaptured() bool
- type ConfigGetter
- type Configurable
- type HBONE
- type HTTP
- type Instance
- type Instances
- func (i Instances) Append(instances Instances) Instances
- func (i Instances) Callers() Callers
- func (i Instances) ClusterLocalFQDN() string
- func (i Instances) ClusterSetLocalFQDN() string
- func (i Instances) Clusters() cluster.Clusters
- func (i Instances) Config() Config
- func (i Instances) Contains(instances ...Instance) bool
- func (i Instances) ContainsTarget(t Target) bool
- func (i Instances) Copy() Instances
- func (i Instances) ForCluster(name string) Instances
- func (i Instances) Instances() Instances
- func (i Instances) IsDeployment() bool
- func (i Instances) Len() int
- func (i Instances) MustWorkloads() Workloads
- func (i Instances) NamespaceName() string
- func (i Instances) NamespacedName() NamespacedName
- func (i Instances) NamespacedNames() NamespacedNames
- func (i Instances) PortForName(name string) Port
- func (i Instances) Restart() error
- func (i Instances) ServiceAccountName() string
- func (i Instances) ServiceName() string
- func (i Instances) Services() Services
- func (i Instances) Workloads() (Workloads, error)
- func (i Instances) WorkloadsOrFail(t test.Failer) Workloads
- type NamespacedName
- type NamespacedNames
- type Port
- type Ports
- func (ps Ports) Contains(p Port) bool
- func (ps Ports) ForName(name string) (Port, bool)
- func (ps Ports) ForProtocol(protocol protocol.Instance) (Port, bool)
- func (ps Ports) ForServicePort(port int) (Port, bool)
- func (ps Ports) GetServicePorts() Ports
- func (ps Ports) GetWorkloadOnlyPorts() Ports
- func (ps Ports) MustForName(name string) Port
- func (ps Ports) MustForProtocol(protocol protocol.Instance) Port
- type Retry
- type Services
- func (d Services) Append(others ...Services) Services
- func (d Services) Callers() Callers
- func (d Services) Copy() Services
- func (d Services) FQDNs() []string
- func (d Services) GetByService(service string) Target
- func (d Services) Instances() Instances
- func (d Services) Len() int
- func (d Services) Less(i, j int) bool
- func (d Services) MatchFQDNs(fqdns ...string) Services
- func (d Services) NamespacedNames() NamespacedNames
- func (d Services) Swap(i, j int)
- type Sidecar
- type SubsetConfig
- type TCP
- type TLS
- type Target
- type VMDistro
- type Workload
- type WorkloadClass
- type WorkloadContainer
- type Workloads
Constants ¶
const ( ForceIPFamilyV4 = "tcp4" ForceIPFamilyV6 = "tcp6" )
const NoServicePort = -1
NoServicePort defines the ServicePort value for a Port that is a workload-only port.
Variables ¶
This section is empty.
Functions ¶
func DefaultCallRetryOptions ¶
DefaultCallRetryOptions returns the default call retry options as specified in command-line flags.
func DefaultCallsPerWorkload ¶
func DefaultCallsPerWorkload() int
DefaultCallsPerWorkload returns the number of calls that should be made per target workload by default.
func DefaultReadinessTimeout ¶
DefaultReadinessTimeout returns the default echo readiness check timeout.
Types ¶
type CallOptions ¶
type CallOptions struct { // To is the Target to be called. To Target // ToWorkload will call a specific workload in this instance, rather than the Service. // If there are multiple workloads in the Instance, the first is used. // Can be used with `ToWorkload: to.WithWorkloads(someWl)` to send to a specific workload. // When using the Port field, the ServicePort should be used. ToWorkload Instance // Port to be used for the call. Ignored if Scheme == DNS. If the Port.ServicePort is set, // either Port.Protocol or Scheme must also be set. If Port.ServicePort is not set, // the port is looked up in To by either Port.Name or Port.Protocol. Port Port // Scheme to be used when making the call. If not provided, the Scheme will be selected // based on the Port.Protocol. Scheme scheme.Instance // Address specifies the host name or IP address to be used on the request. If not provided, // an appropriate default is chosen for To. Address string // Count indicates the number of exchanges that should be made with the service endpoint. // If Count <= 0, a default will be selected. If To is specified, the value will be set to // the numWorkloads * DefaultCallsPerWorkload. Otherwise, defaults to 1. Count int // Timeout used for each individual request. Must be > 0, otherwise 5 seconds is used. Timeout time.Duration // NewConnectionPerRequest if true, the forwarder will establish a new connection to the server for // each individual request. If false, it will attempt to reuse the same connection for the duration // of the forward call. This is ignored for DNS, TCP, and TLS protocols, as well as // Headless/StatefulSet deployments. NewConnectionPerRequest bool // ForceIPFamily will force a specific IP family to be used for DNS resolution only. // Valid values: "tcp4", "tcp6". ForceIPFamily string // If DualStack is true, an IPv4 and IPv6 request will be sent if the source workload supports dual stack. DualStack bool // ForceDNSLookup if true, the forwarder will force a DNS lookup for each individual request. This is // useful for any situation where DNS is used for load balancing (e.g. headless). This is ignored if // NewConnectionPerRequest is false or if the deployment is Headless or StatefulSet. ForceDNSLookup bool // Retry options for the call. Retry Retry // HTTP settings. HTTP HTTP // TCP settings. TCP TCP // TLS settings. TLS TLS // HBONE settings. HBONE HBONE // Message to be sent. Message string // Check the server responses. If none is provided, only the number of responses received // will be checked. Check Checker // If we have been asked to do TCP comms with a PROXY protocol header, // determine which version (1 or 2), and send the header. // https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt ProxyProtocolVersion int PropagateResponse func(req *http.Request, resp *http.Response) }
CallOptions defines options for calling a Endpoint.
func (CallOptions) DeepCopy ¶
func (o CallOptions) DeepCopy() CallOptions
func (*CallOptions) FillDefaults ¶
func (o *CallOptions) FillDefaults() error
FillDefaults fills out any defaults that haven't been explicitly specified.
func (*CallOptions) FillDefaultsOrFail ¶
func (o *CallOptions) FillDefaultsOrFail(t test.Failer)
FillDefaultsOrFail calls FillDefaults and fails if an error occurs.
func (CallOptions) GetHost ¶
func (o CallOptions) GetHost() string
GetHost returns the best default host for the call. Returns the first host defined from the following sources (in order of precedence): Host header, target's DefaultHostHeader, Address, target's FQDN.
type CallResult ¶
type CallResult struct { From Caller Opts CallOptions Responses echo.Responses }
CallResult the result of a call operation.
type Caller ¶
type Caller interface { // Call from this Instance to a target Instance. Call(options CallOptions) (CallResult, error) CallOrFail(t test.Failer, options CallOptions) CallResult }
type Checker ¶
type Checker func(CallResult, error) error
Checker inspects echo call results for errors.
type Cluster ¶
Cluster that can deploy echo instances. TODO putting this here for now to deal with circular imports, needs to be moved
type Config ¶
type Config struct { // Namespace of the echo Instance. If not provided, a default namespace "apps" is used. Namespace namespace.Instance // DefaultHostHeader overrides the default Host header for calls (`service.namespace.svc.cluster.local`) DefaultHostHeader string // Domain of the echo Instance. If not provided, a default will be selected. Domain string // Service indicates the service name of the Echo application. Service string // Version indicates the version path for calls to the Echo application. Version string // Locality (k8s only) indicates the locality of the deployed app. Locality string // Headless (k8s only) indicates that no ClusterIP should be specified. Headless bool // StatefulSet indicates that the pod should be backed by a StatefulSet. This implies Headless=true // as well. StatefulSet bool // StaticAddress for some echo implementations is an address locally reachable within // the test framework and from the echo Cluster's network. StaticAddresses []string // ServiceAccount (k8s only) indicates that a service account should be created // for the deployment. ServiceAccount bool // DisableAutomountSAToken indicates to opt out of auto mounting ServiceAccount's API credentials DisableAutomountSAToken bool // Ports for this application. Port numbers may or may not be used, depending // on the implementation. Ports Ports // ServiceAnnotations is annotations on service object. ServiceAnnotations map[string]string // ServiceLabels is the labels on service object. ServiceLabels map[string]string // ReadinessTimeout specifies the timeout that we wait the application to // become ready. ReadinessTimeout time.Duration // ReadinessTCPPort if set, use this port for the TCP readiness probe (instead of using a HTTP probe). ReadinessTCPPort string // ReadinessGRPCPort if set, use this port for the GRPC readiness probe (instead of using a HTTP probe). ReadinessGRPCPort string // Subsets contains the list of Subsets config belonging to this echo // service instance. Subsets []SubsetConfig // Cluster to be used in a multicluster environment Cluster cluster.Cluster // TLS settings for echo server TLSSettings *common.TLSSettings // If enabled, echo will be deployed as a "VM". This means it will run Envoy in the same pod as echo, // disable sidecar injection, etc. // This aims to simulate a VM, but instead of managing the complex test setup of spinning up a VM, // connecting, etc we run it inside a pod. The pod has pretty much all Kubernetes features disabled (DNS and SA token mount) // such that we can adequately simulate a VM and DIY the bootstrapping. DeployAsVM bool // If enabled, ISTIO_META_AUTO_REGISTER_GROUP will be set on the VM and the WorkloadEntry will be created automatically. AutoRegisterVM bool // The distro to use for a VM. For fake VMs, this maps to docker images. VMDistro VMDistro // The set of environment variables to set for `DeployAsVM` instances. VMEnvironment map[string]string // If enabled, an additional ext-authz container will be included in the deployment. This is mainly used to test // the CUSTOM authorization policy when the ext-authz server is deployed locally with the application container in // the same pod. IncludeExtAuthz bool // IPFamily for the service. This is optional field. Mainly is used for dual stack testing IPFamilies string // IPFamilyPolicy. This is optional field. Mainly is used for dual stack testing. IPFamilyPolicy string // This is an optional field used as part of dual stack testing. DualStack bool // ServiceWaypointProxy specifies if this workload should have an associated Waypoint for service-addressed traffic ServiceWaypointProxy string // WorkloadWaypointProxy specifies if this workload should have an associated Waypoint for workload-addressed traffic WorkloadWaypointProxy string // Specify IP family to which echo will bind BindFamily string }
Config defines the options for creating an Echo component. nolint: maligned
func ParseConfigs ¶
ParseConfigs unmarshals the given YAML bytes into []Config, using a namespace.Static rather than attempting to Claim the configured namespace.
func (Config) AccountName ¶
func (Config) ClusterLocalFQDN ¶
ClusterLocalFQDN returns the fully qualified domain name for cluster-local host.
func (Config) ClusterSetLocalFQDN ¶
ClusterSetLocalFQDN returns the fully qualified domain name for the Kubernetes Multi-Cluster Services (MCS) Cluster Set host.
func (Config) HasAnyWaypointProxy ¶
func (Config) HasProxyCapabilities ¶
func (Config) HasServiceAddressedWaypointProxy ¶
func (Config) HasSidecar ¶
func (Config) HasWorkloadAddressedWaypointProxy ¶
func (Config) HostHeader ¶
HostHeader returns the Host header that will be used for calls to this service.
func (Config) HostnameVariants ¶
HostnameVariants for a Kubernetes service. Results may be invalid for non k8s.
func (Config) IsAllNaked ¶
IsAllNaked checks if every subset is configured with no sidecar.
func (Config) IsExternal ¶
func (Config) IsHeadless ¶
func (Config) IsNaked ¶
IsNaked checks if the config has no sidecar. Note: instances that mix subsets with and without sidecars are considered 'naked'.
func (Config) IsProxylessGRPC ¶
func (Config) IsRegularPod ¶
IsRegularPod returns true if the echo pod is not any of the following: - VM - Naked - Headless - TProxy - Multi-Subset - DualStack Service Pods
func (Config) IsStatefulSet ¶
func (Config) IsUncaptured ¶
func (Config) NamespaceName ¶
NamespaceName returns the string name of the namespace.
func (Config) NamespacedName ¶
func (c Config) NamespacedName() NamespacedName
NamespacedName returns the namespaced name for the service.
func (Config) ServiceAccountName ¶
ServiceAccountName returns the service account name for this service.
func (Config) String ¶
String implements the Configuration interface (which implements fmt.Stringer)
func (Config) WaypointClient ¶
WaypointClient means the client supports HBONE and does zTunnel redirection. Currently, only zTunnel captured sources do this. Eventually this might be enabled for ingress and/or sidecars.
func (Config) WorkloadClass ¶
func (c Config) WorkloadClass() WorkloadClass
WorkloadClass returns the type of workload a given config is.
func (Config) ZTunnelCaptured ¶
ZTunnelCaptured returns true in ambient enabled namespaces where there is no sidecar
type ConfigGetter ¶
type ConfigGetter func() []Config
Getter for a custom echo deployment
func ConfigFuture ¶
func ConfigFuture(custom *[]Config) ConfigGetter
Future creates a Getter for a variable the custom echo deployment that will be set at sometime in the future. This is helpful for configuring a setup chain for a test suite that operates on global variables.
func (ConfigGetter) Get ¶
func (g ConfigGetter) Get() []Config
Get is a utility method that helps in readability of call sites.
type Configurable ¶
type Configurable interface { Config() Config // ServiceName is the name of this service within the namespace. ServiceName() string // NamespaceName returns the name of the namespace or "" if the Namespace is nil. NamespaceName() string // NamespacedName returns the namespaced name for this service. // Short form for Config().NamespacedName(). NamespacedName() NamespacedName // ServiceAccountName returns the service account string for this service. ServiceAccountName() string // ClusterLocalFQDN returns the fully qualified domain name for cluster-local host. ClusterLocalFQDN() string // ClusterSetLocalFQDN returns the fully qualified domain name for the Kubernetes // Multi-Cluster Services (MCS) Cluster Set host. ClusterSetLocalFQDN() string // PortForName is a short form for Config().Ports.MustForName(). PortForName(name string) Port }
Configurable is and object that has Config.
type HBONE ¶
type HBONE struct { Address string Headers http.Header // If non-empty, make the request with the corresponding cert and key. Cert string Key string // If non-empty, verify the server CA CaCert string // If non-empty, make the request with the corresponding cert and key file. CertFile string KeyFile string // If non-empty, verify the server CA with the ca cert file. CaCertFile string // Skip verifying peer's certificate. InsecureSkipVerify bool }
type HTTP ¶
type HTTP struct { // If true, h2c will be used in HTTP requests HTTP2 bool // If true, HTTP/3 request over QUIC will be used. // It is mandatory to specify TLS settings HTTP3 bool // Path specifies the URL path for the HTTP(s) request. Path string // Method to send. Defaults to GET. Method string // Headers indicates headers that should be sent in the request. Ignored for WebSocket calls. // If no Host header is provided, a default will be chosen for the target service endpoint. Headers http.Header // FollowRedirects will instruct the call to follow 301 redirects. Otherwise, the original 301 response // is returned directly. FollowRedirects bool // HTTProxy used for making ingress echo call via proxy HTTPProxy string }
HTTP settings
type Instance ¶
type Instance interface { Caller Target resource.Resource // Address of the service (e.g. Kubernetes cluster IP). May be "" if headless. Address() string // Addresses of service in dualmode Addresses() []string // Restart restarts the workloads associated with this echo instance Restart() error // UpdateWorkloadLabel update pod labels of this echo instance UpdateWorkloadLabel(add map[string]string, remove []string) error // WithWorkloads returns a target with only the specified subset of workloads WithWorkloads(wl ...Workload) Instance }
Instance is a component that provides access to a deployed echo service.
type Instances ¶
type Instances []Instance
Instances contains the instances created by the builder with methods for filtering
func (Instances) ClusterLocalFQDN ¶
func (Instances) ClusterSetLocalFQDN ¶
func (Instances) Clusters ¶
Clusters returns a list of cluster names that the instances are deployed in
func (Instances) ContainsTarget ¶
func (Instances) ForCluster ¶
ForCluster returns a list of instances that match the cluster name
func (Instances) IsDeployment ¶
IsDeployment returns true if there is only one deployment contained in the Instances
func (Instances) MustWorkloads ¶
func (Instances) NamespaceName ¶
func (Instances) NamespacedName ¶
func (i Instances) NamespacedName() NamespacedName
func (Instances) NamespacedNames ¶
func (i Instances) NamespacedNames() NamespacedNames
func (Instances) PortForName ¶
func (Instances) ServiceAccountName ¶
func (Instances) ServiceName ¶
type NamespacedName ¶
type NamespacedName struct { // Namespace of the echo Instance. If not provided, a default namespace "apps" is used. Namespace namespace.Instance // Name of the service within the Namespace. Name string }
NamespacedName represents the full name of a service.
func (NamespacedName) NamespaceName ¶
func (n NamespacedName) NamespaceName() string
NamespaceName returns the string name of the namespace, or "" if Namespace is nil.
func (NamespacedName) PrefixString ¶
func (n NamespacedName) PrefixString() string
PrefixString returns a string in the form of <name>.<prefix>. This is helpful for providing more stable test names.
func (NamespacedName) String ¶
func (n NamespacedName) String() string
String returns the Istio-formatted service name in the form of <namespace>/<name>.
type NamespacedNames ¶
type NamespacedNames []NamespacedName
NamespacedNames is a list of NamespacedName.
func (NamespacedNames) Len ¶
func (n NamespacedNames) Len() int
func (NamespacedNames) Less ¶
func (n NamespacedNames) Less(i, j int) bool
func (NamespacedNames) Names ¶
func (n NamespacedNames) Names() []string
Names returns the list of service names without any namespace appended.
func (NamespacedNames) NamesWithNamespacePrefix ¶
func (n NamespacedNames) NamesWithNamespacePrefix() []string
func (NamespacedNames) Swap ¶
func (n NamespacedNames) Swap(i, j int)
type Port ¶
type Port struct { // Name of this port Name string // Protocol to be used for the port. Protocol protocol.Instance // ServicePort number where the service can be reached. Does not necessarily // map to the corresponding port numbers for the instances behind the // service. If zero (default), a service port will be automatically generated for this port. // If set to NoServicePort, this port will be assumed to be a workload-only port. ServicePort int // WorkloadPort number where the workload is listening for connections. // This need not be the same as the ServicePort where the service is accessed. WorkloadPort int // TLS determines whether the connection will be plain text or TLS. By default this is false (plain text). TLS bool // ServerFirst determines whether the port will use server first communication, meaning the client will not send the first byte. ServerFirst bool // InstanceIP determines if echo will listen on the instance IP; otherwise, it will listen on wildcard InstanceIP bool // LocalhostIP determines if echo will listen on the localhost IP; otherwise, it will listen on wildcard LocalhostIP bool // ProxyProtocol determines if echo should accept PROXY protocol. ProxyProtocol bool }
Port exposed by an Echo Instance
func (Port) IsWorkloadOnly ¶
IsWorkloadOnly returns true if there is no service port specified for this Port.
type Ports ¶
type Ports []Port
func (Ports) ForProtocol ¶
ForProtocol returns the first port found with the given protocol.
func (Ports) ForServicePort ¶
ForServicePort returns the first port found with the given service port.
func (Ports) GetServicePorts ¶
GetServicePorts returns the subset of ports that contain a service port.
func (Ports) GetWorkloadOnlyPorts ¶
GetWorkloadOnlyPorts returns the subset of ports that do not contain a service port.
func (Ports) MustForName ¶
MustForName calls ForName and panics if not found.
type Retry ¶
type Retry struct { // NoRetry if true, no retry will be attempted. NoRetry bool // Options to be used when retrying. If not specified, defaults will be used. Options []retry.Option }
Retry settings
type Services ¶
type Services []Instances
Services is a set of Instances that share the same FQDN. While an Instance contains multiple deployments (a single service in a single cluster), Instances contains multiple deployments that may contain multiple Services.
func (Services) GetByService ¶
GetByService finds the first Instances with the given Service name. It is possible to have multiple deployments with the same service name but different namespaces (and therefore different FQDNs). Use caution when relying on Service.
func (Services) Less ¶
Less returns true if the element at i should appear before the element at j in a sorted Services
func (Services) MatchFQDNs ¶
func (Services) NamespacedNames ¶
func (d Services) NamespacedNames() NamespacedNames
type Sidecar ¶
type Sidecar interface { // Info about the Envoy instance. Info() (*admin.ServerInfo, error) InfoOrFail(t test.Failer) *admin.ServerInfo // Config of the Envoy instance. Config() (*admin.ConfigDump, error) ConfigOrFail(t test.Failer) *admin.ConfigDump // WaitForConfig queries the Envoy configuration an executes the given accept handler. If the // response is not accepted, the request will be retried until either a timeout or a response // has been accepted. WaitForConfig(accept func(*admin.ConfigDump) (bool, error), options ...retry.Option) error WaitForConfigOrFail(t test.Failer, accept func(*admin.ConfigDump) (bool, error), options ...retry.Option) // Clusters for the Envoy instance Clusters() (*admin.Clusters, error) ClustersOrFail(t test.Failer) *admin.Clusters // Listeners for the Envoy instance Listeners() (*admin.Listeners, error) ListenersOrFail(t test.Failer) *admin.Listeners // Logs returns the logs for the sidecar container Logs() (string, error) // LogsOrFail returns the logs for the sidecar container, or aborts if an error is found LogsOrFail(t test.Failer) string }
Sidecar provides an interface to execute queries against a single Envoy sidecar.
type SubsetConfig ¶
type SubsetConfig struct { // The version of the deployment. Version string // Annotations provides metadata hints for deployment of the instance. Annotations map[string]string // Labels provides metadata hints for deployment of the instance. Labels map[string]string // Replicas of this deployment Replicas int }
SubsetConfig is the config for a group of Subsets (e.g. Kubernetes deployment).
type TCP ¶
type TCP struct { // ExpectedResponse asserts this is in the response for TCP requests. ExpectedResponse *wrappers.StringValue }
TCP settings
type TLS ¶
type TLS struct {
// Use the custom certificate to make the call. This is mostly used to make mTLS request directly
// (without proxy) from naked client to test certificates issued by custom CA instead of the Istio self-signed CA.
Cert, Key, CaCert string
// Use the custom certificates file to make the call.
CertFile, KeyFile, CaCertFile string
// Skip verify peer's certificate.
InsecureSkipVerify bool
Alpn []string
ServerName string
}
TLS settings
type Target ¶
type Target interface { Configurable WorkloadContainer // Instances in this target. Instances() Instances }
Target of a call.
type VMDistro ¶
type VMDistro = string
const ( UbuntuBionic VMDistro = "UbuntuBionic" UbuntuNoble VMDistro = "UbuntuNoble" Debian12 VMDistro = "Debian12" Rockylinux9 VMDistro = "Rockylinux9" DefaultVMDistro = UbuntuNoble )
type Workload ¶
type Workload interface { // PodName gets the original pod name for the workload. PodName() string // Address returns the network address of the endpoint. Address() string // Addresses returns the network addresses of the endpoint. Addresses() []string // Sidecar if one was specified. Sidecar() Sidecar // Cluster where this Workload resides. Cluster() cluster.Cluster // ForwardEcho executes specific call from this workload. // TODO(nmittler): Instead of this, we should just make Workload implement Caller. ForwardEcho(context.Context, *proto.ForwardEchoRequest) (echo.Responses, error) // Logs returns the logs for the app container Logs() (string, error) LogsOrFail(t test.Failer) string }
Workload provides an interface for a single deployed echo server.
type WorkloadClass ¶
type WorkloadClass = string
WorkloadClass is the class of workload in the echo instance
const ( Proxyless WorkloadClass = "proxyless" VM WorkloadClass = "vm" Sotw WorkloadClass = "sotw" TProxy WorkloadClass = "tproxy" Naked WorkloadClass = "naked" External WorkloadClass = "external" StatefulSet WorkloadClass = "statefulset" Headless WorkloadClass = "headless" Captured WorkloadClass = "captured" Waypoint WorkloadClass = "waypoint" Standard WorkloadClass = "standard" )
type WorkloadContainer ¶
type WorkloadContainer interface { // Workloads retrieves the list of all deployed workloads for this Echo service. // Guarantees at least one workload, if error == nil. Workloads() (Workloads, error) WorkloadsOrFail(t test.Failer) Workloads MustWorkloads() Workloads // Clusters where the workloads are deployed. Clusters() cluster.Clusters }
WorkloadContainer is container for a number of Workload objects.