Merge pull request #104933 from vikramcse/automate_mockery

conversion of tests from mockery to mockgen
This commit is contained in:
Kubernetes Prow Robot 2021-09-30 18:33:21 -07:00 committed by GitHub
commit cab54856f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 2594 additions and 1244 deletions

View File

@ -22,16 +22,15 @@ import (
"sort" "sort"
"testing" "testing"
"k8s.io/api/core/v1" "github.com/golang/mock/gomock"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
utilfeature "k8s.io/apiserver/pkg/util/feature" utilfeature "k8s.io/apiserver/pkg/util/feature"
featuregatetesting "k8s.io/component-base/featuregate/testing" featuregatetesting "k8s.io/component-base/featuregate/testing"
podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1"
pkgfeatures "k8s.io/kubernetes/pkg/features" pkgfeatures "k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset" podresourcetest "k8s.io/kubernetes/pkg/kubelet/apis/podresources/testing"
"k8s.io/kubernetes/pkg/kubelet/cm/devicemanager"
"k8s.io/kubernetes/pkg/kubelet/cm/memorymanager/state"
) )
func TestListPodResourcesV1(t *testing.T) { func TestListPodResourcesV1(t *testing.T) {
@ -41,6 +40,9 @@ func TestListPodResourcesV1(t *testing.T) {
containerName := "container-name" containerName := "container-name"
numaID := int64(1) numaID := int64(1)
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
devs := []*podresourcesapi.ContainerDevices{ devs := []*podresourcesapi.ContainerDevices{
{ {
ResourceName: "resource", ResourceName: "resource",
@ -156,16 +158,21 @@ func TestListPodResourcesV1(t *testing.T) {
}, },
} { } {
t.Run(tc.desc, func(t *testing.T) { t.Run(tc.desc, func(t *testing.T) {
m := new(mockProvider) mockDevicesProvider := podresourcetest.NewMockDevicesProvider(mockCtrl)
m.On("GetPods").Return(tc.pods) mockPodsProvider := podresourcetest.NewMockPodsProvider(mockCtrl)
m.On("GetDevices", string(podUID), containerName).Return(tc.devices) mockCPUsProvider := podresourcetest.NewMockCPUsProvider(mockCtrl)
m.On("GetCPUs", string(podUID), containerName).Return(tc.cpus) mockMemoryProvider := podresourcetest.NewMockMemoryProvider(mockCtrl)
m.On("GetMemory", string(podUID), containerName).Return(tc.memory)
m.On("UpdateAllocatedDevices").Return() mockPodsProvider.EXPECT().GetPods().Return(tc.pods).AnyTimes().AnyTimes()
m.On("GetAllocatableCPUs").Return(cpuset.CPUSet{}) mockDevicesProvider.EXPECT().GetDevices(string(podUID), containerName).Return(tc.devices).AnyTimes()
m.On("GetAllocatableDevices").Return(devicemanager.NewResourceDeviceInstances()) mockCPUsProvider.EXPECT().GetCPUs(string(podUID), containerName).Return(tc.cpus).AnyTimes()
m.On("GetAllocatableMemory").Return([]state.Block{}) mockMemoryProvider.EXPECT().GetMemory(string(podUID), containerName).Return(tc.memory).AnyTimes()
server := NewV1PodResourcesServer(m, m, m, m) mockDevicesProvider.EXPECT().UpdateAllocatedDevices().Return().AnyTimes()
mockCPUsProvider.EXPECT().GetAllocatableCPUs().Return([]int64{}).AnyTimes()
mockDevicesProvider.EXPECT().GetAllocatableDevices().Return([]*podresourcesapi.ContainerDevices{}).AnyTimes()
mockMemoryProvider.EXPECT().GetAllocatableMemory().Return([]*podresourcesapi.ContainerMemory{}).AnyTimes()
server := NewV1PodResourcesServer(mockPodsProvider, mockDevicesProvider, mockCPUsProvider, mockMemoryProvider)
resp, err := server.List(context.TODO(), &podresourcesapi.ListPodResourcesRequest{}) resp, err := server.List(context.TODO(), &podresourcesapi.ListPodResourcesRequest{})
if err != nil { if err != nil {
t.Errorf("want err = %v, got %q", nil, err) t.Errorf("want err = %v, got %q", nil, err)
@ -180,6 +187,9 @@ func TestListPodResourcesV1(t *testing.T) {
func TestAllocatableResources(t *testing.T) { func TestAllocatableResources(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, pkgfeatures.KubeletPodResourcesGetAllocatable, true)() defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, pkgfeatures.KubeletPodResourcesGetAllocatable, true)()
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
allDevs := []*podresourcesapi.ContainerDevices{ allDevs := []*podresourcesapi.ContainerDevices{
{ {
ResourceName: "resource", ResourceName: "resource",
@ -436,15 +446,20 @@ func TestAllocatableResources(t *testing.T) {
}, },
} { } {
t.Run(tc.desc, func(t *testing.T) { t.Run(tc.desc, func(t *testing.T) {
m := new(mockProvider) mockDevicesProvider := podresourcetest.NewMockDevicesProvider(mockCtrl)
m.On("GetDevices", "", "").Return([]*podresourcesapi.ContainerDevices{}) mockPodsProvider := podresourcetest.NewMockPodsProvider(mockCtrl)
m.On("GetCPUs", "", "").Return([]int64{}) mockCPUsProvider := podresourcetest.NewMockCPUsProvider(mockCtrl)
m.On("GetMemory", "", "").Return([]*podresourcesapi.ContainerMemory{}) mockMemoryProvider := podresourcetest.NewMockMemoryProvider(mockCtrl)
m.On("UpdateAllocatedDevices").Return()
m.On("GetAllocatableDevices").Return(tc.allDevices) mockDevicesProvider.EXPECT().GetDevices("", "").Return([]*podresourcesapi.ContainerDevices{}).AnyTimes()
m.On("GetAllocatableCPUs").Return(tc.allCPUs) mockCPUsProvider.EXPECT().GetCPUs("", "").Return([]int64{}).AnyTimes()
m.On("GetAllocatableMemory").Return(tc.allMemory) mockMemoryProvider.EXPECT().GetMemory("", "").Return([]*podresourcesapi.ContainerMemory{}).AnyTimes()
server := NewV1PodResourcesServer(m, m, m, m) mockDevicesProvider.EXPECT().UpdateAllocatedDevices().Return().AnyTimes()
mockDevicesProvider.EXPECT().GetAllocatableDevices().Return(tc.allDevices).AnyTimes()
mockCPUsProvider.EXPECT().GetAllocatableCPUs().Return(tc.allCPUs).AnyTimes()
mockMemoryProvider.EXPECT().GetAllocatableMemory().Return(tc.allMemory).AnyTimes()
server := NewV1PodResourcesServer(mockPodsProvider, mockDevicesProvider, mockCPUsProvider, mockMemoryProvider)
resp, err := server.GetAllocatableResources(context.TODO(), &podresourcesapi.AllocatableResourcesRequest{}) resp, err := server.GetAllocatableResources(context.TODO(), &podresourcesapi.AllocatableResourcesRequest{})
if err != nil { if err != nil {

View File

@ -20,58 +20,15 @@ import (
"context" "context"
"testing" "testing"
"github.com/stretchr/testify/mock" "github.com/golang/mock/gomock"
v1 "k8s.io/api/core/v1"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
podresourcesv1 "k8s.io/kubelet/pkg/apis/podresources/v1" podresourcesv1 "k8s.io/kubelet/pkg/apis/podresources/v1"
"k8s.io/kubelet/pkg/apis/podresources/v1alpha1" "k8s.io/kubelet/pkg/apis/podresources/v1alpha1"
podresourcetest "k8s.io/kubernetes/pkg/kubelet/apis/podresources/testing"
) )
type mockProvider struct {
mock.Mock
}
func (m *mockProvider) GetPods() []*v1.Pod {
args := m.Called()
return args.Get(0).([]*v1.Pod)
}
func (m *mockProvider) GetDevices(podUID, containerName string) []*podresourcesv1.ContainerDevices {
args := m.Called(podUID, containerName)
return args.Get(0).([]*podresourcesv1.ContainerDevices)
}
func (m *mockProvider) GetCPUs(podUID, containerName string) []int64 {
args := m.Called(podUID, containerName)
return args.Get(0).([]int64)
}
func (m *mockProvider) GetMemory(podUID, containerName string) []*podresourcesv1.ContainerMemory {
args := m.Called(podUID, containerName)
return args.Get(0).([]*podresourcesv1.ContainerMemory)
}
func (m *mockProvider) UpdateAllocatedDevices() {
m.Called()
}
func (m *mockProvider) GetAllocatableDevices() []*podresourcesv1.ContainerDevices {
args := m.Called()
return args.Get(0).([]*podresourcesv1.ContainerDevices)
}
func (m *mockProvider) GetAllocatableCPUs() []int64 {
args := m.Called()
return args.Get(0).([]int64)
}
func (m *mockProvider) GetAllocatableMemory() []*podresourcesv1.ContainerMemory {
args := m.Called()
return args.Get(0).([]*podresourcesv1.ContainerMemory)
}
func TestListPodResourcesV1alpha1(t *testing.T) { func TestListPodResourcesV1alpha1(t *testing.T) {
podName := "pod-name" podName := "pod-name"
podNamespace := "pod-namespace" podNamespace := "pod-namespace"
@ -85,6 +42,9 @@ func TestListPodResourcesV1alpha1(t *testing.T) {
}, },
} }
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
for _, tc := range []struct { for _, tc := range []struct {
desc string desc string
pods []*v1.Pod pods []*v1.Pod
@ -167,11 +127,14 @@ func TestListPodResourcesV1alpha1(t *testing.T) {
}, },
} { } {
t.Run(tc.desc, func(t *testing.T) { t.Run(tc.desc, func(t *testing.T) {
m := new(mockProvider) mockDevicesProvider := podresourcetest.NewMockDevicesProvider(mockCtrl)
m.On("GetPods").Return(tc.pods) mockPodsProvider := podresourcetest.NewMockPodsProvider(mockCtrl)
m.On("GetDevices", string(podUID), containerName).Return(tc.devices)
m.On("UpdateAllocatedDevices").Return() mockPodsProvider.EXPECT().GetPods().Return(tc.pods).AnyTimes()
server := NewV1alpha1PodResourcesServer(m, m) mockDevicesProvider.EXPECT().GetDevices(string(podUID), containerName).Return(tc.devices).AnyTimes()
mockDevicesProvider.EXPECT().UpdateAllocatedDevices().Return().AnyTimes()
server := NewV1alpha1PodResourcesServer(mockPodsProvider, mockDevicesProvider)
resp, err := server.List(context.TODO(), &v1alpha1.ListPodResourcesRequest{}) resp, err := server.List(context.TODO(), &v1alpha1.ListPodResourcesRequest{})
if err != nil { if err != nil {
t.Errorf("want err = %v, got %q", nil, err) t.Errorf("want err = %v, got %q", nil, err)

View File

@ -0,0 +1,230 @@
/*
Copyright 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. DO NOT EDIT.
// Source: types.go
// Package testing is a generated GoMock package.
package testing
import (
gomock "github.com/golang/mock/gomock"
v1 "k8s.io/api/core/v1"
v10 "k8s.io/kubelet/pkg/apis/podresources/v1"
reflect "reflect"
)
// MockDevicesProvider is a mock of DevicesProvider interface
type MockDevicesProvider struct {
ctrl *gomock.Controller
recorder *MockDevicesProviderMockRecorder
}
// MockDevicesProviderMockRecorder is the mock recorder for MockDevicesProvider
type MockDevicesProviderMockRecorder struct {
mock *MockDevicesProvider
}
// NewMockDevicesProvider creates a new mock instance
func NewMockDevicesProvider(ctrl *gomock.Controller) *MockDevicesProvider {
mock := &MockDevicesProvider{ctrl: ctrl}
mock.recorder = &MockDevicesProviderMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockDevicesProvider) EXPECT() *MockDevicesProviderMockRecorder {
return m.recorder
}
// UpdateAllocatedDevices mocks base method
func (m *MockDevicesProvider) UpdateAllocatedDevices() {
m.ctrl.T.Helper()
m.ctrl.Call(m, "UpdateAllocatedDevices")
}
// UpdateAllocatedDevices indicates an expected call of UpdateAllocatedDevices
func (mr *MockDevicesProviderMockRecorder) UpdateAllocatedDevices() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAllocatedDevices", reflect.TypeOf((*MockDevicesProvider)(nil).UpdateAllocatedDevices))
}
// GetDevices mocks base method
func (m *MockDevicesProvider) GetDevices(podUID, containerName string) []*v10.ContainerDevices {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetDevices", podUID, containerName)
ret0, _ := ret[0].([]*v10.ContainerDevices)
return ret0
}
// GetDevices indicates an expected call of GetDevices
func (mr *MockDevicesProviderMockRecorder) GetDevices(podUID, containerName interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDevices", reflect.TypeOf((*MockDevicesProvider)(nil).GetDevices), podUID, containerName)
}
// GetAllocatableDevices mocks base method
func (m *MockDevicesProvider) GetAllocatableDevices() []*v10.ContainerDevices {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetAllocatableDevices")
ret0, _ := ret[0].([]*v10.ContainerDevices)
return ret0
}
// GetAllocatableDevices indicates an expected call of GetAllocatableDevices
func (mr *MockDevicesProviderMockRecorder) GetAllocatableDevices() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllocatableDevices", reflect.TypeOf((*MockDevicesProvider)(nil).GetAllocatableDevices))
}
// MockPodsProvider is a mock of PodsProvider interface
type MockPodsProvider struct {
ctrl *gomock.Controller
recorder *MockPodsProviderMockRecorder
}
// MockPodsProviderMockRecorder is the mock recorder for MockPodsProvider
type MockPodsProviderMockRecorder struct {
mock *MockPodsProvider
}
// NewMockPodsProvider creates a new mock instance
func NewMockPodsProvider(ctrl *gomock.Controller) *MockPodsProvider {
mock := &MockPodsProvider{ctrl: ctrl}
mock.recorder = &MockPodsProviderMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockPodsProvider) EXPECT() *MockPodsProviderMockRecorder {
return m.recorder
}
// GetPods mocks base method
func (m *MockPodsProvider) GetPods() []*v1.Pod {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPods")
ret0, _ := ret[0].([]*v1.Pod)
return ret0
}
// GetPods indicates an expected call of GetPods
func (mr *MockPodsProviderMockRecorder) GetPods() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPods", reflect.TypeOf((*MockPodsProvider)(nil).GetPods))
}
// MockCPUsProvider is a mock of CPUsProvider interface
type MockCPUsProvider struct {
ctrl *gomock.Controller
recorder *MockCPUsProviderMockRecorder
}
// MockCPUsProviderMockRecorder is the mock recorder for MockCPUsProvider
type MockCPUsProviderMockRecorder struct {
mock *MockCPUsProvider
}
// NewMockCPUsProvider creates a new mock instance
func NewMockCPUsProvider(ctrl *gomock.Controller) *MockCPUsProvider {
mock := &MockCPUsProvider{ctrl: ctrl}
mock.recorder = &MockCPUsProviderMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockCPUsProvider) EXPECT() *MockCPUsProviderMockRecorder {
return m.recorder
}
// GetCPUs mocks base method
func (m *MockCPUsProvider) GetCPUs(podUID, containerName string) []int64 {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetCPUs", podUID, containerName)
ret0, _ := ret[0].([]int64)
return ret0
}
// GetCPUs indicates an expected call of GetCPUs
func (mr *MockCPUsProviderMockRecorder) GetCPUs(podUID, containerName interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCPUs", reflect.TypeOf((*MockCPUsProvider)(nil).GetCPUs), podUID, containerName)
}
// GetAllocatableCPUs mocks base method
func (m *MockCPUsProvider) GetAllocatableCPUs() []int64 {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetAllocatableCPUs")
ret0, _ := ret[0].([]int64)
return ret0
}
// GetAllocatableCPUs indicates an expected call of GetAllocatableCPUs
func (mr *MockCPUsProviderMockRecorder) GetAllocatableCPUs() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllocatableCPUs", reflect.TypeOf((*MockCPUsProvider)(nil).GetAllocatableCPUs))
}
// MockMemoryProvider is a mock of MemoryProvider interface
type MockMemoryProvider struct {
ctrl *gomock.Controller
recorder *MockMemoryProviderMockRecorder
}
// MockMemoryProviderMockRecorder is the mock recorder for MockMemoryProvider
type MockMemoryProviderMockRecorder struct {
mock *MockMemoryProvider
}
// NewMockMemoryProvider creates a new mock instance
func NewMockMemoryProvider(ctrl *gomock.Controller) *MockMemoryProvider {
mock := &MockMemoryProvider{ctrl: ctrl}
mock.recorder = &MockMemoryProviderMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockMemoryProvider) EXPECT() *MockMemoryProviderMockRecorder {
return m.recorder
}
// GetMemory mocks base method
func (m *MockMemoryProvider) GetMemory(podUID, containerName string) []*v10.ContainerMemory {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetMemory", podUID, containerName)
ret0, _ := ret[0].([]*v10.ContainerMemory)
return ret0
}
// GetMemory indicates an expected call of GetMemory
func (mr *MockMemoryProviderMockRecorder) GetMemory(podUID, containerName interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMemory", reflect.TypeOf((*MockMemoryProvider)(nil).GetMemory), podUID, containerName)
}
// GetAllocatableMemory mocks base method
func (m *MockMemoryProvider) GetAllocatableMemory() []*v10.ContainerMemory {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetAllocatableMemory")
ret0, _ := ret[0].([]*v10.ContainerMemory)
return ret0
}
// GetAllocatableMemory indicates an expected call of GetAllocatableMemory
func (mr *MockMemoryProviderMockRecorder) GetAllocatableMemory() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllocatableMemory", reflect.TypeOf((*MockMemoryProvider)(nil).GetAllocatableMemory))
}

View File

@ -14,10 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
//go:generate mockgen -source=types.go -destination=testing/provider_mock.go -package=testing DevicesProvider,PodsProvider,CPUsProvider,MemoryProvider
package podresources package podresources
import ( import (
"k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1"
) )

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2015 The Kubernetes Authors. Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,91 +14,256 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// Code generated by MockGen. DO NOT EDIT.
// Source: types.go
// Package testing is a generated GoMock package.
package testing package testing
import ( import (
"github.com/google/cadvisor/events" gomock "github.com/golang/mock/gomock"
cadvisorapi "github.com/google/cadvisor/info/v1" events "github.com/google/cadvisor/events"
cadvisorapiv2 "github.com/google/cadvisor/info/v2" v1 "github.com/google/cadvisor/info/v1"
"github.com/stretchr/testify/mock" v2 "github.com/google/cadvisor/info/v2"
"k8s.io/kubernetes/pkg/kubelet/cadvisor" reflect "reflect"
) )
// Mock cadvisor.Interface implementation. // MockInterface is a mock of Interface interface
type Mock struct { type MockInterface struct {
mock.Mock ctrl *gomock.Controller
recorder *MockInterfaceMockRecorder
} }
var _ cadvisor.Interface = new(Mock) // MockInterfaceMockRecorder is the mock recorder for MockInterface
type MockInterfaceMockRecorder struct {
// Start is a mock implementation of Interface.Start. mock *MockInterface
func (c *Mock) Start() error {
args := c.Called()
return args.Error(0)
} }
// ContainerInfo is a mock implementation of Interface.ContainerInfo. // NewMockInterface creates a new mock instance
func (c *Mock) ContainerInfo(name string, req *cadvisorapi.ContainerInfoRequest) (*cadvisorapi.ContainerInfo, error) { func NewMockInterface(ctrl *gomock.Controller) *MockInterface {
args := c.Called(name, req) mock := &MockInterface{ctrl: ctrl}
return args.Get(0).(*cadvisorapi.ContainerInfo), args.Error(1) mock.recorder = &MockInterfaceMockRecorder{mock}
return mock
} }
// ContainerInfoV2 is a mock implementation of Interface.ContainerInfoV2. // EXPECT returns an object that allows the caller to indicate expected use
func (c *Mock) ContainerInfoV2(name string, options cadvisorapiv2.RequestOptions) (map[string]cadvisorapiv2.ContainerInfo, error) { func (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {
args := c.Called(name, options) return m.recorder
return args.Get(0).(map[string]cadvisorapiv2.ContainerInfo), args.Error(1)
} }
// GetRequestedContainersInfo is a fake implementation if Interface.GetRequestedContainersInfo // Start mocks base method
func (c *Mock) GetRequestedContainersInfo(containerName string, options cadvisorapiv2.RequestOptions) (map[string]*cadvisorapi.ContainerInfo, error) { func (m *MockInterface) Start() error {
args := c.Called(containerName, options) m.ctrl.T.Helper()
return args.Get(0).(map[string]*cadvisorapi.ContainerInfo), args.Error(1) ret := m.ctrl.Call(m, "Start")
ret0, _ := ret[0].(error)
return ret0
} }
// SubcontainerInfo is a mock implementation of Interface.SubcontainerInfo. // Start indicates an expected call of Start
func (c *Mock) SubcontainerInfo(name string, req *cadvisorapi.ContainerInfoRequest) (map[string]*cadvisorapi.ContainerInfo, error) { func (mr *MockInterfaceMockRecorder) Start() *gomock.Call {
args := c.Called(name, req) mr.mock.ctrl.T.Helper()
return args.Get(0).(map[string]*cadvisorapi.ContainerInfo), args.Error(1) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockInterface)(nil).Start))
} }
// DockerContainer is a mock implementation of Interface.DockerContainer. // DockerContainer mocks base method
func (c *Mock) DockerContainer(name string, req *cadvisorapi.ContainerInfoRequest) (cadvisorapi.ContainerInfo, error) { func (m *MockInterface) DockerContainer(name string, req *v1.ContainerInfoRequest) (v1.ContainerInfo, error) {
args := c.Called(name, req) m.ctrl.T.Helper()
return args.Get(0).(cadvisorapi.ContainerInfo), args.Error(1) ret := m.ctrl.Call(m, "DockerContainer", name, req)
ret0, _ := ret[0].(v1.ContainerInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
} }
// MachineInfo is a mock implementation of Interface.MachineInfo. // DockerContainer indicates an expected call of DockerContainer
func (c *Mock) MachineInfo() (*cadvisorapi.MachineInfo, error) { func (mr *MockInterfaceMockRecorder) DockerContainer(name, req interface{}) *gomock.Call {
args := c.Called() mr.mock.ctrl.T.Helper()
return args.Get(0).(*cadvisorapi.MachineInfo), args.Error(1) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DockerContainer", reflect.TypeOf((*MockInterface)(nil).DockerContainer), name, req)
} }
// VersionInfo is a mock implementation of Interface.VersionInfo. // ContainerInfo mocks base method
func (c *Mock) VersionInfo() (*cadvisorapi.VersionInfo, error) { func (m *MockInterface) ContainerInfo(name string, req *v1.ContainerInfoRequest) (*v1.ContainerInfo, error) {
args := c.Called() m.ctrl.T.Helper()
return args.Get(0).(*cadvisorapi.VersionInfo), args.Error(1) ret := m.ctrl.Call(m, "ContainerInfo", name, req)
ret0, _ := ret[0].(*v1.ContainerInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
} }
// ImagesFsInfo is a mock implementation of Interface.ImagesFsInfo. // ContainerInfo indicates an expected call of ContainerInfo
func (c *Mock) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) { func (mr *MockInterfaceMockRecorder) ContainerInfo(name, req interface{}) *gomock.Call {
args := c.Called() mr.mock.ctrl.T.Helper()
return args.Get(0).(cadvisorapiv2.FsInfo), args.Error(1) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ContainerInfo", reflect.TypeOf((*MockInterface)(nil).ContainerInfo), name, req)
} }
// RootFsInfo is a mock implementation of Interface.RootFsInfo. // ContainerInfoV2 mocks base method
func (c *Mock) RootFsInfo() (cadvisorapiv2.FsInfo, error) { func (m *MockInterface) ContainerInfoV2(name string, options v2.RequestOptions) (map[string]v2.ContainerInfo, error) {
args := c.Called() m.ctrl.T.Helper()
return args.Get(0).(cadvisorapiv2.FsInfo), args.Error(1) ret := m.ctrl.Call(m, "ContainerInfoV2", name, options)
ret0, _ := ret[0].(map[string]v2.ContainerInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
} }
// WatchEvents is a mock implementation of Interface.WatchEvents. // ContainerInfoV2 indicates an expected call of ContainerInfoV2
func (c *Mock) WatchEvents(request *events.Request) (*events.EventChannel, error) { func (mr *MockInterfaceMockRecorder) ContainerInfoV2(name, options interface{}) *gomock.Call {
args := c.Called() mr.mock.ctrl.T.Helper()
return args.Get(0).(*events.EventChannel), args.Error(1) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ContainerInfoV2", reflect.TypeOf((*MockInterface)(nil).ContainerInfoV2), name, options)
} }
// GetDirFsInfo is a mock implementation of Interface.GetDirFsInfo. // GetRequestedContainersInfo mocks base method
func (c *Mock) GetDirFsInfo(path string) (cadvisorapiv2.FsInfo, error) { func (m *MockInterface) GetRequestedContainersInfo(containerName string, options v2.RequestOptions) (map[string]*v1.ContainerInfo, error) {
args := c.Called(path) m.ctrl.T.Helper()
return args.Get(0).(cadvisorapiv2.FsInfo), args.Error(1) ret := m.ctrl.Call(m, "GetRequestedContainersInfo", containerName, options)
ret0, _ := ret[0].(map[string]*v1.ContainerInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetRequestedContainersInfo indicates an expected call of GetRequestedContainersInfo
func (mr *MockInterfaceMockRecorder) GetRequestedContainersInfo(containerName, options interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRequestedContainersInfo", reflect.TypeOf((*MockInterface)(nil).GetRequestedContainersInfo), containerName, options)
}
// SubcontainerInfo mocks base method
func (m *MockInterface) SubcontainerInfo(name string, req *v1.ContainerInfoRequest) (map[string]*v1.ContainerInfo, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SubcontainerInfo", name, req)
ret0, _ := ret[0].(map[string]*v1.ContainerInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// SubcontainerInfo indicates an expected call of SubcontainerInfo
func (mr *MockInterfaceMockRecorder) SubcontainerInfo(name, req interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubcontainerInfo", reflect.TypeOf((*MockInterface)(nil).SubcontainerInfo), name, req)
}
// MachineInfo mocks base method
func (m *MockInterface) MachineInfo() (*v1.MachineInfo, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "MachineInfo")
ret0, _ := ret[0].(*v1.MachineInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// MachineInfo indicates an expected call of MachineInfo
func (mr *MockInterfaceMockRecorder) MachineInfo() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MachineInfo", reflect.TypeOf((*MockInterface)(nil).MachineInfo))
}
// VersionInfo mocks base method
func (m *MockInterface) VersionInfo() (*v1.VersionInfo, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "VersionInfo")
ret0, _ := ret[0].(*v1.VersionInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// VersionInfo indicates an expected call of VersionInfo
func (mr *MockInterfaceMockRecorder) VersionInfo() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VersionInfo", reflect.TypeOf((*MockInterface)(nil).VersionInfo))
}
// ImagesFsInfo mocks base method
func (m *MockInterface) ImagesFsInfo() (v2.FsInfo, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ImagesFsInfo")
ret0, _ := ret[0].(v2.FsInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ImagesFsInfo indicates an expected call of ImagesFsInfo
func (mr *MockInterfaceMockRecorder) ImagesFsInfo() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImagesFsInfo", reflect.TypeOf((*MockInterface)(nil).ImagesFsInfo))
}
// RootFsInfo mocks base method
func (m *MockInterface) RootFsInfo() (v2.FsInfo, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RootFsInfo")
ret0, _ := ret[0].(v2.FsInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// RootFsInfo indicates an expected call of RootFsInfo
func (mr *MockInterfaceMockRecorder) RootFsInfo() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RootFsInfo", reflect.TypeOf((*MockInterface)(nil).RootFsInfo))
}
// WatchEvents mocks base method
func (m *MockInterface) WatchEvents(request *events.Request) (*events.EventChannel, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "WatchEvents", request)
ret0, _ := ret[0].(*events.EventChannel)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// WatchEvents indicates an expected call of WatchEvents
func (mr *MockInterfaceMockRecorder) WatchEvents(request interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WatchEvents", reflect.TypeOf((*MockInterface)(nil).WatchEvents), request)
}
// GetDirFsInfo mocks base method
func (m *MockInterface) GetDirFsInfo(path string) (v2.FsInfo, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetDirFsInfo", path)
ret0, _ := ret[0].(v2.FsInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetDirFsInfo indicates an expected call of GetDirFsInfo
func (mr *MockInterfaceMockRecorder) GetDirFsInfo(path interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDirFsInfo", reflect.TypeOf((*MockInterface)(nil).GetDirFsInfo), path)
}
// MockImageFsInfoProvider is a mock of ImageFsInfoProvider interface
type MockImageFsInfoProvider struct {
ctrl *gomock.Controller
recorder *MockImageFsInfoProviderMockRecorder
}
// MockImageFsInfoProviderMockRecorder is the mock recorder for MockImageFsInfoProvider
type MockImageFsInfoProviderMockRecorder struct {
mock *MockImageFsInfoProvider
}
// NewMockImageFsInfoProvider creates a new mock instance
func NewMockImageFsInfoProvider(ctrl *gomock.Controller) *MockImageFsInfoProvider {
mock := &MockImageFsInfoProvider{ctrl: ctrl}
mock.recorder = &MockImageFsInfoProviderMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockImageFsInfoProvider) EXPECT() *MockImageFsInfoProviderMockRecorder {
return m.recorder
}
// ImageFsInfoLabel mocks base method
func (m *MockImageFsInfoProvider) ImageFsInfoLabel() (string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ImageFsInfoLabel")
ret0, _ := ret[0].(string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ImageFsInfoLabel indicates an expected call of ImageFsInfoLabel
func (mr *MockImageFsInfoProviderMockRecorder) ImageFsInfoLabel() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImageFsInfoLabel", reflect.TypeOf((*MockImageFsInfoProvider)(nil).ImageFsInfoLabel))
} }

View File

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
//go:generate mockgen -source=types.go -destination=testing/cadvisor_mock.go -package=testing Interface
package cadvisor package cadvisor
import ( import (

View File

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
//go:generate mockgen -source=runtime.go -destination=testing/runtime_mock.go -package=testing Runtime
package container package container
import ( import (

View File

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
//go:generate mockgen -source=runtime_cache.go -destination=testing/mock_runtime_cache.go -package=testing RuntimeCache
package container package container
import ( import (

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2017 The Kubernetes Authors. Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,51 +14,105 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// Code generated by mockery v1.0.0 // Code generated by MockGen. DO NOT EDIT.
// Source: runtime_cache.go
// Package testing is a generated GoMock package.
package testing package testing
import container "k8s.io/kubernetes/pkg/kubelet/container" import (
import mock "github.com/stretchr/testify/mock" gomock "github.com/golang/mock/gomock"
import time "time" container "k8s.io/kubernetes/pkg/kubelet/container"
reflect "reflect"
time "time"
)
// MockRuntimeCache is an autogenerated mock type for the RuntimeCache type // MockRuntimeCache is a mock of RuntimeCache interface
type MockRuntimeCache struct { type MockRuntimeCache struct {
mock.Mock ctrl *gomock.Controller
recorder *MockRuntimeCacheMockRecorder
} }
// ForceUpdateIfOlder provides a mock function with given fields: _a0 // MockRuntimeCacheMockRecorder is the mock recorder for MockRuntimeCache
func (_m *MockRuntimeCache) ForceUpdateIfOlder(_a0 time.Time) error { type MockRuntimeCacheMockRecorder struct {
ret := _m.Called(_a0) mock *MockRuntimeCache
var r0 error
if rf, ok := ret.Get(0).(func(time.Time) error); ok {
r0 = rf(_a0)
} else {
r0 = ret.Error(0)
}
return r0
} }
// GetPods provides a mock function with given fields: // NewMockRuntimeCache creates a new mock instance
func (_m *MockRuntimeCache) GetPods() ([]*container.Pod, error) { func NewMockRuntimeCache(ctrl *gomock.Controller) *MockRuntimeCache {
ret := _m.Called() mock := &MockRuntimeCache{ctrl: ctrl}
mock.recorder = &MockRuntimeCacheMockRecorder{mock}
var r0 []*container.Pod return mock
if rf, ok := ret.Get(0).(func() []*container.Pod); ok { }
r0 = rf()
} else { // EXPECT returns an object that allows the caller to indicate expected use
if ret.Get(0) != nil { func (m *MockRuntimeCache) EXPECT() *MockRuntimeCacheMockRecorder {
r0 = ret.Get(0).([]*container.Pod) return m.recorder
} }
}
// GetPods mocks base method
var r1 error func (m *MockRuntimeCache) GetPods() ([]*container.Pod, error) {
if rf, ok := ret.Get(1).(func() error); ok { m.ctrl.T.Helper()
r1 = rf() ret := m.ctrl.Call(m, "GetPods")
} else { ret0, _ := ret[0].([]*container.Pod)
r1 = ret.Error(1) ret1, _ := ret[1].(error)
} return ret0, ret1
}
return r0, r1
// GetPods indicates an expected call of GetPods
func (mr *MockRuntimeCacheMockRecorder) GetPods() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPods", reflect.TypeOf((*MockRuntimeCache)(nil).GetPods))
}
// ForceUpdateIfOlder mocks base method
func (m *MockRuntimeCache) ForceUpdateIfOlder(arg0 time.Time) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ForceUpdateIfOlder", arg0)
ret0, _ := ret[0].(error)
return ret0
}
// ForceUpdateIfOlder indicates an expected call of ForceUpdateIfOlder
func (mr *MockRuntimeCacheMockRecorder) ForceUpdateIfOlder(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ForceUpdateIfOlder", reflect.TypeOf((*MockRuntimeCache)(nil).ForceUpdateIfOlder), arg0)
}
// MockpodsGetter is a mock of podsGetter interface
type MockpodsGetter struct {
ctrl *gomock.Controller
recorder *MockpodsGetterMockRecorder
}
// MockpodsGetterMockRecorder is the mock recorder for MockpodsGetter
type MockpodsGetterMockRecorder struct {
mock *MockpodsGetter
}
// NewMockpodsGetter creates a new mock instance
func NewMockpodsGetter(ctrl *gomock.Controller) *MockpodsGetter {
mock := &MockpodsGetter{ctrl: ctrl}
mock.recorder = &MockpodsGetterMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockpodsGetter) EXPECT() *MockpodsGetterMockRecorder {
return m.recorder
}
// GetPods mocks base method
func (m *MockpodsGetter) GetPods(arg0 bool) ([]*container.Pod, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPods", arg0)
ret0, _ := ret[0].([]*container.Pod)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetPods indicates an expected call of GetPods
func (mr *MockpodsGetterMockRecorder) GetPods(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPods", reflect.TypeOf((*MockpodsGetter)(nil).GetPods), arg0)
} }

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2015 The Kubernetes Authors. Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,145 +14,599 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// Code generated by MockGen. DO NOT EDIT.
// Source: runtime.go
// Package testing is a generated GoMock package.
package testing package testing
import ( import (
"context" context "context"
"io" gomock "github.com/golang/mock/gomock"
"time" io "io"
v1 "k8s.io/api/core/v1"
"github.com/stretchr/testify/mock" types "k8s.io/apimachinery/pkg/types"
"k8s.io/api/core/v1" remotecommand "k8s.io/client-go/tools/remotecommand"
"k8s.io/apimachinery/pkg/types" flowcontrol "k8s.io/client-go/util/flowcontrol"
"k8s.io/client-go/tools/remotecommand" v1alpha2 "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
"k8s.io/client-go/util/flowcontrol" container "k8s.io/kubernetes/pkg/kubelet/container"
runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" url "net/url"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" reflect "reflect"
"k8s.io/kubernetes/pkg/volume" time "time"
) )
type Mock struct { // MockVersion is a mock of Version interface
mock.Mock type MockVersion struct {
ctrl *gomock.Controller
recorder *MockVersionMockRecorder
} }
var _ kubecontainer.Runtime = new(Mock) // MockVersionMockRecorder is the mock recorder for MockVersion
type MockVersionMockRecorder struct {
func (r *Mock) Start() error { mock *MockVersion
args := r.Called()
return args.Error(0)
} }
func (r *Mock) Type() string { // NewMockVersion creates a new mock instance
args := r.Called() func NewMockVersion(ctrl *gomock.Controller) *MockVersion {
return args.Get(0).(string) mock := &MockVersion{ctrl: ctrl}
mock.recorder = &MockVersionMockRecorder{mock}
return mock
} }
func (r *Mock) SupportsSingleFileMapping() bool { // EXPECT returns an object that allows the caller to indicate expected use
args := r.Called() func (m *MockVersion) EXPECT() *MockVersionMockRecorder {
return args.Get(0).(bool) return m.recorder
} }
func (r *Mock) Version() (kubecontainer.Version, error) { // Compare mocks base method
args := r.Called() func (m *MockVersion) Compare(other string) (int, error) {
return args.Get(0).(kubecontainer.Version), args.Error(1) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Compare", other)
ret0, _ := ret[0].(int)
ret1, _ := ret[1].(error)
return ret0, ret1
} }
func (r *Mock) APIVersion() (kubecontainer.Version, error) { // Compare indicates an expected call of Compare
args := r.Called() func (mr *MockVersionMockRecorder) Compare(other interface{}) *gomock.Call {
return args.Get(0).(kubecontainer.Version), args.Error(1) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Compare", reflect.TypeOf((*MockVersion)(nil).Compare), other)
} }
func (r *Mock) Status() (*kubecontainer.RuntimeStatus, error) { // String mocks base method
args := r.Called() func (m *MockVersion) String() string {
return args.Get(0).(*kubecontainer.RuntimeStatus), args.Error(0) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "String")
ret0, _ := ret[0].(string)
return ret0
} }
func (r *Mock) GetPods(all bool) ([]*kubecontainer.Pod, error) { // String indicates an expected call of String
args := r.Called(all) func (mr *MockVersionMockRecorder) String() *gomock.Call {
return args.Get(0).([]*kubecontainer.Pod), args.Error(1) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "String", reflect.TypeOf((*MockVersion)(nil).String))
} }
func (r *Mock) SyncPod(pod *v1.Pod, status *kubecontainer.PodStatus, secrets []v1.Secret, backOff *flowcontrol.Backoff) kubecontainer.PodSyncResult { // MockRuntime is a mock of Runtime interface
args := r.Called(pod, status, secrets, backOff) type MockRuntime struct {
return args.Get(0).(kubecontainer.PodSyncResult) ctrl *gomock.Controller
recorder *MockRuntimeMockRecorder
} }
func (r *Mock) KillPod(pod *v1.Pod, runningPod kubecontainer.Pod, gracePeriodOverride *int64) error { // MockRuntimeMockRecorder is the mock recorder for MockRuntime
args := r.Called(pod, runningPod, gracePeriodOverride) type MockRuntimeMockRecorder struct {
return args.Error(0) mock *MockRuntime
} }
func (r *Mock) RunContainerInPod(container v1.Container, pod *v1.Pod, volumeMap map[string]volume.VolumePlugin) error { // NewMockRuntime creates a new mock instance
args := r.Called(pod, pod, volumeMap) func NewMockRuntime(ctrl *gomock.Controller) *MockRuntime {
return args.Error(0) mock := &MockRuntime{ctrl: ctrl}
mock.recorder = &MockRuntimeMockRecorder{mock}
return mock
} }
func (r *Mock) KillContainerInPod(container v1.Container, pod *v1.Pod) error { // EXPECT returns an object that allows the caller to indicate expected use
args := r.Called(pod, pod) func (m *MockRuntime) EXPECT() *MockRuntimeMockRecorder {
return args.Error(0) return m.recorder
} }
func (r *Mock) GetPodStatus(uid types.UID, name, namespace string) (*kubecontainer.PodStatus, error) { // Type mocks base method
args := r.Called(uid, name, namespace) func (m *MockRuntime) Type() string {
return args.Get(0).(*kubecontainer.PodStatus), args.Error(1) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Type")
ret0, _ := ret[0].(string)
return ret0
} }
func (r *Mock) ExecInContainer(containerID kubecontainer.ContainerID, cmd []string, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize, timeout time.Duration) error { // Type indicates an expected call of Type
args := r.Called(containerID, cmd, stdin, stdout, stderr, tty) func (mr *MockRuntimeMockRecorder) Type() *gomock.Call {
return args.Error(0) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Type", reflect.TypeOf((*MockRuntime)(nil).Type))
} }
func (r *Mock) AttachContainer(containerID kubecontainer.ContainerID, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize) error { // SupportsSingleFileMapping mocks base method
args := r.Called(containerID, stdin, stdout, stderr, tty) func (m *MockRuntime) SupportsSingleFileMapping() bool {
return args.Error(0) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SupportsSingleFileMapping")
ret0, _ := ret[0].(bool)
return ret0
} }
func (r *Mock) GetContainerLogs(_ context.Context, pod *v1.Pod, containerID kubecontainer.ContainerID, logOptions *v1.PodLogOptions, stdout, stderr io.Writer) (err error) { // SupportsSingleFileMapping indicates an expected call of SupportsSingleFileMapping
args := r.Called(pod, containerID, logOptions, stdout, stderr) func (mr *MockRuntimeMockRecorder) SupportsSingleFileMapping() *gomock.Call {
return args.Error(0) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SupportsSingleFileMapping", reflect.TypeOf((*MockRuntime)(nil).SupportsSingleFileMapping))
} }
func (r *Mock) PullImage(image kubecontainer.ImageSpec, pullSecrets []v1.Secret, podSandboxConfig *runtimeapi.PodSandboxConfig) (string, error) { // Version mocks base method
args := r.Called(image, pullSecrets) func (m *MockRuntime) Version() (container.Version, error) {
return image.Image, args.Error(0) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Version")
ret0, _ := ret[0].(container.Version)
ret1, _ := ret[1].(error)
return ret0, ret1
} }
func (r *Mock) GetImageRef(image kubecontainer.ImageSpec) (string, error) { // Version indicates an expected call of Version
args := r.Called(image) func (mr *MockRuntimeMockRecorder) Version() *gomock.Call {
return args.Get(0).(string), args.Error(1) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Version", reflect.TypeOf((*MockRuntime)(nil).Version))
} }
func (r *Mock) ListImages() ([]kubecontainer.Image, error) { // APIVersion mocks base method
args := r.Called() func (m *MockRuntime) APIVersion() (container.Version, error) {
return args.Get(0).([]kubecontainer.Image), args.Error(1) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "APIVersion")
ret0, _ := ret[0].(container.Version)
ret1, _ := ret[1].(error)
return ret0, ret1
} }
func (r *Mock) RemoveImage(image kubecontainer.ImageSpec) error { // APIVersion indicates an expected call of APIVersion
args := r.Called(image) func (mr *MockRuntimeMockRecorder) APIVersion() *gomock.Call {
return args.Error(0) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "APIVersion", reflect.TypeOf((*MockRuntime)(nil).APIVersion))
} }
func (r *Mock) PortForward(pod *kubecontainer.Pod, port uint16, stream io.ReadWriteCloser) error { // Status mocks base method
args := r.Called(pod, port, stream) func (m *MockRuntime) Status() (*container.RuntimeStatus, error) {
return args.Error(0) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Status")
ret0, _ := ret[0].(*container.RuntimeStatus)
ret1, _ := ret[1].(error)
return ret0, ret1
} }
func (r *Mock) GarbageCollect(gcPolicy kubecontainer.GCPolicy, ready bool, evictNonDeletedPods bool) error { // Status indicates an expected call of Status
args := r.Called(gcPolicy, ready, evictNonDeletedPods) func (mr *MockRuntimeMockRecorder) Status() *gomock.Call {
return args.Error(0) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Status", reflect.TypeOf((*MockRuntime)(nil).Status))
} }
func (r *Mock) DeleteContainer(containerID kubecontainer.ContainerID) error { // GetPods mocks base method
args := r.Called(containerID) func (m *MockRuntime) GetPods(all bool) ([]*container.Pod, error) {
return args.Error(0) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPods", all)
ret0, _ := ret[0].([]*container.Pod)
ret1, _ := ret[1].(error)
return ret0, ret1
} }
func (r *Mock) ImageStats() (*kubecontainer.ImageStats, error) { // GetPods indicates an expected call of GetPods
args := r.Called() func (mr *MockRuntimeMockRecorder) GetPods(all interface{}) *gomock.Call {
return args.Get(0).(*kubecontainer.ImageStats), args.Error(1) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPods", reflect.TypeOf((*MockRuntime)(nil).GetPods), all)
} }
// UpdatePodCIDR fulfills the cri interface. // GarbageCollect mocks base method
func (r *Mock) UpdatePodCIDR(c string) error { func (m *MockRuntime) GarbageCollect(gcPolicy container.GCPolicy, allSourcesReady, evictNonDeletedPods bool) error {
return nil m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GarbageCollect", gcPolicy, allSourcesReady, evictNonDeletedPods)
ret0, _ := ret[0].(error)
return ret0
}
// GarbageCollect indicates an expected call of GarbageCollect
func (mr *MockRuntimeMockRecorder) GarbageCollect(gcPolicy, allSourcesReady, evictNonDeletedPods interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GarbageCollect", reflect.TypeOf((*MockRuntime)(nil).GarbageCollect), gcPolicy, allSourcesReady, evictNonDeletedPods)
}
// SyncPod mocks base method
func (m *MockRuntime) SyncPod(pod *v1.Pod, podStatus *container.PodStatus, pullSecrets []v1.Secret, backOff *flowcontrol.Backoff) container.PodSyncResult {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SyncPod", pod, podStatus, pullSecrets, backOff)
ret0, _ := ret[0].(container.PodSyncResult)
return ret0
}
// SyncPod indicates an expected call of SyncPod
func (mr *MockRuntimeMockRecorder) SyncPod(pod, podStatus, pullSecrets, backOff interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncPod", reflect.TypeOf((*MockRuntime)(nil).SyncPod), pod, podStatus, pullSecrets, backOff)
}
// KillPod mocks base method
func (m *MockRuntime) KillPod(pod *v1.Pod, runningPod container.Pod, gracePeriodOverride *int64) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "KillPod", pod, runningPod, gracePeriodOverride)
ret0, _ := ret[0].(error)
return ret0
}
// KillPod indicates an expected call of KillPod
func (mr *MockRuntimeMockRecorder) KillPod(pod, runningPod, gracePeriodOverride interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "KillPod", reflect.TypeOf((*MockRuntime)(nil).KillPod), pod, runningPod, gracePeriodOverride)
}
// GetPodStatus mocks base method
func (m *MockRuntime) GetPodStatus(uid types.UID, name, namespace string) (*container.PodStatus, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodStatus", uid, name, namespace)
ret0, _ := ret[0].(*container.PodStatus)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetPodStatus indicates an expected call of GetPodStatus
func (mr *MockRuntimeMockRecorder) GetPodStatus(uid, name, namespace interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodStatus", reflect.TypeOf((*MockRuntime)(nil).GetPodStatus), uid, name, namespace)
}
// GetContainerLogs mocks base method
func (m *MockRuntime) GetContainerLogs(ctx context.Context, pod *v1.Pod, containerID container.ContainerID, logOptions *v1.PodLogOptions, stdout, stderr io.Writer) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetContainerLogs", ctx, pod, containerID, logOptions, stdout, stderr)
ret0, _ := ret[0].(error)
return ret0
}
// GetContainerLogs indicates an expected call of GetContainerLogs
func (mr *MockRuntimeMockRecorder) GetContainerLogs(ctx, pod, containerID, logOptions, stdout, stderr interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetContainerLogs", reflect.TypeOf((*MockRuntime)(nil).GetContainerLogs), ctx, pod, containerID, logOptions, stdout, stderr)
}
// DeleteContainer mocks base method
func (m *MockRuntime) DeleteContainer(containerID container.ContainerID) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DeleteContainer", containerID)
ret0, _ := ret[0].(error)
return ret0
}
// DeleteContainer indicates an expected call of DeleteContainer
func (mr *MockRuntimeMockRecorder) DeleteContainer(containerID interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteContainer", reflect.TypeOf((*MockRuntime)(nil).DeleteContainer), containerID)
}
// PullImage mocks base method
func (m *MockRuntime) PullImage(image container.ImageSpec, pullSecrets []v1.Secret, podSandboxConfig *v1alpha2.PodSandboxConfig) (string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "PullImage", image, pullSecrets, podSandboxConfig)
ret0, _ := ret[0].(string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// PullImage indicates an expected call of PullImage
func (mr *MockRuntimeMockRecorder) PullImage(image, pullSecrets, podSandboxConfig interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PullImage", reflect.TypeOf((*MockRuntime)(nil).PullImage), image, pullSecrets, podSandboxConfig)
}
// GetImageRef mocks base method
func (m *MockRuntime) GetImageRef(image container.ImageSpec) (string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetImageRef", image)
ret0, _ := ret[0].(string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetImageRef indicates an expected call of GetImageRef
func (mr *MockRuntimeMockRecorder) GetImageRef(image interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImageRef", reflect.TypeOf((*MockRuntime)(nil).GetImageRef), image)
}
// ListImages mocks base method
func (m *MockRuntime) ListImages() ([]container.Image, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListImages")
ret0, _ := ret[0].([]container.Image)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListImages indicates an expected call of ListImages
func (mr *MockRuntimeMockRecorder) ListImages() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListImages", reflect.TypeOf((*MockRuntime)(nil).ListImages))
}
// RemoveImage mocks base method
func (m *MockRuntime) RemoveImage(image container.ImageSpec) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RemoveImage", image)
ret0, _ := ret[0].(error)
return ret0
}
// RemoveImage indicates an expected call of RemoveImage
func (mr *MockRuntimeMockRecorder) RemoveImage(image interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveImage", reflect.TypeOf((*MockRuntime)(nil).RemoveImage), image)
}
// ImageStats mocks base method
func (m *MockRuntime) ImageStats() (*container.ImageStats, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ImageStats")
ret0, _ := ret[0].(*container.ImageStats)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ImageStats indicates an expected call of ImageStats
func (mr *MockRuntimeMockRecorder) ImageStats() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImageStats", reflect.TypeOf((*MockRuntime)(nil).ImageStats))
}
// UpdatePodCIDR mocks base method
func (m *MockRuntime) UpdatePodCIDR(podCIDR string) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "UpdatePodCIDR", podCIDR)
ret0, _ := ret[0].(error)
return ret0
}
// UpdatePodCIDR indicates an expected call of UpdatePodCIDR
func (mr *MockRuntimeMockRecorder) UpdatePodCIDR(podCIDR interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdatePodCIDR", reflect.TypeOf((*MockRuntime)(nil).UpdatePodCIDR), podCIDR)
}
// MockStreamingRuntime is a mock of StreamingRuntime interface
type MockStreamingRuntime struct {
ctrl *gomock.Controller
recorder *MockStreamingRuntimeMockRecorder
}
// MockStreamingRuntimeMockRecorder is the mock recorder for MockStreamingRuntime
type MockStreamingRuntimeMockRecorder struct {
mock *MockStreamingRuntime
}
// NewMockStreamingRuntime creates a new mock instance
func NewMockStreamingRuntime(ctrl *gomock.Controller) *MockStreamingRuntime {
mock := &MockStreamingRuntime{ctrl: ctrl}
mock.recorder = &MockStreamingRuntimeMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockStreamingRuntime) EXPECT() *MockStreamingRuntimeMockRecorder {
return m.recorder
}
// GetExec mocks base method
func (m *MockStreamingRuntime) GetExec(id container.ContainerID, cmd []string, stdin, stdout, stderr, tty bool) (*url.URL, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetExec", id, cmd, stdin, stdout, stderr, tty)
ret0, _ := ret[0].(*url.URL)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetExec indicates an expected call of GetExec
func (mr *MockStreamingRuntimeMockRecorder) GetExec(id, cmd, stdin, stdout, stderr, tty interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetExec", reflect.TypeOf((*MockStreamingRuntime)(nil).GetExec), id, cmd, stdin, stdout, stderr, tty)
}
// GetAttach mocks base method
func (m *MockStreamingRuntime) GetAttach(id container.ContainerID, stdin, stdout, stderr, tty bool) (*url.URL, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetAttach", id, stdin, stdout, stderr, tty)
ret0, _ := ret[0].(*url.URL)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetAttach indicates an expected call of GetAttach
func (mr *MockStreamingRuntimeMockRecorder) GetAttach(id, stdin, stdout, stderr, tty interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAttach", reflect.TypeOf((*MockStreamingRuntime)(nil).GetAttach), id, stdin, stdout, stderr, tty)
}
// GetPortForward mocks base method
func (m *MockStreamingRuntime) GetPortForward(podName, podNamespace string, podUID types.UID, ports []int32) (*url.URL, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPortForward", podName, podNamespace, podUID, ports)
ret0, _ := ret[0].(*url.URL)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetPortForward indicates an expected call of GetPortForward
func (mr *MockStreamingRuntimeMockRecorder) GetPortForward(podName, podNamespace, podUID, ports interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPortForward", reflect.TypeOf((*MockStreamingRuntime)(nil).GetPortForward), podName, podNamespace, podUID, ports)
}
// MockImageService is a mock of ImageService interface
type MockImageService struct {
ctrl *gomock.Controller
recorder *MockImageServiceMockRecorder
}
// MockImageServiceMockRecorder is the mock recorder for MockImageService
type MockImageServiceMockRecorder struct {
mock *MockImageService
}
// NewMockImageService creates a new mock instance
func NewMockImageService(ctrl *gomock.Controller) *MockImageService {
mock := &MockImageService{ctrl: ctrl}
mock.recorder = &MockImageServiceMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockImageService) EXPECT() *MockImageServiceMockRecorder {
return m.recorder
}
// PullImage mocks base method
func (m *MockImageService) PullImage(image container.ImageSpec, pullSecrets []v1.Secret, podSandboxConfig *v1alpha2.PodSandboxConfig) (string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "PullImage", image, pullSecrets, podSandboxConfig)
ret0, _ := ret[0].(string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// PullImage indicates an expected call of PullImage
func (mr *MockImageServiceMockRecorder) PullImage(image, pullSecrets, podSandboxConfig interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PullImage", reflect.TypeOf((*MockImageService)(nil).PullImage), image, pullSecrets, podSandboxConfig)
}
// GetImageRef mocks base method
func (m *MockImageService) GetImageRef(image container.ImageSpec) (string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetImageRef", image)
ret0, _ := ret[0].(string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetImageRef indicates an expected call of GetImageRef
func (mr *MockImageServiceMockRecorder) GetImageRef(image interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImageRef", reflect.TypeOf((*MockImageService)(nil).GetImageRef), image)
}
// ListImages mocks base method
func (m *MockImageService) ListImages() ([]container.Image, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListImages")
ret0, _ := ret[0].([]container.Image)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListImages indicates an expected call of ListImages
func (mr *MockImageServiceMockRecorder) ListImages() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListImages", reflect.TypeOf((*MockImageService)(nil).ListImages))
}
// RemoveImage mocks base method
func (m *MockImageService) RemoveImage(image container.ImageSpec) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RemoveImage", image)
ret0, _ := ret[0].(error)
return ret0
}
// RemoveImage indicates an expected call of RemoveImage
func (mr *MockImageServiceMockRecorder) RemoveImage(image interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveImage", reflect.TypeOf((*MockImageService)(nil).RemoveImage), image)
}
// ImageStats mocks base method
func (m *MockImageService) ImageStats() (*container.ImageStats, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ImageStats")
ret0, _ := ret[0].(*container.ImageStats)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ImageStats indicates an expected call of ImageStats
func (mr *MockImageServiceMockRecorder) ImageStats() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImageStats", reflect.TypeOf((*MockImageService)(nil).ImageStats))
}
// MockAttacher is a mock of Attacher interface
type MockAttacher struct {
ctrl *gomock.Controller
recorder *MockAttacherMockRecorder
}
// MockAttacherMockRecorder is the mock recorder for MockAttacher
type MockAttacherMockRecorder struct {
mock *MockAttacher
}
// NewMockAttacher creates a new mock instance
func NewMockAttacher(ctrl *gomock.Controller) *MockAttacher {
mock := &MockAttacher{ctrl: ctrl}
mock.recorder = &MockAttacherMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockAttacher) EXPECT() *MockAttacherMockRecorder {
return m.recorder
}
// AttachContainer mocks base method
func (m *MockAttacher) AttachContainer(id container.ContainerID, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "AttachContainer", id, stdin, stdout, stderr, tty, resize)
ret0, _ := ret[0].(error)
return ret0
}
// AttachContainer indicates an expected call of AttachContainer
func (mr *MockAttacherMockRecorder) AttachContainer(id, stdin, stdout, stderr, tty, resize interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AttachContainer", reflect.TypeOf((*MockAttacher)(nil).AttachContainer), id, stdin, stdout, stderr, tty, resize)
}
// MockCommandRunner is a mock of CommandRunner interface
type MockCommandRunner struct {
ctrl *gomock.Controller
recorder *MockCommandRunnerMockRecorder
}
// MockCommandRunnerMockRecorder is the mock recorder for MockCommandRunner
type MockCommandRunnerMockRecorder struct {
mock *MockCommandRunner
}
// NewMockCommandRunner creates a new mock instance
func NewMockCommandRunner(ctrl *gomock.Controller) *MockCommandRunner {
mock := &MockCommandRunner{ctrl: ctrl}
mock.recorder = &MockCommandRunnerMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockCommandRunner) EXPECT() *MockCommandRunnerMockRecorder {
return m.recorder
}
// RunInContainer mocks base method
func (m *MockCommandRunner) RunInContainer(id container.ContainerID, cmd []string, timeout time.Duration) ([]byte, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RunInContainer", id, cmd, timeout)
ret0, _ := ret[0].([]byte)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// RunInContainer indicates an expected call of RunInContainer
func (mr *MockCommandRunnerMockRecorder) RunInContainer(id, cmd, timeout interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunInContainer", reflect.TypeOf((*MockCommandRunner)(nil).RunInContainer), id, cmd, timeout)
} }

View File

@ -21,6 +21,7 @@ import (
"testing" "testing"
"time" "time"
gomock "github.com/golang/mock/gomock"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
@ -1551,8 +1552,11 @@ func TestUpdateMemcgThreshold(t *testing.T) {
} }
summaryProvider := &fakeSummaryProvider{result: makeMemoryStats("2Gi", map[*v1.Pod]statsapi.PodStats{})} summaryProvider := &fakeSummaryProvider{result: makeMemoryStats("2Gi", map[*v1.Pod]statsapi.PodStats{})}
thresholdNotifier := &MockThresholdNotifier{} mockCtrl := gomock.NewController(t)
thresholdNotifier.On("UpdateThreshold", summaryProvider.result).Return(nil).Twice() defer mockCtrl.Finish()
thresholdNotifier := NewMockThresholdNotifier(mockCtrl)
thresholdNotifier.EXPECT().UpdateThreshold(summaryProvider.result).Return(nil).Times(2)
manager := &managerImpl{ manager := &managerImpl{
clock: fakeClock, clock: fakeClock,
@ -1568,29 +1572,24 @@ func TestUpdateMemcgThreshold(t *testing.T) {
thresholdNotifiers: []ThresholdNotifier{thresholdNotifier}, thresholdNotifiers: []ThresholdNotifier{thresholdNotifier},
} }
manager.synchronize(diskInfoProvider, activePodsFunc)
// The UpdateThreshold method should have been called once, since this is the first run. // The UpdateThreshold method should have been called once, since this is the first run.
thresholdNotifier.AssertNumberOfCalls(t, "UpdateThreshold", 1)
manager.synchronize(diskInfoProvider, activePodsFunc) manager.synchronize(diskInfoProvider, activePodsFunc)
// The UpdateThreshold method should not have been called again, since not enough time has passed
thresholdNotifier.AssertNumberOfCalls(t, "UpdateThreshold", 1)
// The UpdateThreshold method should not have been called again, since not enough time has passed
manager.synchronize(diskInfoProvider, activePodsFunc)
// The UpdateThreshold method should be called again since enough time has passed
fakeClock.Step(2 * notifierRefreshInterval) fakeClock.Step(2 * notifierRefreshInterval)
manager.synchronize(diskInfoProvider, activePodsFunc) manager.synchronize(diskInfoProvider, activePodsFunc)
// The UpdateThreshold method should be called again since enough time has passed
thresholdNotifier.AssertNumberOfCalls(t, "UpdateThreshold", 2)
// new memory threshold notifier that returns an error // new memory threshold notifier that returns an error
thresholdNotifier = &MockThresholdNotifier{} thresholdNotifier = NewMockThresholdNotifier(mockCtrl)
thresholdNotifier.On("UpdateThreshold", summaryProvider.result).Return(fmt.Errorf("error updating threshold")) thresholdNotifier.EXPECT().UpdateThreshold(summaryProvider.result).Return(fmt.Errorf("error updating threshold")).Times(1)
thresholdNotifier.On("Description").Return("mock thresholdNotifier").Once() thresholdNotifier.EXPECT().Description().Return("mock thresholdNotifier").Times(1)
manager.thresholdNotifiers = []ThresholdNotifier{thresholdNotifier} manager.thresholdNotifiers = []ThresholdNotifier{thresholdNotifier}
fakeClock.Step(2 * notifierRefreshInterval)
manager.synchronize(diskInfoProvider, activePodsFunc)
// The UpdateThreshold method should be called because at least notifierRefreshInterval time has passed. // The UpdateThreshold method should be called because at least notifierRefreshInterval time has passed.
// The Description method should be called because UpdateThreshold returned an error // The Description method should be called because UpdateThreshold returned an error
thresholdNotifier.AssertNumberOfCalls(t, "UpdateThreshold", 1) fakeClock.Step(2 * notifierRefreshInterval)
thresholdNotifier.AssertNumberOfCalls(t, "Description", 1) manager.synchronize(diskInfoProvider, activePodsFunc)
} }

View File

@ -23,6 +23,7 @@ import (
"testing" "testing"
"time" "time"
gomock "github.com/golang/mock/gomock"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1" statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api" evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api"
@ -129,23 +130,24 @@ func TestUpdateThreshold(t *testing.T) {
}, },
} }
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
for _, tc := range testCases { for _, tc := range testCases {
t.Run(tc.description, func(t *testing.T) { t.Run(tc.description, func(t *testing.T) {
notifierFactory := &MockNotifierFactory{} notifierFactory := NewMockNotifierFactory(mockCtrl)
notifier := &MockCgroupNotifier{} notifier := NewMockCgroupNotifier(mockCtrl)
m := newTestMemoryThresholdNotifier(tc.evictionThreshold, notifierFactory, nil) m := newTestMemoryThresholdNotifier(tc.evictionThreshold, notifierFactory, nil)
notifierFactory.On("NewCgroupNotifier", testCgroupPath, memoryUsageAttribute, tc.expectedThreshold.Value()).Return(notifier, tc.updateThresholdErr) notifierFactory.EXPECT().NewCgroupNotifier(testCgroupPath, memoryUsageAttribute, tc.expectedThreshold.Value()).Return(notifier, tc.updateThresholdErr).Times(1)
var events chan<- struct{} = m.events var events chan<- struct{} = m.events
notifier.On("Start", events).Return() notifier.EXPECT().Start(events).Return().AnyTimes()
err := m.UpdateThreshold(nodeSummary(tc.available, tc.workingSet, tc.usage, isAllocatableEvictionThreshold(tc.evictionThreshold))) err := m.UpdateThreshold(nodeSummary(tc.available, tc.workingSet, tc.usage, isAllocatableEvictionThreshold(tc.evictionThreshold)))
if err != nil && !tc.expectErr { if err != nil && !tc.expectErr {
t.Errorf("Unexpected error updating threshold: %v", err) t.Errorf("Unexpected error updating threshold: %v", err)
} else if err == nil && tc.expectErr { } else if err == nil && tc.expectErr {
t.Errorf("Expected error updating threshold, but got nil") t.Errorf("Expected error updating threshold, but got nil")
} }
if !tc.expectErr {
notifierFactory.AssertNumberOfCalls(t, "NewCgroupNotifier", 1)
}
}) })
} }
} }
@ -159,24 +161,26 @@ func TestStart(t *testing.T) {
Quantity: &noResources, Quantity: &noResources,
}, },
} }
notifier := &MockCgroupNotifier{} mockCtrl := gomock.NewController(t)
notifierFactory := &MockNotifierFactory{} defer mockCtrl.Finish()
notifierFactory := NewMockNotifierFactory(mockCtrl)
notifier := NewMockCgroupNotifier(mockCtrl)
var wg sync.WaitGroup var wg sync.WaitGroup
wg.Add(4) wg.Add(4)
m := newTestMemoryThresholdNotifier(threshold, notifierFactory, func(string) { m := newTestMemoryThresholdNotifier(threshold, notifierFactory, func(string) {
wg.Done() wg.Done()
}) })
notifierFactory.On("NewCgroupNotifier", testCgroupPath, memoryUsageAttribute, int64(0)).Return(notifier, nil) notifierFactory.EXPECT().NewCgroupNotifier(testCgroupPath, memoryUsageAttribute, int64(0)).Return(notifier, nil).Times(1)
var events chan<- struct{} = m.events var events chan<- struct{} = m.events
notifier.On("Start", events).Return() notifier.EXPECT().Start(events).Return()
notifier.On("Stop").Return() notifier.EXPECT().Stop().Return().AnyTimes()
err := m.UpdateThreshold(nodeSummary(noResources, noResources, noResources, isAllocatableEvictionThreshold(threshold))) err := m.UpdateThreshold(nodeSummary(noResources, noResources, noResources, isAllocatableEvictionThreshold(threshold)))
if err != nil { if err != nil {
t.Errorf("Unexpected error updating threshold: %v", err) t.Errorf("Unexpected error updating threshold: %v", err)
} }
notifierFactory.AssertNumberOfCalls(t, "NewCgroupNotifier", 1)
go m.Start() go m.Start()

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2018 The Kubernetes Authors. Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,85 +14,352 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// Code generated by MockGen. DO NOT EDIT.
// Source: types.go
// Package eviction is a generated GoMock package.
package eviction package eviction
import ( import (
mock "github.com/stretchr/testify/mock" gomock "github.com/golang/mock/gomock"
statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1" v1alpha1 "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
reflect "reflect"
time "time"
) )
// MockCgroupNotifier is a mock implementation of the CgroupNotifier interface // MockManager is a mock of Manager interface
type MockManager struct {
ctrl *gomock.Controller
recorder *MockManagerMockRecorder
}
// MockManagerMockRecorder is the mock recorder for MockManager
type MockManagerMockRecorder struct {
mock *MockManager
}
// NewMockManager creates a new mock instance
func NewMockManager(ctrl *gomock.Controller) *MockManager {
mock := &MockManager{ctrl: ctrl}
mock.recorder = &MockManagerMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockManager) EXPECT() *MockManagerMockRecorder {
return m.recorder
}
// Start mocks base method
func (m *MockManager) Start(diskInfoProvider DiskInfoProvider, podFunc ActivePodsFunc, podCleanedUpFunc PodCleanedUpFunc, monitoringInterval time.Duration) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "Start", diskInfoProvider, podFunc, podCleanedUpFunc, monitoringInterval)
}
// Start indicates an expected call of Start
func (mr *MockManagerMockRecorder) Start(diskInfoProvider, podFunc, podCleanedUpFunc, monitoringInterval interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockManager)(nil).Start), diskInfoProvider, podFunc, podCleanedUpFunc, monitoringInterval)
}
// IsUnderMemoryPressure mocks base method
func (m *MockManager) IsUnderMemoryPressure() bool {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "IsUnderMemoryPressure")
ret0, _ := ret[0].(bool)
return ret0
}
// IsUnderMemoryPressure indicates an expected call of IsUnderMemoryPressure
func (mr *MockManagerMockRecorder) IsUnderMemoryPressure() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsUnderMemoryPressure", reflect.TypeOf((*MockManager)(nil).IsUnderMemoryPressure))
}
// IsUnderDiskPressure mocks base method
func (m *MockManager) IsUnderDiskPressure() bool {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "IsUnderDiskPressure")
ret0, _ := ret[0].(bool)
return ret0
}
// IsUnderDiskPressure indicates an expected call of IsUnderDiskPressure
func (mr *MockManagerMockRecorder) IsUnderDiskPressure() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsUnderDiskPressure", reflect.TypeOf((*MockManager)(nil).IsUnderDiskPressure))
}
// IsUnderPIDPressure mocks base method
func (m *MockManager) IsUnderPIDPressure() bool {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "IsUnderPIDPressure")
ret0, _ := ret[0].(bool)
return ret0
}
// IsUnderPIDPressure indicates an expected call of IsUnderPIDPressure
func (mr *MockManagerMockRecorder) IsUnderPIDPressure() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsUnderPIDPressure", reflect.TypeOf((*MockManager)(nil).IsUnderPIDPressure))
}
// MockDiskInfoProvider is a mock of DiskInfoProvider interface
type MockDiskInfoProvider struct {
ctrl *gomock.Controller
recorder *MockDiskInfoProviderMockRecorder
}
// MockDiskInfoProviderMockRecorder is the mock recorder for MockDiskInfoProvider
type MockDiskInfoProviderMockRecorder struct {
mock *MockDiskInfoProvider
}
// NewMockDiskInfoProvider creates a new mock instance
func NewMockDiskInfoProvider(ctrl *gomock.Controller) *MockDiskInfoProvider {
mock := &MockDiskInfoProvider{ctrl: ctrl}
mock.recorder = &MockDiskInfoProviderMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockDiskInfoProvider) EXPECT() *MockDiskInfoProviderMockRecorder {
return m.recorder
}
// HasDedicatedImageFs mocks base method
func (m *MockDiskInfoProvider) HasDedicatedImageFs() (bool, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "HasDedicatedImageFs")
ret0, _ := ret[0].(bool)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// HasDedicatedImageFs indicates an expected call of HasDedicatedImageFs
func (mr *MockDiskInfoProviderMockRecorder) HasDedicatedImageFs() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasDedicatedImageFs", reflect.TypeOf((*MockDiskInfoProvider)(nil).HasDedicatedImageFs))
}
// MockImageGC is a mock of ImageGC interface
type MockImageGC struct {
ctrl *gomock.Controller
recorder *MockImageGCMockRecorder
}
// MockImageGCMockRecorder is the mock recorder for MockImageGC
type MockImageGCMockRecorder struct {
mock *MockImageGC
}
// NewMockImageGC creates a new mock instance
func NewMockImageGC(ctrl *gomock.Controller) *MockImageGC {
mock := &MockImageGC{ctrl: ctrl}
mock.recorder = &MockImageGCMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockImageGC) EXPECT() *MockImageGCMockRecorder {
return m.recorder
}
// DeleteUnusedImages mocks base method
func (m *MockImageGC) DeleteUnusedImages() error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DeleteUnusedImages")
ret0, _ := ret[0].(error)
return ret0
}
// DeleteUnusedImages indicates an expected call of DeleteUnusedImages
func (mr *MockImageGCMockRecorder) DeleteUnusedImages() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUnusedImages", reflect.TypeOf((*MockImageGC)(nil).DeleteUnusedImages))
}
// MockContainerGC is a mock of ContainerGC interface
type MockContainerGC struct {
ctrl *gomock.Controller
recorder *MockContainerGCMockRecorder
}
// MockContainerGCMockRecorder is the mock recorder for MockContainerGC
type MockContainerGCMockRecorder struct {
mock *MockContainerGC
}
// NewMockContainerGC creates a new mock instance
func NewMockContainerGC(ctrl *gomock.Controller) *MockContainerGC {
mock := &MockContainerGC{ctrl: ctrl}
mock.recorder = &MockContainerGCMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockContainerGC) EXPECT() *MockContainerGCMockRecorder {
return m.recorder
}
// DeleteAllUnusedContainers mocks base method
func (m *MockContainerGC) DeleteAllUnusedContainers() error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DeleteAllUnusedContainers")
ret0, _ := ret[0].(error)
return ret0
}
// DeleteAllUnusedContainers indicates an expected call of DeleteAllUnusedContainers
func (mr *MockContainerGCMockRecorder) DeleteAllUnusedContainers() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllUnusedContainers", reflect.TypeOf((*MockContainerGC)(nil).DeleteAllUnusedContainers))
}
// MockCgroupNotifier is a mock of CgroupNotifier interface
type MockCgroupNotifier struct { type MockCgroupNotifier struct {
mock.Mock ctrl *gomock.Controller
recorder *MockCgroupNotifierMockRecorder
} }
// Start implements the NotifierFactory interface // MockCgroupNotifierMockRecorder is the mock recorder for MockCgroupNotifier
func (m *MockCgroupNotifier) Start(a0 chan<- struct{}) { type MockCgroupNotifierMockRecorder struct {
m.Called(a0) mock *MockCgroupNotifier
} }
// Stop implements the NotifierFactory interface // NewMockCgroupNotifier creates a new mock instance
func NewMockCgroupNotifier(ctrl *gomock.Controller) *MockCgroupNotifier {
mock := &MockCgroupNotifier{ctrl: ctrl}
mock.recorder = &MockCgroupNotifierMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockCgroupNotifier) EXPECT() *MockCgroupNotifierMockRecorder {
return m.recorder
}
// Start mocks base method
func (m *MockCgroupNotifier) Start(eventCh chan<- struct{}) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "Start", eventCh)
}
// Start indicates an expected call of Start
func (mr *MockCgroupNotifierMockRecorder) Start(eventCh interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockCgroupNotifier)(nil).Start), eventCh)
}
// Stop mocks base method
func (m *MockCgroupNotifier) Stop() { func (m *MockCgroupNotifier) Stop() {
m.Called() m.ctrl.T.Helper()
m.ctrl.Call(m, "Stop")
} }
// MockNotifierFactory is a mock of the NotifierFactory interface // Stop indicates an expected call of Stop
func (mr *MockCgroupNotifierMockRecorder) Stop() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stop", reflect.TypeOf((*MockCgroupNotifier)(nil).Stop))
}
// MockNotifierFactory is a mock of NotifierFactory interface
type MockNotifierFactory struct { type MockNotifierFactory struct {
mock.Mock ctrl *gomock.Controller
recorder *MockNotifierFactoryMockRecorder
} }
// NewCgroupNotifier implements the NotifierFactory interface // MockNotifierFactoryMockRecorder is the mock recorder for MockNotifierFactory
func (m *MockNotifierFactory) NewCgroupNotifier(a0, a1 string, a2 int64) (CgroupNotifier, error) { type MockNotifierFactoryMockRecorder struct {
ret := m.Called(a0, a1, a2) mock *MockNotifierFactory
var r0 CgroupNotifier
if rf, ok := ret.Get(0).(func(string, string, int64) CgroupNotifier); ok {
r0 = rf(a0, a1, a2)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(CgroupNotifier)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(string, string, int64) error); ok {
r1 = rf(a0, a1, a2)
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// MockThresholdNotifier is a mock implementation of the ThresholdNotifier interface // NewMockNotifierFactory creates a new mock instance
func NewMockNotifierFactory(ctrl *gomock.Controller) *MockNotifierFactory {
mock := &MockNotifierFactory{ctrl: ctrl}
mock.recorder = &MockNotifierFactoryMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockNotifierFactory) EXPECT() *MockNotifierFactoryMockRecorder {
return m.recorder
}
// NewCgroupNotifier mocks base method
func (m *MockNotifierFactory) NewCgroupNotifier(path, attribute string, threshold int64) (CgroupNotifier, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "NewCgroupNotifier", path, attribute, threshold)
ret0, _ := ret[0].(CgroupNotifier)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// NewCgroupNotifier indicates an expected call of NewCgroupNotifier
func (mr *MockNotifierFactoryMockRecorder) NewCgroupNotifier(path, attribute, threshold interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewCgroupNotifier", reflect.TypeOf((*MockNotifierFactory)(nil).NewCgroupNotifier), path, attribute, threshold)
}
// MockThresholdNotifier is a mock of ThresholdNotifier interface
type MockThresholdNotifier struct { type MockThresholdNotifier struct {
mock.Mock ctrl *gomock.Controller
recorder *MockThresholdNotifierMockRecorder
} }
// Start implements the ThresholdNotifier interface // MockThresholdNotifierMockRecorder is the mock recorder for MockThresholdNotifier
type MockThresholdNotifierMockRecorder struct {
mock *MockThresholdNotifier
}
// NewMockThresholdNotifier creates a new mock instance
func NewMockThresholdNotifier(ctrl *gomock.Controller) *MockThresholdNotifier {
mock := &MockThresholdNotifier{ctrl: ctrl}
mock.recorder = &MockThresholdNotifierMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockThresholdNotifier) EXPECT() *MockThresholdNotifierMockRecorder {
return m.recorder
}
// Start mocks base method
func (m *MockThresholdNotifier) Start() { func (m *MockThresholdNotifier) Start() {
m.Called() m.ctrl.T.Helper()
m.ctrl.Call(m, "Start")
} }
// UpdateThreshold implements the ThresholdNotifier interface // Start indicates an expected call of Start
func (m *MockThresholdNotifier) UpdateThreshold(a0 *statsapi.Summary) error { func (mr *MockThresholdNotifierMockRecorder) Start() *gomock.Call {
ret := m.Called(a0) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockThresholdNotifier)(nil).Start))
var r0 error
if rf, ok := ret.Get(0).(func(*statsapi.Summary) error); ok {
r0 = rf(a0)
} else {
r0 = ret.Error(0)
}
return r0
} }
// Description implements the ThresholdNotifier interface // UpdateThreshold mocks base method
func (m *MockThresholdNotifier) UpdateThreshold(summary *v1alpha1.Summary) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "UpdateThreshold", summary)
ret0, _ := ret[0].(error)
return ret0
}
// UpdateThreshold indicates an expected call of UpdateThreshold
func (mr *MockThresholdNotifierMockRecorder) UpdateThreshold(summary interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateThreshold", reflect.TypeOf((*MockThresholdNotifier)(nil).UpdateThreshold), summary)
}
// Description mocks base method
func (m *MockThresholdNotifier) Description() string { func (m *MockThresholdNotifier) Description() string {
ret := m.Called() m.ctrl.T.Helper()
var r0 string ret := m.ctrl.Call(m, "Description")
if rf, ok := ret.Get(0).(func() string); ok { ret0, _ := ret[0].(string)
r0 = rf() return ret0
} else { }
r0 = ret.String(0)
} // Description indicates an expected call of Description
return r0 func (mr *MockThresholdNotifierMockRecorder) Description() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Description", reflect.TypeOf((*MockThresholdNotifier)(nil).Description))
} }

View File

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
//go:generate mockgen -source=types.go -destination=mock_threshold_notifier_test.go -package=eviction NotifierFactory,ThresholdNotifier
package eviction package eviction
import ( import (

View File

@ -21,6 +21,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@ -28,6 +29,7 @@ import (
statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1" statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
"k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/container"
containertest "k8s.io/kubernetes/pkg/kubelet/container/testing" containertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
stats "k8s.io/kubernetes/pkg/kubelet/server/stats"
statstest "k8s.io/kubernetes/pkg/kubelet/server/stats/testing" statstest "k8s.io/kubernetes/pkg/kubelet/server/stats/testing"
testingclock "k8s.io/utils/clock/testing" testingclock "k8s.io/utils/clock/testing"
) )
@ -35,9 +37,8 @@ import (
var zero time.Time var zero time.Time
var sandboxImage = "k8s.gcr.io/pause-amd64:latest" var sandboxImage = "k8s.gcr.io/pause-amd64:latest"
func newRealImageGCManager(policy ImageGCPolicy) (*realImageGCManager, *containertest.FakeRuntime, *statstest.StatsProvider) { func newRealImageGCManager(policy ImageGCPolicy, mockStatsProvider stats.Provider) (*realImageGCManager, *containertest.FakeRuntime) {
fakeRuntime := &containertest.FakeRuntime{} fakeRuntime := &containertest.FakeRuntime{}
mockStatsProvider := new(statstest.StatsProvider)
return &realImageGCManager{ return &realImageGCManager{
runtime: fakeRuntime, runtime: fakeRuntime,
policy: policy, policy: policy,
@ -45,7 +46,7 @@ func newRealImageGCManager(policy ImageGCPolicy) (*realImageGCManager, *containe
statsProvider: mockStatsProvider, statsProvider: mockStatsProvider,
recorder: &record.FakeRecorder{}, recorder: &record.FakeRecorder{},
sandboxImage: sandboxImage, sandboxImage: sandboxImage,
}, fakeRuntime, mockStatsProvider }, fakeRuntime
} }
// Accessors used for thread-safe testing. // Accessors used for thread-safe testing.
@ -90,7 +91,11 @@ func makeContainer(id int) *container.Container {
} }
func TestDetectImagesInitialDetect(t *testing.T) { func TestDetectImagesInitialDetect(t *testing.T) {
manager, fakeRuntime, _ := newRealImageGCManager(ImageGCPolicy{}) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(ImageGCPolicy{}, mockStatsProvider)
fakeRuntime.ImageList = []container.Image{ fakeRuntime.ImageList = []container.Image{
makeImage(0, 1024), makeImage(0, 1024),
makeImage(1, 2048), makeImage(1, 2048),
@ -133,8 +138,12 @@ func TestDetectImagesInitialDetect(t *testing.T) {
} }
func TestDetectImagesWithNewImage(t *testing.T) { func TestDetectImagesWithNewImage(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
// Just one image initially. // Just one image initially.
manager, fakeRuntime, _ := newRealImageGCManager(ImageGCPolicy{}) manager, fakeRuntime := newRealImageGCManager(ImageGCPolicy{}, mockStatsProvider)
fakeRuntime.ImageList = []container.Image{ fakeRuntime.ImageList = []container.Image{
makeImage(0, 1024), makeImage(0, 1024),
makeImage(1, 2048), makeImage(1, 2048),
@ -179,7 +188,11 @@ func TestDetectImagesWithNewImage(t *testing.T) {
} }
func TestDeleteUnusedImagesExemptSandboxImage(t *testing.T) { func TestDeleteUnusedImagesExemptSandboxImage(t *testing.T) {
manager, fakeRuntime, _ := newRealImageGCManager(ImageGCPolicy{}) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(ImageGCPolicy{}, mockStatsProvider)
fakeRuntime.ImageList = []container.Image{ fakeRuntime.ImageList = []container.Image{
{ {
ID: sandboxImage, ID: sandboxImage,
@ -194,7 +207,11 @@ func TestDeleteUnusedImagesExemptSandboxImage(t *testing.T) {
} }
func TestDetectImagesContainerStopped(t *testing.T) { func TestDetectImagesContainerStopped(t *testing.T) {
manager, fakeRuntime, _ := newRealImageGCManager(ImageGCPolicy{}) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(ImageGCPolicy{}, mockStatsProvider)
fakeRuntime.ImageList = []container.Image{ fakeRuntime.ImageList = []container.Image{
makeImage(0, 1024), makeImage(0, 1024),
makeImage(1, 2048), makeImage(1, 2048),
@ -230,7 +247,11 @@ func TestDetectImagesContainerStopped(t *testing.T) {
} }
func TestDetectImagesWithRemovedImages(t *testing.T) { func TestDetectImagesWithRemovedImages(t *testing.T) {
manager, fakeRuntime, _ := newRealImageGCManager(ImageGCPolicy{}) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(ImageGCPolicy{}, mockStatsProvider)
fakeRuntime.ImageList = []container.Image{ fakeRuntime.ImageList = []container.Image{
makeImage(0, 1024), makeImage(0, 1024),
makeImage(1, 2048), makeImage(1, 2048),
@ -256,7 +277,11 @@ func TestDetectImagesWithRemovedImages(t *testing.T) {
} }
func TestFreeSpaceImagesInUseContainersAreIgnored(t *testing.T) { func TestFreeSpaceImagesInUseContainersAreIgnored(t *testing.T) {
manager, fakeRuntime, _ := newRealImageGCManager(ImageGCPolicy{}) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(ImageGCPolicy{}, mockStatsProvider)
fakeRuntime.ImageList = []container.Image{ fakeRuntime.ImageList = []container.Image{
makeImage(0, 1024), makeImage(0, 1024),
makeImage(1, 2048), makeImage(1, 2048),
@ -277,7 +302,11 @@ func TestFreeSpaceImagesInUseContainersAreIgnored(t *testing.T) {
} }
func TestDeleteUnusedImagesRemoveAllUnusedImages(t *testing.T) { func TestDeleteUnusedImagesRemoveAllUnusedImages(t *testing.T) {
manager, fakeRuntime, _ := newRealImageGCManager(ImageGCPolicy{}) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(ImageGCPolicy{}, mockStatsProvider)
fakeRuntime.ImageList = []container.Image{ fakeRuntime.ImageList = []container.Image{
makeImage(0, 1024), makeImage(0, 1024),
makeImage(1, 2048), makeImage(1, 2048),
@ -298,7 +327,11 @@ func TestDeleteUnusedImagesRemoveAllUnusedImages(t *testing.T) {
} }
func TestFreeSpaceRemoveByLeastRecentlyUsed(t *testing.T) { func TestFreeSpaceRemoveByLeastRecentlyUsed(t *testing.T) {
manager, fakeRuntime, _ := newRealImageGCManager(ImageGCPolicy{}) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(ImageGCPolicy{}, mockStatsProvider)
fakeRuntime.ImageList = []container.Image{ fakeRuntime.ImageList = []container.Image{
makeImage(0, 1024), makeImage(0, 1024),
makeImage(1, 2048), makeImage(1, 2048),
@ -341,7 +374,11 @@ func TestFreeSpaceRemoveByLeastRecentlyUsed(t *testing.T) {
} }
func TestFreeSpaceTiesBrokenByDetectedTime(t *testing.T) { func TestFreeSpaceTiesBrokenByDetectedTime(t *testing.T) {
manager, fakeRuntime, _ := newRealImageGCManager(ImageGCPolicy{}) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(ImageGCPolicy{}, mockStatsProvider)
fakeRuntime.ImageList = []container.Image{ fakeRuntime.ImageList = []container.Image{
makeImage(0, 1024), makeImage(0, 1024),
} }
@ -379,10 +416,13 @@ func TestGarbageCollectBelowLowThreshold(t *testing.T) {
HighThresholdPercent: 90, HighThresholdPercent: 90,
LowThresholdPercent: 80, LowThresholdPercent: 80,
} }
manager, _, mockStatsProvider := newRealImageGCManager(policy) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, _ := newRealImageGCManager(policy, mockStatsProvider)
// Expect 40% usage. // Expect 40% usage.
mockStatsProvider.On("ImageFsStats").Return(&statsapi.FsStats{ mockStatsProvider.EXPECT().ImageFsStats().Return(&statsapi.FsStats{
AvailableBytes: uint64Ptr(600), AvailableBytes: uint64Ptr(600),
CapacityBytes: uint64Ptr(1000), CapacityBytes: uint64Ptr(1000),
}, nil) }, nil)
@ -395,9 +435,12 @@ func TestGarbageCollectCadvisorFailure(t *testing.T) {
HighThresholdPercent: 90, HighThresholdPercent: 90,
LowThresholdPercent: 80, LowThresholdPercent: 80,
} }
manager, _, mockStatsProvider := newRealImageGCManager(policy) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, _ := newRealImageGCManager(policy, mockStatsProvider)
mockStatsProvider.On("ImageFsStats").Return(&statsapi.FsStats{}, fmt.Errorf("error")) mockStatsProvider.EXPECT().ImageFsStats().Return(&statsapi.FsStats{}, fmt.Errorf("error"))
assert.NotNil(t, manager.GarbageCollect()) assert.NotNil(t, manager.GarbageCollect())
} }
@ -406,10 +449,14 @@ func TestGarbageCollectBelowSuccess(t *testing.T) {
HighThresholdPercent: 90, HighThresholdPercent: 90,
LowThresholdPercent: 80, LowThresholdPercent: 80,
} }
manager, fakeRuntime, mockStatsProvider := newRealImageGCManager(policy)
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(policy, mockStatsProvider)
// Expect 95% usage and most of it gets freed. // Expect 95% usage and most of it gets freed.
mockStatsProvider.On("ImageFsStats").Return(&statsapi.FsStats{ mockStatsProvider.EXPECT().ImageFsStats().Return(&statsapi.FsStats{
AvailableBytes: uint64Ptr(50), AvailableBytes: uint64Ptr(50),
CapacityBytes: uint64Ptr(1000), CapacityBytes: uint64Ptr(1000),
}, nil) }, nil)
@ -425,10 +472,13 @@ func TestGarbageCollectNotEnoughFreed(t *testing.T) {
HighThresholdPercent: 90, HighThresholdPercent: 90,
LowThresholdPercent: 80, LowThresholdPercent: 80,
} }
manager, fakeRuntime, mockStatsProvider := newRealImageGCManager(policy) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager, fakeRuntime := newRealImageGCManager(policy, mockStatsProvider)
// Expect 95% usage and little of it gets freed. // Expect 95% usage and little of it gets freed.
mockStatsProvider.On("ImageFsStats").Return(&statsapi.FsStats{ mockStatsProvider.EXPECT().ImageFsStats().Return(&statsapi.FsStats{
AvailableBytes: uint64Ptr(50), AvailableBytes: uint64Ptr(50),
CapacityBytes: uint64Ptr(1000), CapacityBytes: uint64Ptr(1000),
}, nil) }, nil)
@ -446,7 +496,9 @@ func TestGarbageCollectImageNotOldEnough(t *testing.T) {
MinAge: time.Minute * 1, MinAge: time.Minute * 1,
} }
fakeRuntime := &containertest.FakeRuntime{} fakeRuntime := &containertest.FakeRuntime{}
mockStatsProvider := new(statstest.StatsProvider) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStatsProvider := statstest.NewMockProvider(mockCtrl)
manager := &realImageGCManager{ manager := &realImageGCManager{
runtime: fakeRuntime, runtime: fakeRuntime,
policy: policy, policy: policy,

View File

@ -22,27 +22,13 @@ import (
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/mock" "github.com/golang/mock/gomock"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/component-base/metrics/testutil" "k8s.io/component-base/metrics/testutil"
statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1" statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
summaryprovidertest "k8s.io/kubernetes/pkg/kubelet/server/stats/testing"
) )
type mockSummaryProvider struct {
mock.Mock
}
func (m *mockSummaryProvider) Get(updateStats bool) (*statsapi.Summary, error) {
args := m.Called(updateStats)
return args.Get(0).(*statsapi.Summary), args.Error(1)
}
func (m *mockSummaryProvider) GetCPUAndMemoryStats() (*statsapi.Summary, error) {
args := m.Called()
return args.Get(0).(*statsapi.Summary), args.Error(1)
}
func TestCollectResourceMetrics(t *testing.T) { func TestCollectResourceMetrics(t *testing.T) {
// a static timestamp: 2021-06-23 05:11:18.302091597 +0800 // a static timestamp: 2021-06-23 05:11:18.302091597 +0800
staticTimestamp := time.Unix(0, 1624396278302091597) staticTimestamp := time.Unix(0, 1624396278302091597)
@ -57,6 +43,8 @@ func TestCollectResourceMetrics(t *testing.T) {
"pod_cpu_usage_seconds_total", "pod_cpu_usage_seconds_total",
"pod_memory_working_set_bytes", "pod_memory_working_set_bytes",
} }
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
tests := []struct { tests := []struct {
name string name string
@ -219,8 +207,8 @@ func TestCollectResourceMetrics(t *testing.T) {
for _, test := range tests { for _, test := range tests {
tc := test tc := test
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
provider := &mockSummaryProvider{} provider := summaryprovidertest.NewMockSummaryProvider(mockCtrl)
provider.On("GetCPUAndMemoryStats").Return(tc.summary, tc.summaryErr) provider.EXPECT().GetCPUAndMemoryStats().Return(tc.summary, tc.summaryErr).AnyTimes()
collector := NewResourceMetricsCollector(provider) collector := NewResourceMetricsCollector(provider)
if err := testutil.CustomCollectAndCompare(collector, strings.NewReader(tc.expectedMetrics), interestedMetrics...); err != nil { if err := testutil.CustomCollectAndCompare(collector, strings.NewReader(tc.expectedMetrics), interestedMetrics...); err != nil {

View File

@ -20,6 +20,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/golang/mock/gomock"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/component-base/metrics/testutil" "k8s.io/component-base/metrics/testutil"
statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1" statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
@ -129,9 +130,12 @@ func TestVolumeStatsCollector(t *testing.T) {
} }
) )
mockStatsProvider := new(statstest.StatsProvider) mockCtrl := gomock.NewController(t)
mockStatsProvider.On("ListPodStats").Return(podStats, nil) defer mockCtrl.Finish()
mockStatsProvider.On("ListPodStatsAndUpdateCPUNanoCoreUsage").Return(podStats, nil) mockStatsProvider := statstest.NewMockProvider(mockCtrl)
mockStatsProvider.EXPECT().ListPodStats().Return(podStats, nil).AnyTimes()
mockStatsProvider.EXPECT().ListPodStatsAndUpdateCPUNanoCoreUsage().Return(podStats, nil).AnyTimes()
if err := testutil.CustomCollectAndCompare(&volumeStatsCollector{statsProvider: mockStatsProvider}, strings.NewReader(want), metrics...); err != nil { if err := testutil.CustomCollectAndCompare(&volumeStatsCollector{statsProvider: mockStatsProvider}, strings.NewReader(want), metrics...); err != nil {
t.Errorf("unexpected collecting result:\n%s", err) t.Errorf("unexpected collecting result:\n%s", err)
} }

View File

@ -25,6 +25,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
@ -311,8 +312,7 @@ func testReportMissingPods(t *testing.T, numRelists int) {
verifyEvents(t, expected, actual) verifyEvents(t, expected, actual)
} }
func newTestGenericPLEGWithRuntimeMock() (*GenericPLEG, *containertest.Mock) { func newTestGenericPLEGWithRuntimeMock(runtimeMock kubecontainer.Runtime) *GenericPLEG {
runtimeMock := &containertest.Mock{}
pleg := &GenericPLEG{ pleg := &GenericPLEG{
relistPeriod: time.Hour, relistPeriod: time.Hour,
runtime: runtimeMock, runtime: runtimeMock,
@ -321,7 +321,7 @@ func newTestGenericPLEGWithRuntimeMock() (*GenericPLEG, *containertest.Mock) {
cache: kubecontainer.NewCache(), cache: kubecontainer.NewCache(),
clock: clock.RealClock{}, clock: clock.RealClock{},
} }
return pleg, runtimeMock return pleg
} }
func createTestPodsStatusesAndEvents(num int) ([]*kubecontainer.Pod, []*kubecontainer.PodStatus, []*PodLifecycleEvent) { func createTestPodsStatusesAndEvents(num int) ([]*kubecontainer.Pod, []*kubecontainer.PodStatus, []*PodLifecycleEvent) {
@ -350,15 +350,19 @@ func createTestPodsStatusesAndEvents(num int) ([]*kubecontainer.Pod, []*kubecont
} }
func TestRelistWithCache(t *testing.T) { func TestRelistWithCache(t *testing.T) {
pleg, runtimeMock := newTestGenericPLEGWithRuntimeMock() mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
runtimeMock := containertest.NewMockRuntime(mockCtrl)
pleg := newTestGenericPLEGWithRuntimeMock(runtimeMock)
ch := pleg.Watch() ch := pleg.Watch()
pods, statuses, events := createTestPodsStatusesAndEvents(2) pods, statuses, events := createTestPodsStatusesAndEvents(2)
runtimeMock.On("GetPods", true).Return(pods, nil) runtimeMock.EXPECT().GetPods(true).Return(pods, nil).AnyTimes()
runtimeMock.On("GetPodStatus", pods[0].ID, "", "").Return(statuses[0], nil).Once() runtimeMock.EXPECT().GetPodStatus(pods[0].ID, "", "").Return(statuses[0], nil).Times(1)
// Inject an error when querying runtime for the pod status for pods[1]. // Inject an error when querying runtime for the pod status for pods[1].
statusErr := fmt.Errorf("unable to get status") statusErr := fmt.Errorf("unable to get status")
runtimeMock.On("GetPodStatus", pods[1].ID, "", "").Return(&kubecontainer.PodStatus{}, statusErr).Once() runtimeMock.EXPECT().GetPodStatus(pods[1].ID, "", "").Return(&kubecontainer.PodStatus{}, statusErr).Times(1)
pleg.relist() pleg.relist()
actualEvents := getEventsFromChannel(ch) actualEvents := getEventsFromChannel(ch)
@ -380,7 +384,7 @@ func TestRelistWithCache(t *testing.T) {
assert.Exactly(t, []*PodLifecycleEvent{events[0]}, actualEvents) assert.Exactly(t, []*PodLifecycleEvent{events[0]}, actualEvents)
// Return normal status for pods[1]. // Return normal status for pods[1].
runtimeMock.On("GetPodStatus", pods[1].ID, "", "").Return(statuses[1], nil).Once() runtimeMock.EXPECT().GetPodStatus(pods[1].ID, "", "").Return(statuses[1], nil).Times(1)
pleg.relist() pleg.relist()
actualEvents = getEventsFromChannel(ch) actualEvents = getEventsFromChannel(ch)
cases = []struct { cases = []struct {
@ -402,15 +406,19 @@ func TestRelistWithCache(t *testing.T) {
} }
func TestRemoveCacheEntry(t *testing.T) { func TestRemoveCacheEntry(t *testing.T) {
pleg, runtimeMock := newTestGenericPLEGWithRuntimeMock() mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
runtimeMock := containertest.NewMockRuntime(mockCtrl)
pleg := newTestGenericPLEGWithRuntimeMock(runtimeMock)
pods, statuses, _ := createTestPodsStatusesAndEvents(1) pods, statuses, _ := createTestPodsStatusesAndEvents(1)
runtimeMock.On("GetPods", true).Return(pods, nil).Once() runtimeMock.EXPECT().GetPods(true).Return(pods, nil).Times(1)
runtimeMock.On("GetPodStatus", pods[0].ID, "", "").Return(statuses[0], nil).Once() runtimeMock.EXPECT().GetPodStatus(pods[0].ID, "", "").Return(statuses[0], nil).Times(1)
// Does a relist to populate the cache. // Does a relist to populate the cache.
pleg.relist() pleg.relist()
// Delete the pod from runtime. Verify that the cache entry has been // Delete the pod from runtime. Verify that the cache entry has been
// removed after relisting. // removed after relisting.
runtimeMock.On("GetPods", true).Return([]*kubecontainer.Pod{}, nil).Once() runtimeMock.EXPECT().GetPods(true).Return([]*kubecontainer.Pod{}, nil).Times(1)
pleg.relist() pleg.relist()
actualStatus, actualErr := pleg.cache.Get(pods[0].ID) actualStatus, actualErr := pleg.cache.Get(pods[0].ID)
assert.Equal(t, &kubecontainer.PodStatus{ID: pods[0].ID}, actualStatus) assert.Equal(t, &kubecontainer.PodStatus{ID: pods[0].ID}, actualStatus)
@ -445,7 +453,11 @@ func TestHealthy(t *testing.T) {
} }
func TestRelistWithReinspection(t *testing.T) { func TestRelistWithReinspection(t *testing.T) {
pleg, runtimeMock := newTestGenericPLEGWithRuntimeMock() mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
runtimeMock := containertest.NewMockRuntime(mockCtrl)
pleg := newTestGenericPLEGWithRuntimeMock(runtimeMock)
ch := pleg.Watch() ch := pleg.Watch()
infraContainer := createTestContainer("infra", kubecontainer.ContainerStateRunning) infraContainer := createTestContainer("infra", kubecontainer.ContainerStateRunning)
@ -455,13 +467,13 @@ func TestRelistWithReinspection(t *testing.T) {
ID: podID, ID: podID,
Containers: []*kubecontainer.Container{infraContainer}, Containers: []*kubecontainer.Container{infraContainer},
}} }}
runtimeMock.On("GetPods", true).Return(pods, nil).Once() runtimeMock.EXPECT().GetPods(true).Return(pods, nil).Times(1)
goodStatus := &kubecontainer.PodStatus{ goodStatus := &kubecontainer.PodStatus{
ID: podID, ID: podID,
ContainerStatuses: []*kubecontainer.Status{{ID: infraContainer.ID, State: infraContainer.State}}, ContainerStatuses: []*kubecontainer.Status{{ID: infraContainer.ID, State: infraContainer.State}},
} }
runtimeMock.On("GetPodStatus", podID, "", "").Return(goodStatus, nil).Once() runtimeMock.EXPECT().GetPodStatus(podID, "", "").Return(goodStatus, nil).Times(1)
goodEvent := &PodLifecycleEvent{ID: podID, Type: ContainerStarted, Data: infraContainer.ID.ID} goodEvent := &PodLifecycleEvent{ID: podID, Type: ContainerStarted, Data: infraContainer.ID.ID}
@ -480,13 +492,13 @@ func TestRelistWithReinspection(t *testing.T) {
ID: podID, ID: podID,
Containers: []*kubecontainer.Container{infraContainer, transientContainer}, Containers: []*kubecontainer.Container{infraContainer, transientContainer},
}} }}
runtimeMock.On("GetPods", true).Return(podsWithTransientContainer, nil).Once() runtimeMock.EXPECT().GetPods(true).Return(podsWithTransientContainer, nil).Times(1)
badStatus := &kubecontainer.PodStatus{ badStatus := &kubecontainer.PodStatus{
ID: podID, ID: podID,
ContainerStatuses: []*kubecontainer.Status{}, ContainerStatuses: []*kubecontainer.Status{},
} }
runtimeMock.On("GetPodStatus", podID, "", "").Return(badStatus, errors.New("inspection error")).Once() runtimeMock.EXPECT().GetPodStatus(podID, "", "").Return(badStatus, errors.New("inspection error")).Times(1)
pleg.relist() pleg.relist()
actualEvents = getEventsFromChannel(ch) actualEvents = getEventsFromChannel(ch)
@ -497,8 +509,8 @@ func TestRelistWithReinspection(t *testing.T) {
// listing 3 - pretend the transient container has now disappeared, leaving just the infra // listing 3 - pretend the transient container has now disappeared, leaving just the infra
// container. Make sure the pod is reinspected for its status and the cache is updated. // container. Make sure the pod is reinspected for its status and the cache is updated.
runtimeMock.On("GetPods", true).Return(pods, nil).Once() runtimeMock.EXPECT().GetPods(true).Return(pods, nil).Times(1)
runtimeMock.On("GetPodStatus", podID, "", "").Return(goodStatus, nil).Once() runtimeMock.EXPECT().GetPodStatus(podID, "", "").Return(goodStatus, nil).Times(1)
pleg.relist() pleg.relist()
actualEvents = getEventsFromChannel(ch) actualEvents = getEventsFromChannel(ch)
@ -595,8 +607,14 @@ func TestRelistIPChange(t *testing.T) {
podIPs: []string{"192.168.1.5/24", "2000::"}, podIPs: []string{"192.168.1.5/24", "2000::"},
}, },
} }
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
for _, tc := range testCases { for _, tc := range testCases {
pleg, runtimeMock := newTestGenericPLEGWithRuntimeMock() runtimeMock := containertest.NewMockRuntime(mockCtrl)
pleg := newTestGenericPLEGWithRuntimeMock(runtimeMock)
ch := pleg.Watch() ch := pleg.Watch()
id := types.UID(tc.podID) id := types.UID(tc.podID)
@ -613,8 +631,8 @@ func TestRelistIPChange(t *testing.T) {
} }
event := &PodLifecycleEvent{ID: pod.ID, Type: ContainerStarted, Data: container.ID.ID} event := &PodLifecycleEvent{ID: pod.ID, Type: ContainerStarted, Data: container.ID.ID}
runtimeMock.On("GetPods", true).Return([]*kubecontainer.Pod{pod}, nil).Once() runtimeMock.EXPECT().GetPods(true).Return([]*kubecontainer.Pod{pod}, nil).Times(1)
runtimeMock.On("GetPodStatus", pod.ID, "", "").Return(status, nil).Once() runtimeMock.EXPECT().GetPodStatus(pod.ID, "", "").Return(status, nil).Times(1)
pleg.relist() pleg.relist()
actualEvents := getEventsFromChannel(ch) actualEvents := getEventsFromChannel(ch)
@ -634,8 +652,8 @@ func TestRelistIPChange(t *testing.T) {
ContainerStatuses: []*kubecontainer.Status{{ID: container.ID, State: kubecontainer.ContainerStateExited}}, ContainerStatuses: []*kubecontainer.Status{{ID: container.ID, State: kubecontainer.ContainerStateExited}},
} }
event = &PodLifecycleEvent{ID: pod.ID, Type: ContainerDied, Data: container.ID.ID} event = &PodLifecycleEvent{ID: pod.ID, Type: ContainerDied, Data: container.ID.ID}
runtimeMock.On("GetPods", true).Return([]*kubecontainer.Pod{pod}, nil).Once() runtimeMock.EXPECT().GetPods(true).Return([]*kubecontainer.Pod{pod}, nil).Times(1)
runtimeMock.On("GetPodStatus", pod.ID, "", "").Return(status, nil).Once() runtimeMock.EXPECT().GetPodStatus(pod.ID, "", "").Return(status, nil).Times(1)
pleg.relist() pleg.relist()
actualEvents = getEventsFromChannel(ch) actualEvents = getEventsFromChannel(ch)

View File

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
//go:generate mockgen -destination=testing/mock_manager.go -package=testing -build_flags=-mod=mod . Manager
package pod package pod
import ( import (

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2017 The Kubernetes Authors. Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,305 +14,277 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// Code generated by mockery v1.0.0 // Code generated by MockGen. DO NOT EDIT.
// Source: k8s.io/kubernetes/pkg/kubelet/pod (interfaces: Manager)
// Package testing is a generated GoMock package.
package testing package testing
import ( import (
kubelettypes "k8s.io/kubernetes/pkg/kubelet/types" gomock "github.com/golang/mock/gomock"
mock "github.com/stretchr/testify/mock"
types "k8s.io/apimachinery/pkg/types"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
types "k8s.io/apimachinery/pkg/types"
types0 "k8s.io/kubernetes/pkg/kubelet/types"
reflect "reflect"
) )
// MockManager is an autogenerated mock type for the Manager type // MockManager is a mock of Manager interface
type MockManager struct { type MockManager struct {
mock.Mock ctrl *gomock.Controller
recorder *MockManagerMockRecorder
} }
// AddPod provides a mock function with given fields: _a0 // MockManagerMockRecorder is the mock recorder for MockManager
func (_m *MockManager) AddPod(_a0 *v1.Pod) { type MockManagerMockRecorder struct {
_m.Called(_a0) mock *MockManager
} }
// CreateMirrorPod provides a mock function with given fields: _a0 // NewMockManager creates a new mock instance
func (_m *MockManager) CreateMirrorPod(_a0 *v1.Pod) error { func NewMockManager(ctrl *gomock.Controller) *MockManager {
ret := _m.Called(_a0) mock := &MockManager{ctrl: ctrl}
mock.recorder = &MockManagerMockRecorder{mock}
var r0 error return mock
if rf, ok := ret.Get(0).(func(*v1.Pod) error); ok {
r0 = rf(_a0)
} else {
r0 = ret.Error(0)
}
return r0
} }
// DeleteMirrorPod provides a mock function with given fields: podFullName // EXPECT returns an object that allows the caller to indicate expected use
func (_m *MockManager) DeleteMirrorPod(podFullName string, _ *types.UID) (bool, error) { func (m *MockManager) EXPECT() *MockManagerMockRecorder {
ret := _m.Called(podFullName) return m.recorder
var r0 error
if rf, ok := ret.Get(0).(func(string) error); ok {
return true, rf(podFullName)
} else {
r0 = ret.Error(0)
}
return false, r0
} }
func (_m *MockManager) GetOrphanedMirrorPodNames() []string { // AddPod mocks base method
ret := _m.Called() func (m *MockManager) AddPod(arg0 *v1.Pod) {
m.ctrl.T.Helper()
var r0 []string m.ctrl.Call(m, "AddPod", arg0)
if rf, ok := ret.Get(0).(func() []string); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]string)
}
}
return r0
} }
func (_m *MockManager) GetOrphanedMirrorPodNamesAndUIDs() map[string]kubelettypes.ResolvedPodUID { // AddPod indicates an expected call of AddPod
ret := _m.Called() func (mr *MockManagerMockRecorder) AddPod(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
var r0 map[string]kubelettypes.ResolvedPodUID return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddPod", reflect.TypeOf((*MockManager)(nil).AddPod), arg0)
if rf, ok := ret.Get(0).(func() map[string]kubelettypes.ResolvedPodUID); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(map[string]kubelettypes.ResolvedPodUID)
}
}
return r0
} }
// DeletePod provides a mock function with given fields: _a0 // CreateMirrorPod mocks base method
func (_m *MockManager) DeletePod(_a0 *v1.Pod) { func (m *MockManager) CreateMirrorPod(arg0 *v1.Pod) error {
_m.Called(_a0) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "CreateMirrorPod", arg0)
ret0, _ := ret[0].(error)
return ret0
} }
// GetMirrorPodByPod provides a mock function with given fields: _a0 // CreateMirrorPod indicates an expected call of CreateMirrorPod
func (_m *MockManager) GetMirrorPodByPod(_a0 *v1.Pod) (*v1.Pod, bool) { func (mr *MockManagerMockRecorder) CreateMirrorPod(arg0 interface{}) *gomock.Call {
ret := _m.Called(_a0) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateMirrorPod", reflect.TypeOf((*MockManager)(nil).CreateMirrorPod), arg0)
var r0 *v1.Pod
if rf, ok := ret.Get(0).(func(*v1.Pod) *v1.Pod); ok {
r0 = rf(_a0)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1.Pod)
}
}
var r1 bool
if rf, ok := ret.Get(1).(func(*v1.Pod) bool); ok {
r1 = rf(_a0)
} else {
r1 = ret.Get(1).(bool)
}
return r0, r1
} }
// GetPodByFullName provides a mock function with given fields: podFullName // DeleteMirrorPod mocks base method
func (_m *MockManager) GetPodByFullName(podFullName string) (*v1.Pod, bool) { func (m *MockManager) DeleteMirrorPod(arg0 string, arg1 *types.UID) (bool, error) {
ret := _m.Called(podFullName) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DeleteMirrorPod", arg0, arg1)
var r0 *v1.Pod ret0, _ := ret[0].(bool)
if rf, ok := ret.Get(0).(func(string) *v1.Pod); ok { ret1, _ := ret[1].(error)
r0 = rf(podFullName) return ret0, ret1
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1.Pod)
}
}
var r1 bool
if rf, ok := ret.Get(1).(func(string) bool); ok {
r1 = rf(podFullName)
} else {
r1 = ret.Get(1).(bool)
}
return r0, r1
} }
// GetPodByMirrorPod provides a mock function with given fields: _a0 // DeleteMirrorPod indicates an expected call of DeleteMirrorPod
func (_m *MockManager) GetPodByMirrorPod(_a0 *v1.Pod) (*v1.Pod, bool) { func (mr *MockManagerMockRecorder) DeleteMirrorPod(arg0, arg1 interface{}) *gomock.Call {
ret := _m.Called(_a0) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteMirrorPod", reflect.TypeOf((*MockManager)(nil).DeleteMirrorPod), arg0, arg1)
var r0 *v1.Pod
if rf, ok := ret.Get(0).(func(*v1.Pod) *v1.Pod); ok {
r0 = rf(_a0)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1.Pod)
}
}
var r1 bool
if rf, ok := ret.Get(1).(func(*v1.Pod) bool); ok {
r1 = rf(_a0)
} else {
r1 = ret.Get(1).(bool)
}
return r0, r1
} }
// GetPodByName provides a mock function with given fields: namespace, name // DeletePod mocks base method
func (_m *MockManager) GetPodByName(namespace string, name string) (*v1.Pod, bool) { func (m *MockManager) DeletePod(arg0 *v1.Pod) {
ret := _m.Called(namespace, name) m.ctrl.T.Helper()
m.ctrl.Call(m, "DeletePod", arg0)
var r0 *v1.Pod
if rf, ok := ret.Get(0).(func(string, string) *v1.Pod); ok {
r0 = rf(namespace, name)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1.Pod)
}
}
var r1 bool
if rf, ok := ret.Get(1).(func(string, string) bool); ok {
r1 = rf(namespace, name)
} else {
r1 = ret.Get(1).(bool)
}
return r0, r1
} }
// GetPodByUID provides a mock function with given fields: _a0 // DeletePod indicates an expected call of DeletePod
func (_m *MockManager) GetPodByUID(_a0 types.UID) (*v1.Pod, bool) { func (mr *MockManagerMockRecorder) DeletePod(arg0 interface{}) *gomock.Call {
ret := _m.Called(_a0) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeletePod", reflect.TypeOf((*MockManager)(nil).DeletePod), arg0)
var r0 *v1.Pod
if rf, ok := ret.Get(0).(func(types.UID) *v1.Pod); ok {
r0 = rf(_a0)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1.Pod)
}
}
var r1 bool
if rf, ok := ret.Get(1).(func(types.UID) bool); ok {
r1 = rf(_a0)
} else {
r1 = ret.Get(1).(bool)
}
return r0, r1
} }
// GetPods provides a mock function with given fields: // GetMirrorPodByPod mocks base method
func (_m *MockManager) GetPods() []*v1.Pod { func (m *MockManager) GetMirrorPodByPod(arg0 *v1.Pod) (*v1.Pod, bool) {
ret := _m.Called() m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetMirrorPodByPod", arg0)
var r0 []*v1.Pod ret0, _ := ret[0].(*v1.Pod)
if rf, ok := ret.Get(0).(func() []*v1.Pod); ok { ret1, _ := ret[1].(bool)
r0 = rf() return ret0, ret1
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]*v1.Pod)
}
}
return r0
} }
// GetPodsAndMirrorPods provides a mock function with given fields: // GetMirrorPodByPod indicates an expected call of GetMirrorPodByPod
func (_m *MockManager) GetPodsAndMirrorPods() ([]*v1.Pod, []*v1.Pod) { func (mr *MockManagerMockRecorder) GetMirrorPodByPod(arg0 interface{}) *gomock.Call {
ret := _m.Called() mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMirrorPodByPod", reflect.TypeOf((*MockManager)(nil).GetMirrorPodByPod), arg0)
var r0 []*v1.Pod
if rf, ok := ret.Get(0).(func() []*v1.Pod); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]*v1.Pod)
}
}
var r1 []*v1.Pod
if rf, ok := ret.Get(1).(func() []*v1.Pod); ok {
r1 = rf()
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).([]*v1.Pod)
}
}
return r0, r1
} }
// GetUIDTranslations provides a mock function with given fields: // GetOrphanedMirrorPodNames mocks base method
func (_m *MockManager) GetUIDTranslations() (map[kubelettypes.ResolvedPodUID]kubelettypes.MirrorPodUID, map[kubelettypes.MirrorPodUID]kubelettypes.ResolvedPodUID) { func (m *MockManager) GetOrphanedMirrorPodNames() []string {
ret := _m.Called() m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetOrphanedMirrorPodNames")
var r0 map[kubelettypes.ResolvedPodUID]kubelettypes.MirrorPodUID ret0, _ := ret[0].([]string)
if rf, ok := ret.Get(0).(func() map[kubelettypes.ResolvedPodUID]kubelettypes.MirrorPodUID); ok { return ret0
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(map[kubelettypes.ResolvedPodUID]kubelettypes.MirrorPodUID)
}
}
var r1 map[kubelettypes.MirrorPodUID]kubelettypes.ResolvedPodUID
if rf, ok := ret.Get(1).(func() map[kubelettypes.MirrorPodUID]kubelettypes.ResolvedPodUID); ok {
r1 = rf()
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(map[kubelettypes.MirrorPodUID]kubelettypes.ResolvedPodUID)
}
}
return r0, r1
} }
// IsMirrorPodOf provides a mock function with given fields: mirrorPod, _a1 // GetOrphanedMirrorPodNames indicates an expected call of GetOrphanedMirrorPodNames
func (_m *MockManager) IsMirrorPodOf(mirrorPod *v1.Pod, _a1 *v1.Pod) bool { func (mr *MockManagerMockRecorder) GetOrphanedMirrorPodNames() *gomock.Call {
ret := _m.Called(mirrorPod, _a1) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrphanedMirrorPodNames", reflect.TypeOf((*MockManager)(nil).GetOrphanedMirrorPodNames))
var r0 bool
if rf, ok := ret.Get(0).(func(*v1.Pod, *v1.Pod) bool); ok {
r0 = rf(mirrorPod, _a1)
} else {
r0 = ret.Get(0).(bool)
}
return r0
} }
// SetPods provides a mock function with given fields: pods // GetPodByFullName mocks base method
func (_m *MockManager) SetPods(pods []*v1.Pod) { func (m *MockManager) GetPodByFullName(arg0 string) (*v1.Pod, bool) {
_m.Called(pods) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodByFullName", arg0)
ret0, _ := ret[0].(*v1.Pod)
ret1, _ := ret[1].(bool)
return ret0, ret1
} }
// TranslatePodUID provides a mock function with given fields: uid // GetPodByFullName indicates an expected call of GetPodByFullName
func (_m *MockManager) TranslatePodUID(uid types.UID) kubelettypes.ResolvedPodUID { func (mr *MockManagerMockRecorder) GetPodByFullName(arg0 interface{}) *gomock.Call {
ret := _m.Called(uid) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodByFullName", reflect.TypeOf((*MockManager)(nil).GetPodByFullName), arg0)
var r0 kubelettypes.ResolvedPodUID
if rf, ok := ret.Get(0).(func(types.UID) kubelettypes.ResolvedPodUID); ok {
r0 = rf(uid)
} else {
r0 = ret.Get(0).(kubelettypes.ResolvedPodUID)
}
return r0
} }
// UpdatePod provides a mock function with given fields: _a0 // GetPodByMirrorPod mocks base method
func (_m *MockManager) UpdatePod(_a0 *v1.Pod) { func (m *MockManager) GetPodByMirrorPod(arg0 *v1.Pod) (*v1.Pod, bool) {
_m.Called(_a0) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodByMirrorPod", arg0)
ret0, _ := ret[0].(*v1.Pod)
ret1, _ := ret[1].(bool)
return ret0, ret1
}
// GetPodByMirrorPod indicates an expected call of GetPodByMirrorPod
func (mr *MockManagerMockRecorder) GetPodByMirrorPod(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodByMirrorPod", reflect.TypeOf((*MockManager)(nil).GetPodByMirrorPod), arg0)
}
// GetPodByName mocks base method
func (m *MockManager) GetPodByName(arg0, arg1 string) (*v1.Pod, bool) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodByName", arg0, arg1)
ret0, _ := ret[0].(*v1.Pod)
ret1, _ := ret[1].(bool)
return ret0, ret1
}
// GetPodByName indicates an expected call of GetPodByName
func (mr *MockManagerMockRecorder) GetPodByName(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodByName", reflect.TypeOf((*MockManager)(nil).GetPodByName), arg0, arg1)
}
// GetPodByUID mocks base method
func (m *MockManager) GetPodByUID(arg0 types.UID) (*v1.Pod, bool) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodByUID", arg0)
ret0, _ := ret[0].(*v1.Pod)
ret1, _ := ret[1].(bool)
return ret0, ret1
}
// GetPodByUID indicates an expected call of GetPodByUID
func (mr *MockManagerMockRecorder) GetPodByUID(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodByUID", reflect.TypeOf((*MockManager)(nil).GetPodByUID), arg0)
}
// GetPods mocks base method
func (m *MockManager) GetPods() []*v1.Pod {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPods")
ret0, _ := ret[0].([]*v1.Pod)
return ret0
}
// GetPods indicates an expected call of GetPods
func (mr *MockManagerMockRecorder) GetPods() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPods", reflect.TypeOf((*MockManager)(nil).GetPods))
}
// GetPodsAndMirrorPods mocks base method
func (m *MockManager) GetPodsAndMirrorPods() ([]*v1.Pod, []*v1.Pod) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodsAndMirrorPods")
ret0, _ := ret[0].([]*v1.Pod)
ret1, _ := ret[1].([]*v1.Pod)
return ret0, ret1
}
// GetPodsAndMirrorPods indicates an expected call of GetPodsAndMirrorPods
func (mr *MockManagerMockRecorder) GetPodsAndMirrorPods() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodsAndMirrorPods", reflect.TypeOf((*MockManager)(nil).GetPodsAndMirrorPods))
}
// GetUIDTranslations mocks base method
func (m *MockManager) GetUIDTranslations() (map[types0.ResolvedPodUID]types0.MirrorPodUID, map[types0.MirrorPodUID]types0.ResolvedPodUID) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetUIDTranslations")
ret0, _ := ret[0].(map[types0.ResolvedPodUID]types0.MirrorPodUID)
ret1, _ := ret[1].(map[types0.MirrorPodUID]types0.ResolvedPodUID)
return ret0, ret1
}
// GetUIDTranslations indicates an expected call of GetUIDTranslations
func (mr *MockManagerMockRecorder) GetUIDTranslations() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUIDTranslations", reflect.TypeOf((*MockManager)(nil).GetUIDTranslations))
}
// IsMirrorPodOf mocks base method
func (m *MockManager) IsMirrorPodOf(arg0, arg1 *v1.Pod) bool {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "IsMirrorPodOf", arg0, arg1)
ret0, _ := ret[0].(bool)
return ret0
}
// IsMirrorPodOf indicates an expected call of IsMirrorPodOf
func (mr *MockManagerMockRecorder) IsMirrorPodOf(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsMirrorPodOf", reflect.TypeOf((*MockManager)(nil).IsMirrorPodOf), arg0, arg1)
}
// SetPods mocks base method
func (m *MockManager) SetPods(arg0 []*v1.Pod) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "SetPods", arg0)
}
// SetPods indicates an expected call of SetPods
func (mr *MockManagerMockRecorder) SetPods(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetPods", reflect.TypeOf((*MockManager)(nil).SetPods), arg0)
}
// TranslatePodUID mocks base method
func (m *MockManager) TranslatePodUID(arg0 types.UID) types0.ResolvedPodUID {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "TranslatePodUID", arg0)
ret0, _ := ret[0].(types0.ResolvedPodUID)
return ret0
}
// TranslatePodUID indicates an expected call of TranslatePodUID
func (mr *MockManagerMockRecorder) TranslatePodUID(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TranslatePodUID", reflect.TypeOf((*MockManager)(nil).TranslatePodUID), arg0)
}
// UpdatePod mocks base method
func (m *MockManager) UpdatePod(arg0 *v1.Pod) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "UpdatePod", arg0)
}
// UpdatePod indicates an expected call of UpdatePod
func (mr *MockManagerMockRecorder) UpdatePod(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdatePod", reflect.TypeOf((*MockManager)(nil).UpdatePod), arg0)
} }

View File

@ -21,6 +21,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/golang/mock/gomock"
cadvisorapi "github.com/google/cadvisor/info/v1" cadvisorapi "github.com/google/cadvisor/info/v1"
cadvisorapiv2 "github.com/google/cadvisor/info/v2" cadvisorapiv2 "github.com/google/cadvisor/info/v2"
"k8s.io/mount-utils" "k8s.io/mount-utils"
@ -51,17 +52,20 @@ import (
) )
func TestRunOnce(t *testing.T) { func TestRunOnce(t *testing.T) {
cadvisor := &cadvisortest.Mock{} mockCtrl := gomock.NewController(t)
cadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) defer mockCtrl.Finish()
cadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
cadvisor := cadvisortest.NewMockInterface(mockCtrl)
cadvisor.EXPECT().MachineInfo().Return(&cadvisorapi.MachineInfo{}, nil).AnyTimes()
cadvisor.EXPECT().ImagesFsInfo().Return(cadvisorapiv2.FsInfo{
Usage: 400, Usage: 400,
Capacity: 1000, Capacity: 1000,
Available: 600, Available: 600,
}, nil) }, nil).AnyTimes()
cadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{ cadvisor.EXPECT().RootFsInfo().Return(cadvisorapiv2.FsInfo{
Usage: 9, Usage: 9,
Capacity: 10, Capacity: 10,
}, nil) }, nil).AnyTimes()
fakeSecretManager := secret.NewFakeManager() fakeSecretManager := secret.NewFakeManager()
fakeConfigMapManager := configmap.NewFakeManager() fakeConfigMapManager := configmap.NewFakeManager()
podManager := kubepod.NewBasicPodManager( podManager := kubepod.NewBasicPodManager(

View File

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
//go:generate mockgen -source=handler.go -destination=testing/mock_stats_provider.go -package=testing Provider
package stats package stats
import ( import (

View File

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
//go:generate mockgen -source=summary.go -destination=testing/mock_summary_provider.go -package=testing SummaryProvider
package stats package stats
import ( import (

View File

@ -23,10 +23,11 @@ import (
"testing" "testing"
"time" "time"
"github.com/golang/mock/gomock"
fuzz "github.com/google/gofuzz" fuzz "github.com/google/gofuzz"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1" statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
"k8s.io/kubernetes/pkg/kubelet/cm" "k8s.io/kubernetes/pkg/kubelet/cm"
@ -69,21 +70,23 @@ func TestSummaryProviderGetStats(t *testing.T) {
"/pods": {cs: getContainerStats(), ns: getNetworkStats()}, "/pods": {cs: getContainerStats(), ns: getNetworkStats()},
} }
mockStatsProvider := new(statstest.StatsProvider) mockCtrl := gomock.NewController(t)
mockStatsProvider. defer mockCtrl.Finish()
On("GetNode").Return(node, nil). mockStatsProvider := statstest.NewMockProvider(mockCtrl)
On("GetNodeConfig").Return(nodeConfig).
On("GetPodCgroupRoot").Return(cgroupRoot). mockStatsProvider.EXPECT().GetNode().Return(node, nil)
On("ListPodStats").Return(podStats, nil). mockStatsProvider.EXPECT().GetNodeConfig().Return(nodeConfig)
On("ListPodStatsAndUpdateCPUNanoCoreUsage").Return(podStats, nil). mockStatsProvider.EXPECT().GetPodCgroupRoot().Return(cgroupRoot)
On("ImageFsStats").Return(imageFsStats, nil). mockStatsProvider.EXPECT().ListPodStats().Return(podStats, nil).AnyTimes()
On("RootFsStats").Return(rootFsStats, nil). mockStatsProvider.EXPECT().ListPodStatsAndUpdateCPUNanoCoreUsage().Return(podStats, nil)
On("RlimitStats").Return(rlimitStats, nil). mockStatsProvider.EXPECT().ImageFsStats().Return(imageFsStats, nil)
On("GetCgroupStats", "/", true).Return(cgroupStatsMap["/"].cs, cgroupStatsMap["/"].ns, nil). mockStatsProvider.EXPECT().RootFsStats().Return(rootFsStats, nil)
On("GetCgroupStats", "/runtime", false).Return(cgroupStatsMap["/runtime"].cs, cgroupStatsMap["/runtime"].ns, nil). mockStatsProvider.EXPECT().RlimitStats().Return(rlimitStats, nil)
On("GetCgroupStats", "/misc", false).Return(cgroupStatsMap["/misc"].cs, cgroupStatsMap["/misc"].ns, nil). mockStatsProvider.EXPECT().GetCgroupStats("/", true).Return(cgroupStatsMap["/"].cs, cgroupStatsMap["/"].ns, nil)
On("GetCgroupStats", "/kubelet", false).Return(cgroupStatsMap["/kubelet"].cs, cgroupStatsMap["/kubelet"].ns, nil). mockStatsProvider.EXPECT().GetCgroupStats("/runtime", false).Return(cgroupStatsMap["/runtime"].cs, cgroupStatsMap["/runtime"].ns, nil)
On("GetCgroupStats", "/kubepods", true).Return(cgroupStatsMap["/pods"].cs, cgroupStatsMap["/pods"].ns, nil) mockStatsProvider.EXPECT().GetCgroupStats("/misc", false).Return(cgroupStatsMap["/misc"].cs, cgroupStatsMap["/misc"].ns, nil)
mockStatsProvider.EXPECT().GetCgroupStats("/kubelet", false).Return(cgroupStatsMap["/kubelet"].cs, cgroupStatsMap["/kubelet"].ns, nil)
mockStatsProvider.EXPECT().GetCgroupStats("/kubepods", true).Return(cgroupStatsMap["/pods"].cs, cgroupStatsMap["/pods"].ns, nil)
kubeletCreationTime := metav1.Now() kubeletCreationTime := metav1.Now()
systemBootTime := metav1.Now() systemBootTime := metav1.Now()
@ -155,17 +158,19 @@ func TestSummaryProviderGetCPUAndMemoryStats(t *testing.T) {
"/pods": {cs: getVolumeCPUAndMemoryStats()}, "/pods": {cs: getVolumeCPUAndMemoryStats()},
} }
mockStatsProvider := new(statstest.StatsProvider) mockCtrl := gomock.NewController(t)
mockStatsProvider. defer mockCtrl.Finish()
On("GetNode").Return(node, nil). mockStatsProvider := statstest.NewMockProvider(mockCtrl)
On("GetNodeConfig").Return(nodeConfig).
On("GetPodCgroupRoot").Return(cgroupRoot). mockStatsProvider.EXPECT().GetNode().Return(node, nil)
On("ListPodCPUAndMemoryStats").Return(podStats, nil). mockStatsProvider.EXPECT().GetNodeConfig().Return(nodeConfig)
On("GetCgroupCPUAndMemoryStats", "/", false).Return(cgroupStatsMap["/"].cs, nil). mockStatsProvider.EXPECT().GetPodCgroupRoot().Return(cgroupRoot)
On("GetCgroupCPUAndMemoryStats", "/runtime", false).Return(cgroupStatsMap["/runtime"].cs, nil). mockStatsProvider.EXPECT().ListPodCPUAndMemoryStats().Return(podStats, nil)
On("GetCgroupCPUAndMemoryStats", "/misc", false).Return(cgroupStatsMap["/misc"].cs, nil). mockStatsProvider.EXPECT().GetCgroupCPUAndMemoryStats("/", false).Return(cgroupStatsMap["/"].cs, nil)
On("GetCgroupCPUAndMemoryStats", "/kubelet", false).Return(cgroupStatsMap["/kubelet"].cs, nil). mockStatsProvider.EXPECT().GetCgroupCPUAndMemoryStats("/runtime", false).Return(cgroupStatsMap["/runtime"].cs, nil)
On("GetCgroupCPUAndMemoryStats", "/kubepods", false).Return(cgroupStatsMap["/pods"].cs, nil) mockStatsProvider.EXPECT().GetCgroupCPUAndMemoryStats("/misc", false).Return(cgroupStatsMap["/misc"].cs, nil)
mockStatsProvider.EXPECT().GetCgroupCPUAndMemoryStats("/kubelet", false).Return(cgroupStatsMap["/kubelet"].cs, nil)
mockStatsProvider.EXPECT().GetCgroupCPUAndMemoryStats("/kubepods", false).Return(cgroupStatsMap["/pods"].cs, nil)
provider := NewSummaryProvider(mockStatsProvider) provider := NewSummaryProvider(mockStatsProvider)
summary, err := provider.GetCPUAndMemoryStats() summary, err := provider.GetCPUAndMemoryStats()

View File

@ -23,6 +23,7 @@ import (
"testing" "testing"
"time" "time"
gomock "github.com/golang/mock/gomock"
fuzz "github.com/google/gofuzz" fuzz "github.com/google/gofuzz"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -52,17 +53,19 @@ func TestSummaryProvider(t *testing.T) {
assert := assert.New(t) assert := assert.New(t)
mockStatsProvider := new(statstest.StatsProvider) mockCtrl := gomock.NewController(t)
mockStatsProvider. defer mockCtrl.Finish()
On("GetNode").Return(node, nil).
On("GetNodeConfig").Return(nodeConfig). mockStatsProvider := statstest.NewMockProvider(mockCtrl)
On("GetPodCgroupRoot").Return(cgroupRoot). mockStatsProvider.EXPECT().GetNode().Return(node, nil).AnyTimes()
On("ListPodStats").Return(podStats, nil). mockStatsProvider.EXPECT().GetNodeConfig().Return(nodeConfig).AnyTimes()
On("ListPodStatsAndUpdateCPUNanoCoreUsage").Return(podStats, nil). mockStatsProvider.EXPECT().GetPodCgroupRoot().Return(cgroupRoot).AnyTimes()
On("ImageFsStats").Return(imageFsStats, nil). mockStatsProvider.EXPECT().ListPodStats().Return(podStats, nil).AnyTimes()
On("RootFsStats").Return(rootFsStats, nil). mockStatsProvider.EXPECT().ListPodStatsAndUpdateCPUNanoCoreUsage().Return(podStats, nil).AnyTimes()
On("RlimitStats").Return(nil, nil). mockStatsProvider.EXPECT().ImageFsStats().Return(imageFsStats, nil).AnyTimes()
On("GetCgroupStats", "/", true).Return(cgroupStatsMap["/"].cs, cgroupStatsMap["/"].ns, nil) mockStatsProvider.EXPECT().RootFsStats().Return(rootFsStats, nil).AnyTimes()
mockStatsProvider.EXPECT().RlimitStats().Return(nil, nil).AnyTimes()
mockStatsProvider.EXPECT().GetCgroupStats("/", true).Return(cgroupStatsMap["/"].cs, cgroupStatsMap["/"].ns, nil).AnyTimes()
provider := NewSummaryProvider(mockStatsProvider) provider := NewSummaryProvider(mockStatsProvider)
summary, err := provider.Get(true) summary, err := provider.Get(true)

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2016 The Kubernetes Authors. Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,408 +14,326 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// Code generated by MockGen. DO NOT EDIT.
// Source: handler.go
// Package testing is a generated GoMock package.
package testing package testing
import cm "k8s.io/kubernetes/pkg/kubelet/cm" import (
import corev1 "k8s.io/api/core/v1" gomock "github.com/golang/mock/gomock"
import mock "github.com/stretchr/testify/mock" v1 "github.com/google/cadvisor/info/v1"
v2 "github.com/google/cadvisor/info/v2"
v10 "k8s.io/api/core/v1"
types "k8s.io/apimachinery/pkg/types"
v1alpha1 "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
cm "k8s.io/kubernetes/pkg/kubelet/cm"
volume "k8s.io/kubernetes/pkg/volume"
reflect "reflect"
)
import types "k8s.io/apimachinery/pkg/types" // MockProvider is a mock of Provider interface
import v1 "github.com/google/cadvisor/info/v1" type MockProvider struct {
import v2 "github.com/google/cadvisor/info/v2" ctrl *gomock.Controller
import v1alpha1 "k8s.io/kubelet/pkg/apis/stats/v1alpha1" recorder *MockProviderMockRecorder
import volume "k8s.io/kubernetes/pkg/volume"
// GENERATED BY mockery
// StatsProvider is an autogenerated mock type for the StatsProvider type
type StatsProvider struct {
mock.Mock
} }
// GetCgroupStats provides a mock function with given fields: cgroupName, updateStats // MockProviderMockRecorder is the mock recorder for MockProvider
func (_m *StatsProvider) GetCgroupStats(cgroupName string, updateStats bool) (*v1alpha1.ContainerStats, *v1alpha1.NetworkStats, error) { type MockProviderMockRecorder struct {
ret := _m.Called(cgroupName, updateStats) mock *MockProvider
var r0 *v1alpha1.ContainerStats
if rf, ok := ret.Get(0).(func(string, bool) *v1alpha1.ContainerStats); ok {
r0 = rf(cgroupName, updateStats)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1alpha1.ContainerStats)
}
}
var r1 *v1alpha1.NetworkStats
if rf, ok := ret.Get(1).(func(string, bool) *v1alpha1.NetworkStats); ok {
r1 = rf(cgroupName, updateStats)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*v1alpha1.NetworkStats)
}
}
var r2 error
if rf, ok := ret.Get(2).(func(string, bool) error); ok {
r2 = rf(cgroupName, updateStats)
} else {
r2 = ret.Error(2)
}
return r0, r1, r2
} }
// GetCgroupCPUAndMemoryStats provides a mock function with given fields: cgroupName, updateStats // NewMockProvider creates a new mock instance
func (_m *StatsProvider) GetCgroupCPUAndMemoryStats(cgroupName string, updateStats bool) (*v1alpha1.ContainerStats, error) { func NewMockProvider(ctrl *gomock.Controller) *MockProvider {
ret := _m.Called(cgroupName, updateStats) mock := &MockProvider{ctrl: ctrl}
mock.recorder = &MockProviderMockRecorder{mock}
var r0 *v1alpha1.ContainerStats return mock
if rf, ok := ret.Get(0).(func(string, bool) *v1alpha1.ContainerStats); ok {
r0 = rf(cgroupName, updateStats)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1alpha1.ContainerStats)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(string, bool) error); ok {
r1 = rf(cgroupName, updateStats)
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// GetPodByCgroupfs provides the pod that maps to the specified cgroup, as well // EXPECT returns an object that allows the caller to indicate expected use
// as whether the pod was found. func (m *MockProvider) EXPECT() *MockProviderMockRecorder {
func (_m *StatsProvider) GetPodByCgroupfs(cgroupfs string) (*corev1.Pod, bool) { return m.recorder
return nil, false
} }
// GetRequestedContainersInfo provides a mock function with given fields: containerName, options // ListPodStats mocks base method
func (_m *StatsProvider) GetRequestedContainersInfo(containerName string, options v2.RequestOptions) (map[string]*v1.ContainerInfo, error) { func (m *MockProvider) ListPodStats() ([]v1alpha1.PodStats, error) {
ret := _m.Called(containerName, options) m.ctrl.T.Helper()
return ret.Get(0).(map[string]*v1.ContainerInfo), ret.Error(1) ret := m.ctrl.Call(m, "ListPodStats")
ret0, _ := ret[0].([]v1alpha1.PodStats)
ret1, _ := ret[1].(error)
return ret0, ret1
} }
// GetContainerInfo provides a mock function with given fields: podFullName, uid, containerName, req // ListPodStats indicates an expected call of ListPodStats
func (_m *StatsProvider) GetContainerInfo(podFullName string, uid types.UID, containerName string, req *v1.ContainerInfoRequest) (*v1.ContainerInfo, error) { func (mr *MockProviderMockRecorder) ListPodStats() *gomock.Call {
ret := _m.Called(podFullName, uid, containerName, req) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPodStats", reflect.TypeOf((*MockProvider)(nil).ListPodStats))
var r0 *v1.ContainerInfo
if rf, ok := ret.Get(0).(func(string, types.UID, string, *v1.ContainerInfoRequest) *v1.ContainerInfo); ok {
r0 = rf(podFullName, uid, containerName, req)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1.ContainerInfo)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(string, types.UID, string, *v1.ContainerInfoRequest) error); ok {
r1 = rf(podFullName, uid, containerName, req)
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// GetNode provides a mock function with given fields: // ListPodCPUAndMemoryStats mocks base method
func (_m *StatsProvider) GetNode() (*corev1.Node, error) { func (m *MockProvider) ListPodCPUAndMemoryStats() ([]v1alpha1.PodStats, error) {
ret := _m.Called() m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListPodCPUAndMemoryStats")
var r0 *corev1.Node ret0, _ := ret[0].([]v1alpha1.PodStats)
if rf, ok := ret.Get(0).(func() *corev1.Node); ok { ret1, _ := ret[1].(error)
r0 = rf() return ret0, ret1
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*corev1.Node)
}
}
var r1 error
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// GetNodeConfig provides a mock function with given fields: // ListPodCPUAndMemoryStats indicates an expected call of ListPodCPUAndMemoryStats
func (_m *StatsProvider) GetNodeConfig() cm.NodeConfig { func (mr *MockProviderMockRecorder) ListPodCPUAndMemoryStats() *gomock.Call {
ret := _m.Called() mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPodCPUAndMemoryStats", reflect.TypeOf((*MockProvider)(nil).ListPodCPUAndMemoryStats))
var r0 cm.NodeConfig
if rf, ok := ret.Get(0).(func() cm.NodeConfig); ok {
r0 = rf()
} else {
r0 = ret.Get(0).(cm.NodeConfig)
}
return r0
} }
// GetPodCgroupRoot provides a mock function with given fields: // ListPodStatsAndUpdateCPUNanoCoreUsage mocks base method
func (_m *StatsProvider) GetPodCgroupRoot() string { func (m *MockProvider) ListPodStatsAndUpdateCPUNanoCoreUsage() ([]v1alpha1.PodStats, error) {
ret := _m.Called() m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListPodStatsAndUpdateCPUNanoCoreUsage")
var r0 string ret0, _ := ret[0].([]v1alpha1.PodStats)
if rf, ok := ret.Get(0).(func() string); ok { ret1, _ := ret[1].(error)
r0 = rf() return ret0, ret1
} else {
r0 = ret.Get(0).(string)
}
return r0
} }
// GetPodByName provides a mock function with given fields: namespace, name // ListPodStatsAndUpdateCPUNanoCoreUsage indicates an expected call of ListPodStatsAndUpdateCPUNanoCoreUsage
func (_m *StatsProvider) GetPodByName(namespace string, name string) (*corev1.Pod, bool) { func (mr *MockProviderMockRecorder) ListPodStatsAndUpdateCPUNanoCoreUsage() *gomock.Call {
ret := _m.Called(namespace, name) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPodStatsAndUpdateCPUNanoCoreUsage", reflect.TypeOf((*MockProvider)(nil).ListPodStatsAndUpdateCPUNanoCoreUsage))
var r0 *corev1.Pod
if rf, ok := ret.Get(0).(func(string, string) *corev1.Pod); ok {
r0 = rf(namespace, name)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*corev1.Pod)
}
}
var r1 bool
if rf, ok := ret.Get(1).(func(string, string) bool); ok {
r1 = rf(namespace, name)
} else {
r1 = ret.Get(1).(bool)
}
return r0, r1
} }
// GetPods provides a mock function with given fields: // ImageFsStats mocks base method
func (_m *StatsProvider) GetPods() []*corev1.Pod { func (m *MockProvider) ImageFsStats() (*v1alpha1.FsStats, error) {
ret := _m.Called() m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ImageFsStats")
var r0 []*corev1.Pod ret0, _ := ret[0].(*v1alpha1.FsStats)
if rf, ok := ret.Get(0).(func() []*corev1.Pod); ok { ret1, _ := ret[1].(error)
r0 = rf() return ret0, ret1
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]*corev1.Pod)
}
}
return r0
} }
// GetRawContainerInfo provides a mock function with given fields: containerName, req, subcontainers // ImageFsStats indicates an expected call of ImageFsStats
func (_m *StatsProvider) GetRawContainerInfo(containerName string, req *v1.ContainerInfoRequest, subcontainers bool) (map[string]*v1.ContainerInfo, error) { func (mr *MockProviderMockRecorder) ImageFsStats() *gomock.Call {
ret := _m.Called(containerName, req, subcontainers) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImageFsStats", reflect.TypeOf((*MockProvider)(nil).ImageFsStats))
var r0 map[string]*v1.ContainerInfo
if rf, ok := ret.Get(0).(func(string, *v1.ContainerInfoRequest, bool) map[string]*v1.ContainerInfo); ok {
r0 = rf(containerName, req, subcontainers)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(map[string]*v1.ContainerInfo)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(string, *v1.ContainerInfoRequest, bool) error); ok {
r1 = rf(containerName, req, subcontainers)
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// ImageFsStats provides a mock function with given fields: // GetCgroupStats mocks base method
func (_m *StatsProvider) ImageFsStats() (*v1alpha1.FsStats, error) { func (m *MockProvider) GetCgroupStats(cgroupName string, updateStats bool) (*v1alpha1.ContainerStats, *v1alpha1.NetworkStats, error) {
ret := _m.Called() m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetCgroupStats", cgroupName, updateStats)
var r0 *v1alpha1.FsStats ret0, _ := ret[0].(*v1alpha1.ContainerStats)
if rf, ok := ret.Get(0).(func() *v1alpha1.FsStats); ok { ret1, _ := ret[1].(*v1alpha1.NetworkStats)
r0 = rf() ret2, _ := ret[2].(error)
} else { return ret0, ret1, ret2
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1alpha1.FsStats)
}
}
var r1 error
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// ListPodStats provides a mock function with given fields: // GetCgroupStats indicates an expected call of GetCgroupStats
func (_m *StatsProvider) ListPodStats() ([]v1alpha1.PodStats, error) { func (mr *MockProviderMockRecorder) GetCgroupStats(cgroupName, updateStats interface{}) *gomock.Call {
ret := _m.Called() mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCgroupStats", reflect.TypeOf((*MockProvider)(nil).GetCgroupStats), cgroupName, updateStats)
var r0 []v1alpha1.PodStats
if rf, ok := ret.Get(0).(func() []v1alpha1.PodStats); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]v1alpha1.PodStats)
}
}
var r1 error
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// ListPodStatsAndUpdateCPUNanoCoreUsage provides a mock function with given fields: // GetCgroupCPUAndMemoryStats mocks base method
func (_m *StatsProvider) ListPodStatsAndUpdateCPUNanoCoreUsage() ([]v1alpha1.PodStats, error) { func (m *MockProvider) GetCgroupCPUAndMemoryStats(cgroupName string, updateStats bool) (*v1alpha1.ContainerStats, error) {
ret := _m.Called() m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetCgroupCPUAndMemoryStats", cgroupName, updateStats)
var r0 []v1alpha1.PodStats ret0, _ := ret[0].(*v1alpha1.ContainerStats)
if rf, ok := ret.Get(0).(func() []v1alpha1.PodStats); ok { ret1, _ := ret[1].(error)
r0 = rf() return ret0, ret1
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]v1alpha1.PodStats)
}
}
var r1 error
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// ListPodCPUAndMemoryStats provides a mock function with given fields: // GetCgroupCPUAndMemoryStats indicates an expected call of GetCgroupCPUAndMemoryStats
func (_m *StatsProvider) ListPodCPUAndMemoryStats() ([]v1alpha1.PodStats, error) { func (mr *MockProviderMockRecorder) GetCgroupCPUAndMemoryStats(cgroupName, updateStats interface{}) *gomock.Call {
ret := _m.Called() mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCgroupCPUAndMemoryStats", reflect.TypeOf((*MockProvider)(nil).GetCgroupCPUAndMemoryStats), cgroupName, updateStats)
var r0 []v1alpha1.PodStats
if rf, ok := ret.Get(0).(func() []v1alpha1.PodStats); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]v1alpha1.PodStats)
}
}
var r1 error
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// ListVolumesForPod provides a mock function with given fields: podUID // RootFsStats mocks base method
func (_m *StatsProvider) ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool) { func (m *MockProvider) RootFsStats() (*v1alpha1.FsStats, error) {
ret := _m.Called(podUID) m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RootFsStats")
var r0 map[string]volume.Volume ret0, _ := ret[0].(*v1alpha1.FsStats)
if rf, ok := ret.Get(0).(func(types.UID) map[string]volume.Volume); ok { ret1, _ := ret[1].(error)
r0 = rf(podUID) return ret0, ret1
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(map[string]volume.Volume)
}
}
var r1 bool
if rf, ok := ret.Get(1).(func(types.UID) bool); ok {
r1 = rf(podUID)
} else {
r1 = ret.Get(1).(bool)
}
return r0, r1
} }
// ListBlockVolumesForPod provides a mock function with given fields: podUID // RootFsStats indicates an expected call of RootFsStats
func (_m *StatsProvider) ListBlockVolumesForPod(podUID types.UID) (map[string]volume.BlockVolume, bool) { func (mr *MockProviderMockRecorder) RootFsStats() *gomock.Call {
ret := _m.Called(podUID) mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RootFsStats", reflect.TypeOf((*MockProvider)(nil).RootFsStats))
var r0 map[string]volume.BlockVolume
if rf, ok := ret.Get(0).(func(types.UID) map[string]volume.BlockVolume); ok {
r0 = rf(podUID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(map[string]volume.BlockVolume)
}
}
var r1 bool
if rf, ok := ret.Get(1).(func(types.UID) bool); ok {
r1 = rf(podUID)
} else {
r1 = ret.Get(1).(bool)
}
return r0, r1
} }
// RootFsStats provides a mock function with given fields: // GetContainerInfo mocks base method
func (_m *StatsProvider) RootFsStats() (*v1alpha1.FsStats, error) { func (m *MockProvider) GetContainerInfo(podFullName string, uid types.UID, containerName string, req *v1.ContainerInfoRequest) (*v1.ContainerInfo, error) {
ret := _m.Called() m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetContainerInfo", podFullName, uid, containerName, req)
var r0 *v1alpha1.FsStats ret0, _ := ret[0].(*v1.ContainerInfo)
if rf, ok := ret.Get(0).(func() *v1alpha1.FsStats); ok { ret1, _ := ret[1].(error)
r0 = rf() return ret0, ret1
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*v1alpha1.FsStats)
}
}
var r1 error
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
} }
// RlimitStats provides a mock function with given fields: // GetContainerInfo indicates an expected call of GetContainerInfo
func (_m *StatsProvider) RlimitStats() (*v1alpha1.RlimitStats, error) { func (mr *MockProviderMockRecorder) GetContainerInfo(podFullName, uid, containerName, req interface{}) *gomock.Call {
ret := _m.Called() mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetContainerInfo", reflect.TypeOf((*MockProvider)(nil).GetContainerInfo), podFullName, uid, containerName, req)
var r0 *v1alpha1.RlimitStats }
if rf, ok := ret.Get(0).(func() *v1alpha1.RlimitStats); ok {
r0 = rf() // GetRawContainerInfo mocks base method
} else { func (m *MockProvider) GetRawContainerInfo(containerName string, req *v1.ContainerInfoRequest, subcontainers bool) (map[string]*v1.ContainerInfo, error) {
if ret.Get(0) != nil { m.ctrl.T.Helper()
r0 = ret.Get(0).(*v1alpha1.RlimitStats) ret := m.ctrl.Call(m, "GetRawContainerInfo", containerName, req, subcontainers)
} ret0, _ := ret[0].(map[string]*v1.ContainerInfo)
} ret1, _ := ret[1].(error)
return ret0, ret1
var r1 error }
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf() // GetRawContainerInfo indicates an expected call of GetRawContainerInfo
} else { func (mr *MockProviderMockRecorder) GetRawContainerInfo(containerName, req, subcontainers interface{}) *gomock.Call {
r1 = ret.Error(1) mr.mock.ctrl.T.Helper()
} return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRawContainerInfo", reflect.TypeOf((*MockProvider)(nil).GetRawContainerInfo), containerName, req, subcontainers)
}
return r0, r1
// GetRequestedContainersInfo mocks base method
func (m *MockProvider) GetRequestedContainersInfo(containerName string, options v2.RequestOptions) (map[string]*v1.ContainerInfo, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetRequestedContainersInfo", containerName, options)
ret0, _ := ret[0].(map[string]*v1.ContainerInfo)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetRequestedContainersInfo indicates an expected call of GetRequestedContainersInfo
func (mr *MockProviderMockRecorder) GetRequestedContainersInfo(containerName, options interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRequestedContainersInfo", reflect.TypeOf((*MockProvider)(nil).GetRequestedContainersInfo), containerName, options)
}
// GetPodByName mocks base method
func (m *MockProvider) GetPodByName(namespace, name string) (*v10.Pod, bool) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodByName", namespace, name)
ret0, _ := ret[0].(*v10.Pod)
ret1, _ := ret[1].(bool)
return ret0, ret1
}
// GetPodByName indicates an expected call of GetPodByName
func (mr *MockProviderMockRecorder) GetPodByName(namespace, name interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodByName", reflect.TypeOf((*MockProvider)(nil).GetPodByName), namespace, name)
}
// GetNode mocks base method
func (m *MockProvider) GetNode() (*v10.Node, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetNode")
ret0, _ := ret[0].(*v10.Node)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetNode indicates an expected call of GetNode
func (mr *MockProviderMockRecorder) GetNode() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNode", reflect.TypeOf((*MockProvider)(nil).GetNode))
}
// GetNodeConfig mocks base method
func (m *MockProvider) GetNodeConfig() cm.NodeConfig {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetNodeConfig")
ret0, _ := ret[0].(cm.NodeConfig)
return ret0
}
// GetNodeConfig indicates an expected call of GetNodeConfig
func (mr *MockProviderMockRecorder) GetNodeConfig() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNodeConfig", reflect.TypeOf((*MockProvider)(nil).GetNodeConfig))
}
// ListVolumesForPod mocks base method
func (m *MockProvider) ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListVolumesForPod", podUID)
ret0, _ := ret[0].(map[string]volume.Volume)
ret1, _ := ret[1].(bool)
return ret0, ret1
}
// ListVolumesForPod indicates an expected call of ListVolumesForPod
func (mr *MockProviderMockRecorder) ListVolumesForPod(podUID interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVolumesForPod", reflect.TypeOf((*MockProvider)(nil).ListVolumesForPod), podUID)
}
// ListBlockVolumesForPod mocks base method
func (m *MockProvider) ListBlockVolumesForPod(podUID types.UID) (map[string]volume.BlockVolume, bool) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListBlockVolumesForPod", podUID)
ret0, _ := ret[0].(map[string]volume.BlockVolume)
ret1, _ := ret[1].(bool)
return ret0, ret1
}
// ListBlockVolumesForPod indicates an expected call of ListBlockVolumesForPod
func (mr *MockProviderMockRecorder) ListBlockVolumesForPod(podUID interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListBlockVolumesForPod", reflect.TypeOf((*MockProvider)(nil).ListBlockVolumesForPod), podUID)
}
// GetPods mocks base method
func (m *MockProvider) GetPods() []*v10.Pod {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPods")
ret0, _ := ret[0].([]*v10.Pod)
return ret0
}
// GetPods indicates an expected call of GetPods
func (mr *MockProviderMockRecorder) GetPods() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPods", reflect.TypeOf((*MockProvider)(nil).GetPods))
}
// RlimitStats mocks base method
func (m *MockProvider) RlimitStats() (*v1alpha1.RlimitStats, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RlimitStats")
ret0, _ := ret[0].(*v1alpha1.RlimitStats)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// RlimitStats indicates an expected call of RlimitStats
func (mr *MockProviderMockRecorder) RlimitStats() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RlimitStats", reflect.TypeOf((*MockProvider)(nil).RlimitStats))
}
// GetPodCgroupRoot mocks base method
func (m *MockProvider) GetPodCgroupRoot() string {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodCgroupRoot")
ret0, _ := ret[0].(string)
return ret0
}
// GetPodCgroupRoot indicates an expected call of GetPodCgroupRoot
func (mr *MockProviderMockRecorder) GetPodCgroupRoot() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodCgroupRoot", reflect.TypeOf((*MockProvider)(nil).GetPodCgroupRoot))
}
// GetPodByCgroupfs mocks base method
func (m *MockProvider) GetPodByCgroupfs(cgroupfs string) (*v10.Pod, bool) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodByCgroupfs", cgroupfs)
ret0, _ := ret[0].(*v10.Pod)
ret1, _ := ret[1].(bool)
return ret0, ret1
}
// GetPodByCgroupfs indicates an expected call of GetPodByCgroupfs
func (mr *MockProviderMockRecorder) GetPodByCgroupfs(cgroupfs interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodByCgroupfs", reflect.TypeOf((*MockProvider)(nil).GetPodByCgroupfs), cgroupfs)
} }

View File

@ -0,0 +1,80 @@
/*
Copyright 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. DO NOT EDIT.
// Source: summary.go
// Package testing is a generated GoMock package.
package testing
import (
gomock "github.com/golang/mock/gomock"
v1alpha1 "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
reflect "reflect"
)
// MockSummaryProvider is a mock of SummaryProvider interface
type MockSummaryProvider struct {
ctrl *gomock.Controller
recorder *MockSummaryProviderMockRecorder
}
// MockSummaryProviderMockRecorder is the mock recorder for MockSummaryProvider
type MockSummaryProviderMockRecorder struct {
mock *MockSummaryProvider
}
// NewMockSummaryProvider creates a new mock instance
func NewMockSummaryProvider(ctrl *gomock.Controller) *MockSummaryProvider {
mock := &MockSummaryProvider{ctrl: ctrl}
mock.recorder = &MockSummaryProviderMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockSummaryProvider) EXPECT() *MockSummaryProviderMockRecorder {
return m.recorder
}
// Get mocks base method
func (m *MockSummaryProvider) Get(updateStats bool) (*v1alpha1.Summary, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Get", updateStats)
ret0, _ := ret[0].(*v1alpha1.Summary)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Get indicates an expected call of Get
func (mr *MockSummaryProviderMockRecorder) Get(updateStats interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockSummaryProvider)(nil).Get), updateStats)
}
// GetCPUAndMemoryStats mocks base method
func (m *MockSummaryProvider) GetCPUAndMemoryStats() (*v1alpha1.Summary, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetCPUAndMemoryStats")
ret0, _ := ret[0].(*v1alpha1.Summary)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetCPUAndMemoryStats indicates an expected call of GetCPUAndMemoryStats
func (mr *MockSummaryProviderMockRecorder) GetCPUAndMemoryStats() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCPUAndMemoryStats", reflect.TypeOf((*MockSummaryProvider)(nil).GetCPUAndMemoryStats))
}

View File

@ -22,6 +22,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
csipbv1 "github.com/container-storage-interface/spec/lib/go/csi" csipbv1 "github.com/container-storage-interface/spec/lib/go/csi"
@ -97,12 +98,15 @@ var (
) )
func TestPVCRef(t *testing.T) { func TestPVCRef(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
// Setup mock stats provider // Setup mock stats provider
mockStats := new(statstest.StatsProvider) mockStats := statstest.NewMockProvider(mockCtrl)
volumes := map[string]volume.Volume{vol0: &fakeVolume{}, vol1: &fakeVolume{}} volumes := map[string]volume.Volume{vol0: &fakeVolume{}, vol1: &fakeVolume{}}
mockStats.On("ListVolumesForPod", fakePod.UID).Return(volumes, true) mockStats.EXPECT().ListVolumesForPod(fakePod.UID).Return(volumes, true)
blockVolumes := map[string]volume.BlockVolume{vol2: &fakeBlockVolume{}} blockVolumes := map[string]volume.BlockVolume{vol2: &fakeBlockVolume{}}
mockStats.On("ListBlockVolumesForPod", fakePod.UID).Return(blockVolumes, true) mockStats.EXPECT().ListBlockVolumesForPod(fakePod.UID).Return(blockVolumes, true)
eventStore := make(chan string, 1) eventStore := make(chan string, 1)
fakeEventRecorder := record.FakeRecorder{ fakeEventRecorder := record.FakeRecorder{
@ -141,11 +145,14 @@ func TestPVCRef(t *testing.T) {
} }
func TestNormalVolumeEvent(t *testing.T) { func TestNormalVolumeEvent(t *testing.T) {
mockStats := new(statstest.StatsProvider) mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockStats := statstest.NewMockProvider(mockCtrl)
volumes := map[string]volume.Volume{vol0: &fakeVolume{}, vol1: &fakeVolume{}} volumes := map[string]volume.Volume{vol0: &fakeVolume{}, vol1: &fakeVolume{}}
mockStats.On("ListVolumesForPod", fakePod.UID).Return(volumes, true) mockStats.EXPECT().ListVolumesForPod(fakePod.UID).Return(volumes, true)
blockVolumes := map[string]volume.BlockVolume{vol2: &fakeBlockVolume{}} blockVolumes := map[string]volume.BlockVolume{vol2: &fakeBlockVolume{}}
mockStats.On("ListBlockVolumesForPod", fakePod.UID).Return(blockVolumes, true) mockStats.EXPECT().ListBlockVolumesForPod(fakePod.UID).Return(blockVolumes, true)
eventStore := make(chan string, 2) eventStore := make(chan string, 2)
fakeEventRecorder := record.FakeRecorder{ fakeEventRecorder := record.FakeRecorder{
@ -163,12 +170,15 @@ func TestNormalVolumeEvent(t *testing.T) {
func TestAbnormalVolumeEvent(t *testing.T) { func TestAbnormalVolumeEvent(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CSIVolumeHealth, true)() defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CSIVolumeHealth, true)()
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
// Setup mock stats provider // Setup mock stats provider
mockStats := new(statstest.StatsProvider) mockStats := statstest.NewMockProvider(mockCtrl)
volumes := map[string]volume.Volume{vol0: &fakeVolume{}} volumes := map[string]volume.Volume{vol0: &fakeVolume{}}
mockStats.On("ListVolumesForPod", fakePod.UID).Return(volumes, true) mockStats.EXPECT().ListVolumesForPod(fakePod.UID).Return(volumes, true)
blockVolumes := map[string]volume.BlockVolume{vol1: &fakeBlockVolume{}} blockVolumes := map[string]volume.BlockVolume{vol1: &fakeBlockVolume{}}
mockStats.On("ListBlockVolumesForPod", fakePod.UID).Return(blockVolumes, true) mockStats.EXPECT().ListBlockVolumesForPod(fakePod.UID).Return(blockVolumes, true)
eventStore := make(chan string, 2) eventStore := make(chan string, 2)
fakeEventRecorder := record.FakeRecorder{ fakeEventRecorder := record.FakeRecorder{

View File

@ -19,6 +19,7 @@ package stats
import ( import (
"testing" "testing"
gomock "github.com/golang/mock/gomock"
cadvisorapiv2 "github.com/google/cadvisor/info/v2" cadvisorapiv2 "github.com/google/cadvisor/info/v2"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -208,15 +209,16 @@ func TestCadvisorListPodStats(t *testing.T) {
Recursive: true, Recursive: true,
} }
mockCadvisor := new(cadvisortest.Mock) mockCtrl := gomock.NewController(t)
mockCadvisor. defer mockCtrl.Finish()
On("ContainerInfoV2", "/", options).Return(infos, nil).
On("RootFsInfo").Return(rootfs, nil).
On("ImagesFsInfo").Return(imagefs, nil)
mockRuntime := new(containertest.Mock) mockCadvisor := cadvisortest.NewMockInterface(mockCtrl)
mockRuntime. mockCadvisor.EXPECT().ContainerInfoV2("/", options).Return(infos, nil)
On("ImageStats").Return(&kubecontainer.ImageStats{TotalStorageBytes: 123}, nil) mockCadvisor.EXPECT().RootFsInfo().Return(rootfs, nil)
mockCadvisor.EXPECT().ImagesFsInfo().Return(imagefs, nil)
mockRuntime := containertest.NewMockRuntime(mockCtrl)
mockRuntime.EXPECT().ImageStats().Return(&kubecontainer.ImageStats{TotalStorageBytes: 123}, nil).AnyTimes()
ephemeralVolumes := []statsapi.VolumeStats{getPodVolumeStats(seedEphemeralVolume1, "ephemeralVolume1"), ephemeralVolumes := []statsapi.VolumeStats{getPodVolumeStats(seedEphemeralVolume1, "ephemeralVolume1"),
getPodVolumeStats(seedEphemeralVolume2, "ephemeralVolume2")} getPodVolumeStats(seedEphemeralVolume2, "ephemeralVolume2")}
@ -230,11 +232,11 @@ func TestCadvisorListPodStats(t *testing.T) {
p1Time := metav1.Now() p1Time := metav1.Now()
p2Time := metav1.Now() p2Time := metav1.Now()
p3Time := metav1.Now() p3Time := metav1.Now()
mockStatus := new(statustest.MockStatusProvider) mockStatus := statustest.NewMockPodStatusProvider(mockCtrl)
mockStatus.On("GetPodStatus", types.UID("UID"+pName0)).Return(v1.PodStatus{StartTime: &p0Time}, true) mockStatus.EXPECT().GetPodStatus(types.UID("UID"+pName0)).Return(v1.PodStatus{StartTime: &p0Time}, true)
mockStatus.On("GetPodStatus", types.UID("UID"+pName1)).Return(v1.PodStatus{StartTime: &p1Time}, true) mockStatus.EXPECT().GetPodStatus(types.UID("UID"+pName1)).Return(v1.PodStatus{StartTime: &p1Time}, true)
mockStatus.On("GetPodStatus", types.UID("UID"+pName2)).Return(v1.PodStatus{StartTime: &p2Time}, true) mockStatus.EXPECT().GetPodStatus(types.UID("UID"+pName2)).Return(v1.PodStatus{StartTime: &p2Time}, true)
mockStatus.On("GetPodStatus", types.UID("UID"+pName3)).Return(v1.PodStatus{StartTime: &p3Time}, true) mockStatus.EXPECT().GetPodStatus(types.UID("UID"+pName3)).Return(v1.PodStatus{StartTime: &p3Time}, true)
resourceAnalyzer := &fakeResourceAnalyzer{podVolumeStats: volumeStats} resourceAnalyzer := &fakeResourceAnalyzer{podVolumeStats: volumeStats}
@ -391,9 +393,11 @@ func TestCadvisorListPodCPUAndMemoryStats(t *testing.T) {
Recursive: true, Recursive: true,
} }
mockCadvisor := new(cadvisortest.Mock) mockCtrl := gomock.NewController(t)
mockCadvisor. defer mockCtrl.Finish()
On("ContainerInfoV2", "/", options).Return(infos, nil)
mockCadvisor := cadvisortest.NewMockInterface(mockCtrl)
mockCadvisor.EXPECT().ContainerInfoV2("/", options).Return(infos, nil)
ephemeralVolumes := []statsapi.VolumeStats{getPodVolumeStats(seedEphemeralVolume1, "ephemeralVolume1"), ephemeralVolumes := []statsapi.VolumeStats{getPodVolumeStats(seedEphemeralVolume1, "ephemeralVolume1"),
getPodVolumeStats(seedEphemeralVolume2, "ephemeralVolume2")} getPodVolumeStats(seedEphemeralVolume2, "ephemeralVolume2")}
@ -479,18 +483,20 @@ func TestCadvisorListPodCPUAndMemoryStats(t *testing.T) {
} }
func TestCadvisorImagesFsStats(t *testing.T) { func TestCadvisorImagesFsStats(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
assert = assert.New(t) assert = assert.New(t)
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockRuntime = new(containertest.Mock) mockRuntime = containertest.NewMockRuntime(mockCtrl)
seed = 1000 seed = 1000
imageFsInfo = getTestFsInfo(seed) imageFsInfo = getTestFsInfo(seed)
imageStats = &kubecontainer.ImageStats{TotalStorageBytes: 100} imageStats = &kubecontainer.ImageStats{TotalStorageBytes: 100}
) )
mockCadvisor.On("ImagesFsInfo").Return(imageFsInfo, nil) mockCadvisor.EXPECT().ImagesFsInfo().Return(imageFsInfo, nil)
mockRuntime.On("ImageStats").Return(imageStats, nil) mockRuntime.EXPECT().ImageStats().Return(imageStats, nil)
provider := newCadvisorStatsProvider(mockCadvisor, &fakeResourceAnalyzer{}, mockRuntime, nil, NewFakeHostStatsProvider()) provider := newCadvisorStatsProvider(mockCadvisor, &fakeResourceAnalyzer{}, mockRuntime, nil, NewFakeHostStatsProvider())
stats, err := provider.ImageFsStats() stats, err := provider.ImageFsStats()
@ -503,6 +509,4 @@ func TestCadvisorImagesFsStats(t *testing.T) {
assert.Equal(imageFsInfo.InodesFree, stats.InodesFree) assert.Equal(imageFsInfo.InodesFree, stats.InodesFree)
assert.Equal(imageFsInfo.Inodes, stats.Inodes) assert.Equal(imageFsInfo.Inodes, stats.Inodes)
assert.Equal(*imageFsInfo.Inodes-*imageFsInfo.InodesFree, *stats.InodesUsed) assert.Equal(*imageFsInfo.Inodes-*imageFsInfo.InodesFree, *stats.InodesUsed)
mockCadvisor.AssertExpectations(t)
} }

View File

@ -139,8 +139,11 @@ func TestCRIListPodStats(t *testing.T) {
podLogStats1 = makeFakeLogStats(6000) podLogStats1 = makeFakeLogStats(6000)
) )
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
resourceAnalyzer = new(fakeResourceAnalyzer) resourceAnalyzer = new(fakeResourceAnalyzer)
@ -171,11 +174,11 @@ func TestCRIListPodStats(t *testing.T) {
Recursive: true, Recursive: true,
} }
mockCadvisor. mockCadvisor.EXPECT().ContainerInfoV2("/", options).Return(infos, nil)
On("ContainerInfoV2", "/", options).Return(infos, nil). mockCadvisor.EXPECT().RootFsInfo().Return(rootFsInfo, nil)
On("RootFsInfo").Return(rootFsInfo, nil). mockCadvisor.EXPECT().GetDirFsInfo(imageFsMountpoint).Return(imageFsInfo, nil)
On("GetDirFsInfo", imageFsMountpoint).Return(imageFsInfo, nil). mockCadvisor.EXPECT().GetDirFsInfo(unknownMountpoint).Return(cadvisorapiv2.FsInfo{}, cadvisorfs.ErrNoSuchDevice)
On("GetDirFsInfo", unknownMountpoint).Return(cadvisorapiv2.FsInfo{}, cadvisorfs.ErrNoSuchDevice)
fakeRuntimeService.SetFakeSandboxes([]*critest.FakePodSandbox{ fakeRuntimeService.SetFakeSandboxes([]*critest.FakePodSandbox{
sandbox0, sandbox1, sandbox2, sandbox3, sandbox4, sandbox5, sandbox0, sandbox1, sandbox2, sandbox3, sandbox4, sandbox5,
}) })
@ -317,8 +320,6 @@ func TestCRIListPodStats(t *testing.T) {
assert.NotNil(c8.CPU.Time) assert.NotNil(c8.CPU.Time)
assert.NotNil(c8.Memory.Time) assert.NotNil(c8.Memory.Time)
checkCRIPodCPUAndMemoryStats(assert, p3, infos[sandbox3Cgroup].Stats[0]) checkCRIPodCPUAndMemoryStats(assert, p3, infos[sandbox3Cgroup].Stats[0])
mockCadvisor.AssertExpectations(t)
} }
func TestAcceleratorUsageStatsCanBeDisabled(t *testing.T) { func TestAcceleratorUsageStatsCanBeDisabled(t *testing.T) {
@ -336,8 +337,11 @@ func TestAcceleratorUsageStatsCanBeDisabled(t *testing.T) {
containerStats1 = makeFakeContainerStats(container1, unknownMountpoint) containerStats1 = makeFakeContainerStats(container1, unknownMountpoint)
) )
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
resourceAnalyzer = new(fakeResourceAnalyzer) resourceAnalyzer = new(fakeResourceAnalyzer)
@ -361,11 +365,11 @@ func TestAcceleratorUsageStatsCanBeDisabled(t *testing.T) {
Recursive: true, Recursive: true,
} }
mockCadvisor. mockCadvisor.EXPECT().ContainerInfoV2("/", options).Return(infos, nil)
On("ContainerInfoV2", "/", options).Return(infos, nil). mockCadvisor.EXPECT().RootFsInfo().Return(rootFsInfo, nil)
On("RootFsInfo").Return(rootFsInfo, nil). mockCadvisor.EXPECT().GetDirFsInfo(imageFsMountpoint).Return(imageFsInfo, nil)
On("GetDirFsInfo", imageFsMountpoint).Return(imageFsInfo, nil). mockCadvisor.EXPECT().GetDirFsInfo(unknownMountpoint).Return(cadvisorapiv2.FsInfo{}, cadvisorfs.ErrNoSuchDevice)
On("GetDirFsInfo", unknownMountpoint).Return(cadvisorapiv2.FsInfo{}, cadvisorfs.ErrNoSuchDevice)
fakeRuntimeService.SetFakeSandboxes([]*critest.FakePodSandbox{ fakeRuntimeService.SetFakeSandboxes([]*critest.FakePodSandbox{
sandbox0, sandbox0,
}) })
@ -424,8 +428,6 @@ func TestAcceleratorUsageStatsCanBeDisabled(t *testing.T) {
assert.Nil(c1.Accelerators) assert.Nil(c1.Accelerators)
checkCRIPodCPUAndMemoryStats(assert, p0, infos[sandbox0Cgroup].Stats[0]) checkCRIPodCPUAndMemoryStats(assert, p0, infos[sandbox0Cgroup].Stats[0])
mockCadvisor.AssertExpectations(t)
} }
func TestCRIListPodCPUAndMemoryStats(t *testing.T) { func TestCRIListPodCPUAndMemoryStats(t *testing.T) {
@ -477,8 +479,11 @@ func TestCRIListPodCPUAndMemoryStats(t *testing.T) {
containerStats9 = makeFakeContainerStats(container9, imageFsMountpoint) containerStats9 = makeFakeContainerStats(container9, imageFsMountpoint)
) )
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
resourceAnalyzer = new(fakeResourceAnalyzer) resourceAnalyzer = new(fakeResourceAnalyzer)
@ -508,8 +513,8 @@ func TestCRIListPodCPUAndMemoryStats(t *testing.T) {
Recursive: true, Recursive: true,
} }
mockCadvisor. mockCadvisor.EXPECT().ContainerInfoV2("/", options).Return(infos, nil)
On("ContainerInfoV2", "/", options).Return(infos, nil)
fakeRuntimeService.SetFakeSandboxes([]*critest.FakePodSandbox{ fakeRuntimeService.SetFakeSandboxes([]*critest.FakePodSandbox{
sandbox0, sandbox1, sandbox2, sandbox3, sandbox4, sandbox5, sandbox6, sandbox0, sandbox1, sandbox2, sandbox3, sandbox4, sandbox5, sandbox6,
}) })
@ -632,8 +637,6 @@ func TestCRIListPodCPUAndMemoryStats(t *testing.T) {
assert.Equal(containerStats9.Cpu.Timestamp, p6.CPU.Time.UnixNano()) assert.Equal(containerStats9.Cpu.Timestamp, p6.CPU.Time.UnixNano())
assert.NotNil(c9.Memory.Time) assert.NotNil(c9.Memory.Time)
assert.Equal(containerStats9.Memory.Timestamp, p6.Memory.Time.UnixNano()) assert.Equal(containerStats9.Memory.Timestamp, p6.Memory.Time.UnixNano())
mockCadvisor.AssertExpectations(t)
} }
func TestCRIImagesFsStats(t *testing.T) { func TestCRIImagesFsStats(t *testing.T) {
@ -642,16 +645,19 @@ func TestCRIImagesFsStats(t *testing.T) {
imageFsInfo = getTestFsInfo(2000) imageFsInfo = getTestFsInfo(2000)
imageFsUsage = makeFakeImageFsUsage(imageFsMountpoint) imageFsUsage = makeFakeImageFsUsage(imageFsMountpoint)
) )
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
resourceAnalyzer = new(fakeResourceAnalyzer) resourceAnalyzer = new(fakeResourceAnalyzer)
fakeRuntimeService = critest.NewFakeRuntimeService() fakeRuntimeService = critest.NewFakeRuntimeService()
fakeImageService = critest.NewFakeImageService() fakeImageService = critest.NewFakeImageService()
) )
mockCadvisor.EXPECT().GetDirFsInfo(imageFsMountpoint).Return(imageFsInfo, nil)
mockCadvisor.On("GetDirFsInfo", imageFsMountpoint).Return(imageFsInfo, nil)
fakeImageService.SetFakeFilesystemUsage([]*runtimeapi.FilesystemUsage{ fakeImageService.SetFakeFilesystemUsage([]*runtimeapi.FilesystemUsage{
imageFsUsage, imageFsUsage,
}) })
@ -678,8 +684,6 @@ func TestCRIImagesFsStats(t *testing.T) {
assert.Equal(imageFsInfo.Inodes, stats.Inodes) assert.Equal(imageFsInfo.Inodes, stats.Inodes)
assert.Equal(imageFsUsage.UsedBytes.Value, *stats.UsedBytes) assert.Equal(imageFsUsage.UsedBytes.Value, *stats.UsedBytes)
assert.Equal(imageFsUsage.InodesUsed.Value, *stats.InodesUsed) assert.Equal(imageFsUsage.InodesUsed.Value, *stats.InodesUsed)
mockCadvisor.AssertExpectations(t)
} }
func makeFakePodSandbox(name, uid, namespace string, terminated bool) *critest.FakePodSandbox { func makeFakePodSandbox(name, uid, namespace string, terminated bool) *critest.FakePodSandbox {

View File

@ -21,6 +21,7 @@ import (
"testing" "testing"
"time" "time"
gomock "github.com/golang/mock/gomock"
cadvisorapiv1 "github.com/google/cadvisor/info/v1" cadvisorapiv1 "github.com/google/cadvisor/info/v1"
cadvisorapiv2 "github.com/google/cadvisor/info/v2" cadvisorapiv2 "github.com/google/cadvisor/info/v2"
fuzz "github.com/google/gofuzz" fuzz "github.com/google/gofuzz"
@ -73,8 +74,12 @@ func TestGetCgroupStats(t *testing.T) {
containerInfoSeed = 1000 containerInfoSeed = 1000
updateStats = false updateStats = false
) )
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
@ -85,7 +90,7 @@ func TestGetCgroupStats(t *testing.T) {
containerInfoMap = map[string]cadvisorapiv2.ContainerInfo{cgroupName: containerInfo} containerInfoMap = map[string]cadvisorapiv2.ContainerInfo{cgroupName: containerInfo}
) )
mockCadvisor.On("ContainerInfoV2", cgroupName, options).Return(containerInfoMap, nil) mockCadvisor.EXPECT().ContainerInfoV2(cgroupName, options).Return(containerInfoMap, nil)
provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{}) provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{})
cs, ns, err := provider.GetCgroupStats(cgroupName, updateStats) cs, ns, err := provider.GetCgroupStats(cgroupName, updateStats)
@ -97,8 +102,6 @@ func TestGetCgroupStats(t *testing.T) {
assert.Equal(cgroupName, cs.Name) assert.Equal(cgroupName, cs.Name)
assert.Equal(metav1.NewTime(containerInfo.Spec.CreationTime), cs.StartTime) assert.Equal(metav1.NewTime(containerInfo.Spec.CreationTime), cs.StartTime)
mockCadvisor.AssertExpectations(t)
} }
func TestGetCgroupCPUAndMemoryStats(t *testing.T) { func TestGetCgroupCPUAndMemoryStats(t *testing.T) {
@ -107,8 +110,12 @@ func TestGetCgroupCPUAndMemoryStats(t *testing.T) {
containerInfoSeed = 1000 containerInfoSeed = 1000
updateStats = false updateStats = false
) )
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
@ -119,7 +126,7 @@ func TestGetCgroupCPUAndMemoryStats(t *testing.T) {
containerInfoMap = map[string]cadvisorapiv2.ContainerInfo{cgroupName: containerInfo} containerInfoMap = map[string]cadvisorapiv2.ContainerInfo{cgroupName: containerInfo}
) )
mockCadvisor.On("ContainerInfoV2", cgroupName, options).Return(containerInfoMap, nil) mockCadvisor.EXPECT().ContainerInfoV2(cgroupName, options).Return(containerInfoMap, nil)
provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{}) provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{})
cs, err := provider.GetCgroupCPUAndMemoryStats(cgroupName, updateStats) cs, err := provider.GetCgroupCPUAndMemoryStats(cgroupName, updateStats)
@ -130,8 +137,6 @@ func TestGetCgroupCPUAndMemoryStats(t *testing.T) {
assert.Equal(cgroupName, cs.Name) assert.Equal(cgroupName, cs.Name)
assert.Equal(metav1.NewTime(containerInfo.Spec.CreationTime), cs.StartTime) assert.Equal(metav1.NewTime(containerInfo.Spec.CreationTime), cs.StartTime)
mockCadvisor.AssertExpectations(t)
} }
func TestRootFsStats(t *testing.T) { func TestRootFsStats(t *testing.T) {
@ -139,8 +144,12 @@ func TestRootFsStats(t *testing.T) {
rootFsInfoSeed = 1000 rootFsInfoSeed = 1000
containerInfoSeed = 2000 containerInfoSeed = 2000
) )
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
@ -152,9 +161,8 @@ func TestRootFsStats(t *testing.T) {
containerInfoMap = map[string]cadvisorapiv2.ContainerInfo{"/": containerInfo} containerInfoMap = map[string]cadvisorapiv2.ContainerInfo{"/": containerInfo}
) )
mockCadvisor. mockCadvisor.EXPECT().RootFsInfo().Return(rootFsInfo, nil)
On("RootFsInfo").Return(rootFsInfo, nil). mockCadvisor.EXPECT().ContainerInfoV2("/", options).Return(containerInfoMap, nil)
On("ContainerInfoV2", "/", options).Return(containerInfoMap, nil)
provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{}) provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{})
stats, err := provider.RootFsStats() stats, err := provider.RootFsStats()
@ -165,8 +173,6 @@ func TestRootFsStats(t *testing.T) {
assert.Equal(metav1.NewTime(containerInfo.Stats[0].Timestamp), stats.Time) assert.Equal(metav1.NewTime(containerInfo.Stats[0].Timestamp), stats.Time)
assert.Equal(rootFsInfo.Usage, *stats.UsedBytes) assert.Equal(rootFsInfo.Usage, *stats.UsedBytes)
assert.Equal(*rootFsInfo.Inodes-*rootFsInfo.InodesFree, *stats.InodesUsed) assert.Equal(*rootFsInfo.Inodes-*rootFsInfo.InodesFree, *stats.InodesUsed)
mockCadvisor.AssertExpectations(t)
} }
func TestGetContainerInfo(t *testing.T) { func TestGetContainerInfo(t *testing.T) {
@ -316,19 +322,22 @@ func TestGetContainerInfo(t *testing.T) {
}, },
} }
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
for _, tc := range tests { for _, tc := range tests {
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = kubepodtest.NewMockManager(mockCtrl)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = kubecontainertest.NewMockRuntimeCache(mockCtrl)
cadvisorReq = &cadvisorapiv1.ContainerInfoRequest{} cadvisorReq = &cadvisorapiv1.ContainerInfoRequest{}
) )
mockPodManager.On("TranslatePodUID", tc.requestedPodUID).Return(kubetypes.ResolvedPodUID(tc.requestedPodUID)) mockPodManager.EXPECT().TranslatePodUID(tc.requestedPodUID).Return(kubetypes.ResolvedPodUID(tc.requestedPodUID))
mockRuntimeCache.On("GetPods").Return(tc.podList, tc.runtimeError) mockRuntimeCache.EXPECT().GetPods().Return(tc.podList, tc.runtimeError)
if tc.expectDockerContainerCall { if tc.expectDockerContainerCall {
mockCadvisor.On("DockerContainer", tc.containerID, cadvisorReq).Return(tc.cadvisorContainerInfo, tc.mockError) mockCadvisor.EXPECT().DockerContainer(tc.containerID, cadvisorReq).Return(tc.cadvisorContainerInfo, tc.mockError)
} }
provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{}) provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{})
@ -338,13 +347,15 @@ func TestGetContainerInfo(t *testing.T) {
if tc.expectStats { if tc.expectStats {
require.NotNil(t, stats) require.NotNil(t, stats)
} }
mockCadvisor.AssertExpectations(t)
} }
} }
func TestGetRawContainerInfoRoot(t *testing.T) { func TestGetRawContainerInfoRoot(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
@ -357,17 +368,19 @@ func TestGetRawContainerInfoRoot(t *testing.T) {
} }
) )
mockCadvisor.On("ContainerInfo", containerPath, cadvisorReq).Return(containerInfo, nil) mockCadvisor.EXPECT().ContainerInfo(containerPath, cadvisorReq).Return(containerInfo, nil)
provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{}) provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{})
_, err := provider.GetRawContainerInfo(containerPath, cadvisorReq, false) _, err := provider.GetRawContainerInfo(containerPath, cadvisorReq, false)
assert.NoError(t, err) assert.NoError(t, err)
mockCadvisor.AssertExpectations(t)
} }
func TestGetRawContainerInfoSubcontainers(t *testing.T) { func TestGetRawContainerInfoSubcontainers(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
@ -387,16 +400,18 @@ func TestGetRawContainerInfoSubcontainers(t *testing.T) {
} }
) )
mockCadvisor.On("SubcontainerInfo", containerPath, cadvisorReq).Return(containerInfo, nil) mockCadvisor.EXPECT().SubcontainerInfo(containerPath, cadvisorReq).Return(containerInfo, nil)
provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{}) provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{})
result, err := provider.GetRawContainerInfo(containerPath, cadvisorReq, true) result, err := provider.GetRawContainerInfo(containerPath, cadvisorReq, true)
assert.NoError(t, err) assert.NoError(t, err)
assert.Len(t, result, 2) assert.Len(t, result, 2)
mockCadvisor.AssertExpectations(t)
} }
func TestHasDedicatedImageFs(t *testing.T) { func TestHasDedicatedImageFs(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
for desc, test := range map[string]struct { for desc, test := range map[string]struct {
rootfsDevice string rootfsDevice string
imagefsDevice string imagefsDevice string
@ -415,11 +430,11 @@ func TestHasDedicatedImageFs(t *testing.T) {
} { } {
t.Logf("TestCase %q", desc) t.Logf("TestCase %q", desc)
var ( var (
mockCadvisor = new(cadvisortest.Mock) mockCadvisor = cadvisortest.NewMockInterface(mockCtrl)
mockPodManager = new(kubepodtest.MockManager) mockPodManager = new(kubepodtest.MockManager)
mockRuntimeCache = new(kubecontainertest.MockRuntimeCache) mockRuntimeCache = new(kubecontainertest.MockRuntimeCache)
) )
mockCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{Device: test.rootfsDevice}, nil) mockCadvisor.EXPECT().RootFsInfo().Return(cadvisorapiv2.FsInfo{Device: test.rootfsDevice}, nil)
provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{ provider := newStatsProvider(mockCadvisor, mockPodManager, mockRuntimeCache, fakeContainerStatsProvider{
device: test.imagefsDevice, device: test.imagefsDevice,
@ -427,7 +442,6 @@ func TestHasDedicatedImageFs(t *testing.T) {
dedicated, err := provider.HasDedicatedImageFs() dedicated, err := provider.HasDedicatedImageFs()
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, test.dedicated, dedicated) assert.Equal(t, test.dedicated, dedicated)
mockCadvisor.AssertExpectations(t)
} }
} }

View File

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
//go:generate mockgen -source=status_manager.go -destination=testing/mock_pod_status_provider.go -package=testing PodStatusProvider
package status package status
import ( import (

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2018 The Kubernetes Authors. Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,22 +14,201 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
// Code generated by MockGen. DO NOT EDIT.
// Source: status_manager.go
// Package testing is a generated GoMock package.
package testing package testing
import ( import (
"github.com/stretchr/testify/mock" gomock "github.com/golang/mock/gomock"
v1 "k8s.io/api/core/v1"
"k8s.io/api/core/v1" types "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types" container "k8s.io/kubernetes/pkg/kubelet/container"
reflect "reflect"
) )
// MockStatusProvider mocks a PodStatusProvider. // MockPodStatusProvider is a mock of PodStatusProvider interface
type MockStatusProvider struct { type MockPodStatusProvider struct {
mock.Mock ctrl *gomock.Controller
recorder *MockPodStatusProviderMockRecorder
} }
// GetPodStatus implements PodStatusProvider. // MockPodStatusProviderMockRecorder is the mock recorder for MockPodStatusProvider
func (m *MockStatusProvider) GetPodStatus(uid types.UID) (v1.PodStatus, bool) { type MockPodStatusProviderMockRecorder struct {
args := m.Called(uid) mock *MockPodStatusProvider
return args.Get(0).(v1.PodStatus), args.Bool(1) }
// NewMockPodStatusProvider creates a new mock instance
func NewMockPodStatusProvider(ctrl *gomock.Controller) *MockPodStatusProvider {
mock := &MockPodStatusProvider{ctrl: ctrl}
mock.recorder = &MockPodStatusProviderMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockPodStatusProvider) EXPECT() *MockPodStatusProviderMockRecorder {
return m.recorder
}
// GetPodStatus mocks base method
func (m *MockPodStatusProvider) GetPodStatus(uid types.UID) (v1.PodStatus, bool) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodStatus", uid)
ret0, _ := ret[0].(v1.PodStatus)
ret1, _ := ret[1].(bool)
return ret0, ret1
}
// GetPodStatus indicates an expected call of GetPodStatus
func (mr *MockPodStatusProviderMockRecorder) GetPodStatus(uid interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodStatus", reflect.TypeOf((*MockPodStatusProvider)(nil).GetPodStatus), uid)
}
// MockPodDeletionSafetyProvider is a mock of PodDeletionSafetyProvider interface
type MockPodDeletionSafetyProvider struct {
ctrl *gomock.Controller
recorder *MockPodDeletionSafetyProviderMockRecorder
}
// MockPodDeletionSafetyProviderMockRecorder is the mock recorder for MockPodDeletionSafetyProvider
type MockPodDeletionSafetyProviderMockRecorder struct {
mock *MockPodDeletionSafetyProvider
}
// NewMockPodDeletionSafetyProvider creates a new mock instance
func NewMockPodDeletionSafetyProvider(ctrl *gomock.Controller) *MockPodDeletionSafetyProvider {
mock := &MockPodDeletionSafetyProvider{ctrl: ctrl}
mock.recorder = &MockPodDeletionSafetyProviderMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockPodDeletionSafetyProvider) EXPECT() *MockPodDeletionSafetyProviderMockRecorder {
return m.recorder
}
// PodResourcesAreReclaimed mocks base method
func (m *MockPodDeletionSafetyProvider) PodResourcesAreReclaimed(pod *v1.Pod, status v1.PodStatus) bool {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "PodResourcesAreReclaimed", pod, status)
ret0, _ := ret[0].(bool)
return ret0
}
// PodResourcesAreReclaimed indicates an expected call of PodResourcesAreReclaimed
func (mr *MockPodDeletionSafetyProviderMockRecorder) PodResourcesAreReclaimed(pod, status interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PodResourcesAreReclaimed", reflect.TypeOf((*MockPodDeletionSafetyProvider)(nil).PodResourcesAreReclaimed), pod, status)
}
// MockManager is a mock of Manager interface
type MockManager struct {
ctrl *gomock.Controller
recorder *MockManagerMockRecorder
}
// MockManagerMockRecorder is the mock recorder for MockManager
type MockManagerMockRecorder struct {
mock *MockManager
}
// NewMockManager creates a new mock instance
func NewMockManager(ctrl *gomock.Controller) *MockManager {
mock := &MockManager{ctrl: ctrl}
mock.recorder = &MockManagerMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockManager) EXPECT() *MockManagerMockRecorder {
return m.recorder
}
// GetPodStatus mocks base method
func (m *MockManager) GetPodStatus(uid types.UID) (v1.PodStatus, bool) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPodStatus", uid)
ret0, _ := ret[0].(v1.PodStatus)
ret1, _ := ret[1].(bool)
return ret0, ret1
}
// GetPodStatus indicates an expected call of GetPodStatus
func (mr *MockManagerMockRecorder) GetPodStatus(uid interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodStatus", reflect.TypeOf((*MockManager)(nil).GetPodStatus), uid)
}
// Start mocks base method
func (m *MockManager) Start() {
m.ctrl.T.Helper()
m.ctrl.Call(m, "Start")
}
// Start indicates an expected call of Start
func (mr *MockManagerMockRecorder) Start() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockManager)(nil).Start))
}
// SetPodStatus mocks base method
func (m *MockManager) SetPodStatus(pod *v1.Pod, status v1.PodStatus) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "SetPodStatus", pod, status)
}
// SetPodStatus indicates an expected call of SetPodStatus
func (mr *MockManagerMockRecorder) SetPodStatus(pod, status interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetPodStatus", reflect.TypeOf((*MockManager)(nil).SetPodStatus), pod, status)
}
// SetContainerReadiness mocks base method
func (m *MockManager) SetContainerReadiness(podUID types.UID, containerID container.ContainerID, ready bool) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "SetContainerReadiness", podUID, containerID, ready)
}
// SetContainerReadiness indicates an expected call of SetContainerReadiness
func (mr *MockManagerMockRecorder) SetContainerReadiness(podUID, containerID, ready interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetContainerReadiness", reflect.TypeOf((*MockManager)(nil).SetContainerReadiness), podUID, containerID, ready)
}
// SetContainerStartup mocks base method
func (m *MockManager) SetContainerStartup(podUID types.UID, containerID container.ContainerID, started bool) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "SetContainerStartup", podUID, containerID, started)
}
// SetContainerStartup indicates an expected call of SetContainerStartup
func (mr *MockManagerMockRecorder) SetContainerStartup(podUID, containerID, started interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetContainerStartup", reflect.TypeOf((*MockManager)(nil).SetContainerStartup), podUID, containerID, started)
}
// TerminatePod mocks base method
func (m *MockManager) TerminatePod(pod *v1.Pod) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "TerminatePod", pod)
}
// TerminatePod indicates an expected call of TerminatePod
func (mr *MockManagerMockRecorder) TerminatePod(pod interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TerminatePod", reflect.TypeOf((*MockManager)(nil).TerminatePod), pod)
}
// RemoveOrphanedStatuses mocks base method
func (m *MockManager) RemoveOrphanedStatuses(podUIDs map[types.UID]bool) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "RemoveOrphanedStatuses", podUIDs)
}
// RemoveOrphanedStatuses indicates an expected call of RemoveOrphanedStatuses
func (mr *MockManagerMockRecorder) RemoveOrphanedStatuses(podUIDs interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveOrphanedStatuses", reflect.TypeOf((*MockManager)(nil).RemoveOrphanedStatuses), podUIDs)
} }

View File

@ -1,65 +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.
*/
package testing
import (
"github.com/stretchr/testify/mock"
. "k8s.io/kubernetes/pkg/volume"
)
// ORIGINALLY GENERATED BY mockery with hand edits
type MockVolume struct {
mock.Mock
}
// GetPath provides a mock function with given fields:
func (_m *MockVolume) GetPath() string {
ret := _m.Called()
var r0 string
if rf, ok := ret.Get(0).(func() string); ok {
r0 = rf()
} else {
r0 = ret.Get(0).(string)
}
return r0
}
// GetMetrics provides a mock function with given fields:
func (_m *MockVolume) GetMetrics() (*Metrics, error) {
ret := _m.Called()
var r0 *Metrics
if rf, ok := ret.Get(0).(func() *Metrics); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*Metrics)
}
}
var r1 error
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
}