framework

package
v1.13.3 Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2020 License: Apache-2.0 Imports: 35 Imported by: 3

Documentation

Index

Constants

View Source
const (

	//NsPrefixLabel provides a cdi prefix label to identify the test namespace
	NsPrefixLabel = "cdi-e2e"
)

Variables

This section is empty.

Functions

func DeleteNS

func DeleteNS(c *kubernetes.Clientset, ns string) error

DeleteNS provides a function to delete the specified namespace from the test cluster

func GetKubeClientFromRESTConfig

func GetKubeClientFromRESTConfig(config *rest.Config) (*kubernetes.Clientset, error)

GetKubeClientFromRESTConfig provides a function to get a K8s client using hte REST config

func VerifyPVCIsEmpty

func VerifyPVCIsEmpty(f *Framework, pvc *k8sv1.PersistentVolumeClaim, node string) (bool, error)

VerifyPVCIsEmpty verifies a passed in PVC is empty, returns true if the PVC is empty, false if it is not. Optionaly, specify node for the pod.

Types

type Config

type Config struct {
	// SkipNamespaceCreation sets whether to skip creating a namespace. Use this ONLY for tests that do not require
	// a namespace at all, like basic sanity or other global tests.
	SkipNamespaceCreation bool
	// SkipControllerPodLookup sets whether to skip looking up the name of the cdi controller pod.
	SkipControllerPodLookup bool
}

Config provides some basic test config options

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 {
	Config
	// NsPrefix is a prefix for generated namespace
	NsPrefix string
	//  k8sClient provides our k8s client pointer
	K8sClient *kubernetes.Clientset
	// CdiClient provides our CDI client pointer
	CdiClient *cdiClientset.Clientset
	// CsiClient provides our CSI client pointer
	CsiClient *csiClientset.Clientset
	// RestConfig provides a pointer to our REST client config.
	RestConfig *rest.Config
	// Namespace provides a namespace for each test generated/unique ns per test
	Namespace *v1.Namespace
	// Namespace2 provides an additional generated/unique secondary ns for testing across namespaces (eg. clone tests)
	Namespace2 *v1.Namespace // note: not instantiated in NewFramework

	// ControllerPod provides a pointer to our test controller pod
	ControllerPod *v1.Pod

	// KubectlPath is a test run-time flag so we can find kubectl
	KubectlPath string
	// OcPath is a test run-time flag so we can find OpenShift Client
	OcPath string
	// CdiInstallNs is a test run-time flag to store the Namespace we installed CDI in
	CdiInstallNs string
	// KubeConfig is a test run-time flag to store the location of our test setup kubeconfig
	KubeConfig string
	// Master is a test run-time flag to store the id of our master node
	Master string
	// GoCliPath is a test run-time flag to store the location of gocli
	GoCLIPath string
	// SnapshotSCName is the Storage Class name that supports Snapshots
	SnapshotSCName string
	// BlockSCName is the Storage Class name that supports block mode
	BlockSCName string
	// contains filtered or unexported fields
}

Framework supports common operations used by functional/e2e tests. It holds the k8s and cdi clients, a generated unique namespace, run-time flags, and more fields will be added over time as cdi e2e evolves. Global BeforeEach and AfterEach are called in the Framework constructor.

func NewFramework

func NewFramework(prefix string, config Config) (*Framework, error)

NewFramework makes a new framework and sets up the global BeforeEach/AfterEach's. Test run-time flags are parsed and added to the Framework struct.

func NewFrameworkOrDie

func NewFrameworkOrDie(prefix string, config ...Config) *Framework

NewFrameworkOrDie calls NewFramework and handles errors by calling Fail. Config is optional, but if passed there can only be one.

func (*Framework) AddNamespaceToDelete

func (f *Framework) AddNamespaceToDelete(ns *v1.Namespace)

AddNamespaceToDelete provides a wrapper around the go append function

func (*Framework) AfterEach

func (f *Framework) AfterEach()

AfterEach provides a set of operations to run after each test

func (*Framework) BeforeEach

func (f *Framework) BeforeEach()

BeforeEach provides a set of operations to run before each test

func (*Framework) CreateAndPopulateSourcePVC

func (f *Framework) CreateAndPopulateSourcePVC(pvcDef *k8sv1.PersistentVolumeClaim, podName string, fillCommand string) *k8sv1.PersistentVolumeClaim

CreateAndPopulateSourcePVC Creates and populates a PVC using the provided POD and command

func (*Framework) CreateExecutorPodWithPVC

func (f *Framework) CreateExecutorPodWithPVC(podName string, pvc *k8sv1.PersistentVolumeClaim) (*k8sv1.Pod, error)

CreateExecutorPodWithPVC is a wrapper around utils.CreateExecutorPodWithPVC

