mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 22:17:14 +00:00
Merge pull request #40294 from tsmetana/persistent-volume-test-refactor
Automatic merge from submit-queue (batch tested with PRs 39064, 40294) Refactor persistent volume tests This is an attempt to make the binder tests a bit more concise. The PVCs are being created by a "templating" function. There is also a handful of PVs in the tests but those vary quite more and I don't think similar approach would save us much code. Reference: https://reviewable.kubernetes.io/reviews/kubernetes/kubernetes/29006#-KPJuVeDE0O6TvDP9jia @jsafrane: I hope this is what you have on mind.
This commit is contained in:
commit
373e7ef0c0
@ -27,6 +27,27 @@ import (
|
|||||||
storageutil "k8s.io/kubernetes/pkg/apis/storage/v1beta1/util"
|
storageutil "k8s.io/kubernetes/pkg/apis/storage/v1beta1/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func makePVC(size string, modfn func(*v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim {
|
||||||
|
pvc := v1.PersistentVolumeClaim{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "claim01",
|
||||||
|
Namespace: "myns",
|
||||||
|
},
|
||||||
|
Spec: v1.PersistentVolumeClaimSpec{
|
||||||
|
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce},
|
||||||
|
Resources: v1.ResourceRequirements{
|
||||||
|
Requests: v1.ResourceList{
|
||||||
|
v1.ResourceName(v1.ResourceStorage): resource.MustParse(size),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if modfn != nil {
|
||||||
|
modfn(&pvc)
|
||||||
|
}
|
||||||
|
return &pvc
|
||||||
|
}
|
||||||
|
|
||||||
func TestMatchVolume(t *testing.T) {
|
func TestMatchVolume(t *testing.T) {
|
||||||
volList := newPersistentVolumeOrderedIndex()
|
volList := newPersistentVolumeOrderedIndex()
|
||||||
for _, pv := range createTestVolumes() {
|
for _, pv := range createTestVolumes() {
|
||||||
@ -39,182 +60,76 @@ func TestMatchVolume(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
"successful-match-gce-10": {
|
"successful-match-gce-10": {
|
||||||
expectedMatch: "gce-pd-10",
|
expectedMatch: "gce-pd-10",
|
||||||
claim: &v1.PersistentVolumeClaim{
|
claim: makePVC("8G", nil),
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "claim01",
|
|
||||||
Namespace: "myns",
|
|
||||||
},
|
|
||||||
Spec: v1.PersistentVolumeClaimSpec{
|
|
||||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce},
|
|
||||||
Resources: v1.ResourceRequirements{
|
|
||||||
Requests: v1.ResourceList{
|
|
||||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("8G"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"successful-match-nfs-5": {
|
"successful-match-nfs-5": {
|
||||||
expectedMatch: "nfs-5",
|
expectedMatch: "nfs-5",
|
||||||
claim: &v1.PersistentVolumeClaim{
|
claim: makePVC("5G", func(pvc *v1.PersistentVolumeClaim) {
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
pvc.Spec.AccessModes = []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce, v1.ReadWriteMany}
|
||||||
Name: "claim01",
|
}),
|
||||||
Namespace: "myns",
|
|
||||||
},
|
|
||||||
Spec: v1.PersistentVolumeClaimSpec{
|
|
||||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce, v1.ReadWriteMany},
|
|
||||||
Resources: v1.ResourceRequirements{
|
|
||||||
Requests: v1.ResourceList{
|
|
||||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("5G"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"successful-skip-1g-bound-volume": {
|
"successful-skip-1g-bound-volume": {
|
||||||
expectedMatch: "gce-pd-5",
|
expectedMatch: "gce-pd-5",
|
||||||
claim: &v1.PersistentVolumeClaim{
|
claim: makePVC("1G", nil),
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "claim01",
|
|
||||||
Namespace: "myns",
|
|
||||||
},
|
|
||||||
Spec: v1.PersistentVolumeClaimSpec{
|
|
||||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce},
|
|
||||||
Resources: v1.ResourceRequirements{
|
|
||||||
Requests: v1.ResourceList{
|
|
||||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"successful-no-match": {
|
"successful-no-match": {
|
||||||
expectedMatch: "",
|
expectedMatch: "",
|
||||||
claim: &v1.PersistentVolumeClaim{
|
claim: makePVC("999G", nil),
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "claim01",
|
|
||||||
Namespace: "myns",
|
|
||||||
},
|
|
||||||
Spec: v1.PersistentVolumeClaimSpec{
|
|
||||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce},
|
|
||||||
Resources: v1.ResourceRequirements{
|
|
||||||
Requests: v1.ResourceList{
|
|
||||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("999G"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"successful-no-match-due-to-label": {
|
"successful-no-match-due-to-label": {
|
||||||
expectedMatch: "",
|
expectedMatch: "",
|
||||||
claim: &v1.PersistentVolumeClaim{
|
claim: makePVC("999G", func(pvc *v1.PersistentVolumeClaim) {
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
pvc.Spec.Selector = &metav1.LabelSelector{
|
||||||
Name: "claim01",
|
MatchLabels: map[string]string{
|
||||||
Namespace: "myns",
|
"should-not-exist": "true",
|
||||||
},
|
|
||||||
Spec: v1.PersistentVolumeClaimSpec{
|
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: map[string]string{
|
|
||||||
"should-not-exist": "true",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce},
|
}
|
||||||
Resources: v1.ResourceRequirements{
|
}),
|
||||||
Requests: v1.ResourceList{
|
|
||||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("999G"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"successful-no-match-due-to-size-constraint-with-label-selector": {
|
"successful-no-match-due-to-size-constraint-with-label-selector": {
|
||||||
expectedMatch: "",
|
expectedMatch: "",
|
||||||
claim: &v1.PersistentVolumeClaim{
|
claim: makePVC("20000G", func(pvc *v1.PersistentVolumeClaim) {
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
pvc.Spec.Selector = &metav1.LabelSelector{
|
||||||
Name: "claim01",
|
MatchLabels: map[string]string{
|
||||||
Namespace: "myns",
|
"should-exist": "true",
|
||||||
},
|
|
||||||
Spec: v1.PersistentVolumeClaimSpec{
|
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: map[string]string{
|
|
||||||
"should-exist": "true",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce},
|
}
|
||||||
Resources: v1.ResourceRequirements{
|
pvc.Spec.AccessModes = []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany, v1.ReadWriteOnce}
|
||||||
Requests: v1.ResourceList{
|
}),
|
||||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("20000G"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"successful-match-due-with-constraint-and-label-selector": {
|
"successful-match-due-with-constraint-and-label-selector": {
|
||||||
expectedMatch: "gce-pd-2",
|
expectedMatch: "gce-pd-2",
|
||||||
claim: &v1.PersistentVolumeClaim{
|
claim: makePVC("20000G", func(pvc *v1.PersistentVolumeClaim) {
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
pvc.Spec.Selector = &metav1.LabelSelector{
|
||||||
Name: "claim01",
|
MatchLabels: map[string]string{
|
||||||
Namespace: "myns",
|
"should-exist": "true",
|
||||||
},
|
|
||||||
Spec: v1.PersistentVolumeClaimSpec{
|
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: map[string]string{
|
|
||||||
"should-exist": "true",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce},
|
}
|
||||||
Resources: v1.ResourceRequirements{
|
pvc.Spec.AccessModes = []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}
|
||||||
Requests: v1.ResourceList{
|
}),
|
||||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("20000G"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"successful-match-with-class": {
|
"successful-match-with-class": {
|
||||||
expectedMatch: "gce-pd-silver1",
|
expectedMatch: "gce-pd-silver1",
|
||||||
claim: &v1.PersistentVolumeClaim{
|
claim: makePVC("1G", func(pvc *v1.PersistentVolumeClaim) {
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
pvc.ObjectMeta.Annotations = map[string]string{
|
||||||
Name: "claim01",
|
storageutil.StorageClassAnnotation: "silver",
|
||||||
Namespace: "myns",
|
}
|
||||||
Annotations: map[string]string{
|
pvc.Spec.Selector = &metav1.LabelSelector{
|
||||||
storageutil.StorageClassAnnotation: "silver",
|
MatchLabels: map[string]string{
|
||||||
|
"should-exist": "true",
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
Spec: v1.PersistentVolumeClaimSpec{
|
pvc.Spec.AccessModes = []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}
|
||||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce},
|
}),
|
||||||
Selector: &metav1.LabelSelector{
|
|
||||||
MatchLabels: map[string]string{
|
|
||||||
"should-exist": "true",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Resources: v1.ResourceRequirements{
|
|
||||||
Requests: v1.ResourceList{
|
|
||||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"successful-match-with-class-and-labels": {
|
"successful-match-with-class-and-labels": {
|
||||||
expectedMatch: "gce-pd-silver2",
|
expectedMatch: "gce-pd-silver2",
|
||||||
claim: &v1.PersistentVolumeClaim{
|
claim: makePVC("1G", func(pvc *v1.PersistentVolumeClaim) {
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
pvc.ObjectMeta.Annotations = map[string]string{
|
||||||
Name: "claim01",
|
storageutil.StorageClassAnnotation: "silver",
|
||||||
Namespace: "myns",
|
}
|
||||||
Annotations: map[string]string{
|
pvc.Spec.AccessModes = []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}
|
||||||
storageutil.StorageClassAnnotation: "silver",
|
}),
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: v1.PersistentVolumeClaimSpec{
|
|
||||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce},
|
|
||||||
Resources: v1.ResourceRequirements{
|
|
||||||
Requests: v1.ResourceList{
|
|
||||||
v1.ResourceName(v1.ResourceStorage): resource.MustParse("1G"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user