Documentation ¶
Index ¶
- Constants
- Variables
- func ExtraArgs(args ...string) func(*InstallOptions)
- func GenerateVariantValuesFile(variant string) (string, error)
- func GetExpectedResponseMatcher(expectedOutput interface{}) types.GomegaMatcher
- func GetTimeouts(timeout ...time.Duration) (currentTimeout, pollingInterval time.Duration)
- type CurlOpts
- type InstallOption
- type InstallOptions
- type SoloTestHelper
- func (h *SoloTestHelper) ChartVersion() string
- func (h *SoloTestHelper) GetContainerLogs(ctx context.Context, namespace string, name string) string
- func (h *SoloTestHelper) InstallGloo(ctx context.Context, deploymentType string, timeout time.Duration, ...) error
- func (h *SoloTestHelper) ModifyDeploymentEnv(ctx context.Context, deploymentClient clientsv1.DeploymentInterface, ...)
- func (h *SoloTestHelper) SetKubeCli(cli *kubectl.Cli)
- func (h *SoloTestHelper) UninstallGloo() error
- func (h *SoloTestHelper) UninstallGlooAll() error
- func (h *SoloTestHelper) WaitForRollout(ctx context.Context, deploymentName string, deploymentNamespace string, ...)
- type TestConfig
- type TestConfigFunc
- type TestContainer
- type TestUpstreamServer
Constants ¶
const ( HttpEchoName = "http-echo" HttpEchoPort = 3000 )
const ( TcpEchoName = "tcp-echo" TcpEchoPort = 1025 )
const ( GATEWAY = "gateway" INGRESS = "ingress" KNATIVE = "knative" )
const ( TestServerName = "testserver" TestServerPort = 1234 // This response is given by the testserver when the SimpleServer is started SimpleHttpResponse = `` /* 851-byte string literal not displayed */ SimpleHttpResponseArm = `` /* 807-byte string literal not displayed */ )
Variables ¶
var (
ErrCannotCurl = errors.New("cannot curl")
)
Functions ¶
func ExtraArgs ¶
func ExtraArgs(args ...string) func(*InstallOptions)
func GetExpectedResponseMatcher ¶
func GetExpectedResponseMatcher(expectedOutput interface{}) types.GomegaMatcher
GetExpectedResponseMatcher takes an interface and converts it into the types.GomegaMatcher that will be used to assert that a given Curl response, matches an expected shape
Types ¶
type CurlOpts ¶
type CurlOpts struct { Protocol string Path string Method string Host string Service string CaFile string Body string Headers map[string]string Port int ReturnHeaders bool ConnectionTimeout int // Verbose is used to configure the verbosity of the curl request // Deprecated: see buildCurlArgs() for details about why we always default this to true Verbose bool LogResponses bool AllowInsecure bool // WithoutStats sets the -s flag to prevent download stats from printing WithoutStats bool // Optional SNI name to resolve domain to when sending request Sni string SelfSigned bool // Retries on Curl requests are disabled by default because they historically were not configurable // Curls to a remote container may be subject to network flakes and therefore using retries // can be a useful mechanism to avoid test flakes Retries struct { Retry int RetryDelay int RetryMaxTime int } }
type InstallOption ¶
type InstallOption func(*InstallOptions)
type InstallOptions ¶
type SoloTestHelper ¶
type SoloTestHelper struct { *TestConfig TestUpstreamServer // The kubernetes helper *kubectl.Cli }
func NewSoloTestHelper ¶
func NewSoloTestHelper(configFunc TestConfigFunc) (*SoloTestHelper, error)
NewSoloTestHelper is meant to provide a standard way of deploying Gloo/GlooE to a k8s cluster during tests. It assumes that build and test assets are present in the `_output` and `_test` directories (these are configurable). Specifically, it expects the glooctl executable in the BuildAssetDir and a helm chart in TestAssetDir. It also assumes that a kubectl executable is on the PATH.
func (*SoloTestHelper) ChartVersion ¶
func (h *SoloTestHelper) ChartVersion() string
Return the version of the Helm chart
func (*SoloTestHelper) GetContainerLogs ¶
func (h *SoloTestHelper) GetContainerLogs(ctx context.Context, namespace string, name string) string
Can be replaced entirely with Cli
func (*SoloTestHelper) InstallGloo ¶
func (h *SoloTestHelper) InstallGloo(ctx context.Context, deploymentType string, timeout time.Duration, options ...InstallOption) error
Installs Gloo (and, optionally, the test server)
func (*SoloTestHelper) ModifyDeploymentEnv ¶
func (h *SoloTestHelper) ModifyDeploymentEnv(ctx context.Context, deploymentClient clientsv1.DeploymentInterface, namespace string, deploymentName string, containerIndex int, envVar corev1.EnvVar)
func (*SoloTestHelper) SetKubeCli ¶
func (h *SoloTestHelper) SetKubeCli(cli *kubectl.Cli)
func (*SoloTestHelper) UninstallGloo ¶
func (h *SoloTestHelper) UninstallGloo() error
does not pass the --all flag to glooctl uninstall
func (*SoloTestHelper) UninstallGlooAll ¶
func (h *SoloTestHelper) UninstallGlooAll() error
passes the --all flag to glooctl uninstall
func (*SoloTestHelper) WaitForRollout ¶
func (h *SoloTestHelper) WaitForRollout(ctx context.Context, deploymentName string, deploymentNamespace string, intervals ...interface{})
WaitForRollout waits for the specified deployment to be rolled out successfully.
type TestConfig ¶
type TestConfig struct { // All relative paths will assume this as the base directory. This is usually the project base directory. RootDir string // The directory holding the test assets. Must be relative to RootDir. TestAssetDir string // The directory holding the build assets. Must be relative to RootDir. BuildAssetDir string // Helm chart name HelmChartName string // Name of the helm index file name HelmRepoIndexFileName string // The namespace gloo (and the test server) will be installed to. If empty, will use the helm chart version. InstallNamespace string // Name of the glooctl executable GlooctlExecName string // If provided, the licence key to install the enterprise version of Gloo LicenseKey string // Determines whether the test server pod gets deployed DeployTestServer bool // Install a released version of gloo. This is the value of the github tag that may have a leading 'v' ReleasedVersion string // If true, glooctl will be run with a -v flag Verbose bool // contains filtered or unexported fields }
type TestConfigFunc ¶
type TestConfigFunc func(defaults TestConfig) TestConfig
Function to provide/override test configuration. Default values will be passed in.
type TestContainer ¶
type TestContainer interface { DeployResources(timeout time.Duration) error TerminatePod() error DeleteService() error TerminatePodAndDeleteService() error CanCurl() bool // CurlEventuallyShouldRespond checks the response of the request eventually meets expectation // The response is type interface{}. See the actual implementation for which types are supported CurlEventuallyShouldRespond(opts CurlOpts, response interface{}, ginkgoOffset int, timeout ...time.Duration) // CurlEventuallyShouldOutput checks all the output of the curl command eventually meets expectation // The response is type interface{}. See the actual implementation for which types are supported // Deprecated: Prefer CurlEventuallyShouldRespond CurlEventuallyShouldOutput(opts CurlOpts, output interface{}, ginkgoOffset int, timeout ...time.Duration) Curl(opts CurlOpts) (string, error) Exec(command ...string) (string, error) ExecAsync(args ...string) (io.Reader, chan struct{}, error) }
A TestContainer is a general-purpose abstraction over a container in which we might execute cURL or other, arbitrary commands via kubectl.
func NewEchoHttp ¶
func NewEchoHttp(namespace string) (TestContainer, error)
Deprecated ported to test/kubernetes/e2e/defaults/testdata/http_echo.yaml
func NewEchoTcp ¶
func NewEchoTcp(namespace string) (TestContainer, error)
Deprecated ported to test/kubernetes/e2e/defaults/testdata/tcp_echo.yaml
type TestUpstreamServer ¶
type TestUpstreamServer interface { TestContainer DeployServer(timeout time.Duration) error DeployServerTls(timeout time.Duration, crt, key []byte) error }
A TestUpstreamServer is an extension of a TestContainer which is typically run with the defaultTestServerImage. It is used to deploy test http/https services
func NewTestServer ¶
func NewTestServer(namespace string) (TestUpstreamServer, error)
tests relying on the test server should be ported using the default nginx deployment located at test/kubernetes/e2e/defaults/testdata/nginx_pod.yaml