tests

package
v0.9.3 Latest Latest
Warning

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

Go to latest
Published: Oct 22, 2018 License: Apache-2.0 Imports: 43 Imported by: 0

README

Integration tests

Integration tests require a running Kubevirt cluster. Once you have a running Kubevirt cluster, you can use the -master and the -kubeconfig flags to point the tests to the cluster.

Run them on an arbitrary KubeVirt installation

cd tests # from the git repo root folder
go test -kubeconfig=path/to/my/config

Run them on one of the core KubeVirt providers

There is a make target to run this with the config taken from hack/config.sh:

# from the git repo root folder
make functest

Documentation

Index

Constants

View Source
const (
	SubresourceServiceAccountName = "kubevirt-subresource-test-sa"
	AdminServiceAccountName       = "kubevirt-admin-test-sa"
	EditServiceAccountName        = "kubevirt-edit-test-sa"
	ViewServiceAccountName        = "kubevirt-view-test-sa"
)
View Source
const (
	// tests.NamespaceTestDefault is the default namespace, to test non-infrastructure related KubeVirt objects.
	NamespaceTestDefault = "kubevirt-test-default"
	// NamespaceTestAlternative is used to test controller-namespace independency.
	NamespaceTestAlternative = "kubevirt-test-alternative"
)
View Source
const (
	HostPathBase   = "/tmp/hostImages/"
	HostPathAlpine = HostPathBase + "alpine"
	HostPathCustom = HostPathBase + "custom"
)
View Source
const (
	DiskAlpineHostPath = "disk-alpine-host-path"
	DiskWindows        = "disk-windows"
	DiskRhel           = "disk-rhel"
	DiskCustomHostPath = "disk-custom-host-path"
)
View Source
const (
	AlpineHttpUrl = "http://cdi-http-import-server.kube-system/images/alpine.iso"
)
View Source
const (
	CustomHostPath = "custom-host-path"
)
View Source
const LocalStorageClass = "local"
View Source
const (
	SecretLabel = "kubevirt.io/secret"
)
View Source
const SubresourceTestLabel = "subresource-access-test-pod"
View Source
const TempDirPrefix = "kubevirt-test"
View Source
const VMIResource = "virtualmachineinstances"

Variables

View Source
var KubeVirtInstallNamespace string
View Source
var KubeVirtKubectlPath = ""
View Source
var KubeVirtOcPath = ""
View Source
var KubeVirtRepoPrefix = "kubevirt"
View Source
var KubeVirtVersionTag = "latest"
View Source
var KubeVirtVirtctlPath = ""

Functions

func AddBootOrderToDisk added in v0.6.0

func AddBootOrderToDisk(vmi *v1.VirtualMachineInstance, diskName string, bootorder *uint) *v1.VirtualMachineInstance

func AddConfigMapDisk added in v0.9.0

func AddConfigMapDisk(vmi *v1.VirtualMachineInstance, configMapName string)

func AddEphemeralDisk added in v0.3.0

func AddEphemeralDisk(vmi *v1.VirtualMachineInstance, name string, bus string, image string) *v1.VirtualMachineInstance

func AddEphemeralFloppy added in v0.3.0

func AddEphemeralFloppy(vmi *v1.VirtualMachineInstance, name string, image string) *v1.VirtualMachineInstance

func AddExplicitPodNetworkInterface added in v0.7.0

func AddExplicitPodNetworkInterface(vmi *v1.VirtualMachineInstance)

func AddPVCDisk added in v0.5.0

func AddPVCDisk(vmi *v1.VirtualMachineInstance, name string, bus string, claimName string) *v1.VirtualMachineInstance

func AddSecretDisk added in v0.9.0

func AddSecretDisk(vmi *v1.VirtualMachineInstance, secretName string)

func AddServiceAccountDisk added in v0.9.2

func AddServiceAccountDisk(vmi *v1.VirtualMachineInstance, serviceAccountName string)

func AddUserData added in v0.9.0

func AddUserData(vmi *v1.VirtualMachineInstance, userData string)

func AfterTestSuitCleanup

func AfterTestSuitCleanup()

func BeforeAll added in v0.4.1

func BeforeAll(fn func())

func BeforeTestCleanup

func BeforeTestCleanup()

func BeforeTestSuitSetup

