Update tests to use object builders in pkg/builder (#1707)

* add pkg/builder with BackupBuilder and ObjectMeta functional options

Signed-off-by: Steve Kriss <krisss@vmware.com>
This commit is contained in:
Steve Kriss
2019-07-31 08:46:48 -06:00
committed by KubeKween
parent 22eca22ac8
commit 4543258970
43 changed files with 2575 additions and 2330 deletions

View File

@@ -32,7 +32,7 @@ import (
core "k8s.io/client-go/testing"
velerov1api "github.com/heptio/velero/pkg/apis/velero/v1"
pkgbackup "github.com/heptio/velero/pkg/backup"
"github.com/heptio/velero/pkg/builder"
"github.com/heptio/velero/pkg/generated/clientset/versioned/fake"
informers "github.com/heptio/velero/pkg/generated/informers/externalversions"
"github.com/heptio/velero/pkg/label"
@@ -43,10 +43,6 @@ import (
velerotest "github.com/heptio/velero/pkg/util/test"
)
func defaultPodVolumeBackup() *pkgbackup.PodVolumeBackupBuilder {
return pkgbackup.NewNamedPodVolumeBackupBuilder(velerov1api.DefaultNamespace, "pvb-1")
}
func defaultLocationsList(namespace string) []*velerov1api.BackupStorageLocation {
return []*velerov1api.BackupStorageLocation{
{
@@ -138,15 +134,15 @@ func TestBackupSyncControllerRun(t *testing.T) {
cloudBuckets: map[string][]*cloudBackupData{
"bucket-1": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-1").Backup(),
backup: builder.ForBackup("ns-1", "backup-1").Result(),
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-2").Backup(),
backup: builder.ForBackup("ns-1", "backup-2").Result(),
},
},
"bucket-2": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-3").Backup(),
backup: builder.ForBackup("ns-1", "backup-3").Result(),
},
},
},
@@ -158,18 +154,18 @@ func TestBackupSyncControllerRun(t *testing.T) {
cloudBuckets: map[string][]*cloudBackupData{
"bucket-1": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-1").Backup(),
backup: builder.ForBackup("ns-1", "backup-1").Result(),
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-2").Backup(),
backup: builder.ForBackup("ns-1", "backup-2").Result(),
},
},
"bucket-2": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-2").Name("backup-3").Backup(),
backup: builder.ForBackup("ns-2", "backup-3").Result(),
},
&cloudBackupData{
backup: defaultBackup().Namespace("velero").Name("backup-4").Backup(),
backup: builder.ForBackup("velero", "backup-4").Result(),
},
},
},
@@ -181,26 +177,26 @@ func TestBackupSyncControllerRun(t *testing.T) {
cloudBuckets: map[string][]*cloudBackupData{
"bucket-1": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-1").Backup(),
backup: builder.ForBackup("ns-1", "backup-1").Result(),
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-2").Backup(),
backup: builder.ForBackup("ns-1", "backup-2").Result(),
},
},
"bucket-2": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-3").Backup(),
backup: builder.ForBackup("ns-1", "backup-3").Result(),
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-4").Backup(),
backup: builder.ForBackup("ns-1", "backup-4").Result(),
},
},
},
existingBackups: []*velerov1api.Backup{
// add a label to each existing backup so we can differentiate it from the cloud
// backup during verification
defaultBackup().Namespace("ns-1").Name("backup-1").Labels("i-exist", "true").StorageLocation("location-1").Backup(),
defaultBackup().Namespace("ns-1").Name("backup-3").Labels("i-exist", "true").StorageLocation("location-2").Backup(),
builder.ForBackup("ns-1", "backup-1").StorageLocation("location-1").ObjectMeta(builder.WithLabels("i-exist", "true")).Result(),
builder.ForBackup("ns-1", "backup-3").StorageLocation("location-2").ObjectMeta(builder.WithLabels("i-exist", "true")).Result(),
},
},
{
@@ -210,14 +206,14 @@ func TestBackupSyncControllerRun(t *testing.T) {
cloudBuckets: map[string][]*cloudBackupData{
"bucket-1": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-1").Backup(),
backup: builder.ForBackup("ns-1", "backup-1").Result(),
},
},
},
existingBackups: []*velerov1api.Backup{
// add a label to each existing backup so we can differentiate it from the cloud
// backup during verification
defaultBackup().Namespace("ns-1").Name("backup-1").Labels("i-exist", "true").StorageLocation("location-1").Backup(),
builder.ForBackup("ns-1", "backup-1").ObjectMeta(builder.WithLabels("i-exist", "true")).StorageLocation("location-1").Result(),
},
},
{
@@ -227,15 +223,15 @@ func TestBackupSyncControllerRun(t *testing.T) {
cloudBuckets: map[string][]*cloudBackupData{
"bucket-1": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-1").StorageLocation("foo").Labels(velerov1api.StorageLocationLabel, "foo").Backup(),
backup: builder.ForBackup("ns-1", "backup-1").StorageLocation("foo").ObjectMeta(builder.WithLabels(velerov1api.StorageLocationLabel, "foo")).Result(),
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-2").Backup(),
backup: builder.ForBackup("ns-1", "backup-2").Result(),
},
},
"bucket-2": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-3").StorageLocation("bar").Labels(velerov1api.StorageLocationLabel, "bar").Backup(),
backup: builder.ForBackup("ns-1", "backup-3").StorageLocation("bar").ObjectMeta(builder.WithLabels(velerov1api.StorageLocationLabel, "bar")).Result(),
},
},
},
@@ -248,15 +244,15 @@ func TestBackupSyncControllerRun(t *testing.T) {
cloudBuckets: map[string][]*cloudBackupData{
"bucket-1": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-1").StorageLocation("foo").Labels(velerov1api.StorageLocationLabel, "foo").Backup(),
backup: builder.ForBackup("ns-1", "backup-1").StorageLocation("foo").ObjectMeta(builder.WithLabels(velerov1api.StorageLocationLabel, "foo")).Result(),
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-2").Backup(),
backup: builder.ForBackup("ns-1", "backup-2").Result(),
},
},
"bucket-2": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-3").StorageLocation("bar").Labels(velerov1api.StorageLocationLabel, "bar").Backup(),
backup: builder.ForBackup("ns-1", "backup-3").StorageLocation("bar").ObjectMeta(builder.WithLabels(velerov1api.StorageLocationLabel, "bar")).Result(),
},
},
},
@@ -268,28 +264,28 @@ func TestBackupSyncControllerRun(t *testing.T) {
cloudBuckets: map[string][]*cloudBackupData{
"bucket-1": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-1").Backup(),
backup: builder.ForBackup("ns-1", "backup-1").Result(),
podVolumeBackups: []*velerov1api.PodVolumeBackup{
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-1").PodVolumeBackup(),
builder.ForPodVolumeBackup("ns-1", "pvb-1").Result(),
},
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-2").Backup(),
backup: builder.ForBackup("ns-1", "backup-2").Result(),
podVolumeBackups: []*velerov1api.PodVolumeBackup{
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-2").PodVolumeBackup(),
builder.ForPodVolumeBackup("ns-1", "pvb-2").Result(),
},
},
},
"bucket-2": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-3").Backup(),
backup: builder.ForBackup("ns-1", "backup-3").Result(),
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-4").Backup(),
backup: builder.ForBackup("ns-1", "backup-4").Result(),
podVolumeBackups: []*velerov1api.PodVolumeBackup{
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-1").PodVolumeBackup(),
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-2").PodVolumeBackup(),
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-3").PodVolumeBackup(),
builder.ForPodVolumeBackup("ns-1", "pvb-1").Result(),
builder.ForPodVolumeBackup("ns-1", "pvb-2").Result(),
builder.ForPodVolumeBackup("ns-1", "pvb-3").Result(),
},
},
},
@@ -302,35 +298,35 @@ func TestBackupSyncControllerRun(t *testing.T) {
cloudBuckets: map[string][]*cloudBackupData{
"bucket-1": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-1").Backup(),
backup: builder.ForBackup("ns-1", "backup-1").Result(),
podVolumeBackups: []*velerov1api.PodVolumeBackup{
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-1").PodVolumeBackup(),
builder.ForPodVolumeBackup("ns-1", "pvb-1").Result(),
},
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-2").Backup(),
backup: builder.ForBackup("ns-1", "backup-2").Result(),
podVolumeBackups: []*velerov1api.PodVolumeBackup{
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-3").PodVolumeBackup(),
builder.ForPodVolumeBackup("ns-1", "pvb-3").Result(),
},
},
},
"bucket-2": {
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-3").Backup(),
backup: builder.ForBackup("ns-1", "backup-3").Result(),
},
&cloudBackupData{
backup: defaultBackup().Namespace("ns-1").Name("backup-4").Backup(),
backup: builder.ForBackup("ns-1", "backup-4").Result(),
podVolumeBackups: []*velerov1api.PodVolumeBackup{
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-1").PodVolumeBackup(),
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-5").PodVolumeBackup(),
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-6").PodVolumeBackup(),
builder.ForPodVolumeBackup("ns-1", "pvb-1").Result(),
builder.ForPodVolumeBackup("ns-1", "pvb-5").Result(),
builder.ForPodVolumeBackup("ns-1", "pvb-6").Result(),
},
},
},
},
existingPodVolumeBackups: []*velerov1api.PodVolumeBackup{
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-1").PodVolumeBackup(),
defaultPodVolumeBackup().Namespace("ns-1").Name("pvb-2").PodVolumeBackup(),
builder.ForPodVolumeBackup("ns-1", "pvb-1").Result(),
builder.ForPodVolumeBackup("ns-1", "pvb-2").Result(),
},
},
}
@@ -477,6 +473,10 @@ func TestBackupSyncControllerRun(t *testing.T) {
}
func TestDeleteOrphanedBackups(t *testing.T) {
baseBuilder := func(name string) *builder.BackupBuilder {
return builder.ForBackup("ns-1", name).ObjectMeta(builder.WithLabels(velerov1api.StorageLocationLabel, "default"))
}
tests := []struct {
name string
cloudBackups sets.String
@@ -489,9 +489,9 @@ func TestDeleteOrphanedBackups(t *testing.T) {
namespace: "ns-1",
cloudBackups: sets.NewString("backup-1", "backup-2", "backup-3"),
k8sBackups: []*velerov1api.Backup{
defaultBackup().Namespace("ns-1").Name("backupA").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backupB").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backupC").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
baseBuilder("backupA").Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backupB").Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backupC").Phase(velerov1api.BackupPhaseCompleted).Result(),
},
expectedDeletes: sets.NewString("backupA", "backupB", "backupC"),
},
@@ -500,9 +500,9 @@ func TestDeleteOrphanedBackups(t *testing.T) {
namespace: "ns-1",
cloudBackups: sets.NewString("backup-1", "backup-2", "backup-3"),
k8sBackups: []*velerov1api.Backup{
defaultBackup().Namespace("ns-1").Name("backup-1").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-2").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-C").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
baseBuilder("backup-1").Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backup-2").Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backup-C").Phase(velerov1api.BackupPhaseCompleted).Result(),
},
expectedDeletes: sets.NewString("backup-C"),
},
@@ -511,9 +511,9 @@ func TestDeleteOrphanedBackups(t *testing.T) {
namespace: "ns-1",
cloudBackups: sets.NewString("backup-1", "backup-2", "backup-3"),
k8sBackups: []*velerov1api.Backup{
defaultBackup().Namespace("ns-1").Name("backup-1").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-2").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-3").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
baseBuilder("backup-1").Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backup-2").Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backup-3").Phase(velerov1api.BackupPhaseCompleted).Result(),
},
expectedDeletes: sets.NewString(),
},
@@ -522,12 +522,12 @@ func TestDeleteOrphanedBackups(t *testing.T) {
namespace: "ns-1",
cloudBackups: sets.NewString("backup-1", "backup-2", "backup-3"),
k8sBackups: []*velerov1api.Backup{
defaultBackup().Namespace("ns-1").Name("backupA").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("Deleting").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseDeleting).Backup(),
defaultBackup().Namespace("ns-1").Name("Failed").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseFailed).Backup(),
defaultBackup().Namespace("ns-1").Name("FailedValidation").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseFailedValidation).Backup(),
defaultBackup().Namespace("ns-1").Name("InProgress").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseInProgress).Backup(),
defaultBackup().Namespace("ns-1").Name("New").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseNew).Backup(),
baseBuilder("backupA").Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("Deleting").Phase(velerov1api.BackupPhaseDeleting).Result(),
baseBuilder("Failed").Phase(velerov1api.BackupPhaseFailed).Result(),
baseBuilder("FailedValidation").Phase(velerov1api.BackupPhaseFailedValidation).Result(),
baseBuilder("InProgress").Phase(velerov1api.BackupPhaseInProgress).Result(),
baseBuilder("New").Phase(velerov1api.BackupPhaseNew).Result(),
},
expectedDeletes: sets.NewString("backupA"),
},
@@ -536,9 +536,9 @@ func TestDeleteOrphanedBackups(t *testing.T) {
namespace: "ns-1",
cloudBackups: sets.NewString("backup-1", "backup-2", "backup-3"),
k8sBackups: []*velerov1api.Backup{
defaultBackup().Namespace("ns-1").Name("backup-1").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseFailed).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-2").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseFailedValidation).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-3").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseInProgress).Backup(),
baseBuilder("backup-1").Phase(velerov1api.BackupPhaseFailed).Result(),
baseBuilder("backup-2").Phase(velerov1api.BackupPhaseFailedValidation).Result(),
baseBuilder("backup-3").Phase(velerov1api.BackupPhaseInProgress).Result(),
},
expectedDeletes: sets.NewString(),
},
@@ -547,13 +547,13 @@ func TestDeleteOrphanedBackups(t *testing.T) {
namespace: "ns-1",
cloudBackups: sets.NewString("backup-1", "backup-2", "backup-3"),
k8sBackups: []*velerov1api.Backup{
defaultBackup().Namespace("ns-1").Name("backup-1").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-2").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-C").Labels(velerov1api.StorageLocationLabel, "default").Phase(velerov1api.BackupPhaseCompleted).Backup(),
baseBuilder("backup-1").Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backup-2").Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backup-C").Phase(velerov1api.BackupPhaseCompleted).Result(),
defaultBackup().Namespace("ns-1").Name("backup-4").Labels(velerov1api.StorageLocationLabel, "alternate").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-5").Labels(velerov1api.StorageLocationLabel, "alternate").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-6").Labels(velerov1api.StorageLocationLabel, "alternate").Phase(velerov1api.BackupPhaseCompleted).Backup(),
baseBuilder("backup-4").ObjectMeta(builder.WithLabels(velerov1api.StorageLocationLabel, "alternate")).Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backup-5").ObjectMeta(builder.WithLabels(velerov1api.StorageLocationLabel, "alternate")).Phase(velerov1api.BackupPhaseCompleted).Result(),
baseBuilder("backup-6").ObjectMeta(builder.WithLabels(velerov1api.StorageLocationLabel, "alternate")).Phase(velerov1api.BackupPhaseCompleted).Result(),
},
expectedDeletes: sets.NewString("backup-C"),
},
@@ -628,12 +628,24 @@ func TestStorageLabelsInDeleteOrphanedBackups(t *testing.T) {
namespace: "ns-1",
cloudBackups: sets.NewString("backup-1", "backup-2", "backup-3"),
k8sBackups: []*velerov1api.Backup{
defaultBackup().Namespace("ns-1").Name("backup-1").
Labels(velerov1api.StorageLocationLabel, "the-really-long-location-name-that-is-much-more-than-63-c69e779").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-2").
Labels(velerov1api.StorageLocationLabel, "the-really-long-location-name-that-is-much-more-than-63-c69e779").Phase(velerov1api.BackupPhaseCompleted).Backup(),
defaultBackup().Namespace("ns-1").Name("backup-C").
Labels(velerov1api.StorageLocationLabel, "the-really-long-location-name-that-is-much-more-than-63-c69e779").Phase(velerov1api.BackupPhaseCompleted).Backup(),
builder.ForBackup("ns-1", "backup-1").
ObjectMeta(
builder.WithLabels(velerov1api.StorageLocationLabel, "the-really-long-location-name-that-is-much-more-than-63-c69e779"),
).
Phase(velerov1api.BackupPhaseCompleted).
Result(),
builder.ForBackup("ns-1", "backup-2").
ObjectMeta(
builder.WithLabels(velerov1api.StorageLocationLabel, "the-really-long-location-name-that-is-much-more-than-63-c69e779"),
).
Phase(velerov1api.BackupPhaseCompleted).
Result(),
builder.ForBackup("ns-1", "backup-C").
ObjectMeta(
builder.WithLabels(velerov1api.StorageLocationLabel, "the-really-long-location-name-that-is-much-more-than-63-c69e779"),
).
Phase(velerov1api.BackupPhaseCompleted).
Result(),
},
expectedDeletes: sets.NewString("backup-C"),
},