From 229ce27ae46a3aea9885643e7d9e6271b067237d Mon Sep 17 00:00:00 2001 From: Daniil Loktev Date: Sat, 10 Sep 2022 11:01:51 +0300 Subject: [PATCH] Add unit tests for active_deadline.go --- pkg/kubelet/active_deadline_test.go | 54 +++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/pkg/kubelet/active_deadline_test.go b/pkg/kubelet/active_deadline_test.go index f8ac5ad62ea..3b246975c22 100644 --- a/pkg/kubelet/active_deadline_test.go +++ b/pkg/kubelet/active_deadline_test.go @@ -17,13 +17,17 @@ limitations under the License. package kubelet import ( + "reflect" "testing" "time" + "github.com/stretchr/testify/assert" "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/tools/record" + "k8s.io/kubernetes/pkg/kubelet/status" + "k8s.io/utils/clock" testingclock "k8s.io/utils/clock/testing" ) @@ -42,9 +46,51 @@ func (m *mockPodStatusProvider) GetPodStatus(uid types.UID) (v1.PodStatus, bool) return v1.PodStatus{}, false } +func TestNewActiveDeadlineHandler(t *testing.T) { + pods := newTestPods(1) + podStatusProvider := &mockPodStatusProvider{pods: pods} + fakeRecorder := &record.FakeRecorder{} + fakeClock := testingclock.NewFakeClock(time.Now()) + + testCases := []struct { + podStatusProvider status.PodStatusProvider + recorder record.EventRecorder + clock clock.Clock + }{ + {podStatusProvider, fakeRecorder, fakeClock}, + {podStatusProvider, fakeRecorder, nil}, + {podStatusProvider, nil, fakeClock}, + {podStatusProvider, nil, nil}, + {nil, fakeRecorder, fakeClock}, + {nil, fakeRecorder, nil}, + {nil, nil, fakeClock}, + {nil, nil, nil}, + } + + for i, testCase := range testCases { + actual, err := newActiveDeadlineHandler(testCase.podStatusProvider, testCase.recorder, testCase.clock) + + if i == 0 { + expected := &activeDeadlineHandler{ + clock: fakeClock, + podStatusProvider: podStatusProvider, + recorder: fakeRecorder, + } + if !reflect.DeepEqual(actual, expected) { + t.Errorf("[%d] newActiveDeadlineHandler expected %#v, got %#v", i, expected, actual) + } + assert.NoError(t, err) + + continue + } + + assert.Error(t, err) + } +} + // TestActiveDeadlineHandler verifies the active deadline handler functions as expected. func TestActiveDeadlineHandler(t *testing.T) { - pods := newTestPods(4) + pods := newTestPods(5) fakeClock := testingclock.NewFakeClock(time.Now()) podStatusProvider := &mockPodStatusProvider{pods: pods} fakeRecorder := &record.FakeRecorder{} @@ -70,10 +116,14 @@ func TestActiveDeadlineHandler(t *testing.T) { pods[2].Status.StartTime = &startTime pods[2].Spec.ActiveDeadlineSeconds = nil + // this pod has no start time + pods[3].Status.StartTime = nil + pods[3].Spec.ActiveDeadlineSeconds = ¬YetActiveDeadlineSeconds + testCases := []struct { pod *v1.Pod expected bool - }{{pods[0], true}, {pods[1], false}, {pods[2], false}, {pods[3], false}} + }{{pods[0], true}, {pods[1], false}, {pods[2], false}, {pods[3], false}, {pods[4], false}} for i, testCase := range testCases { if actual := handler.ShouldSync(testCase.pod); actual != testCase.expected {