func (*Framework) CreateExecutorPodWithPVCSpecificNode added in v1.10.7

func (f *Framework) CreateExecutorPodWithPVCSpecificNode(podName string, pvc *k8sv1.PersistentVolumeClaim, node string) (*k8sv1.Pod, error)

CreateExecutorPodWithPVCSpecificNode is a wrapper around utils.CreateExecutorPodWithPVCSpecificNode

func (*Framework) CreateNamespace

func (f *Framework) CreateNamespace(prefix string, labels map[string]string) (*v1.Namespace, error)

CreateNamespace instantiates a new namespace object with a unique name and the passed-in label(s).

func (*Framework) CreatePVCFromDefinition

func (f *Framework) CreatePVCFromDefinition(def *k8sv1.PersistentVolumeClaim) (*k8sv1.PersistentVolumeClaim, error)

CreatePVCFromDefinition is a wrapper around utils.CreatePVCFromDefinition

func (*Framework) CreatePVFromDefinition added in v1.5.0

func (f *Framework) CreatePVFromDefinition(def *k8sv1.PersistentVolume) (*k8sv1.PersistentVolume, error)

CreatePVFromDefinition is a wrapper around utils.CreatePVFromDefinition

func (*Framework) CreatePod

func (f *Framework) CreatePod(podDef *k8sv1.Pod) (*k8sv1.Pod, error)

CreatePod is a wrapper around utils.CreatePod

func (*Framework) CreatePrometheusServiceInNs added in v1.4.0

func (f *Framework) CreatePrometheusServiceInNs(namespace string) (*v1.Service, error)

CreatePrometheusServiceInNs creates a service for prometheus in the specified namespace. This allows us to test for prometheus end points using the service to connect to the endpoints.

func (*Framework) DeletePVC

func (f *Framework) DeletePVC(pvc *k8sv1.PersistentVolumeClaim) error

DeletePVC is a wrapper around utils.DeletePVC

func (*Framework) DeletePod

func (f *Framework) DeletePod(pod *k8sv1.Pod) error

DeletePod is a wrapper around utils.DeletePod

func (*Framework) ExecCommandInContainer

func (f *Framework) ExecCommandInContainer(namespace, podName, containerName string, cmd ...string) (string, error)

ExecCommandInContainer executes a command in the specified container.

func (*Framework) ExecCommandInContainerWithFullOutput

func (f *Framework) ExecCommandInContainerWithFullOutput(namespace, podName, containerName string, cmd ...string) (string, string, error)

ExecCommandInContainerWithFullOutput executes a command in the specified container and return stdout, stderr and error

func (*Framework) ExecCommandInPod

func (f *Framework) ExecCommandInPod(podName, namespace string, cmd ...string) (string, error)

ExecCommandInPod provides a function to execute a command on a running pod

func (*Framework) ExecCommandInPodWithFullOutput

func (f *Framework) ExecCommandInPodWithFullOutput(namespace, podName string, cmd ...string) (string, string, error)

ExecCommandInPodWithFullOutput provides a function to execute a command in a running pod and to capture its output

func (*Framework) ExecShellInContainer

func (f *Framework) ExecShellInContainer(podName, containerName string, cmd string) (string, error)

ExecShellInContainer provides a function to execute a shell cmd for the specified running container in a pod

func (*Framework) ExecShellInPod

func (f *Framework) ExecShellInPod(podName, namespace string, cmd string) (string, error)

ExecShellInPod provides a function to execute a shell cmd in the specified pod

func (*Framework) ExecShellInPodWithFullOutput

func (f *Framework) ExecShellInPodWithFullOutput(podName string, cmd string) (string, string, error)

ExecShellInPodWithFullOutput provides a function to execute a shell cmd in a running pod and to capture its output

func (*Framework) ExecWithOptions

func (f *Framework) ExecWithOptions(options ExecOptions) (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) FindPVC

func (f *Framework) FindPVC(pvcName string) (*k8sv1.PersistentVolumeClaim, error)

FindPVC is a wrapper around utils.FindPVC

func (*Framework) FindPodByPrefix

func (f *Framework) FindPodByPrefix(prefix string) (*k8sv1.Pod, error)

FindPodByPrefix is a wrapper around utils.FindPodByPrefix

func (*Framework) GetCdiClient

func (f *Framework) GetCdiClient() (*cdiClientset.Clientset, error)

GetCdiClient gets an instance of a kubernetes client that includes all the CDI extensions.

func (*Framework) GetCdiClientForServiceAccount added in v1.9.4

func (f *Framework) GetCdiClientForServiceAccount(namespace, name string) (*cdiClientset.Clientset, error)

GetCdiClientForServiceAccount returns a cdi client for a service account

func (*Framework) GetCsiClient added in v1.12.0

func (f *Framework) GetCsiClient() (*csiClientset.Clientset, error)

