Merge pull request #112373 from loktev-d/k8s_109717

Add unit tests for active_deadline.go
This commit is contained in:
Kubernetes Prow Robot 2022-11-01 12:54:44 -07:00 committed by GitHub
commit 9b72f20156
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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,52 @@ 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)
// 0th case is the only one expected to pass, and is kept for coverage and confidence check
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 +117,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 {