CSIStorageCapacity: prepare tests for enabling the feature by default
Defaults and validation are such that the field has to be set when the feature is enabled, just as for the other boolean fields. This was missing in some tests, which was okay as long as they ran with the feature disabled. Once it gets enabled, validation will flag the missing field as error. Other tests didn't run at all.
This commit is contained in:
@@ -1666,6 +1666,8 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
podInfoOnMount := true
|
||||
notPodInfoOnMount := false
|
||||
notRequiresRepublish := false
|
||||
storageCapacity := true
|
||||
notStorageCapacity := false
|
||||
supportedFSGroupPolicy := storage.FileFSGroupPolicy
|
||||
invalidFSGroupPolicy := storage.ReadWriteOnceWithFSTypeFSGroupPolicy
|
||||
invalidFSGroupPolicy = "invalid-mode"
|
||||
@@ -1676,6 +1678,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1685,6 +1688,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: ¬StorageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1694,6 +1698,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1703,6 +1708,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1712,6 +1718,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1720,6 +1727,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1728,6 +1736,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1736,6 +1745,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -1744,6 +1754,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
VolumeLifecycleModes: []storage.VolumeLifecycleMode{
|
||||
storage.VolumeLifecyclePersistent,
|
||||
},
|
||||
@@ -1755,6 +1766,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
VolumeLifecycleModes: []storage.VolumeLifecycleMode{
|
||||
storage.VolumeLifecycleEphemeral,
|
||||
},
|
||||
@@ -1766,6 +1778,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
VolumeLifecycleModes: []storage.VolumeLifecycleMode{
|
||||
storage.VolumeLifecycleEphemeral,
|
||||
storage.VolumeLifecyclePersistent,
|
||||
@@ -1778,6 +1791,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
VolumeLifecycleModes: []storage.VolumeLifecycleMode{
|
||||
storage.VolumeLifecycleEphemeral,
|
||||
storage.VolumeLifecyclePersistent,
|
||||
@@ -1791,6 +1805,7 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
RequiresRepublish: ¬RequiresRepublish,
|
||||
StorageCapacity: &storageCapacity,
|
||||
FSGroupPolicy: &supportedFSGroupPolicy,
|
||||
},
|
||||
},
|
||||
@@ -1805,39 +1820,53 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
{
|
||||
ObjectMeta: metav1.ObjectMeta{Name: invalidName},
|
||||
Spec: storage.CSIDriverSpec{
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
ObjectMeta: metav1.ObjectMeta{Name: longName},
|
||||
Spec: storage.CSIDriverSpec{
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
// AttachRequired not set
|
||||
ObjectMeta: metav1.ObjectMeta{Name: driverName},
|
||||
Spec: storage.CSIDriverSpec{
|
||||
AttachRequired: nil,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
AttachRequired: nil,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
// PodInfoOnMount not set
|
||||
ObjectMeta: metav1.ObjectMeta{Name: driverName},
|
||||
Spec: storage.CSIDriverSpec{
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: nil,
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: nil,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
{
|
||||
// StorageCapacity not set
|
||||
ObjectMeta: metav1.ObjectMeta{Name: driverName},
|
||||
Spec: storage.CSIDriverSpec{
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
StorageCapacity: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
// invalid mode
|
||||
ObjectMeta: metav1.ObjectMeta{Name: driverName},
|
||||
Spec: storage.CSIDriverSpec{
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
StorageCapacity: &storageCapacity,
|
||||
VolumeLifecycleModes: []storage.VolumeLifecycleMode{
|
||||
"no-such-mode",
|
||||
},
|
||||
@@ -1847,9 +1876,10 @@ func TestCSIDriverValidation(t *testing.T) {
|
||||
// invalid fsGroupPolicy
|
||||
ObjectMeta: metav1.ObjectMeta{Name: driverName},
|
||||
Spec: storage.CSIDriverSpec{
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
FSGroupPolicy: &invalidFSGroupPolicy,
|
||||
AttachRequired: &attachNotRequired,
|
||||
PodInfoOnMount: ¬PodInfoOnMount,
|
||||
FSGroupPolicy: &invalidFSGroupPolicy,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1868,8 +1898,10 @@ func TestCSIDriverValidationUpdate(t *testing.T) {
|
||||
attachRequired := true
|
||||
attachNotRequired := false
|
||||
podInfoOnMount := true
|
||||
storageCapacity := true
|
||||
notPodInfoOnMount := false
|
||||
notRequiresRepublish := false
|
||||
notStorageCapacity := false
|
||||
resourceVersion := "1"
|
||||
invalidFSGroupPolicy := storage.ReadWriteOnceWithFSTypeFSGroupPolicy
|
||||
invalidFSGroupPolicy = "invalid-mode"
|
||||
@@ -1883,6 +1915,7 @@ func TestCSIDriverValidationUpdate(t *testing.T) {
|
||||
storage.VolumeLifecycleEphemeral,
|
||||
storage.VolumeLifecyclePersistent,
|
||||
},
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1900,7 +1933,8 @@ func TestCSIDriverValidationUpdate(t *testing.T) {
|
||||
storage.VolumeLifecycleEphemeral,
|
||||
storage.VolumeLifecyclePersistent,
|
||||
},
|
||||
FSGroupPolicy: &invalidFSGroupPolicy,
|
||||
FSGroupPolicy: &invalidFSGroupPolicy,
|
||||
StorageCapacity: &storageCapacity,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1997,6 +2031,12 @@ func TestCSIDriverValidationUpdate(t *testing.T) {
|
||||
new.Spec.FSGroupPolicy = &fileFSGroupPolicy
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "StorageCapacity changed",
|
||||
modify: func(new *storage.CSIDriver) {
|
||||
new.Spec.StorageCapacity = ¬StorageCapacity
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range errorCases {
|
||||
@@ -2010,6 +2050,48 @@ func TestCSIDriverValidationUpdate(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCSIDriverStorageCapacityEnablement(t *testing.T) {
|
||||
run := func(t *testing.T, enabled, withField bool) {
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CSIStorageCapacity, enabled)()
|
||||
|
||||
driverName := "test-driver"
|
||||
attachRequired := true
|
||||
podInfoOnMount := true
|
||||
requiresRepublish := true
|
||||
storageCapacity := true
|
||||
csiDriver := storage.CSIDriver{
|
||||
ObjectMeta: metav1.ObjectMeta{Name: driverName},
|
||||
Spec: storage.CSIDriverSpec{
|
||||
AttachRequired: &attachRequired,
|
||||
PodInfoOnMount: &podInfoOnMount,
|
||||
RequiresRepublish: &requiresRepublish,
|
||||
},
|
||||
}
|
||||
if withField {
|
||||
csiDriver.Spec.StorageCapacity = &storageCapacity
|
||||
}
|
||||
errs := ValidateCSIDriver(&csiDriver)
|
||||
success := !enabled || withField
|
||||
if success && len(errs) != 0 {
|
||||
t.Errorf("expected success, got: %v", errs)
|
||||
}
|
||||
if !success && len(errs) == 0 {
|
||||
t.Errorf("expected error, got success")
|
||||
}
|
||||
}
|
||||
|
||||
yesNo := []bool{true, false}
|
||||
for _, enabled := range yesNo {
|
||||
t.Run(fmt.Sprintf("CSIStorageCapacity=%v", enabled), func(t *testing.T) {
|
||||
for _, withField := range yesNo {
|
||||
t.Run(fmt.Sprintf("with-field=%v", withField), func(t *testing.T) {
|
||||
run(t, enabled, withField)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateCSIStorageCapacity(t *testing.T) {
|
||||
storageClassName := "test-sc"
|
||||
invalidName := "-invalid-@#$%^&*()-"
|
||||
@@ -2179,6 +2261,7 @@ func TestCSIServiceAccountToken(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
test.csiDriver.Spec.AttachRequired = new(bool)
|
||||
test.csiDriver.Spec.PodInfoOnMount = new(bool)
|
||||
test.csiDriver.Spec.StorageCapacity = new(bool)
|
||||
if errs := ValidateCSIDriver(test.csiDriver); test.wantErr != (len(errs) != 0) {
|
||||
t.Errorf("ValidateCSIDriver = %v, want err: %v", errs, test.wantErr)
|
||||
}
|
||||
|
Reference in New Issue
Block a user