Documentation ¶
Index ¶
- Variables
- func ManifestPath(pathParts ...string) string
- func MustTestHelper(ctx context.Context, installation *TestInstallation) *helper.SoloTestHelper
- func ProfilePath(path string) string
- type GeneratedFiles
- type NewSuiteFunc
- type SuiteRunner
- type TestInstallation
- func (i *TestInstallation) AddIstioctl(ctx context.Context) error
- func (i *TestInstallation) CreateIstioBugReport(ctx context.Context)
- func (i *TestInstallation) InstallGlooGateway(ctx context.Context, installFn func(ctx context.Context) error)
- func (i *TestInstallation) InstallGlooGatewayWithTestHelper(ctx context.Context, testHelper *helper.SoloTestHelper, timeout time.Duration)
- func (i *TestInstallation) InstallMinimalIstio(ctx context.Context) error
- func (i *TestInstallation) InstallRevisionedIstio(ctx context.Context, rev, profile string) error
- func (i *TestInstallation) PreFailHandler(ctx context.Context)
- func (i *TestInstallation) String() string
- func (i *TestInstallation) UninstallGlooGateway(ctx context.Context, uninstallFn func(ctx context.Context) error)
- func (i *TestInstallation) UninstallGlooGatewayWithTestHelper(ctx context.Context, testHelper *helper.SoloTestHelper)
- func (i *TestInstallation) UninstallIstio() error
Constants ¶
This section is empty.
Variables ¶
var ( EdgeGatewayProfilePath = ProfilePath("edge-gateway.yaml") KubernetesGatewayProfilePath = ProfilePath("kubernetes-gateway.yaml") FullGatewayProfilePath = ProfilePath("full-gateway.yaml") CommonRecommendationManifest = ManifestPath("common-recommendations.yaml") // EmptyValuesManifestPath returns the path to a manifest with no values // We prefer to have our tests be explicit and require defining a values file. However, some tests // rely entirely on the values provided by the "profile". In those cases, the test supplies this reference EmptyValuesManifestPath = ManifestPath("empty-values.yaml") )
Functions ¶
func ManifestPath ¶ added in v1.17.11
ManifestPath returns the absolute path to a manifest file. These are all stored in the tests/manifests directory
func MustTestHelper ¶
func MustTestHelper(ctx context.Context, installation *TestInstallation) *helper.SoloTestHelper
MustTestHelper returns the SoloTestHelper used for e2e tests The SoloTestHelper is a wrapper around `glooctl` and we should eventually phase it out in favor of using the exact tool that users rely on
func ProfilePath ¶ added in v1.17.11
ProfilePath returns the absolute path to a profile file. These are all stored in the tests/manifests/profiles directory
Types ¶
type GeneratedFiles ¶
type GeneratedFiles struct { // TempDir is the directory where any temporary files should be created // Tests may create files for any number of reasons: // - A: When a test renders objects in a file, and then uses this file to create and delete values // - B: When a test invokes a command that produces a file as a side effect (glooctl, for example) // Files in this directory are an implementation detail of the test itself. // As a result, it is the callers responsibility to clean up the TempDir when the tests complete TempDir string // FailureDir is the directory where any assets that are produced on failure will be created FailureDir string }
GeneratedFiles is a collection of files that are generated during the execution of a set of tests
func MustGeneratedFiles ¶
func MustGeneratedFiles(tmpDirId, clusterId string) GeneratedFiles
MustGeneratedFiles returns GeneratedFiles, or panics if there was an error generating the directories
type NewSuiteFunc ¶
type NewSuiteFunc func(ctx context.Context, testInstallation *TestInstallation) suite.TestingSuite
type SuiteRunner ¶
type SuiteRunner interface { Run(ctx context.Context, t *testing.T, testInstallation *TestInstallation) Register(name string, newSuite NewSuiteFunc) }
A SuiteRunner is an interface that allows E2E tests to simply Register tests in one location and execute them with Run.
func NewSuiteRunner ¶
func NewSuiteRunner(ordered bool) SuiteRunner
NewSuiteRunner returns an implementation of TestRunner that will execute tests as specified in the ordered parameter.
NOTE: it should be strongly preferred to use unordered tests. Only pass true to this function if there is a clear need for the tests to be ordered, and specify in a comment near the call to NewSuiteRunner why the tests need to be ordered.
type TestInstallation ¶
type TestInstallation struct { fmt.Stringer // RuntimeContext contains the set of properties that are defined at runtime by whoever is invoking tests RuntimeContext testruntime.Context // ClusterContext contains the metadata about the Kubernetes Cluster that is used for this TestCluster ClusterContext *cluster.Context // Metadata contains the properties used to install Gloo Gateway Metadata *gloogateway.Context // ResourceClients is a set of clients that can manipulate resources owned by Gloo Gateway ResourceClients gloogateway.ResourceClients // Actions is the entity that creates actions that can be executed by the Operator Actions *actions.Provider // Assertions is the entity that creates assertions that can be executed by the Operator Assertions *assertions.Provider // GeneratedFiles is the collection of directories and files that this test installation _may_ create GeneratedFiles GeneratedFiles // IstioctlBinary is the path to the istioctl binary that can be used to interact with Istio IstioctlBinary string }
TestInstallation is the structure around a set of tests that validate behavior for an installation of Gloo Gateway.
func CreateTestInstallation ¶
func CreateTestInstallation( t *testing.T, glooGatewayContext *gloogateway.Context, ) *TestInstallation
CreateTestInstallation is the simplest way to construct a TestInstallation in Gloo Gateway OSS It is syntactic sugar on top of CreateTestInstallationForCluster
func CreateTestInstallationForCluster ¶
func CreateTestInstallationForCluster( t *testing.T, runtimeContext testruntime.Context, clusterContext *cluster.Context, glooGatewayContext *gloogateway.Context, ) *TestInstallation
CreateTestInstallationForCluster is the standard way to construct a TestInstallation It accepts context objects from 3 relevant sources:
runtime - These are properties that are supplied at runtime and will impact how tests are executed cluster - These are properties that are used to connect to the Kubernetes cluster glooGateway - These are properties that are relevant to how Gloo Gateway will be configured
func (*TestInstallation) AddIstioctl ¶
func (i *TestInstallation) AddIstioctl(ctx context.Context) error
func (*TestInstallation) CreateIstioBugReport ¶
func (i *TestInstallation) CreateIstioBugReport(ctx context.Context)
func (*TestInstallation) InstallGlooGateway ¶
func (*TestInstallation) InstallGlooGatewayWithTestHelper ¶ added in v1.17.11
func (i *TestInstallation) InstallGlooGatewayWithTestHelper(ctx context.Context, testHelper *helper.SoloTestHelper, timeout time.Duration)
InstallGlooGatewayWithTestHelper is the common way to install Gloo Gateway. However, it relies on a SoloTestHelper which is an artifact of the legacy e2e tests that we hope to deprecate
func (*TestInstallation) InstallMinimalIstio ¶
func (i *TestInstallation) InstallMinimalIstio(ctx context.Context) error
func (*TestInstallation) InstallRevisionedIstio ¶
func (i *TestInstallation) InstallRevisionedIstio(ctx context.Context, rev, profile string) error
func (*TestInstallation) PreFailHandler ¶
func (i *TestInstallation) PreFailHandler(ctx context.Context)
PreFailHandler is the function that is invoked if a test in the given TestInstallation fails
func (*TestInstallation) String ¶
func (i *TestInstallation) String() string
func (*TestInstallation) UninstallGlooGateway ¶
func (*TestInstallation) UninstallGlooGatewayWithTestHelper ¶ added in v1.17.11
func (i *TestInstallation) UninstallGlooGatewayWithTestHelper(ctx context.Context, testHelper *helper.SoloTestHelper)
UninstallGlooGatewayWithTestHelper is the common way to uninstall Gloo Gateway. However, it relies on a SoloTestHelper which is an artifact of the legacy e2e tests that we hope to deprecate
func (*TestInstallation) UninstallIstio ¶
func (i *TestInstallation) UninstallIstio() error