mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +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
|
package kubelet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
"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"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
|
"k8s.io/kubernetes/pkg/kubelet/status"
|
||||||
|
"k8s.io/utils/clock"
|
||||||
testingclock "k8s.io/utils/clock/testing"
|
testingclock "k8s.io/utils/clock/testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -42,9 +46,52 @@ func (m *mockPodStatusProvider) GetPodStatus(uid types.UID) (v1.PodStatus, bool)
|
|||||||
return v1.PodStatus{}, false
|
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.
|
// TestActiveDeadlineHandler verifies the active deadline handler functions as expected.
|
||||||
func TestActiveDeadlineHandler(t *testing.T) {
|
func TestActiveDeadlineHandler(t *testing.T) {
|
||||||
pods := newTestPods(4)
|
pods := newTestPods(5)
|
||||||
fakeClock := testingclock.NewFakeClock(time.Now())
|
fakeClock := testingclock.NewFakeClock(time.Now())
|
||||||
podStatusProvider := &mockPodStatusProvider{pods: pods}
|
podStatusProvider := &mockPodStatusProvider{pods: pods}
|
||||||
fakeRecorder := &record.FakeRecorder{}
|
fakeRecorder := &record.FakeRecorder{}
|
||||||
@ -70,10 +117,14 @@ func TestActiveDeadlineHandler(t *testing.T) {
|
|||||||
pods[2].Status.StartTime = &startTime
|
pods[2].Status.StartTime = &startTime
|
||||||
pods[2].Spec.ActiveDeadlineSeconds = nil
|
pods[2].Spec.ActiveDeadlineSeconds = nil
|
||||||
|
|
||||||
|
// this pod has no start time
|
||||||
|
pods[3].Status.StartTime = nil
|
||||||
|
pods[3].Spec.ActiveDeadlineSeconds = ¬YetActiveDeadlineSeconds
|
||||||
|
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
pod *v1.Pod
|
pod *v1.Pod
|
||||||
expected bool
|
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 {
|
for i, testCase := range testCases {
|
||||||
if actual := handler.ShouldSync(testCase.pod); actual != testCase.expected {
|
if actual := handler.ShouldSync(testCase.pod); actual != testCase.expected {
|
||||||
|
Loading…
Reference in New Issue
Block a user