Add unit tests for active_deadline.go

This commit is contained in:
Daniil Loktev 2022-09-10 11:01:51 +03:00
parent d9f21e55df
commit 229ce27ae4

View File

@ -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 = &notYetActiveDeadlineSeconds
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 {