added tests

This commit is contained in:
Lukas Wöhrl 2023-03-20 22:03:45 +01:00
parent c6392e630c
commit 9607c61390

View File

@ -35,15 +35,18 @@ import (
) )
const ( const (
testServer = "test-server" testServer = "test-server"
testBaseDir = "test-base-dir" testBaseDir = "test-base-dir"
testBaseDirNested = "test/base/dir" testBaseDirNested = "test/base/dir"
testCSIVolume = "volume-name" testCSIVolume = "volume-name"
testVolumeID = "test-server/test-base-dir/volume-name" testVolumeID = "test-server/test-base-dir/volume-name"
newTestVolumeID = "test-server#test-base-dir#volume-name#" newTestVolumeID = "test-server#test-base-dir#volume-name##delete"
testVolumeIDNested = "test-server/test/base/dir/volume-name" newTestVolumeWithVolumeID = "test-server#test-base-dir#volume-name#volume-name#delete"
newTestVolumeIDNested = "test-server#test/base/dir#volume-name#" testVolumeIDNested = "test-server/test/base/dir/volume-name"
newTestVolumeIDUUID = "test-server#test-base-dir#volume-name#uuid" newTestVolumeIDNested = "test-server#test/base/dir#volume-name#"
newTestVolumeIDUUID = "test-server#test-base-dir#volume-name#uuid"
newTestVolumeOnDeleteRetain = "test-server#test-base-dir#volume-name#uuid#retain"
newTestVolumeOnDeleteDelete = "test-server#test-base-dir#volume-name#uuid#delete"
) )
func initTestController(t *testing.T) *ControllerServer { func initTestController(t *testing.T) *ControllerServer {
@ -136,7 +139,7 @@ func TestCreateVolume(t *testing.T) {
}, },
resp: &csi.CreateVolumeResponse{ resp: &csi.CreateVolumeResponse{
Volume: &csi.Volume{ Volume: &csi.Volume{
VolumeId: newTestVolumeID + testCSIVolume, VolumeId: newTestVolumeWithVolumeID,
VolumeContext: map[string]string{ VolumeContext: map[string]string{
paramServer: testServer, paramServer: testServer,
paramShare: testBaseDir, paramShare: testBaseDir,
@ -242,32 +245,44 @@ func TestCreateVolume(t *testing.T) {
func TestDeleteVolume(t *testing.T) { func TestDeleteVolume(t *testing.T) {
cases := []struct { cases := []struct {
desc string desc string
testOnWindows bool testOnWindows bool
req *csi.DeleteVolumeRequest req *csi.DeleteVolumeRequest
resp *csi.DeleteVolumeResponse resp *csi.DeleteVolumeResponse
expectedErr error expectedDeleteSubDir bool
expectedErr error
}{ }{
{ {
desc: "Volume ID missing", desc: "Volume ID missing",
testOnWindows: true, testOnWindows: true,
req: &csi.DeleteVolumeRequest{}, req: &csi.DeleteVolumeRequest{},
resp: nil, resp: nil,
expectedErr: status.Error(codes.InvalidArgument, "Volume ID missing in request"), expectedErr: status.Error(codes.InvalidArgument, "Volume ID missing in request"),
expectedDeleteSubDir: false,
}, },
{ {
desc: "Valid request", desc: "Valid request",
testOnWindows: false, testOnWindows: false,
req: &csi.DeleteVolumeRequest{VolumeId: testVolumeID}, req: &csi.DeleteVolumeRequest{VolumeId: testVolumeID},
resp: &csi.DeleteVolumeResponse{}, resp: &csi.DeleteVolumeResponse{},
expectedErr: nil, expectedErr: nil,
expectedDeleteSubDir: true,
}, },
{ {
desc: "Valid request with newTestVolumeID", desc: "Valid request with newTestVolumeID",
testOnWindows: true, testOnWindows: true,
req: &csi.DeleteVolumeRequest{VolumeId: newTestVolumeID}, req: &csi.DeleteVolumeRequest{VolumeId: newTestVolumeID},
resp: &csi.DeleteVolumeResponse{}, resp: &csi.DeleteVolumeResponse{},
expectedErr: nil, expectedErr: nil,
expectedDeleteSubDir: true,
},
{
desc: "Valid request with onDelete:retain",
testOnWindows: true,
req: &csi.DeleteVolumeRequest{VolumeId: newTestVolumeOnDeleteRetain},
resp: &csi.DeleteVolumeResponse{},
expectedErr: nil,
expectedDeleteSubDir: false,
}, },
} }
@ -292,8 +307,13 @@ func TestDeleteVolume(t *testing.T) {
if !reflect.DeepEqual(resp, test.resp) { if !reflect.DeepEqual(resp, test.resp) {
t.Errorf("test %q failed: got resp %+v, expected %+v", test.desc, resp, test.resp) t.Errorf("test %q failed: got resp %+v, expected %+v", test.desc, resp, test.resp)
} }
if _, err := os.Stat(filepath.Join(cs.Driver.workingMountDir, testCSIVolume, testCSIVolume)); test.expectedErr == nil && !os.IsNotExist(err) {
t.Errorf("test %q failed: expected volume subdirectory deleted, it still exists", test.desc) if _, err := os.Stat(filepath.Join(cs.Driver.workingMountDir, testCSIVolume, testCSIVolume)); test.expectedErr == nil {
if !os.IsNotExist(err) && test.expectedDeleteSubDir {
t.Errorf("test %q failed: expected volume subdirectory deleted, it still exists", test.desc)
} else if os.IsNotExist(err) && !test.expectedDeleteSubDir {
t.Errorf("test %q failed: expected volume subdirectory not deleted, it was deleted", test.desc)
}
} }
}) })
} }
@ -395,10 +415,11 @@ func TestNfsVolFromId(t *testing.T) {
name: "valid request single baseDir with newTestVolumeID", name: "valid request single baseDir with newTestVolumeID",
volumeID: newTestVolumeID, volumeID: newTestVolumeID,
resp: &nfsVolume{ resp: &nfsVolume{
id: newTestVolumeID, id: newTestVolumeID,
server: testServer, server: testServer,
baseDir: testBaseDir, baseDir: testBaseDir,
subDir: testCSIVolume, subDir: testCSIVolume,
onDelete: "delete",
}, },
expectErr: false, expectErr: false,
}, },
@ -436,6 +457,32 @@ func TestNfsVolFromId(t *testing.T) {
}, },
expectErr: false, expectErr: false,
}, },
{
name: "valid request nested ondelete retain",
volumeID: newTestVolumeOnDeleteRetain,
resp: &nfsVolume{
id: newTestVolumeOnDeleteRetain,
server: testServer,
baseDir: testBaseDir,
subDir: testCSIVolume,
uuid: "uuid",
onDelete: "retain",
},
expectErr: false,
},
{
name: "valid request nested ondelete delete",
volumeID: newTestVolumeOnDeleteDelete,
resp: &nfsVolume{
id: newTestVolumeOnDeleteDelete,
server: testServer,
baseDir: testBaseDir,
subDir: testCSIVolume,
uuid: "uuid",
onDelete: "delete",
},
expectErr: false,
},
} }
for _, test := range cases { for _, test := range cases {
@ -556,12 +603,13 @@ func TestNewNFSVolume(t *testing.T) {
paramSubDir: "subdir", paramSubDir: "subdir",
}, },
expectVol: &nfsVolume{ expectVol: &nfsVolume{
id: "nfs-server.default.svc.cluster.local#share#subdir#pv-name", id: "nfs-server.default.svc.cluster.local#share#subdir#pv-name#delete",
server: "//nfs-server.default.svc.cluster.local", server: "//nfs-server.default.svc.cluster.local",
baseDir: "share", baseDir: "share",
subDir: "subdir", subDir: "subdir",
size: 100, size: 100,
uuid: "pv-name", uuid: "pv-name",
onDelete: "delete",
}, },
}, },
{ {
@ -577,12 +625,13 @@ func TestNewNFSVolume(t *testing.T) {
pvNameKey: "pvname", pvNameKey: "pvname",
}, },
expectVol: &nfsVolume{ expectVol: &nfsVolume{
id: "nfs-server.default.svc.cluster.local#share#subdir-pvcname-pvcnamespace-pvname#pv-name", id: "nfs-server.default.svc.cluster.local#share#subdir-pvcname-pvcnamespace-pvname#pv-name#delete",
server: "//nfs-server.default.svc.cluster.local", server: "//nfs-server.default.svc.cluster.local",
baseDir: "share", baseDir: "share",
subDir: "subdir-pvcname-pvcnamespace-pvname", subDir: "subdir-pvcname-pvcnamespace-pvname",
size: 100, size: 100,
uuid: "pv-name", uuid: "pv-name",
onDelete: "delete",
}, },
}, },
{ {
@ -594,12 +643,13 @@ func TestNewNFSVolume(t *testing.T) {
paramShare: "share", paramShare: "share",
}, },
expectVol: &nfsVolume{ expectVol: &nfsVolume{
id: "nfs-server.default.svc.cluster.local#share#pv-name#", id: "nfs-server.default.svc.cluster.local#share#pv-name##delete",
server: "//nfs-server.default.svc.cluster.local", server: "//nfs-server.default.svc.cluster.local",
baseDir: "share", baseDir: "share",
subDir: "pv-name", subDir: "pv-name",
size: 200, size: 200,
uuid: "", uuid: "",
onDelete: "delete",
}, },
}, },
{ {