diff --git a/pkg/volume/local/local_test.go b/pkg/volume/local/local_test.go index e73873d3e4a..8a9c0eafc38 100644 --- a/pkg/volume/local/local_test.go +++ b/pkg/volume/local/local_test.go @@ -83,6 +83,37 @@ func getBlockPlugin(t *testing.T) (string, volume.BlockVolumePlugin) { return tmpDir, plug } +func getNodeExpandablePlugin(t *testing.T, isBlockDevice bool) (string, volume.NodeExpandableVolumePlugin) { + tmpDir, err := utiltesting.MkTmpdir("localVolumeTest") + if err != nil { + t.Fatalf("can't make a temp dir: %v", err) + } + + plugMgr := volume.VolumePluginMgr{} + var pathToFSType map[string]hostutil.FileType + if isBlockDevice { + pathToFSType = map[string]hostutil.FileType{ + tmpDir: hostutil.FileTypeBlockDev, + } + } else { + pathToFSType = map[string]hostutil.FileType{ + tmpDir: hostutil.FileTypeDirectory, + } + } + + plugMgr.InitPlugins(ProbeVolumePlugins(), nil /* prober */, volumetest.NewFakeKubeletVolumeHostWithMounterFSType(t, tmpDir, nil, nil, pathToFSType)) + + plug, err := plugMgr.FindNodeExpandablePluginByName(localVolumePluginName) + if err != nil { + os.RemoveAll(tmpDir) + t.Fatalf("Can't find the plugin by name") + } + if plug.GetPluginName() != localVolumePluginName { + t.Errorf("Wrong name: %s", plug.GetPluginName()) + } + return tmpDir, plug +} + func getPersistentPlugin(t *testing.T) (string, volume.PersistentVolumePlugin) { tmpDir, err := utiltesting.MkTmpdir("localVolumeTest") if err != nil { @@ -148,6 +179,9 @@ func getTestVolume(readOnly bool, path string, isBlock bool, mountOptions []stri if isBlock { blockMode := v1.PersistentVolumeBlock pv.Spec.VolumeMode = &blockMode + } else { + fsMode := v1.PersistentVolumeFilesystem + pv.Spec.VolumeMode = &fsMode } return volume.NewSpecFromPersistentVolume(pv, readOnly) } @@ -289,6 +323,28 @@ func TestFSGlobalPathAndMountDevice(t *testing.T) { } } +func TestNodeExpand(t *testing.T) { + // FS global path testing + tmpFSDir, plug := getNodeExpandablePlugin(t, false) + defer os.RemoveAll(tmpFSDir) + + pvSpec := getTestVolume(false, tmpFSDir, false, nil) + + resizeOptions := volume.NodeResizeOptions{ + VolumeSpec: pvSpec, + DevicePath: tmpFSDir, + } + + // Actually, we will do no volume expansion if volume is of type dir + resizeDone, err := plug.NodeExpand(resizeOptions) + if err != nil { + t.Fatal(err) + } + if !resizeDone { + t.Errorf("expected resize to be done") + } +} + func TestMountUnmount(t *testing.T) { tmpDir, plug := getPlugin(t) defer os.RemoveAll(tmpDir)