func BeforeTestSuitSetup()

func CheckForTextExpecter added in v0.6.0

func CheckForTextExpecter(vmi *v1.VirtualMachineInstance, expected []expect.Batcher, wait int) error

func CreateBlockVolumePvAndPvc added in v0.9.2

func CreateBlockVolumePvAndPvc(name string, size string)

func CreateConfigMap added in v0.9.0

func CreateConfigMap(name string, data map[string]string)

func CreateHostDiskImage added in v0.9.0

func CreateHostDiskImage(diskPath string) *k8sv1.Pod

func CreateHostPathPv added in v0.6.1

func CreateHostPathPv(osName string, hostPath string)

func CreatePVC added in v0.5.0

func CreatePVC(os string, size string)

func CreateSecret added in v0.9.0

func CreateSecret(name string, data map[string]string)

func DeleteConfigMap added in v0.9.0

func DeleteConfigMap(name string)

func DeletePV added in v0.5.0

func DeletePV(os string)

func DeletePVC added in v0.5.0

func DeletePVC(os string)

func DeletePvAndPvc added in v0.9.2

func DeletePvAndPvc(name string)

func DeleteSecret added in v0.9.0

func DeleteSecret(name string)

func EnsureKVMPresent added in v0.7.0

func EnsureKVMPresent()

func ExecuteCommandOnPod added in v0.4.1

func ExecuteCommandOnPod(virtCli kubecli.KubevirtClient, pod *k8sv1.Pod, containerName string, command []string) (string, error)

func ExecuteCommandOnPodV2 added in v0.9.0

func ExecuteCommandOnPodV2(virtCli kubecli.KubevirtClient, pod *k8sv1.Pod, containerName string, command []string) (stdout, stderr string, err error)

func GenerateTemplateJson added in v0.7.0

func GenerateTemplateJson(template *vmsgen.Template) (string, error)

func GenerateVMIJson added in v0.6.1

func GenerateVMIJson(vmi *v1.VirtualMachineInstance) (string, error)

func GetAllSchedulableNodes added in v0.9.0

func GetAllSchedulableNodes(virtClient kubecli.KubevirtClient) *k8sv1.NodeList

func GetNodeCPUInfo added in v0.6.3

func GetNodeCPUInfo(nodeName string) string

GetNodeCPUInfo returns output of lscpu on the pod that runs on the specified node

func GetNodeLibvirtCapabilities added in v0.6.2

func GetNodeLibvirtCapabilities(nodeName string) string

GetNodeLibvirtCapabilities returns node libvirt capabilities

func GetNodeWithHugepages added in v0.6.1

func GetNodeWithHugepages(virtClient kubecli.KubevirtClient, hugepages k8sv1.ResourceName) *k8sv1.Node

func GetRunningPodByLabel added in v0.3.0

func GetRunningPodByLabel(label string, labelType string, namespace string) *k8sv1.Pod

func GetRunningPodByVirtualMachineInstance added in v0.8.0

func GetRunningPodByVirtualMachineInstance(vmi *v1.VirtualMachineInstance, namespace string) *k8sv1.Pod

func GetRunningVirtualMachineInstanceDomainXML added in v0.9.2

func GetRunningVirtualMachineInstanceDomainXML(virtClient kubecli.KubevirtClient, vmi *v1.VirtualMachineInstance) (string, error)

func HasCDI added in v0.8.0

func HasCDI() bool

func KubevirtFailHandler added in v0.8.0

func KubevirtFailHandler(message string, callerSkip ...int)

KubevirtFailHandler call ginkgo.Fail with printing the additional information

func LoggedInAlpineExpecter added in v0.6.0

func LoggedInAlpineExpecter(vmi *v1.VirtualMachineInstance) (expect.Expecter, error)

func LoggedInCirrosExpecter added in v0.3.0

func LoggedInCirrosExpecter(vmi *v1.VirtualMachineInstance) (expect.Expecter, error)

func NewBool added in v0.3.0

func NewBool(x bool) *bool

func NewConsoleExpecter added in v0.0.4

func NewConsoleExpecter(virtCli kubecli.KubevirtClient, vmi *v1.VirtualMachineInstance, timeout time.Duration, opts ...expect.Option) (expect.Expecter, <-chan error, error)

