Skip to content

Commit

Permalink
Merge pull request #11516 from EdDev/libvmi-promotion-to-pkg
Browse files Browse the repository at this point in the history
libvmi: Promote libvmi from e2e usages to the root `pkg/`
  • Loading branch information
kubevirt-bot committed Mar 18, 2024
2 parents ec1b3c0 + 9ef681e commit 9c3a52d
Show file tree
Hide file tree
Showing 152 changed files with 886 additions and 678 deletions.
3 changes: 2 additions & 1 deletion Makefile
Expand Up @@ -209,14 +209,15 @@ lint:
if [ $$(wc -l < tests/utils.go) -gt 1401 ]; then echo >&2 "do not make tests/utils longer"; exit 1; fi
hack/dockerized "golangci-lint run --timeout 20m --verbose \
pkg/instancetype/... \
pkg/libvmi/... \
pkg/network/namescheme/... \
pkg/network/domainspec/... \
pkg/network/sriov/... \
tests/console/... \
tests/libnet/... \
tests/libnode/... \
tests/libpod/... \
tests/libvmi/... \
tests/libvmifact/... \
&& \
golangci-lint run --disable-all -E ginkgolinter --timeout 10m --verbose --no-config \
./pkg/... \
Expand Down
5 changes: 1 addition & 4 deletions tests/libvmi/BUILD.bazel → pkg/libvmi/BUILD.bazel
Expand Up @@ -3,24 +3,21 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
go_library(
name = "go_default_library",
srcs = [
"architecture.go",
"cloudinit.go",
"config.go",
"cpu.go",
"factory.go",
"memory.go",
"network.go",
"selector.go",
"storage.go",
"vm.go",
"vmi.go",
],
importpath = "kubevirt.io/kubevirt/tests/libvmi",
importpath = "kubevirt.io/kubevirt/pkg/libvmi",
visibility = ["//visibility:public"],
deps = [
"//pkg/pointer:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//tests/containerdisk:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
Expand Down
File renamed without changes.
5 changes: 1 addition & 4 deletions tests/libvmi/README.md → pkg/libvmi/README.md
Expand Up @@ -6,7 +6,7 @@ libvmi is a VMI manifest composer.

### Motivation

While reading code, especially e2e test code, a difficulty has been
While reading code, especially test code, a difficulty has been
observed to understand in an easy and clear manner, what is the content
of a VMI object. In a long chain of function call stack, different portions
of the VMI got updated, sometime overriding previously set fields.
Expand Down Expand Up @@ -60,9 +60,6 @@ and should not be overused. It would be better to just ask to change the rules.
- VMI: `vmi.go` contains the most basic tooling to start building VMI manifests.
It contains the most basic factory (`New`), the definition of how the builders
look like and any other helper that serves the whole libvmi package.
- Factory: `factory.go` file contains commonly used base VMI specs.
Users will usually pick one factory to use and then add different
builders to continue building the spec.
- Subject builders: Various files in which builders and defined.
These files should group builders with some commonality, such that they
can be easily found. With time, the grouping and naming may change
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion pkg/network/netbinding/BUILD.bazel
Expand Up @@ -23,9 +23,9 @@ go_test(
deps = [
":go_default_library",
"//pkg/hooks:go_default_library",
"//pkg/libvmi:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/client-go/testutils:go_default_library",
"//tests/libvmi:go_default_library",
"//vendor/github.com/onsi/ginkgo/v2:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
Expand Down
3 changes: 1 addition & 2 deletions pkg/network/netbinding/netbinding_test.go
Expand Up @@ -31,9 +31,8 @@ import (
v1 "kubevirt.io/api/core/v1"

"kubevirt.io/kubevirt/pkg/hooks"
"kubevirt.io/kubevirt/pkg/libvmi"
"kubevirt.io/kubevirt/pkg/network/netbinding"

"kubevirt.io/kubevirt/tests/libvmi"
)

var _ = Describe("Network Binding", func() {
Expand Down
2 changes: 1 addition & 1 deletion pkg/network/vmispec/BUILD.bazel
Expand Up @@ -24,9 +24,9 @@ go_test(
],
deps = [
":go_default_library",
"//pkg/libvmi:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/client-go/testutils:go_default_library",
"//tests/libvmi:go_default_library",
"//vendor/github.com/onsi/ginkgo/v2:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
],
Expand Down
2 changes: 1 addition & 1 deletion pkg/network/vmispec/interface_test.go
Expand Up @@ -24,8 +24,8 @@ import (
. "github.com/onsi/gomega"
v1 "kubevirt.io/api/core/v1"

"kubevirt.io/kubevirt/pkg/libvmi"
netvmispec "kubevirt.io/kubevirt/pkg/network/vmispec"
"kubevirt.io/kubevirt/tests/libvmi"
)

var _ = Describe("VMI network spec", func() {
Expand Down
2 changes: 1 addition & 1 deletion pkg/virt-controller/network/BUILD.bazel
Expand Up @@ -34,12 +34,12 @@ go_test(
],
embed = [":go_default_library"],
deps = [
"//pkg/libvmi:go_default_library",
"//pkg/network/vmispec:go_default_library",
"//pkg/testutils:go_default_library",
"//pkg/virt-config:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/client-go/testutils:go_default_library",
"//tests/libvmi:go_default_library",
"//vendor/github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1:go_default_library",
"//vendor/github.com/onsi/ginkgo/v2:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
Expand Down
2 changes: 1 addition & 1 deletion pkg/virt-controller/network/hotplug_test.go
Expand Up @@ -29,9 +29,9 @@ import (

v1 "kubevirt.io/api/core/v1"

"kubevirt.io/kubevirt/pkg/libvmi"
"kubevirt.io/kubevirt/pkg/network/vmispec"
"kubevirt.io/kubevirt/pkg/virt-controller/network"
"kubevirt.io/kubevirt/tests/libvmi"
)

var _ = Describe("Network interface hot{un}plug", func() {
Expand Down
2 changes: 1 addition & 1 deletion pkg/virt-controller/watch/BUILD.bazel
Expand Up @@ -156,7 +156,7 @@ go_test(
"//staging/src/kubevirt.io/client-go/kubecli:go_default_library",
"//staging/src/kubevirt.io/client-go/log:go_default_library",
"//staging/src/kubevirt.io/client-go/testutils:go_default_library",
"//tests/libvmi:go_default_library",
"//tests/libvmifact:go_default_library",
"//vendor/github.com/emicklei/go-restful/v3:go_default_library",
"//vendor/github.com/evanphx/json-patch:go_default_library",
"//vendor/github.com/golang/mock/gomock:go_default_library",
Expand Down
2 changes: 1 addition & 1 deletion pkg/virt-controller/watch/clone/BUILD.bazel
Expand Up @@ -42,6 +42,7 @@ go_test(
],
embed = [":go_default_library"],
deps = [
"//pkg/libvmi:go_default_library",
"//pkg/pointer:go_default_library",
"//pkg/testutils:go_default_library",
"//staging/src/kubevirt.io/api/clone/v1alpha1:go_default_library",
Expand All @@ -50,7 +51,6 @@ go_test(
"//staging/src/kubevirt.io/client-go/generated/kubevirt/clientset/versioned/fake:go_default_library",
"//staging/src/kubevirt.io/client-go/kubecli:go_default_library",
"//staging/src/kubevirt.io/client-go/testutils:go_default_library",
"//tests/libvmi:go_default_library",
"//tests/util:go_default_library",
"//vendor/github.com/evanphx/json-patch:go_default_library",
"//vendor/github.com/golang/mock/gomock:go_default_library",
Expand Down
2 changes: 1 addition & 1 deletion pkg/virt-controller/watch/clone/clone_test.go
Expand Up @@ -44,9 +44,9 @@ import (
kubevirtfake "kubevirt.io/client-go/generated/kubevirt/clientset/versioned/fake"
"kubevirt.io/client-go/kubecli"

"kubevirt.io/kubevirt/pkg/libvmi"
"kubevirt.io/kubevirt/pkg/pointer"
"kubevirt.io/kubevirt/pkg/testutils"
"kubevirt.io/kubevirt/tests/libvmi"
"kubevirt.io/kubevirt/tests/util"
)

Expand Down
2 changes: 1 addition & 1 deletion pkg/virt-controller/watch/topology/BUILD.bazel
Expand Up @@ -39,12 +39,12 @@ go_test(
],
embed = [":go_default_library"],
deps = [
"//pkg/libvmi:go_default_library",
"//pkg/testutils:go_default_library",
"//pkg/virt-config:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/client-go/kubecli:go_default_library",
"//staging/src/kubevirt.io/client-go/testutils:go_default_library",
"//tests/libvmi:go_default_library",
"//vendor/github.com/golang/mock/gomock:go_default_library",
"//vendor/github.com/onsi/ginkgo/v2:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
Expand Down
3 changes: 1 addition & 2 deletions pkg/virt-controller/watch/topology/tsc_test.go
Expand Up @@ -7,11 +7,10 @@ import (

v1 "kubevirt.io/api/core/v1"

"kubevirt.io/kubevirt/tests/libvmi"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"

"kubevirt.io/kubevirt/pkg/libvmi"
"kubevirt.io/kubevirt/pkg/virt-controller/watch/topology"
)

Expand Down
10 changes: 5 additions & 5 deletions pkg/virt-controller/watch/vsock_test.go
Expand Up @@ -9,7 +9,7 @@ import (
virtv1 "kubevirt.io/api/core/v1"

"kubevirt.io/kubevirt/pkg/controller"
"kubevirt.io/kubevirt/tests/libvmi"
"kubevirt.io/kubevirt/tests/libvmifact"
)

var _ = Describe("VSOCK", func() {
Expand All @@ -18,7 +18,7 @@ var _ = Describe("VSOCK", func() {
newRandomVMIsWithORWithoutVSOCK := func(totalVMINum, vsockVMINum int) []*virtv1.VirtualMachineInstance {
var vmis []*virtv1.VirtualMachineInstance
for i := 0; i < totalVMINum; i++ {
vmi := libvmi.NewCirros()
vmi := libvmifact.NewCirros()
// NewCirros isn't guaranteed to have a unique name.
vmi.Name = fmt.Sprintf("%s-%d", vmi.Name, i)
vmi.Namespace = "vsock"
Expand Down Expand Up @@ -91,12 +91,12 @@ var _ = Describe("VSOCK", func() {
Context("CIDs iteration", func() {
It("should wrap arround if reaches the maximum", func() {
m.randCID = func() uint32 { return math.MaxUint32 }
vmi := libvmi.NewCirros()
vmi := libvmifact.NewCirros()
Expect(m.Allocate(vmi)).To(Succeed())
Expect(vmi.Status.VSOCKCID).NotTo(BeNil())
Expect(*vmi.Status.VSOCKCID).To(BeNumerically("==", math.MaxUint32))

vmi2 := libvmi.NewCirros()
vmi2 := libvmifact.NewCirros()
Expect(m.Allocate(vmi2)).To(Succeed())
Expect(vmi2.Status.VSOCKCID).NotTo(BeNil())
Expect(*vmi2.Status.VSOCKCID).To(BeNumerically("==", 3))
Expand All @@ -118,7 +118,7 @@ var _ = Describe("VSOCK", func() {
Expect(m.reverse).To(HaveLen(len(vmis)))

// The next one will fail
vmi := libvmi.NewCirros()
vmi := libvmifact.NewCirros()
Expect(m.Allocate(vmi)).NotTo(Succeed())
})
})
Expand Down
5 changes: 3 additions & 2 deletions tests/BUILD.bazel
Expand Up @@ -11,6 +11,7 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//pkg/certificates/triple/cert:go_default_library",
"//pkg/libvmi:go_default_library",
"//pkg/pointer:go_default_library",
"//pkg/util:go_default_library",
"//pkg/virt-controller/services:go_default_library",
Expand All @@ -30,7 +31,6 @@ go_library(
"//tests/libnode:go_default_library",
"//tests/libpod:go_default_library",
"//tests/libstorage:go_default_library",
"//tests/libvmi:go_default_library",
"//tests/libwait:go_default_library",
"//tests/testsuite:go_default_library",
"//tests/util:go_default_library",
Expand Down Expand Up @@ -149,6 +149,7 @@ go_test(
"//pkg/hooks/v1alpha2:go_default_library",
"//pkg/hooks/v1alpha3:go_default_library",
"//pkg/instancetype:go_default_library",
"//pkg/libvmi:go_default_library",
"//pkg/network/dns:go_default_library",
"//pkg/pointer:go_default_library",
"//pkg/storage/backend-storage:go_default_library",
Expand Down Expand Up @@ -210,7 +211,7 @@ go_test(
"//tests/libreplicaset:go_default_library",
"//tests/libssh:go_default_library",
"//tests/libstorage:go_default_library",
"//tests/libvmi:go_default_library",
"//tests/libvmifact:go_default_library",
"//tests/libwait:go_default_library",
"//tests/migration:go_default_library",
"//tests/monitoring:go_default_library",
Expand Down
6 changes: 4 additions & 2 deletions tests/clone_test.go
Expand Up @@ -8,6 +8,8 @@ import (

"k8s.io/apimachinery/pkg/api/errors"

"kubevirt.io/kubevirt/pkg/libvmi"

"kubevirt.io/kubevirt/tests/decorators"
"kubevirt.io/kubevirt/tests/testsuite"

Expand Down Expand Up @@ -36,7 +38,7 @@ import (
. "kubevirt.io/kubevirt/tests/framework/matcher"
"kubevirt.io/kubevirt/tests/libinstancetype"
"kubevirt.io/kubevirt/tests/libstorage"
"kubevirt.io/kubevirt/tests/libvmi"
"kubevirt.io/kubevirt/tests/libvmifact"
)

const (
Expand All @@ -58,7 +60,7 @@ var _ = Describe("[Serial]VirtualMachineClone Tests", Serial, func() {
})

createVM := func(options ...libvmi.Option) (vm *virtv1.VirtualMachine) {
vmi := libvmi.NewCirros(options...)
vmi := libvmifact.NewCirros(options...)
vmi.Namespace = testsuite.GetTestNamespace(nil)
vm = libvmi.NewVirtualMachine(vmi)
vm.Annotations = vmi.Annotations
Expand Down
3 changes: 2 additions & 1 deletion tests/compute/BUILD.bazel
Expand Up @@ -11,6 +11,7 @@ go_library(
importpath = "kubevirt.io/kubevirt/tests/compute",
visibility = ["//visibility:public"],
deps = [
"//pkg/libvmi:go_default_library",
"//pkg/pointer:go_default_library",
"//pkg/virt-launcher/virtwrap/api:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
Expand All @@ -20,7 +21,7 @@ go_library(
"//tests/decorators:go_default_library",
"//tests/framework/kubevirt:go_default_library",
"//tests/framework/matcher:go_default_library",
"//tests/libvmi:go_default_library",
"//tests/libvmifact:go_default_library",
"//tests/libwait:go_default_library",
"//tests/testsuite:go_default_library",
"//tests/util:go_default_library",
Expand Down
16 changes: 9 additions & 7 deletions tests/compute/console.go
Expand Up @@ -32,10 +32,12 @@ import (
v1 "kubevirt.io/api/core/v1"
"kubevirt.io/client-go/kubecli"

"kubevirt.io/kubevirt/pkg/libvmi"

"kubevirt.io/kubevirt/tests"
"kubevirt.io/kubevirt/tests/console"
"kubevirt.io/kubevirt/tests/framework/kubevirt"
"kubevirt.io/kubevirt/tests/libvmi"
"kubevirt.io/kubevirt/tests/libvmifact"
"kubevirt.io/kubevirt/tests/testsuite"
)

Expand All @@ -60,15 +62,15 @@ var _ = SIGDescribe("[rfe_id:127][posneg:negative][crit:medium][vendor:cnv-qe@re
Describe("[rfe_id:127][posneg:negative][crit:medium][vendor:cnv-qe@redhat.com][level:component]A new VirtualMachineInstance", func() {
Context("with a serial console", func() {
It("[test_id:1588]should return OS login", func() {
vmi := libvmi.NewCirros()
vmi := libvmifact.NewCirros()
vmi = tests.RunVMIAndExpectLaunch(vmi, startupTimeout)
expectConsoleOutput(
vmi,
"login as 'cirros' user",
)
})
It("[test_id:1590]should be able to reconnect to console multiple times", func() {
vmi := libvmi.NewAlpine()
vmi := libvmifact.NewAlpine()
vmi = tests.RunVMIAndExpectLaunch(vmi, startupTimeout)

for i := 0; i < 5; i++ {
Expand All @@ -77,7 +79,7 @@ var _ = SIGDescribe("[rfe_id:127][posneg:negative][crit:medium][vendor:cnv-qe@re
})

It("[test_id:1591]should close console connection when new console connection is opened", func() {
vmi := tests.RunVMIAndExpectLaunch(libvmi.NewAlpine(), startupTimeout)
vmi := tests.RunVMIAndExpectLaunch(libvmifact.NewAlpine(), startupTimeout)

By("opening 1st console connection")
stream, err := virtClient.VirtualMachineInstance(vmi.Namespace).SerialConsole(vmi.Name, &kubecli.SerialConsoleOptions{})
Expand Down Expand Up @@ -105,7 +107,7 @@ var _ = SIGDescribe("[rfe_id:127][posneg:negative][crit:medium][vendor:cnv-qe@re
})

It("[test_id:1592]should wait until the virtual machine is in running state and return a stream interface", func() {
vmi := libvmi.NewAlpine()
vmi := libvmifact.NewAlpine()
By("Creating a new VirtualMachineInstance")
vmi, err := virtClient.VirtualMachineInstance(testsuite.GetTestNamespace(vmi)).Create(context.Background(), vmi, metav1.CreateOptions{})
Expect(err).ToNot(HaveOccurred())
Expand All @@ -116,7 +118,7 @@ var _ = SIGDescribe("[rfe_id:127][posneg:negative][crit:medium][vendor:cnv-qe@re
})

It("[test_id:1593]should not be connected if scheduled to non-existing host", func() {
vmi := libvmi.NewAlpine(
vmi := libvmifact.NewAlpine(
libvmi.WithNodeAffinityFor("nonexistent"),
)

Expand All @@ -131,7 +133,7 @@ var _ = SIGDescribe("[rfe_id:127][posneg:negative][crit:medium][vendor:cnv-qe@re

Context("without a serial console", func() {
It("[test_id:4118]should run but not be connectable via the serial console", func() {
vmi := libvmi.NewAlpine(libvmi.WithoutSerialConsole())
vmi := libvmifact.NewAlpine(libvmi.WithoutSerialConsole())
vmi = tests.RunVMIAndExpectLaunch(vmi, startupTimeout)

By("failing to connect to serial console")
Expand Down

0 comments on commit 9c3a52d

Please sign in to comment.