Documentation ¶
Index ¶
- Constants
- Variables
- func AddBeforeSuite(beforeSuite func())
- func AwaitResultOrError(opMsg string, doOperation DoOperationFunc, checkResult CheckResultFunc) (interface{}, string, error)
- func AwaitUntil(opMsg string, doOperation DoOperationFunc, checkResult CheckResultFunc) interface{}
- func BeforeSuite()
- func Errorf(format string, args ...interface{})
- func ExpectNoError(err error, explain ...interface{})
- func ExpectNoErrorWithOffset(offset int, err error, explain ...interface{})
- func Failf(format string, args ...interface{})
- func FailfWithOffset(offset int, format string, args ...interface{})
- func IsTransientError(err error, opMsg string) bool
- func Logf(format string, args ...interface{})
- func NoopCheckResult(interface{}) (bool, string, error)
- func PatchInt(path string, value uint32, patchFunc PatchFunc)
- func PatchString(path string, value string, patchFunc PatchFunc)
- func RemoveCleanupAction(p CleanupActionHandle)
- func RunCleanupActions()
- func Skipf(format string, args ...interface{})
- func ValidateFlags(t *TestContextType)
- type CheckResultFunc
- type CleanupActionHandle
- type ClusterIndex
- type DoOperationFunc
- type ExecOptions
- type Framework
- func (f *Framework) AddNamespacesToDelete(namespaces ...*v1.Namespace)
- func (f *Framework) AfterEach()
- func (f *Framework) AwaitPodsByAppLabel(cluster ClusterIndex, appName string, namespace string, expectedCount int) *v1.PodList
- func (f *Framework) AwaitSubmarinerEnginePod(cluster ClusterIndex) *v1.Pod
- func (f *Framework) AwaitUntilAnnotationOnPod(cluster ClusterIndex, annotation string, podName string, namespace string) *v1.Pod
- func (f *Framework) AwaitUntilAnnotationOnService(cluster ClusterIndex, annotation string, svcName string, namespace string) *v1.Service
- func (f *Framework) BeforeEach()
- func (f *Framework) CreateNamespace(clientSet *kubeclientset.Clientset, baseName string, labels map[string]string) *v1.Namespace
- func (f *Framework) CreateTCPService(cluster ClusterIndex, selectorName string, port int) *corev1.Service
- func (f *Framework) DeletePod(cluster ClusterIndex, podName string, namespace string)
- func (f *Framework) DeleteService(cluster ClusterIndex, serviceName string)
- func (f *Framework) ExecWithOptions(options ExecOptions, index ClusterIndex) (string, string, error)
- func (f *Framework) FindDeployment(cluster ClusterIndex, appName string, namespace string) *appsv1.Deployment
- func (f *Framework) FindNodesByGatewayLabel(cluster ClusterIndex, isGateway bool) []*v1.Node
- func (f *Framework) NewNetShootDeployment(cluster ClusterIndex) *corev1.PodList
- func (f *Framework) NewNetworkPod(config *NetworkPodConfig) *NetworkPod
- func (f *Framework) NewNginxDeployment(cluster ClusterIndex) *corev1.PodList
- func (f *Framework) NewNginxService(cluster ClusterIndex) *corev1.Service
- func (f *Framework) SetGatewayLabelOnNode(cluster ClusterIndex, nodeName string, isGateway bool)
- type NetworkPod
- type NetworkPodConfig
- type NetworkPodScheduling
- type NetworkPodType
- type NetworkingType
- type PatchFunc
- type PatchStringValue
- type PatchUInt32Value
- type TestContextType
Constants ¶
const ( SubmarinerEngine = "submariner-engine" GatewayLabel = "submariner.io/gateway" )
const ( // Polling interval while trying to create objects PollInterval = 100 * time.Millisecond )
const (
TestAppLabel = "test-app"
)
const (
TestPort = 1234
)
Variables ¶
var ( RestConfigs []*rest.Config KubeClients []*kubeclientset.Clientset )
Functions ¶
func AddBeforeSuite ¶
func AddBeforeSuite(beforeSuite func())
func AwaitResultOrError ¶
func AwaitResultOrError(opMsg string, doOperation DoOperationFunc, checkResult CheckResultFunc) (interface{}, string, error)
func AwaitUntil ¶
func AwaitUntil(opMsg string, doOperation DoOperationFunc, checkResult CheckResultFunc) interface{}
AwaitUntil periodically performs the given operation until the given CheckResultFunc returns true, an error, or a timeout is reached.
func BeforeSuite ¶
func BeforeSuite()
func ExpectNoError ¶
func ExpectNoError(err error, explain ...interface{})
func ExpectNoErrorWithOffset ¶
ExpectNoErrorWithOffset checks if "err" is set, and if so, fails assertion while logging the error at "offset" levels above its caller (for example, for call chain f -> g -> ExpectNoErrorWithOffset(1, ...) error would be logged for "f").
func FailfWithOffset ¶
FailfWithOffset calls "Fail" and logs the error at "offset" levels above its caller (for example, for call chain f -> g -> FailfWithOffset(1, ...) error would be logged for "f").
func IsTransientError ¶
identify API errors which could be considered transient/recoverable due to server state.
func NoopCheckResult ¶
func PatchString ¶
PatchString performs a REST patch operation for the given path and string value.
func RemoveCleanupAction ¶
func RemoveCleanupAction(p CleanupActionHandle)
RemoveCleanupAction removes a function that was installed by AddCleanupAction.
func RunCleanupActions ¶
func RunCleanupActions()
RunCleanupActions runs all functions installed by AddCleanupAction. It does not remove them (see RemoveCleanupAction) but it does run unlocked, so they may remove themselves.
func ValidateFlags ¶
func ValidateFlags(t *TestContextType)
Types ¶
type CheckResultFunc ¶
type CleanupActionHandle ¶
type CleanupActionHandle *int
CleanupActionHandle is an integer pointer type for handling cleanup action
func AddCleanupAction ¶
func AddCleanupAction(fn func()) CleanupActionHandle
AddCleanupAction installs a function that will be called in the event of the whole test being terminated. This allows arbitrary pieces of the overall test to hook into SynchronizedAfterSuite().
type DoOperationFunc ¶
type DoOperationFunc func() (interface{}, error)
type ExecOptions ¶
type ExecOptions struct { Command []string Namespace string PodName string ContainerName string Stdin io.Reader CaptureStdout bool CaptureStderr bool // If false, whitespace in std{err,out} will be removed. PreserveWhitespace bool }
ExecOptions passed to ExecWithOptions
type Framework ¶
type Framework struct { BaseName string // Set together with creating the ClientSet and the namespace. // Guaranteed to be unique in the cluster even when running the same // test multiple times in parallel. UniqueName string SkipNamespaceCreation bool // Whether to skip creating a namespace Namespace string // Every test has a namespace at least unless creation is skipped NamespaceDeletionTimeout time.Duration // contains filtered or unexported fields }
Framework supports common operations used by e2e tests; it will keep a client & a namespace for you. Eventual goal is to merge this with integration test framework.
func NewFramework ¶
NewFramework creates a test framework.
func (*Framework) AddNamespacesToDelete ¶
func (*Framework) AfterEach ¶
func (f *Framework) AfterEach()
AfterEach deletes the namespace, after reading its events.
func (*Framework) AwaitPodsByAppLabel ¶
func (f *Framework) AwaitPodsByAppLabel(cluster ClusterIndex, appName string, namespace string, expectedCount int) *v1.PodList
AwaitPodsByAppLabel finds pods in a given cluster whose 'app' label value matches a specified value. If the specified expectedCount >= 0, the function waits until the number of pods equals the expectedCount.
func (*Framework) AwaitSubmarinerEnginePod ¶
func (f *Framework) AwaitSubmarinerEnginePod(cluster ClusterIndex) *v1.Pod
AwaitSubmarinerEnginePod finds the submariner engine pod in a given cluster, waiting if necessary for a period of time for the pod to materialize.
func (*Framework) AwaitUntilAnnotationOnPod ¶ added in v0.4.0
func (f *Framework) AwaitUntilAnnotationOnPod(cluster ClusterIndex, annotation string, podName string, namespace string) *v1.Pod
AwaitUntilAnnotationOnPod queries the Pod and looks for the presence of annotation.
func (*Framework) AwaitUntilAnnotationOnService ¶ added in v0.4.0
func (f *Framework) AwaitUntilAnnotationOnService(cluster ClusterIndex, annotation string, svcName string, namespace string) *v1.Service
AwaitUntilAnnotationOnService queries the service and looks for the presence of annotation.
func (*Framework) BeforeEach ¶
func (f *Framework) BeforeEach()
func (*Framework) CreateNamespace ¶
func (f *Framework) CreateNamespace(clientSet *kubeclientset.Clientset, baseName string, labels map[string]string) *v1.Namespace
CreateNamespace creates a namespace for e2e testing.
func (*Framework) CreateTCPService ¶
func (*Framework) DeletePod ¶
func (f *Framework) DeletePod(cluster ClusterIndex, podName string, namespace string)
DeletePod deletes the pod for the given name and namespace.
func (*Framework) DeleteService ¶
func (f *Framework) DeleteService(cluster ClusterIndex, serviceName string)
func (*Framework) ExecWithOptions ¶
func (f *Framework) ExecWithOptions(options ExecOptions, index ClusterIndex) (string, string, error)
ExecWithOptions executes a command in the specified container, returning stdout, stderr and error. `options` allowed for additional parameters to be passed.
func (*Framework) FindDeployment ¶
func (f *Framework) FindDeployment(cluster ClusterIndex, appName string, namespace string) *appsv1.Deployment
func (*Framework) FindNodesByGatewayLabel ¶
func (f *Framework) FindNodesByGatewayLabel(cluster ClusterIndex, isGateway bool) []*v1.Node
FindNodesByGatewayLabel finds the nodes in a given cluster by matching 'submariner.io/gateway' value. A missing label is treated as false. Note the control plane node labeled as master is ignored.
func (*Framework) NewNetShootDeployment ¶
func (f *Framework) NewNetShootDeployment(cluster ClusterIndex) *corev1.PodList
func (*Framework) NewNetworkPod ¶
func (f *Framework) NewNetworkPod(config *NetworkPodConfig) *NetworkPod
func (*Framework) NewNginxDeployment ¶
func (f *Framework) NewNginxDeployment(cluster ClusterIndex) *corev1.PodList
func (*Framework) NewNginxService ¶
func (f *Framework) NewNginxService(cluster ClusterIndex) *corev1.Service
func (*Framework) SetGatewayLabelOnNode ¶
func (f *Framework) SetGatewayLabelOnNode(cluster ClusterIndex, nodeName string, isGateway bool)
SetGatewayLabelOnNode sets the 'submariner.io/gateway' value for a node to the specified value.
type NetworkPod ¶
type NetworkPod struct { Pod *v1.Pod Config *NetworkPodConfig TerminationError error TerminationErrorMsg string TerminationCode int32 TerminationMessage string // contains filtered or unexported fields }
func (*NetworkPod) AwaitFinish ¶
func (np *NetworkPod) AwaitFinish()
func (*NetworkPod) AwaitReady ¶
func (np *NetworkPod) AwaitReady()
func (*NetworkPod) CheckSuccessfulFinish ¶
func (np *NetworkPod) CheckSuccessfulFinish()
func (*NetworkPod) CreateService ¶
func (np *NetworkPod) CreateService() *v1.Service
type NetworkPodConfig ¶
type NetworkPodConfig struct { Type NetworkPodType Cluster ClusterIndex Scheduling NetworkPodScheduling Port int Data string RemoteIP string ConnectionTimeout uint ConnectionAttempts uint Networking NetworkingType }
type NetworkPodScheduling ¶
type NetworkPodScheduling int
const ( InvalidScheduling NetworkPodScheduling = iota GatewayNode NonGatewayNode )
type NetworkPodType ¶
type NetworkPodType int
const ( InvalidPodType NetworkPodType = iota ListenerPod ConnectorPod )
type NetworkingType ¶
type NetworkingType bool
const ( HostNetworking NetworkingType = true PodNetworking NetworkingType = false )
type PatchStringValue ¶
type PatchUInt32Value ¶
type TestContextType ¶
type TestContextType struct { KubeConfigs []string // KubeConfigs provides an alternative to KubeConfig + KubeContexts KubeConfig string KubeContexts contextArray ClusterIDs []string ReportDir string ReportPrefix string SubmarinerNamespace string ConnectionTimeout uint ConnectionAttempts uint OperationTimeout uint GlobalnetEnabled bool ClientQPS float32 ClientBurst int GroupVersion *schema.GroupVersion }
var TestContext *TestContextType = &TestContextType{
ClientQPS: 20,
ClientBurst: 50,
}
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string.
|
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string. |