func NewHelloWorldJob added in v0.6.0

func NewHelloWorldJob(host string, port string) *k8sv1.Pod

NewHelloWorldJob takes a DNS entry or an IP and a port which it will use create a pod which tries to contact the host on the provided port. It expects to receive "Hello World!" to succeed.

func NewHelloWorldJobUDP added in v0.6.0

func NewHelloWorldJobUDP(host string, port string) *k8sv1.Pod

NewHelloWorldJobUDP takes a DNS entry or an IP and a port which it will use create a pod which tries to contact the host on the provided port. It expects to receive "Hello World!" to succeed. Note that in case of UDP, the server will not see the connection unless something is sent over it However, netcat does not work well with UDP and closes before the answer arrives, for that another netcat call is needed, this time as a UDP listener

func NewInt32 added in v0.0.3

func NewInt32(x int32) *int32

func NewRandomDataVolumeWithHttpImport added in v0.8.0

func NewRandomDataVolumeWithHttpImport(imageUrl string, namespace string) *cdiv1.DataVolume

func NewRandomMigration added in v0.9.2

func NewRandomMigration(vmiName string, namespace string) *v1.VirtualMachineInstanceMigration

func NewRandomReplicaSetFromVMI added in v0.6.1

func NewRandomReplicaSetFromVMI(vmi *v1.VirtualMachineInstance, replicas int32) *v1.VirtualMachineInstanceReplicaSet

func NewRandomVMI added in v0.6.1

func NewRandomVMI() *v1.VirtualMachineInstance

func NewRandomVMIWithBridgeInterfaceEphemeralDiskAndUserdata added in v0.8.0

func NewRandomVMIWithBridgeInterfaceEphemeralDiskAndUserdata(containerImage string, userData string, Ports []v1.Port) *v1.VirtualMachineInstance

func NewRandomVMIWithCDRom added in v0.6.1

func NewRandomVMIWithCDRom(claimName string) *v1.VirtualMachineInstance

func NewRandomVMIWithConfigMap added in v0.9.0

func NewRandomVMIWithConfigMap(configMapName string) *v1.VirtualMachineInstance

func NewRandomVMIWithCustomMacAddress added in v0.6.4

func NewRandomVMIWithCustomMacAddress() *v1.VirtualMachineInstance

func NewRandomVMIWithDataVolume added in v0.8.0

func NewRandomVMIWithDataVolume(dataVolumeName string) *v1.VirtualMachineInstance

func NewRandomVMIWithEphemeralDisk added in v0.6.1

func NewRandomVMIWithEphemeralDisk(containerImage string) *v1.VirtualMachineInstance

func NewRandomVMIWithEphemeralDiskAndUserdata added in v0.6.1

func NewRandomVMIWithEphemeralDiskAndUserdata(containerImage string, userData string) *v1.VirtualMachineInstance

func NewRandomVMIWithEphemeralDiskAndUserdataHighMemory added in v0.6.1

func NewRandomVMIWithEphemeralDiskAndUserdataHighMemory(containerImage string, userData string) *v1.VirtualMachineInstance

func NewRandomVMIWithEphemeralDiskHighMemory added in v0.6.1

func NewRandomVMIWithEphemeralDiskHighMemory(containerImage string) *v1.VirtualMachineInstance

func NewRandomVMIWithEphemeralPVC added in v0.6.1

func NewRandomVMIWithEphemeralPVC(claimName string) *v1.VirtualMachineInstance

func NewRandomVMIWithHostDisk added in v0.9.0

func NewRandomVMIWithHostDisk(diskPath string, diskType v1.HostDiskType, nodeName string) *v1.VirtualMachineInstance

func NewRandomVMIWithNS added in v0.6.1

func NewRandomVMIWithNS(namespace string) *v1.VirtualMachineInstance

func NewRandomVMIWithPVC added in v0.6.1

func NewRandomVMIWithPVC(claimName string) *v1.VirtualMachineInstance

func NewRandomVMIWithSecret added in v0.9.0

func NewRandomVMIWithSecret(secretName string) *v1.VirtualMachineInstance

func NewRandomVMIWithServiceAccount added in v0.9.2

func NewRandomVMIWithServiceAccount(serviceAccountName string) *v1.VirtualMachineInstance