GetCsiClient gets an instance of a kubernetes client that includes all the CSI extensions.

func (*Framework) GetKubeClient

func (f *Framework) GetKubeClient() (*kubernetes.Clientset, error)

GetKubeClient returns a Kubernetes rest client

func (*Framework) GetMD5 added in v1.9.4

func (f *Framework) GetMD5(namespace *k8sv1.Namespace, pvc *k8sv1.PersistentVolumeClaim, fileName string, numBytes int64) (string, error)

GetMD5 returns the MD5 of a file on a PVC

func (*Framework) IsBlockVolumeStorageClassAvailable added in v1.10.0

func (f *Framework) IsBlockVolumeStorageClassAvailable() bool

IsBlockVolumeStorageClassAvailable checks if the block volume storage class exists.

func (*Framework) IsSnapshotStorageClassAvailable added in v1.10.0

func (f *Framework) IsSnapshotStorageClassAvailable() bool

IsSnapshotStorageClassAvailable checks if the snapshot storage class exists.

func (*Framework) LoadConfig

func (f *Framework) LoadConfig() (*rest.Config, error)

LoadConfig loads our specified kubeconfig

func (*Framework) RunCommandAndCaptureOutput added in v1.7.0

func (f *Framework) RunCommandAndCaptureOutput(pvc *k8sv1.PersistentVolumeClaim, cmd string) (string, error)

RunCommandAndCaptureOutput runs a command on a pod that has the passed in PVC mounted and captures the output.

func (*Framework) VerifyBlankDisk added in v1.10.5

func (f *Framework) VerifyBlankDisk(namespace *k8sv1.Namespace, pvc *k8sv1.PersistentVolumeClaim) (bool, error)

VerifyBlankDisk checks a blank disk on a file mode PVC by validating that the disk.img file is sparse.

func (*Framework) VerifySparse added in v1.13.2

func (f *Framework) VerifySparse(namespace *k8sv1.Namespace, pvc *k8sv1.PersistentVolumeClaim) (bool, error)

VerifySparse checks a disk image being sparse after creation/resize.

func (*Framework) VerifyTargetPVCArchiveContent added in v1.10.0

func (f *Framework) VerifyTargetPVCArchiveContent(namespace *k8sv1.Namespace, pvc *k8sv1.PersistentVolumeClaim, count string) (bool, error)

VerifyTargetPVCArchiveContent provides a function to check if the number of files extracted from an archive matches the passed in value

func (*Framework) VerifyTargetPVCContentMD5

func (f *Framework) VerifyTargetPVCContentMD5(namespace *k8sv1.Namespace, pvc *k8sv1.PersistentVolumeClaim, fileName string, expectedHash string, numBytes ...int64) (bool, error)

VerifyTargetPVCContentMD5 provides a function to check the md5 of data on a PVC and ensure it matches that which is provided

func (*Framework) WaitForPersistentVolumeClaimPhase

func (f *Framework) WaitForPersistentVolumeClaimPhase(phase k8sv1.PersistentVolumeClaimPhase, pvcName string) error

WaitForPersistentVolumeClaimPhase is a wrapper around utils.WaitForPersistentVolumeClaimPhase

func (*Framework) WaitTimeoutForPVReady added in v1.5.0

func (f *Framework) WaitTimeoutForPVReady(pvName string, timeout time.Duration) error

WaitTimeoutForPVReady is a wrapper around utils.WaitTimeouotForPVReady

func (*Framework) WaitTimeoutForPodReady

func (f *Framework) WaitTimeoutForPodReady(podName string, timeout time.Duration) error

WaitTimeoutForPodReady is a wrapper around utils.WaitTimeouotForPodReady

func (*Framework) WaitTimeoutForPodStatus

func (f *Framework) WaitTimeoutForPodStatus(podName string, status k8sv1.PodPhase, timeout time.Duration) error

WaitTimeoutForPodStatus is a wrapper around utils.WaitTimeouotForPodStatus

type KubernetesReporter added in v1.12.0

type KubernetesReporter struct {
	FailureCount int
	// contains filtered or unexported fields
}

KubernetesReporter is the struct that holds the report info.

func NewKubernetesReporter added in v1.12.0

func NewKubernetesReporter() *KubernetesReporter

NewKubernetesReporter creates a new instance of the reporter.

func (*KubernetesReporter) Cleanup added in v1.12.0

func (r *KubernetesReporter) Cleanup()

Cleanup cleans up the current content of the artifactsDir

func (*KubernetesReporter) Dump added in v1.12.0

func (r *KubernetesReporter) Dump(kubeCli *kubernetes.Clientset, cdiClient *cdiClientset.Clientset, since time.Duration)

Dump dumps the current state of the cluster. The relevant logs are collected starting from the since parameter.

Jump to

Keyboard shortcuts

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