mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
Merge pull request #112373 from loktev-d/k8s_109717
Add unit tests for active_deadline.go
This commit is contained in:
commit
9b72f20156
@ -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 = ¬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 {
|
||||
|
Loading…
Reference in New Issue
Block a user