func NewRandomVMIWithSlirpInterfaceEphemeralDiskAndUserdata added in v0.7.0

func NewRandomVMIWithSlirpInterfaceEphemeralDiskAndUserdata(containerImage string, userData string, Ports []v1.Port) *v1.VirtualMachineInstance

func NewRandomVMIWithWatchdog added in v0.6.1

func NewRandomVMIWithWatchdog() *v1.VirtualMachineInstance

func NewRandomVMIWithe1000NetworkInterface added in v0.6.1

func NewRandomVMIWithe1000NetworkInterface() *v1.VirtualMachineInstance

func NewRandomVMWithDataVolume added in v0.8.0

func NewRandomVMWithDataVolume(imageUrl string, namespace string) *v1.VirtualMachine

func NewRandomVirtualMachine added in v0.8.0

func NewRandomVirtualMachine(vmi *v1.VirtualMachineInstance, running bool) *v1.VirtualMachine

func NewRepeatableVirtctlCommand added in v0.4.0

func NewRepeatableVirtctlCommand(args ...string) func() error

func NewVirtctlCommand added in v0.4.0

func NewVirtctlCommand(args ...string) *cobra.Command

func NotDeleted added in v0.5.0

func NotDeleted(vmis *v1.VirtualMachineInstanceList) (notDeleted []v1.VirtualMachineInstance)

func PanicOnError

func PanicOnError(err error)

func RegistryDiskFor added in v0.3.0

func RegistryDiskFor(name RegistryDisk) string

RegistryDiskFor takes the name of an image and returns the full registry diks image path. Supported values are: cirros, fedora, alpine

func RemoveHostDiskImage added in v0.9.0

func RemoveHostDiskImage(diskPath string, nodeName string)

func RenderJob added in v0.3.0

func RenderJob(name string, cmd []string, args []string) *k8sv1.Pod

func RunCommand added in v0.8.0

func RunCommand(cmdName string, args ...string) (string, string, error)

func RunCommandOnVmiPod added in v0.6.3

func RunCommandOnVmiPod(vmi *v1.VirtualMachineInstance, command []string) string

RunCommandOnVmiPod runs specified command on the virt-launcher pod

func RunCommandPipe added in v0.9.2

func RunCommandPipe(commands ...[]string) (string, string, error)

func RunCommandPipeWithNS added in v0.9.2

func RunCommandPipeWithNS(namespace string, commands ...[]string) (string, string, error)

func RunCommandWithNS added in v0.9.2

func RunCommandWithNS(namespace string, cmdName string, args ...string) (string, string, error)

func RunVMI added in v0.9.0

func RunVMI(vmi *v1.VirtualMachineInstance, timeout int) *v1.VirtualMachineInstance

func RunVMIAndExpectLaunch added in v0.9.0

func RunVMIAndExpectLaunch(vmi *v1.VirtualMachineInstance, withAuth bool, timeout int) *v1.VirtualMachineInstance

func SkipIfNoCmd added in v0.8.0

func SkipIfNoCmd(cmdName string)

func SkipIfNoGenieProvider added in v0.9.2

func SkipIfNoGenieProvider(virtClient kubecli.KubevirtClient)

func SkipIfNoMultusProvider added in v0.8.0

func SkipIfNoMultusProvider(virtClient kubecli.KubevirtClient)

func SkipIfNoRhelImage added in v0.9.0

func SkipIfNoRhelImage(virtClient kubecli.KubevirtClient)

func SkipIfNoWindowsImage added in v0.4.1

func SkipIfNoWindowsImage(virtClient kubecli.KubevirtClient)

func SkipIfNotUseNetworkPolicy added in v0.9.0

func SkipIfNotUseNetworkPolicy(virtClient kubecli.KubevirtClient)

func SkipIfOpenShift added in v0.8.0

func SkipIfOpenShift(message string)

func SkipIfUseFlannel added in v0.9.0

func SkipIfUseFlannel(virtClient kubecli.KubevirtClient)

func SkipIfVersionBelow added in v0.7.0

func SkipIfVersionBelow(message string, expectedVersion string)

SkipIfVersionBelow will skip tests if it runs on an environment with k8s version below specified

func StartVirtualMachine added in v0.8.0

func StartVirtualMachine(vm *v1.VirtualMachine) *v1.VirtualMachine

