124 lines
2.9 KiB
Go
124 lines
2.9 KiB
Go
package volumes
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
v1 "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
func TestGetProviderVolumeID(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
pv *v1.PersistentVolume
|
|
expected string
|
|
err error
|
|
}{
|
|
{
|
|
name: "CSI volume handle",
|
|
pv: &v1.PersistentVolume{
|
|
Spec: v1.PersistentVolumeSpec{
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{
|
|
CSI: &v1.CSIPersistentVolumeSource{
|
|
VolumeHandle: "vol-075ddfc4a127d0bd5",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expected: "vol-075ddfc4a127d0bd5",
|
|
err: nil,
|
|
},
|
|
{
|
|
name: "AWS EBS volume handle",
|
|
pv: &v1.PersistentVolume{
|
|
Spec: v1.PersistentVolumeSpec{
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{
|
|
AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
|
|
VolumeID: "aws://eu-central-1a/vol-075ddfc4a127d0bd4",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expected: "vol-075ddfc4a127d0bd4",
|
|
err: nil,
|
|
},
|
|
{
|
|
name: "Empty volume handle",
|
|
pv: &v1.PersistentVolume{
|
|
Spec: v1.PersistentVolumeSpec{},
|
|
},
|
|
expected: "",
|
|
err: fmt.Errorf("got empty volume id for volume %v", &v1.PersistentVolume{}),
|
|
},
|
|
}
|
|
|
|
resizer := EBSVolumeResizer{}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
volumeID, err := resizer.GetProviderVolumeID(tt.pv)
|
|
if volumeID != tt.expected || (err != nil && err.Error() != tt.err.Error()) {
|
|
t.Errorf("expected %v, got %v, expected err %v, got %v", tt.expected, volumeID, tt.err, err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestVolumeBelongsToProvider(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
pv *v1.PersistentVolume
|
|
expected bool
|
|
}{
|
|
{
|
|
name: "CSI volume handle",
|
|
pv: &v1.PersistentVolume{
|
|
Spec: v1.PersistentVolumeSpec{
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{
|
|
CSI: &v1.CSIPersistentVolumeSource{
|
|
Driver: "ebs.csi.aws.com",
|
|
VolumeHandle: "vol-075ddfc4a127d0bd5",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "AWS EBS volume handle",
|
|
pv: &v1.PersistentVolume{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Annotations: map[string]string {
|
|
"pv.kubernetes.io/provisioned-by": "kubernetes.io/aws-ebs",
|
|
},
|
|
},
|
|
Spec: v1.PersistentVolumeSpec{
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{
|
|
AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
|
|
VolumeID: "aws://eu-central-1a/vol-075ddfc4a127d0bd4",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "Empty volume source",
|
|
pv: &v1.PersistentVolume{
|
|
Spec: v1.PersistentVolumeSpec{},
|
|
},
|
|
expected: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
resizer := EBSVolumeResizer{}
|
|
isProvider := resizer.VolumeBelongsToProvider(tt.pv)
|
|
if isProvider != tt.expected {
|
|
t.Errorf("expected %v, got %v", tt.expected, isProvider)
|
|
}
|
|
})
|
|
}
|
|
}
|