framework

package
v0.6.0-alpha.7 Latest Latest
Warning

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

Go to latest
Published: Jan 26, 2022 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PollTimeout              = time.Minute
	DefaultVclusterName      = "vcluster"
	DefaultVclusterNamespace = "vcluster"
	DefaultClientTimeout     = 32 * time.Second // the default in client-go is 32
)

Variables

View Source
var DefaultFramework = &Framework{}

Functions

func CreateFramework

func CreateFramework(ctx context.Context, scheme *runtime.Scheme) error

func ExpectConsistOf

func ExpectConsistOf(actual interface{}, extra interface{}, explain ...interface{})

ExpectConsistOf expects actual contains precisely the extra elements. The ordering of the elements does not matter.

func ExpectEmpty

func ExpectEmpty(actual interface{}, explain ...interface{})

ExpectEmpty expects actual is empty

func ExpectEqual

func ExpectEqual(actual interface{}, extra interface{}, explain ...interface{})

ExpectEqual expects the specified two are the same, otherwise an exception raises

func ExpectError

func ExpectError(err error, explain ...interface{})

ExpectError expects an error happens, otherwise an exception raises

func ExpectHaveKey

func ExpectHaveKey(actual interface{}, key interface{}, explain ...interface{})

ExpectHaveKey expects the actual map has the key in the keyset

func ExpectMatchRegexp added in v0.4.4

func ExpectMatchRegexp(actual string, regexp string, explain ...interface{})

ExpectMatchRegexp expects the string to match the provided regular expression

func ExpectNoError

func ExpectNoError(err error, explain ...interface{})

ExpectNoError checks if "err" is set, and if so, fails assertion while logging the error.

func ExpectNoErrorWithOffset

func ExpectNoErrorWithOffset(offset int, err error, explain ...interface{})

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 ExpectNotEqual

func ExpectNotEqual(actual interface{}, extra interface{}, explain ...interface{})

ExpectNotEqual expects the specified two are not the same, otherwise an exception raises

func Failf added in v0.6.0

func Failf(format string, args ...interface{})

ExpectMatchRegexp expects the string to match the provided regular expression

func RunKubectl added in v0.6.0

func RunKubectl(kubeconfigPath, namespace string, args ...string) (string, error)

RunKubectl is a convenience wrapper over kubectlBuilder

func RunKubectlInput added in v0.6.0

func RunKubectlInput(kubeconfigPath, namespace string, data string, args ...string) (string, error)

RunKubectlInput is a convenience wrapper over kubectlBuilder that takes input to stdin

func RunKubectlOrDie added in v0.6.0

func RunKubectlOrDie(kubeconfigPath, namespace string, args ...string) string

RunKubectlOrDie is a convenience wrapper over kubectlBuilder

func RunKubectlOrDieInput added in v0.6.0

func RunKubectlOrDieInput(kubeconfigPath, namespace string, data string, args ...string) string

RunKubectlOrDieInput is a convenience wrapper over kubectlBuilder that takes input to stdin

func RunKubectlWithFullOutput added in v0.6.0

func RunKubectlWithFullOutput(kubeconfigPath, namespace string, args ...string) (string, string, error)

RunKubectlWithFullOutput is a convenience wrapper over kubectlBuilder It will also return the command's stderr.

Types

type Framework

type Framework struct {
	// The context to use for testing
	Context context.Context

	// VclusterName is the name of the vcluster instance which we are testing
	VclusterName string

	// VclusterNamespace is the namespace in host cluster of the current
	// vcluster instance which we are testing
	VclusterNamespace string

	// The suffix to append to the synced resources in the host namespace
	Suffix string

	// HostConfig is the kubernetes rest config of the
	// host kubernetes cluster were we are testing in
	HostConfig *rest.Config

	// HostClient is the kubernetes client of the current
	// host kubernetes cluster were we are testing in
	HostClient *kubernetes.Clientset

	// VclusterConfig is the kubernetes rest config of the current
	// vcluster instance which we are testing
	VclusterConfig *rest.Config

	// VclusterClient is the kubernetes client of the current
	// vcluster instance which we are testing
	VclusterClient *kubernetes.Clientset

	// VclusterKubeconfigFile is a file containing kube config
	// of the current vcluster instance which we are testing.
	// This file shall be deleted in the end of the test suite execution.
	VclusterKubeconfigFile *os.File

	// Scheme is the global scheme to use
	Scheme *runtime.Scheme

	// Log is the logger that should be used
	Log log.Logger

	// ClientTimeout value used in the clients
	ClientTimeout time.Duration
}

func (*Framework) Cleanup added in v0.6.0

func (f *Framework) Cleanup() error

func (*Framework) CreateCurlPod added in v0.5.0

func (f *Framework) CreateCurlPod(ns string) (*corev1.Pod, error)

func (*Framework) CreateEgressNetworkPolicyForDNS added in v0.5.0

