diff --git a/cmd/kubeadm/app/phases/kubelet/config_test.go b/cmd/kubeadm/app/phases/kubelet/config_test.go index 29ea72ef99d..f1add0f8312 100644 --- a/cmd/kubeadm/app/phases/kubelet/config_test.go +++ b/cmd/kubeadm/app/phases/kubelet/config_test.go @@ -18,7 +18,7 @@ package kubelet import ( "bytes" - "io/ioutil" + "io" "os" "path/filepath" "testing" @@ -84,17 +84,17 @@ func TestApplyKubeletConfigPatches(t *testing.T) { expectedOutput = []byte("bar: 1\nfoo: 0\n") ) - dir, err := ioutil.TempDir("", "patches") + dir, err := os.MkdirTemp("", "patches") if err != nil { t.Fatalf("could not create temp dir: %v", err) } defer os.RemoveAll(dir) - if err := ioutil.WriteFile(filepath.Join(dir, "kubeletconfiguration.yaml"), patch, 0644); err != nil { + if err := os.WriteFile(filepath.Join(dir, "kubeletconfiguration.yaml"), patch, 0644); err != nil { t.Fatalf("could not write patch file: %v", err) } - output, err := applyKubeletConfigPatches(input, dir, ioutil.Discard) + output, err := applyKubeletConfigPatches(input, dir, io.Discard) if err != nil { t.Fatalf("could not apply patch: %v", err) } diff --git a/pkg/kubelet/certificate/bootstrap/bootstrap_test.go b/pkg/kubelet/certificate/bootstrap/bootstrap_test.go index 7d8ffbe9616..51808e8dd55 100644 --- a/pkg/kubelet/certificate/bootstrap/bootstrap_test.go +++ b/pkg/kubelet/certificate/bootstrap/bootstrap_test.go @@ -20,7 +20,6 @@ import ( "context" "fmt" "io" - "io/ioutil" "os" "reflect" "testing" @@ -101,11 +100,11 @@ users: client-key: mycertvalid.key `) - filevalid, err := ioutil.TempFile(fileDir, "kubeconfigvalid") + filevalid, err := os.CreateTemp(fileDir, "kubeconfigvalid") if err != nil { t.Fatal(err) } - ioutil.WriteFile(filevalid.Name(), testDataValid, os.FileMode(0755)) + os.WriteFile(filevalid.Name(), testDataValid, os.FileMode(0755)) testDataInvalid := []byte(` apiVersion: v1 @@ -141,11 +140,11 @@ users: client-key: mycertinvalid.key `) - fileinvalid, err := ioutil.TempFile(fileDir, "kubeconfiginvalid") + fileinvalid, err := os.CreateTemp(fileDir, "kubeconfiginvalid") if err != nil { t.Fatal(err) } - ioutil.WriteFile(fileinvalid.Name(), testDataInvalid, os.FileMode(0755)) + os.WriteFile(fileinvalid.Name(), testDataInvalid, os.FileMode(0755)) testDatabootstrap := []byte(` apiVersion: v1 @@ -178,13 +177,13 @@ users: user: token: mytoken-b `) - fileboot, err := ioutil.TempFile(fileDir, "kubeconfig") + fileboot, err := os.CreateTemp(fileDir, "kubeconfig") if err != nil { t.Fatal(err) } - ioutil.WriteFile(fileboot.Name(), testDatabootstrap, os.FileMode(0755)) + os.WriteFile(fileboot.Name(), testDatabootstrap, os.FileMode(0755)) - dir, err := ioutil.TempDir(fileDir, "k8s-test-certstore-current") + dir, err := os.MkdirTemp(fileDir, "k8s-test-certstore-current") if err != nil { t.Fatalf("Unable to create the test directory %q: %v", dir, err) } @@ -316,12 +315,12 @@ users: user: token: mytoken-b `) - f, err := ioutil.TempFile("", "kubeconfig") + f, err := os.CreateTemp("", "kubeconfig") if err != nil { t.Fatal(err) } defer os.Remove(f.Name()) - ioutil.WriteFile(f.Name(), testData, os.FileMode(0755)) + os.WriteFile(f.Name(), testData, os.FileMode(0755)) config, err := loadRESTClientConfig(f.Name()) if err != nil { diff --git a/pkg/kubelet/cm/cgroup_manager_linux.go b/pkg/kubelet/cm/cgroup_manager_linux.go index fa36d6bc1d7..4db702a100b 100644 --- a/pkg/kubelet/cm/cgroup_manager_linux.go +++ b/pkg/kubelet/cm/cgroup_manager_linux.go @@ -19,7 +19,6 @@ package cm import ( "errors" "fmt" - "io/ioutil" "os" "path" "path/filepath" @@ -320,7 +319,7 @@ func getCpuWeight(cpuShares *uint64) uint64 { // readUnifiedControllers reads the controllers available at the specified cgroup func readUnifiedControllers(path string) (sets.String, error) { - controllersFileContent, err := ioutil.ReadFile(filepath.Join(path, "cgroup.controllers")) + controllersFileContent, err := os.ReadFile(filepath.Join(path, "cgroup.controllers")) if err != nil { return nil, err } diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go index e15b759d3e1..df1ff861b84 100644 --- a/pkg/kubelet/cm/container_manager_linux.go +++ b/pkg/kubelet/cm/container_manager_linux.go @@ -22,7 +22,6 @@ package cm import ( "bytes" "fmt" - "io/ioutil" "os" "path" "strings" @@ -204,7 +203,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I if failSwapOn { // Check whether swap is enabled. The Kubelet does not support running with swap enabled. swapFile := "/proc/swaps" - swapData, err := ioutil.ReadFile(swapFile) + swapData, err := os.ReadFile(swapFile) if err != nil { if os.IsNotExist(err) { klog.InfoS("File does not exist, assuming that swap is disabled", "path", swapFile) diff --git a/pkg/kubelet/cm/container_manager_linux_test.go b/pkg/kubelet/cm/container_manager_linux_test.go index 01434ccb587..98eac191d73 100644 --- a/pkg/kubelet/cm/container_manager_linux_test.go +++ b/pkg/kubelet/cm/container_manager_linux_test.go @@ -21,7 +21,6 @@ package cm import ( "errors" - "io/ioutil" "os" "path" "testing" @@ -148,11 +147,11 @@ func TestSoftRequirementsValidationSuccess(t *testing.T) { t.Skip("skipping cgroup v1 test on a cgroup v2 system") } req := require.New(t) - tempDir, err := ioutil.TempDir("", "") + tempDir, err := os.MkdirTemp("", "") req.NoError(err) defer os.RemoveAll(tempDir) - req.NoError(ioutil.WriteFile(path.Join(tempDir, "cpu.cfs_period_us"), []byte("0"), os.ModePerm)) - req.NoError(ioutil.WriteFile(path.Join(tempDir, "cpu.cfs_quota_us"), []byte("0"), os.ModePerm)) + req.NoError(os.WriteFile(path.Join(tempDir, "cpu.cfs_period_us"), []byte("0"), os.ModePerm)) + req.NoError(os.WriteFile(path.Join(tempDir, "cpu.cfs_quota_us"), []byte("0"), os.ModePerm)) mountInt := mount.NewFakeMounter( []mount.MountPoint{ { diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go index 9b3e24fc3b2..b1d41abdc6b 100644 --- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go +++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go @@ -18,15 +18,13 @@ package cpumanager import ( "fmt" + "os" "reflect" "strconv" "strings" "testing" "time" - "io/ioutil" - "os" - cadvisorapi "github.com/google/cadvisor/info/v1" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" @@ -629,7 +627,7 @@ func TestCPUManagerGenerate(t *testing.T) { if testCase.isTopologyBroken { machineInfo = &cadvisorapi.MachineInfo{} } - sDir, err := ioutil.TempDir("/tmp/", "cpu_manager_test") + sDir, err := os.MkdirTemp("/tmp/", "cpu_manager_test") if err != nil { t.Errorf("cannot create state file: %s", err.Error()) } @@ -1349,7 +1347,7 @@ func TestCPUManagerHandlePolicyOptions(t *testing.T) { t.Run(testCase.description, func(t *testing.T) { machineInfo := &mockedMachineInfo nodeAllocatableReservation := v1.ResourceList{} - sDir, err := ioutil.TempDir("/tmp/", "cpu_manager_test") + sDir, err := os.MkdirTemp("/tmp/", "cpu_manager_test") if err != nil { t.Errorf("cannot create state file: %s", err.Error()) } diff --git a/pkg/kubelet/cm/cpumanager/state/state_checkpoint_test.go b/pkg/kubelet/cm/cpumanager/state/state_checkpoint_test.go index 65dc21f5d12..6d4b0184010 100644 --- a/pkg/kubelet/cm/cpumanager/state/state_checkpoint_test.go +++ b/pkg/kubelet/cm/cpumanager/state/state_checkpoint_test.go @@ -17,7 +17,6 @@ limitations under the License. package state import ( - "io/ioutil" "os" "reflect" "strings" @@ -201,7 +200,7 @@ func TestCheckpointStateRestore(t *testing.T) { } // create temp dir - testingDir, err := ioutil.TempDir("", "cpumanager_state_test") + testingDir, err := os.MkdirTemp("", "cpumanager_state_test") require.NoError(t, err) defer os.RemoveAll(testingDir) // create checkpoint manager for testing @@ -258,7 +257,7 @@ func TestCheckpointStateStore(t *testing.T) { } // create temp dir - testingDir, err := ioutil.TempDir("", "cpumanager_state_test") + testingDir, err := os.MkdirTemp("", "cpumanager_state_test") if err != nil { t.Fatal(err) } @@ -331,7 +330,7 @@ func TestCheckpointStateHelpers(t *testing.T) { } // create temp dir - testingDir, err := ioutil.TempDir("", "cpumanager_state_test") + testingDir, err := os.MkdirTemp("", "cpumanager_state_test") if err != nil { t.Fatal(err) } @@ -390,7 +389,7 @@ func TestCheckpointStateClear(t *testing.T) { for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { // create temp dir - testingDir, err := ioutil.TempDir("", "cpumanager_state_test") + testingDir, err := os.MkdirTemp("", "cpumanager_state_test") if err != nil { t.Fatal(err) } diff --git a/pkg/kubelet/cm/devicemanager/manager_test.go b/pkg/kubelet/cm/devicemanager/manager_test.go index 22c1c6ec5af..ec03d8b5eae 100644 --- a/pkg/kubelet/cm/devicemanager/manager_test.go +++ b/pkg/kubelet/cm/devicemanager/manager_test.go @@ -18,7 +18,6 @@ package devicemanager import ( "fmt" - "io/ioutil" "os" "path/filepath" "reflect" @@ -78,7 +77,7 @@ func (m *wrappedManagerImpl) PluginListAndWatchReceiver(r string, resp *pluginap } func tmpSocketDir() (socketDir, socketName, pluginSocketName string, err error) { - socketDir, err = ioutil.TempDir("", "device_plugin") + socketDir, err = os.MkdirTemp("", "device_plugin") if err != nil { return } @@ -592,7 +591,7 @@ func TestCheckpoint(t *testing.T) { resourceName2 := "domain2.com/resource2" resourceName3 := "domain2.com/resource3" as := assert.New(t) - tmpDir, err := ioutil.TempDir("", "checkpoint") + tmpDir, err := os.MkdirTemp("", "checkpoint") as.Nil(err) defer os.RemoveAll(tmpDir) ckm, err := checkpointmanager.NewCheckpointManager(tmpDir) @@ -910,7 +909,7 @@ func TestPodContainerDeviceAllocation(t *testing.T) { podsStub := activePodsStub{ activePods: []*v1.Pod{}, } - tmpDir, err := ioutil.TempDir("", "checkpoint") + tmpDir, err := os.MkdirTemp("", "checkpoint") as.Nil(err) defer os.RemoveAll(tmpDir) testManager, err := getTestManager(tmpDir, podsStub.getActivePods, testResources) @@ -1009,7 +1008,7 @@ func TestGetDeviceRunContainerOptions(t *testing.T) { } as := require.New(t) - tmpDir, err := ioutil.TempDir("", "checkpoint") + tmpDir, err := os.MkdirTemp("", "checkpoint") as.Nil(err) defer os.RemoveAll(tmpDir) @@ -1071,7 +1070,7 @@ func TestInitContainerDeviceAllocation(t *testing.T) { podsStub := activePodsStub{ activePods: []*v1.Pod{}, } - tmpDir, err := ioutil.TempDir("", "checkpoint") + tmpDir, err := os.MkdirTemp("", "checkpoint") as.Nil(err) defer os.RemoveAll(tmpDir) @@ -1162,7 +1161,7 @@ func TestUpdatePluginResources(t *testing.T) { as := assert.New(t) monitorCallback := func(resourceName string, devices []pluginapi.Device) {} - tmpDir, err := ioutil.TempDir("", "checkpoint") + tmpDir, err := os.MkdirTemp("", "checkpoint") as.Nil(err) defer os.RemoveAll(tmpDir) @@ -1220,7 +1219,7 @@ func TestDevicePreStartContainer(t *testing.T) { podsStub := activePodsStub{ activePods: []*v1.Pod{}, } - tmpDir, err := ioutil.TempDir("", "checkpoint") + tmpDir, err := os.MkdirTemp("", "checkpoint") as.Nil(err) defer os.RemoveAll(tmpDir) @@ -1282,7 +1281,7 @@ func TestDevicePreStartContainer(t *testing.T) { func TestResetExtendedResource(t *testing.T) { as := assert.New(t) - tmpDir, err := ioutil.TempDir("", "checkpoint") + tmpDir, err := os.MkdirTemp("", "checkpoint") as.Nil(err) defer os.RemoveAll(tmpDir) ckm, err := checkpointmanager.NewCheckpointManager(tmpDir) @@ -1392,7 +1391,7 @@ func TestReadPreNUMACheckpoint(t *testing.T) { require.NoError(t, err) defer os.RemoveAll(socketDir) - err = ioutil.WriteFile(filepath.Join(socketDir, deviceManagerCheckpointFilename), []byte(oldCheckpoint), 0644) + err = os.WriteFile(filepath.Join(socketDir, deviceManagerCheckpointFilename), []byte(oldCheckpoint), 0644) require.NoError(t, err) topologyStore := topologymanager.NewFakeManager() diff --git a/pkg/kubelet/cm/memorymanager/memory_manager_test.go b/pkg/kubelet/cm/memorymanager/memory_manager_test.go index 68cf93f60c0..0e76ee22b0b 100644 --- a/pkg/kubelet/cm/memorymanager/memory_manager_test.go +++ b/pkg/kubelet/cm/memorymanager/memory_manager_test.go @@ -18,7 +18,6 @@ package memorymanager import ( "fmt" - "io/ioutil" "os" "reflect" "strings" @@ -1982,7 +1981,7 @@ func TestNewManager(t *testing.T) { } for _, testCase := range testCases { t.Run(testCase.description, func(t *testing.T) { - stateFileDirectory, err := ioutil.TempDir("/tmp/", "memory_manager_tests") + stateFileDirectory, err := os.MkdirTemp("/tmp/", "memory_manager_tests") if err != nil { t.Errorf("Cannot create state file: %s", err.Error()) } diff --git a/pkg/kubelet/cm/memorymanager/state/state_checkpoint_test.go b/pkg/kubelet/cm/memorymanager/state/state_checkpoint_test.go index d37475dcca2..29b6ca94367 100644 --- a/pkg/kubelet/cm/memorymanager/state/state_checkpoint_test.go +++ b/pkg/kubelet/cm/memorymanager/state/state_checkpoint_test.go @@ -17,7 +17,6 @@ limitations under the License. package state import ( - "io/ioutil" "os" "strings" "testing" @@ -111,7 +110,7 @@ func TestCheckpointStateRestore(t *testing.T) { } // create temp dir - testingDir, err := ioutil.TempDir("", "memorymanager_state_test") + testingDir, err := os.MkdirTemp("", "memorymanager_state_test") if err != nil { t.Fatal(err) } @@ -174,7 +173,7 @@ func TestCheckpointStateStore(t *testing.T) { } // create temp dir - testingDir, err := ioutil.TempDir("", "memorymanager_state_test") + testingDir, err := os.MkdirTemp("", "memorymanager_state_test") if err != nil { t.Fatal(err) } @@ -293,7 +292,7 @@ func TestCheckpointStateHelpers(t *testing.T) { } // create temp dir - testingDir, err := ioutil.TempDir("", "memorymanager_state_test") + testingDir, err := os.MkdirTemp("", "memorymanager_state_test") if err != nil { t.Fatal(err) } @@ -362,7 +361,7 @@ func TestCheckpointStateClear(t *testing.T) { } // create temp dir - testingDir, err := ioutil.TempDir("", "memorymanager_state_test") + testingDir, err := os.MkdirTemp("", "memorymanager_state_test") if err != nil { t.Fatal(err) } diff --git a/pkg/kubelet/config/file_test.go b/pkg/kubelet/config/file_test.go index 36c9f210805..e0b7251788f 100644 --- a/pkg/kubelet/config/file_test.go +++ b/pkg/kubelet/config/file_test.go @@ -17,7 +17,6 @@ limitations under the License. package config import ( - "io/ioutil" "os" "path/filepath" "testing" @@ -35,7 +34,7 @@ func TestExtractFromBadDataFile(t *testing.T) { defer removeAll(dirName, t) fileName := filepath.Join(dirName, "test_pod_config") - err = ioutil.WriteFile(fileName, []byte{1, 2, 3}, 0555) + err = os.WriteFile(fileName, []byte{1, 2, 3}, 0555) if err != nil { t.Fatalf("unable to write test file %#v", err) } @@ -74,7 +73,7 @@ func TestExtractFromEmptyDir(t *testing.T) { } func mkTempDir(prefix string) (string, error) { - return ioutil.TempDir(os.TempDir(), prefix) + return os.MkdirTemp(os.TempDir(), prefix) } func removeAll(dir string, t *testing.T) { diff --git a/pkg/kubelet/container/os.go b/pkg/kubelet/container/os.go index dae825b957b..e0642a0f1cb 100644 --- a/pkg/kubelet/container/os.go +++ b/pkg/kubelet/container/os.go @@ -17,7 +17,6 @@ limitations under the License. package container import ( - "io/ioutil" "os" "path/filepath" "time" @@ -36,7 +35,7 @@ type OSInterface interface { Hostname() (name string, err error) Chtimes(path string, atime time.Time, mtime time.Time) error Pipe() (r *os.File, w *os.File, err error) - ReadDir(dirname string) ([]os.FileInfo, error) + ReadDir(dirname string) ([]os.DirEntry, error) Glob(pattern string) ([]string, error) Open(name string) (*os.File, error) OpenFile(name string, flag int, perm os.FileMode) (*os.File, error) @@ -98,9 +97,9 @@ func (RealOS) Pipe() (r *os.File, w *os.File, err error) { return os.Pipe() } -// ReadDir will call ioutil.ReadDir to return the files under the directory. -func (RealOS) ReadDir(dirname string) ([]os.FileInfo, error) { - return ioutil.ReadDir(dirname) +// ReadDir will call os.ReadDir to return the files under the directory. +func (RealOS) ReadDir(dirname string) ([]os.DirEntry, error) { + return os.ReadDir(dirname) } // Glob will call filepath.Glob to return the names of all files matching diff --git a/pkg/kubelet/container/testing/mockdirentry.go b/pkg/kubelet/container/testing/mockdirentry.go new file mode 100644 index 00000000000..8e76279d0a8 --- /dev/null +++ b/pkg/kubelet/container/testing/mockdirentry.go @@ -0,0 +1,107 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by MockGen. +// Source: os (interfaces: DirEntry) + +package testing + +import ( + fs "io/fs" + reflect "reflect" + + gomock "github.com/golang/mock/gomock" +) + +// MockDirEntry is a mock of DirEntry interface. +type MockDirEntry struct { + ctrl *gomock.Controller + recorder *MockDirEntryMockRecorder +} + +// MockDirEntryMockRecorder is the mock recorder for MockDirEntry. +type MockDirEntryMockRecorder struct { + mock *MockDirEntry +} + +// NewMockDirEntry creates a new mock instance. +func NewMockDirEntry(ctrl *gomock.Controller) *MockDirEntry { + mock := &MockDirEntry{ctrl: ctrl} + mock.recorder = &MockDirEntryMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockDirEntry) EXPECT() *MockDirEntryMockRecorder { + return m.recorder +} + +// Info mocks base method. +func (m *MockDirEntry) Info() (fs.FileInfo, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Info") + ret0, _ := ret[0].(fs.FileInfo) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Info indicates an expected call of Info. +func (mr *MockDirEntryMockRecorder) Info() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Info", reflect.TypeOf((*MockDirEntry)(nil).Info)) +} + +// IsDir mocks base method. +func (m *MockDirEntry) IsDir() bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "IsDir") + ret0, _ := ret[0].(bool) + return ret0 +} + +// IsDir indicates an expected call of IsDir. +func (mr *MockDirEntryMockRecorder) IsDir() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsDir", reflect.TypeOf((*MockDirEntry)(nil).IsDir)) +} + +// Name mocks base method. +func (m *MockDirEntry) Name() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Name") + ret0, _ := ret[0].(string) + return ret0 +} + +// Name indicates an expected call of Name. +func (mr *MockDirEntryMockRecorder) Name() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockDirEntry)(nil).Name)) +} + +// Type mocks base method. +func (m *MockDirEntry) Type() fs.FileMode { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Type") + ret0, _ := ret[0].(fs.FileMode) + return ret0 +} + +// Type indicates an expected call of Type. +func (mr *MockDirEntryMockRecorder) Type() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Type", reflect.TypeOf((*MockDirEntry)(nil).Type)) +} diff --git a/pkg/kubelet/container/testing/mockfileinfo.go b/pkg/kubelet/container/testing/mockfileinfo.go deleted file mode 100644 index 1470da45a80..00000000000 --- a/pkg/kubelet/container/testing/mockfileinfo.go +++ /dev/null @@ -1,109 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Generated via: mockgen os FileInfo -// Edited to include required boilerplate -// Source: os (interfaces: FileInfo) - -package testing - -import ( - os "os" - time "time" - - gomock "github.com/golang/mock/gomock" -) - -// Mock of FileInfo interface -type MockFileInfo struct { - ctrl *gomock.Controller - recorder *_MockFileInfoRecorder -} - -// Recorder for MockFileInfo (not exported) -type _MockFileInfoRecorder struct { - mock *MockFileInfo -} - -func NewMockFileInfo(ctrl *gomock.Controller) *MockFileInfo { - mock := &MockFileInfo{ctrl: ctrl} - mock.recorder = &_MockFileInfoRecorder{mock} - return mock -} - -func (_m *MockFileInfo) EXPECT() *_MockFileInfoRecorder { - return _m.recorder -} - -func (_m *MockFileInfo) IsDir() bool { - ret := _m.ctrl.Call(_m, "IsDir") - ret0, _ := ret[0].(bool) - return ret0 -} - -func (_mr *_MockFileInfoRecorder) IsDir() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "IsDir") -} - -func (_m *MockFileInfo) ModTime() time.Time { - ret := _m.ctrl.Call(_m, "ModTime") - ret0, _ := ret[0].(time.Time) - return ret0 -} - -func (_mr *_MockFileInfoRecorder) ModTime() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "ModTime") -} - -func (_m *MockFileInfo) Mode() os.FileMode { - ret := _m.ctrl.Call(_m, "Mode") - ret0, _ := ret[0].(os.FileMode) - return ret0 -} - -func (_mr *_MockFileInfoRecorder) Mode() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "Mode") -} - -func (_m *MockFileInfo) Name() string { - ret := _m.ctrl.Call(_m, "Name") - ret0, _ := ret[0].(string) - return ret0 -} - -func (_mr *_MockFileInfoRecorder) Name() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "Name") -} - -func (_m *MockFileInfo) Size() int64 { - ret := _m.ctrl.Call(_m, "Size") - ret0, _ := ret[0].(int64) - return ret0 -} - -func (_mr *_MockFileInfoRecorder) Size() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "Size") -} - -func (_m *MockFileInfo) Sys() interface{} { - ret := _m.ctrl.Call(_m, "Sys") - ret0, _ := ret[0].(interface{}) - return ret0 -} - -func (_mr *_MockFileInfoRecorder) Sys() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "Sys") -} diff --git a/pkg/kubelet/container/testing/os.go b/pkg/kubelet/container/testing/os.go index 16d344ba06d..c1454161aed 100644 --- a/pkg/kubelet/container/testing/os.go +++ b/pkg/kubelet/container/testing/os.go @@ -27,7 +27,7 @@ import ( // of the real call. type FakeOS struct { StatFn func(string) (os.FileInfo, error) - ReadDirFn func(string) ([]os.FileInfo, error) + ReadDirFn func(string) ([]os.DirEntry, error) MkdirAllFn func(string, os.FileMode) error SymlinkFn func(string, string) error GlobFn func(string, string) bool @@ -109,7 +109,7 @@ func (FakeOS) Pipe() (r *os.File, w *os.File, err error) { } // ReadDir is a fake call that returns the files under the directory. -func (f *FakeOS) ReadDir(dirname string) ([]os.FileInfo, error) { +func (f *FakeOS) ReadDir(dirname string) ([]os.DirEntry, error) { if f.ReadDirFn != nil { return f.ReadDirFn(dirname) } diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index 3ca002f458e..6408342343e 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -21,7 +21,6 @@ import ( "context" "fmt" "io" - "io/ioutil" "net/http" "net/url" "os" @@ -344,12 +343,12 @@ func ensureHostsFile(fileName string, hostIPs []string, hostName, hostDomainName hostsFileContent = managedHostsFileContent(hostIPs, hostName, hostDomainName, hostAliases) } - return ioutil.WriteFile(fileName, hostsFileContent, 0644) + return os.WriteFile(fileName, hostsFileContent, 0644) } // nodeHostsFileContent reads the content of node's hosts file. func nodeHostsFileContent(hostsFilePath string, hostAliases []v1.HostAlias) ([]byte, error) { - hostsFileContent, err := ioutil.ReadFile(hostsFilePath) + hostsFileContent, err := os.ReadFile(hostsFilePath) if err != nil { return nil, err } diff --git a/pkg/kubelet/kubelet_pods_test.go b/pkg/kubelet/kubelet_pods_test.go index 836ef397548..5e4e9797b5d 100644 --- a/pkg/kubelet/kubelet_pods_test.go +++ b/pkg/kubelet/kubelet_pods_test.go @@ -19,7 +19,6 @@ package kubelet import ( "errors" "fmt" - "io/ioutil" "net" "os" "path/filepath" @@ -182,11 +181,11 @@ fe00::2 ip6-allrouters // writeHostsFile will write a hosts file into a temporary dir, and return that dir. // Caller is responsible for deleting the dir and its contents. func writeHostsFile(filename string, cfg string) (string, error) { - tmpdir, err := ioutil.TempDir("", "kubelet=kubelet_pods_test.go=") + tmpdir, err := os.MkdirTemp("", "kubelet=kubelet_pods_test.go=") if err != nil { return "", err } - return tmpdir, ioutil.WriteFile(filepath.Join(tmpdir, filename), []byte(cfg), 0644) + return tmpdir, os.WriteFile(filepath.Join(tmpdir, filename), []byte(cfg), 0644) } func TestManagedHostsFileContent(t *testing.T) { diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 9995f1e04cc..980f6319e84 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -19,7 +19,6 @@ package kubelet import ( "context" "fmt" - "io/ioutil" "os" "path/filepath" "reflect" @@ -184,7 +183,7 @@ func newTestKubeletWithImageList( kubelet.nodeName = types.NodeName(testKubeletHostname) kubelet.runtimeState = newRuntimeState(maxWaitForContainerRuntime) kubelet.runtimeState.setNetworkState(nil) - if tempDir, err := ioutil.TempDir("", "kubelet_test."); err != nil { + if tempDir, err := os.MkdirTemp("", "kubelet_test."); err != nil { t.Fatalf("can't make a temp rootdir: %v", err) } else { kubelet.rootDirectory = tempDir diff --git a/pkg/kubelet/kubelet_volumes_linux_test.go b/pkg/kubelet/kubelet_volumes_linux_test.go index 38c5e0d5616..67836a044bc 100644 --- a/pkg/kubelet/kubelet_volumes_linux_test.go +++ b/pkg/kubelet/kubelet_volumes_linux_test.go @@ -21,7 +21,6 @@ package kubelet import ( "fmt" - "io/ioutil" "os" "path/filepath" "testing" @@ -146,7 +145,7 @@ func TestCleanupOrphanedPodDirs(t *testing.T) { if err := os.MkdirAll(volumePath, 0750); err != nil { return err } - return ioutil.WriteFile(filepath.Join(volumePath, "test.txt"), []byte("test1"), 0640) + return os.WriteFile(filepath.Join(volumePath, "test.txt"), []byte("test1"), 0640) }, validateFunc: func(kubelet *Kubelet) error { podDir := kubelet.getPodDir("pod1uid") @@ -160,7 +159,7 @@ func TestCleanupOrphanedPodDirs(t *testing.T) { if err := os.MkdirAll(subPath, 0750); err != nil { return err } - return ioutil.WriteFile(filepath.Join(subPath, "test.txt"), []byte("test1"), 0640) + return os.WriteFile(filepath.Join(subPath, "test.txt"), []byte("test1"), 0640) }, validateFunc: func(kubelet *Kubelet) error { podDir := kubelet.getPodDir("pod1uid") diff --git a/pkg/kubelet/kubeletconfig/util/files/files.go b/pkg/kubelet/kubeletconfig/util/files/files.go index 6dfbe3840cd..5641002532a 100644 --- a/pkg/kubelet/kubeletconfig/util/files/files.go +++ b/pkg/kubelet/kubeletconfig/util/files/files.go @@ -91,7 +91,7 @@ func WriteTmpFile(fs utilfs.Filesystem, path string, data []byte) (tmpPath strin } }() - // Name() will be an absolute path when using utilfs.DefaultFS, because ioutil.TempFile passes + // Name() will be an absolute path when using utilfs.DefaultFS, because os.CreateTemp passes // an absolute path to os.Open, and we ensure similar behavior in utilfs.FakeFS for testing. tmpPath = tmpFile.Name() diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container.go b/pkg/kubelet/kuberuntime/kuberuntime_container.go index eaa85c39f13..00f24ef4300 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container.go @@ -405,7 +405,7 @@ func (m *kubeGenericRuntimeManager) makeMounts(opts *kubecontainer.RunContainerO } else { fs.Close() - // Chmod is needed because ioutil.WriteFile() ends up calling + // Chmod is needed because os.WriteFile() ends up calling // open(2) to create the file, so the final mode used is "mode & // ~umask". But we want to make sure the specified mode is used // in the file no matter what the umask is. diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_test.go b/pkg/kubelet/kuberuntime/kuberuntime_container_test.go index 115b0a6f676..e92aad2a49f 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_test.go @@ -17,7 +17,6 @@ limitations under the License. package kuberuntime import ( - "io/ioutil" "os" "path/filepath" "regexp" @@ -440,11 +439,11 @@ func TestRestartCountByLogDir(t *testing.T) { restartCount: 8, }, } { - tempDirPath, err := ioutil.TempDir("", "test-restart-count-") + tempDirPath, err := os.MkdirTemp("", "test-restart-count-") assert.NoError(t, err, "create tempdir error") defer os.RemoveAll(tempDirPath) for _, filename := range tc.filenames { - err = ioutil.WriteFile(filepath.Join(tempDirPath, filename), []byte("a log line"), 0600) + err = os.WriteFile(filepath.Join(tempDirPath, filename), []byte("a log line"), 0600) assert.NoError(t, err, "could not write log file") } count, _ := calcRestartCountByLogDir(tempDirPath) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_gc_test.go b/pkg/kubelet/kuberuntime/kuberuntime_gc_test.go index 5ffe2bf06e6..0434a253f7e 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_gc_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_gc_test.go @@ -438,14 +438,14 @@ func TestPodLogDirectoryGC(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() - fakeOS.ReadDirFn = func(string) ([]os.FileInfo, error) { - var fileInfos []os.FileInfo + fakeOS.ReadDirFn = func(string) ([]os.DirEntry, error) { + var dirEntries []os.DirEntry for _, file := range files { - mockFI := containertest.NewMockFileInfo(ctrl) - mockFI.EXPECT().Name().Return(file) - fileInfos = append(fileInfos, mockFI) + mockDE := containertest.NewMockDirEntry(ctrl) + mockDE.EXPECT().Name().Return(file) + dirEntries = append(dirEntries, mockDE) } - return fileInfos, nil + return dirEntries, nil } // allSourcesReady == true, pod log directories without corresponding pod should be removed. diff --git a/pkg/kubelet/kuberuntime/logs/logs_test.go b/pkg/kubelet/kuberuntime/logs/logs_test.go index 5f530699ced..383212f7b83 100644 --- a/pkg/kubelet/kuberuntime/logs/logs_test.go +++ b/pkg/kubelet/kuberuntime/logs/logs_test.go @@ -19,16 +19,16 @@ package logs import ( "bytes" "context" - "io/ioutil" - apitesting "k8s.io/cri-api/pkg/apis/testing" - "k8s.io/utils/pointer" "os" "testing" "time" + v1 "k8s.io/api/core/v1" + apitesting "k8s.io/cri-api/pkg/apis/testing" + "k8s.io/utils/pointer" + "github.com/stretchr/testify/assert" - "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" ) @@ -72,7 +72,7 @@ func TestLogOptions(t *testing.T) { } func TestReadLogs(t *testing.T) { - file, err := ioutil.TempFile("", "TestFollowLogs") + file, err := os.CreateTemp("", "TestFollowLogs") if err != nil { t.Fatalf("unable to create temp file") } diff --git a/pkg/kubelet/lifecycle/handlers_test.go b/pkg/kubelet/lifecycle/handlers_test.go index 96a36b5b205..53ebeb0f8eb 100644 --- a/pkg/kubelet/lifecycle/handlers_test.go +++ b/pkg/kubelet/lifecycle/handlers_test.go @@ -18,7 +18,7 @@ package lifecycle import ( "fmt" - "io/ioutil" + "io" "net/http" "reflect" "strings" @@ -225,7 +225,7 @@ func TestRunHandlerExecFailure(t *testing.T) { func TestRunHandlerHttpFailure(t *testing.T) { expectedErr := fmt.Errorf("fake http error") expectedResp := http.Response{ - Body: ioutil.NopCloser(strings.NewReader(expectedErr.Error())), + Body: io.NopCloser(strings.NewReader(expectedErr.Error())), } fakeHTTPGetter := fakeHTTP{err: expectedErr, resp: &expectedResp} handlerRunner := NewHandlerRunner(&fakeHTTPGetter, &fakeContainerCommandRunner{}, nil) diff --git a/pkg/kubelet/logs/container_log_manager_test.go b/pkg/kubelet/logs/container_log_manager_test.go index 484ce4956ea..4f5dc8eb18c 100644 --- a/pkg/kubelet/logs/container_log_manager_test.go +++ b/pkg/kubelet/logs/container_log_manager_test.go @@ -20,7 +20,6 @@ import ( "bytes" "fmt" "io" - "io/ioutil" "os" "path/filepath" "testing" @@ -36,7 +35,7 @@ import ( ) func TestGetAllLogs(t *testing.T) { - dir, err := ioutil.TempDir("", "test-get-all-logs") + dir, err := os.MkdirTemp("", "test-get-all-logs") require.NoError(t, err) defer os.RemoveAll(dir) testLogs := []string{ @@ -75,7 +74,7 @@ func TestGetAllLogs(t *testing.T) { } func TestRotateLogs(t *testing.T) { - dir, err := ioutil.TempDir("", "test-rotate-logs") + dir, err := os.MkdirTemp("", "test-rotate-logs") require.NoError(t, err) defer os.RemoveAll(dir) @@ -162,7 +161,7 @@ func TestRotateLogs(t *testing.T) { } func TestClean(t *testing.T) { - dir, err := ioutil.TempDir("", "test-clean") + dir, err := os.MkdirTemp("", "test-clean") require.NoError(t, err) defer os.RemoveAll(dir) @@ -233,7 +232,7 @@ func TestClean(t *testing.T) { } func TestCleanupUnusedLog(t *testing.T) { - dir, err := ioutil.TempDir("", "test-cleanup-unused-log") + dir, err := os.MkdirTemp("", "test-cleanup-unused-log") require.NoError(t, err) defer os.RemoveAll(dir) @@ -285,7 +284,7 @@ func TestRemoveExcessLog(t *testing.T) { }, } { t.Logf("TestCase %q", desc) - dir, err := ioutil.TempDir("", "test-remove-excess-log") + dir, err := os.MkdirTemp("", "test-remove-excess-log") require.NoError(t, err) defer os.RemoveAll(dir) @@ -319,11 +318,11 @@ func TestRemoveExcessLog(t *testing.T) { } func TestCompressLog(t *testing.T) { - dir, err := ioutil.TempDir("", "test-compress-log") + dir, err := os.MkdirTemp("", "test-compress-log") require.NoError(t, err) defer os.RemoveAll(dir) - testFile, err := ioutil.TempFile(dir, "test-rotate-latest-log") + testFile, err := os.CreateTemp(dir, "test-rotate-latest-log") require.NoError(t, err) defer testFile.Close() testContent := "test log content" @@ -350,7 +349,7 @@ func TestCompressLog(t *testing.T) { } func TestRotateLatestLog(t *testing.T) { - dir, err := ioutil.TempDir("", "test-rotate-latest-log") + dir, err := os.MkdirTemp("", "test-rotate-latest-log") require.NoError(t, err) defer os.RemoveAll(dir) @@ -387,7 +386,7 @@ func TestRotateLatestLog(t *testing.T) { if test.runtimeError != nil { f.InjectError("ReopenContainerLog", test.runtimeError) } - testFile, err := ioutil.TempFile(dir, "test-rotate-latest-log") + testFile, err := os.CreateTemp(dir, "test-rotate-latest-log") require.NoError(t, err) defer testFile.Close() testLog := testFile.Name() diff --git a/pkg/kubelet/network/dns/dns.go b/pkg/kubelet/network/dns/dns.go index 308eb102ea6..49c82a27d03 100644 --- a/pkg/kubelet/network/dns/dns.go +++ b/pkg/kubelet/network/dns/dns.go @@ -19,13 +19,12 @@ package dns import ( "fmt" "io" - "io/ioutil" "net" "os" "path/filepath" "strings" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" utilerrors "k8s.io/apimachinery/pkg/util/errors" utilvalidation "k8s.io/apimachinery/pkg/util/validation" utilfeature "k8s.io/apiserver/pkg/util/feature" @@ -455,7 +454,7 @@ func (c *Configurer) SetupDNSinContainerizedMounter(mounterPath string) { } } } - if err := ioutil.WriteFile(resolvePath, []byte(dnsString), 0600); err != nil { + if err := os.WriteFile(resolvePath, []byte(dnsString), 0600); err != nil { klog.ErrorS(err, "Could not write dns nameserver in the file", "path", resolvePath) } } diff --git a/pkg/kubelet/network/dns/dns_test.go b/pkg/kubelet/network/dns/dns_test.go index 261de55c9b4..bd8783b0b9b 100644 --- a/pkg/kubelet/network/dns/dns_test.go +++ b/pkg/kubelet/network/dns/dns_test.go @@ -18,7 +18,6 @@ package dns import ( "fmt" - "io/ioutil" "net" "os" "strconv" @@ -596,7 +595,7 @@ func TestGetPodDNSCustom(t *testing.T) { } resolvConfContent := []byte(fmt.Sprintf("nameserver %s\nsearch %s\n", testHostNameserver, testHostDomain)) - tmpfile, err := ioutil.TempFile("", "tmpResolvConf") + tmpfile, err := os.CreateTemp("", "tmpResolvConf") if err != nil { t.Fatal(err) } diff --git a/pkg/kubelet/nodeshutdown/storage.go b/pkg/kubelet/nodeshutdown/storage.go index fbf1ea90664..4a3fb68245c 100644 --- a/pkg/kubelet/nodeshutdown/storage.go +++ b/pkg/kubelet/nodeshutdown/storage.go @@ -19,7 +19,6 @@ package nodeshutdown import ( "encoding/json" "io" - "io/ioutil" "os" "path/filepath" "time" @@ -67,7 +66,7 @@ type state struct { // atomicWrite atomically writes data to a file specified by filename. func atomicWrite(filename string, data []byte, perm os.FileMode) error { - f, err := ioutil.TempFile(filepath.Dir(filename), ".tmp-"+filepath.Base(filename)) + f, err := os.CreateTemp(filepath.Dir(filename), ".tmp-"+filepath.Base(filename)) if err != nil { return err } diff --git a/pkg/kubelet/nodeshutdown/systemd/inhibit_linux.go b/pkg/kubelet/nodeshutdown/systemd/inhibit_linux.go index 69919db9b02..2ef961660ab 100644 --- a/pkg/kubelet/nodeshutdown/systemd/inhibit_linux.go +++ b/pkg/kubelet/nodeshutdown/systemd/inhibit_linux.go @@ -21,7 +21,6 @@ package systemd import ( "fmt" - "io/ioutil" "os" "path/filepath" "syscall" @@ -193,7 +192,7 @@ InhibitDelayMaxSec=%.0f `, inhibitDelayMax.Seconds()) logindOverridePath := filepath.Join(logindConfigDirectory, kubeletLogindConf) - if err := ioutil.WriteFile(logindOverridePath, []byte(inhibitOverride), 0644); err != nil { + if err := os.WriteFile(logindOverridePath, []byte(inhibitOverride), 0644); err != nil { return fmt.Errorf("failed writing logind shutdown inhibit override file %v: %w", logindOverridePath, err) } diff --git a/pkg/kubelet/pluginmanager/operationexecutor/operation_executor_test.go b/pkg/kubelet/pluginmanager/operationexecutor/operation_executor_test.go index b63a56a1211..f57ea378743 100644 --- a/pkg/kubelet/pluginmanager/operationexecutor/operation_executor_test.go +++ b/pkg/kubelet/pluginmanager/operationexecutor/operation_executor_test.go @@ -18,7 +18,7 @@ package operationexecutor import ( "fmt" - "io/ioutil" + "os" "strconv" "testing" "time" @@ -35,7 +35,7 @@ var _ OperationGenerator = &fakeOperationGenerator{} var socketDir string func init() { - d, err := ioutil.TempDir("", "operation_executor_test") + d, err := os.MkdirTemp("", "operation_executor_test") if err != nil { panic(fmt.Sprintf("Could not create a temp directory: %s", d)) } diff --git a/pkg/kubelet/pluginmanager/plugin_manager_test.go b/pkg/kubelet/pluginmanager/plugin_manager_test.go index 29c82edc7d9..8a21c408f44 100644 --- a/pkg/kubelet/pluginmanager/plugin_manager_test.go +++ b/pkg/kubelet/pluginmanager/plugin_manager_test.go @@ -18,7 +18,6 @@ package pluginmanager import ( "fmt" - "io/ioutil" "os" "path/filepath" "reflect" @@ -81,7 +80,7 @@ func (f *fakePluginHandler) Reset() { } func init() { - d, err := ioutil.TempDir("", "plugin_manager_test") + d, err := os.MkdirTemp("", "plugin_manager_test") if err != nil { panic(fmt.Sprintf("Could not create a temp directory: %s", d)) } diff --git a/pkg/kubelet/pluginmanager/pluginwatcher/plugin_watcher_test.go b/pkg/kubelet/pluginmanager/pluginwatcher/plugin_watcher_test.go index c323a16c9bc..1fa883cdb99 100644 --- a/pkg/kubelet/pluginmanager/pluginwatcher/plugin_watcher_test.go +++ b/pkg/kubelet/pluginmanager/pluginwatcher/plugin_watcher_test.go @@ -19,7 +19,6 @@ package pluginwatcher import ( "flag" "fmt" - "io/ioutil" "os" "sync" "testing" @@ -46,7 +45,7 @@ func init() { flag.StringVar(&logLevel, "logLevel", "6", "test") flag.Lookup("v").Value.Set(logLevel) - d, err := ioutil.TempDir("", "plugin_test") + d, err := os.MkdirTemp("", "plugin_test") if err != nil { panic(fmt.Sprintf("Could not create a temp directory: %s", d)) } diff --git a/pkg/kubelet/pluginmanager/reconciler/reconciler_test.go b/pkg/kubelet/pluginmanager/reconciler/reconciler_test.go index 7ccc133189e..56c9c6dd80d 100644 --- a/pkg/kubelet/pluginmanager/reconciler/reconciler_test.go +++ b/pkg/kubelet/pluginmanager/reconciler/reconciler_test.go @@ -18,7 +18,6 @@ package reconciler import ( "fmt" - "io/ioutil" "os" "testing" "time" @@ -44,7 +43,7 @@ var ( ) func init() { - d, err := ioutil.TempDir("", "reconciler_test") + d, err := os.MkdirTemp("", "reconciler_test") if err != nil { panic(fmt.Sprintf("Could not create a temp directory: %s", d)) } diff --git a/pkg/kubelet/server/server_test.go b/pkg/kubelet/server/server_test.go index 521716aa59c..bab90f11d77 100644 --- a/pkg/kubelet/server/server_test.go +++ b/pkg/kubelet/server/server_test.go @@ -21,7 +21,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "net" "net/http" "net/http/httptest" @@ -432,7 +431,7 @@ func TestServeRunInContainer(t *testing.T) { } defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { // copying the response body did not work t.Errorf("Cannot copy resp: %#v", err) @@ -475,7 +474,7 @@ func TestServeRunInContainerWithUID(t *testing.T) { } defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { // copying the response body did not work t.Errorf("Cannot copy resp: %#v", err) @@ -745,7 +744,7 @@ func assertHealthIsOk(t *testing.T, httpURL string) { if resp.StatusCode != http.StatusOK { t.Errorf("expected status code %d, got %d", http.StatusOK, resp.StatusCode) } - body, readErr := ioutil.ReadAll(resp.Body) + body, readErr := io.ReadAll(resp.Body) if readErr != nil { // copying the response body did not work t.Fatalf("Cannot copy resp: %#v", readErr) @@ -821,7 +820,7 @@ func TestContainerLogs(t *testing.T) { } defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { t.Errorf("Error reading container logs: %v", err) } @@ -911,7 +910,7 @@ func TestCheckpointContainer(t *testing.T) { } defer resp.Body.Close() assert.Equal(t, resp.StatusCode, 500) - body, _ := ioutil.ReadAll(resp.Body) + body, _ := io.ReadAll(resp.Body) assert.Equal(t, string(body), "checkpointing of other/foo/checkpointingFailure failed (Returning error for test)") }) // Now test a successful checkpoint succeeds @@ -1111,7 +1110,7 @@ func testExecAttach(t *testing.T, verb string) { require.NoError(t, err, "POSTing") defer resp.Body.Close() - _, err = ioutil.ReadAll(resp.Body) + _, err = io.ReadAll(resp.Body) assert.NoError(t, err, "reading response body") require.Equal(t, test.responseStatusCode, resp.StatusCode, "response status") @@ -1453,7 +1452,7 @@ func TestFailedParseParamsSummaryHandler(t *testing.T) { resp, err := http.Post(fw.testHTTPServer.URL+"/stats/summary", "invalid/content/type", nil) assert.NoError(t, err) defer resp.Body.Close() - v, err := ioutil.ReadAll(resp.Body) + v, err := io.ReadAll(resp.Body) assert.NoError(t, err) assert.Equal(t, http.StatusInternalServerError, resp.StatusCode) assert.Contains(t, string(v), "parse form failed") @@ -1463,14 +1462,14 @@ func verifyEndpointResponse(t *testing.T, fw *serverTestFramework, path string, resp, err := http.Get(fw.testHTTPServer.URL + path) require.NoError(t, err) assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode) - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) require.NoError(t, err) assert.Equal(t, expectedResponse, string(body)) resp, err = http.Post(fw.testHTTPServer.URL+path, "", nil) require.NoError(t, err) assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode) - body, err = ioutil.ReadAll(resp.Body) + body, err = io.ReadAll(resp.Body) require.NoError(t, err) assert.Equal(t, expectedResponse, string(body)) } diff --git a/pkg/kubelet/stats/cri_stats_provider_test.go b/pkg/kubelet/stats/cri_stats_provider_test.go index d7dc55aa4e7..27fc6a98817 100644 --- a/pkg/kubelet/stats/cri_stats_provider_test.go +++ b/pkg/kubelet/stats/cri_stats_provider_test.go @@ -211,20 +211,20 @@ func TestCRIListPodStats(t *testing.T) { defer ctrl.Finish() fakeOS := &kubecontainertest.FakeOS{} - fakeOS.ReadDirFn = func(path string) ([]os.FileInfo, error) { - var fileInfos []os.FileInfo - mockFI := kubecontainertest.NewMockFileInfo(ctrl) + fakeOS.ReadDirFn = func(path string) ([]os.DirEntry, error) { + var dirEntries []os.DirEntry + mockDE := kubecontainertest.NewMockDirEntry(ctrl) switch path { case kuberuntime.BuildPodLogsDirectory("sandbox0-ns", "sandbox0-name", types.UID("sandbox0-uid")): - mockFI.EXPECT().Name().Return(podLogName0) + mockDE.EXPECT().Name().Return(podLogName0) case kuberuntime.BuildPodLogsDirectory("sandbox1-ns", "sandbox1-name", types.UID("sandbox1-uid")): - mockFI.EXPECT().Name().Return(podLogName1) + mockDE.EXPECT().Name().Return(podLogName1) default: return nil, nil } - mockFI.EXPECT().IsDir().Return(false) - fileInfos = append(fileInfos, mockFI) - return fileInfos, nil + mockDE.EXPECT().IsDir().Return(false) + dirEntries = append(dirEntries, mockDE) + return dirEntries, nil } provider := NewCRIStatsProvider( diff --git a/pkg/kubelet/stats/pidlimit/pidlimit_linux.go b/pkg/kubelet/stats/pidlimit/pidlimit_linux.go index 5ee620fdc83..0b6e95ffd89 100644 --- a/pkg/kubelet/stats/pidlimit/pidlimit_linux.go +++ b/pkg/kubelet/stats/pidlimit/pidlimit_linux.go @@ -21,7 +21,7 @@ package pidlimit import ( "fmt" - "io/ioutil" + "os" "strconv" "strings" "syscall" @@ -39,7 +39,7 @@ func Stats() (*statsapi.RlimitStats, error) { // Calculate the mininum of kernel.pid_max and kernel.threads-max as they both specify the // system-wide limit on the number of tasks. for _, file := range []string{"/proc/sys/kernel/pid_max", "/proc/sys/kernel/threads-max"} { - if content, err := ioutil.ReadFile(file); err == nil { + if content, err := os.ReadFile(file); err == nil { if limit, err := strconv.ParseInt(string(content[:len(content)-1]), 10, 64); err == nil { if taskMax == -1 || taskMax > limit { taskMax = limit @@ -71,7 +71,7 @@ func Stats() (*statsapi.RlimitStats, error) { func runningTaskCount() (int64, error) { // Example: 1.36 3.49 4.53 2/3518 3715089 - bytes, err := ioutil.ReadFile("/proc/loadavg") + bytes, err := os.ReadFile("/proc/loadavg") if err != nil { return 0, err } diff --git a/pkg/kubelet/util/util_unix.go b/pkg/kubelet/util/util_unix.go index 30ef357ceca..e68a194e6d3 100644 --- a/pkg/kubelet/util/util_unix.go +++ b/pkg/kubelet/util/util_unix.go @@ -22,7 +22,6 @@ package util import ( "context" "fmt" - "io/ioutil" "net" "net/url" "os" @@ -58,7 +57,7 @@ func CreateListener(endpoint string) (net.Listener, error) { } // Create the socket on a tempfile and move it to the destination socket to handle improper cleanup - file, err := ioutil.TempFile(filepath.Dir(addr), "") + file, err := os.CreateTemp(filepath.Dir(addr), "") if err != nil { return nil, fmt.Errorf("failed to create temporary file: %v", err) } diff --git a/pkg/kubelet/util/util_unix_test.go b/pkg/kubelet/util/util_unix_test.go index 69c147558ce..e2e1b04b559 100644 --- a/pkg/kubelet/util/util_unix_test.go +++ b/pkg/kubelet/util/util_unix_test.go @@ -20,7 +20,6 @@ limitations under the License. package util import ( - "io/ioutil" "net" "os" "testing" @@ -102,7 +101,7 @@ func TestIsUnixDomainSocket(t *testing.T) { }, } for _, test := range tests { - f, err := ioutil.TempFile("", "test-domain-socket") + f, err := os.CreateTemp("", "test-domain-socket") require.NoErrorf(t, err, "Failed to create file for test purposes: %v while setting up: %s", err, test.label) addr := f.Name() f.Close() diff --git a/pkg/kubelet/util/util_windows_test.go b/pkg/kubelet/util/util_windows_test.go index 745cd3ac140..e8d87a068d4 100644 --- a/pkg/kubelet/util/util_windows_test.go +++ b/pkg/kubelet/util/util_windows_test.go @@ -21,7 +21,6 @@ package util import ( "fmt" - "io/ioutil" "math/rand" "net" "os" @@ -204,7 +203,7 @@ func testPipe(t *testing.T, label string) { } func testRegularFile(t *testing.T, label string, exists bool) { - f, err := ioutil.TempFile("", "test-file") + f, err := os.CreateTemp("", "test-file") require.NoErrorf(t, err, "Failed to create file for test purposes: %v while setting up: %s", err, label) testFile := f.Name() if !exists { @@ -218,7 +217,7 @@ func testRegularFile(t *testing.T, label string, exists bool) { } func testUnixDomainSocket(t *testing.T, label string) { - f, err := ioutil.TempFile("", "test-domain-socket") + f, err := os.CreateTemp("", "test-domain-socket") require.NoErrorf(t, err, "Failed to create file for test purposes: %v while setting up: %s", err, label) testFile := f.Name() f.Close() @@ -241,7 +240,7 @@ func testPendingUnixDomainSocket(t *testing.T, label string) { // not-yet-ready state. We need this because the Kubelet keeps an eye on file // changes and acts on them, leading to potential race issues as described in // the referenced issue above - f, err := ioutil.TempFile("", "test-domain-socket") + f, err := os.CreateTemp("", "test-domain-socket") require.NoErrorf(t, err, "Failed to create file for test purposes: %v while setting up: %s", err, label) testFile := f.Name() f.Close()