func StartVmOnNode added in v0.6.3

func StartVmOnNode(vmi *v1.VirtualMachineInstance, nodeName string)

StartVmOnNode starts a VMI on the specified node

func StopVirtualMachine added in v0.8.0

func StopVirtualMachine(vm *v1.VirtualMachine) *v1.VirtualMachine

func UnfinishedVMIPodSelector added in v0.6.1

func UnfinishedVMIPodSelector(vmi *v1.VirtualMachineInstance) metav1.ListOptions

func WaitForSuccessfulVMIStart added in v0.6.1

func WaitForSuccessfulVMIStart(vmi runtime.Object) string

func WaitForSuccessfulVMIStartIgnoreWarnings added in v0.6.1

func WaitForSuccessfulVMIStartIgnoreWarnings(vmi runtime.Object) string

func WaitForSuccessfulVMIStartWithTimeout added in v0.6.1

func WaitForSuccessfulVMIStartWithTimeout(vmi runtime.Object, seconds int) (nodeName string)

func WaitForVirtualMachineToDisappearWithTimeout added in v0.5.0

func WaitForVirtualMachineToDisappearWithTimeout(vmi *v1.VirtualMachineInstance, seconds int)

func WaitUntilVMIReady added in v0.8.0

func WaitUntilVMIReady(vmi *v1.VirtualMachineInstance, expecterFactory VMIExpecterFactory) *v1.VirtualMachineInstance

func WaitUntilVMIReadyWithNamespace added in v0.8.0

func WaitUntilVMIReadyWithNamespace(namespace string, vmi *v1.VirtualMachineInstance, expecterFactory VMIExpecterFactory) *v1.VirtualMachineInstance

Types

type EventType

type EventType string
const (
	NormalEvent  EventType = "Normal"
	WarningEvent EventType = "Warning"
)

type ObjectEventWatcher

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

func NewObjectEventWatcher

func NewObjectEventWatcher(object runtime.Object) *ObjectEventWatcher

func (*ObjectEventWatcher) FailOnWarnings

func (w *ObjectEventWatcher) FailOnWarnings() *ObjectEventWatcher

func (*ObjectEventWatcher) SinceNow

func (w *ObjectEventWatcher) SinceNow() *ObjectEventWatcher

SinceNow sets a watch starting point for events, from the moment on the connection to the apiserver was established.

func (*ObjectEventWatcher) SinceObjectResourceVersion

func (w *ObjectEventWatcher) SinceObjectResourceVersion(object runtime.Object) *ObjectEventWatcher

SinceObjectResourceVersion takes the resource version of the passed in runtime object and takes it as the starting point for all events to watch for.

func (*ObjectEventWatcher) SinceResourceVersion

func (w *ObjectEventWatcher) SinceResourceVersion(rv string) *ObjectEventWatcher

SinceResourceVersion sets the passed in resourceVersion as the starting point for all events to watch for.

func (*ObjectEventWatcher) SinceWatchedObjectResourceVersion

func (w *ObjectEventWatcher) SinceWatchedObjectResourceVersion() *ObjectEventWatcher

SinceWatchedObjectResourceVersion takes the resource version of the runtime object which is watched, and takes it as the starting point for all events to watch for.

func (*ObjectEventWatcher) Timeout

func (w *ObjectEventWatcher) Timeout(duration time.Duration) *ObjectEventWatcher

func (*ObjectEventWatcher) WaitFor

func (w *ObjectEventWatcher) WaitFor(eventType EventType, reason interface{}) (e *k8sv1.Event)

func (*ObjectEventWatcher) Watch

func (w *ObjectEventWatcher) Watch(processFunc ProcessFunc)

type ProcessFunc

type ProcessFunc func(event *k8sv1.Event) (done bool)

type RegistryDisk added in v0.3.0

type RegistryDisk string
const (
	RegistryDiskCirros RegistryDisk = "cirros"
	RegistryDiskAlpine RegistryDisk = "alpine"
	RegistryDiskFedora RegistryDisk = "fedora-cloud"
)

type VMIExpecterFactory added in v0.6.1

type VMIExpecterFactory func(*v1.VirtualMachineInstance) (expect.Expecter, error)

Jump to

Keyboard shortcuts

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