func (f *Framework) CreateEgressNetworkPolicyForDNS(ns string) (*networkingv1.NetworkPolicy, error)

func (*Framework) CreateNginxPodAndService added in v0.5.0

func (f *Framework) CreateNginxPodAndService(ns string) (*corev1.Pod, *corev1.Service, error)

func (*Framework) DeleteTestNamespace added in v0.4.4

func (f *Framework) DeleteTestNamespace(ns string, waitUntilDeleted bool) error

func (*Framework) GetDefaultSecurityContext added in v0.5.0

func (f *Framework) GetDefaultSecurityContext() *corev1.SecurityContext

func (*Framework) TestServiceIsEventuallyReachable added in v0.5.0

func (f *Framework) TestServiceIsEventuallyReachable(curlPod *corev1.Pod, service *corev1.Service)

func (*Framework) TestServiceIsEventuallyUnreachable added in v0.5.0

func (f *Framework) TestServiceIsEventuallyUnreachable(curlPod *corev1.Pod, service *corev1.Service)

func (*Framework) WaitForPodRunning added in v0.4.4

func (f *Framework) WaitForPodRunning(podName string, ns string) error

func (*Framework) WaitForService added in v0.5.0

func (f *Framework) WaitForService(serviceName string, ns string) error

func (*Framework) WaitForServiceAccount added in v0.4.4

func (f *Framework) WaitForServiceAccount(saName string, ns string) error

func (*Framework) WaitForServiceInSyncerCache added in v0.5.0

func (f *Framework) WaitForServiceInSyncerCache(serviceName string, ns string) error

Some vcluster operations list Service, e.g. pod translation. To ensure expected results of such operation we need to wait until newly created Service is in syncer controller cache, otherwise syncer will operate on slightly outdated resources, which is not good for test stability. This function ensures that Service is actually in controller cache by making an update and checking for it in physical service.

type KubectlBuilder added in v0.6.0

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

Adopted from k8s test suite - https://github.com/kubernetes/kubernetes/blob/f2576efecdf2d902b12a3fedae7995311d4febfa/test/e2e/framework/util.go#L552-L687 KubectlBuilder is used to build, customize and execute a kubectl Command. Add more functions to customize the builder as needed.

func NewKubectlCommand added in v0.6.0

func NewKubectlCommand(kubeconfigPath, namespace string, args ...string) *KubectlBuilder

NewKubectlCommand returns a KubectlBuilder for running kubectl.

func (KubectlBuilder) Exec added in v0.6.0

func (b KubectlBuilder) Exec() (string, error)

Exec runs the kubectl executable.

func (KubectlBuilder) ExecOrDie added in v0.6.0

func (b KubectlBuilder) ExecOrDie(namespace string) string

ExecOrDie runs the kubectl executable or dies if error occurs.

func (KubectlBuilder) ExecWithFullOutput added in v0.6.0

func (b KubectlBuilder) ExecWithFullOutput() (string, string, error)

ExecWithFullOutput runs the kubectl executable, and returns the stdout and stderr.

func (*KubectlBuilder) WithEnv added in v0.6.0

func (b *KubectlBuilder) WithEnv(env []string) *KubectlBuilder

WithEnv sets the given environment and returns itself.

func (KubectlBuilder) WithStdinData added in v0.6.0

func (b KubectlBuilder) WithStdinData(data string) *KubectlBuilder

WithStdinData sets the given data to stdin and returns itself.

func (KubectlBuilder) WithStdinReader added in v0.6.0

func (b KubectlBuilder) WithStdinReader(reader io.Reader) *KubectlBuilder

WithStdinReader sets the given reader and returns itself.

func (*KubectlBuilder) WithTimeout added in v0.6.0

func (b *KubectlBuilder) WithTimeout(t <-chan time.Time) *KubectlBuilder

WithTimeout sets the given timeout and returns itself.

type TestKubeconfig added in v0.6.0

type TestKubeconfig struct {
	CertDir     string
	Host        string
	KubeConfig  string
	KubeContext string
	KubectlPath string
	Namespace   string // Every test has at least one namespace unless creation is skipped
}

Adopted from k8s test suite - https://github.com/kubernetes/kubernetes/blob/f2576efecdf2d902b12a3fedae7995311d4febfa/test/e2e/framework/kubectl/kubectl_utils.go#L43-L100 TestKubeconfig is a struct containing the needed attributes from TestContext and Framework(Namespace).

func NewTestKubeconfig added in v0.6.0

func NewTestKubeconfig(kubeconfig, namespace string) *TestKubeconfig

NewTestKubeconfig returns a new Kubeconfig struct instance.

func (*TestKubeconfig) KubectlCmd added in v0.6.0

func (tk *TestKubeconfig) KubectlCmd(args ...string) *exec.Cmd

KubectlCmd runs the kubectl executable through the wrapper script.

Jump to

Keyboard shortcuts

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