...
1
16
17 package drain
18
19 import (
20 "testing"
21 "time"
22
23 corev1 "k8s.io/api/core/v1"
24 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25 )
26
27 func TestSkipDeletedFilter(t *testing.T) {
28 tCases := []struct {
29 timeStampAgeSeconds int
30 skipWaitForDeleteTimeoutSeconds int
31 expectedDelete bool
32 }{
33 {
34 timeStampAgeSeconds: 0,
35 skipWaitForDeleteTimeoutSeconds: 20,
36 expectedDelete: true,
37 },
38 {
39 timeStampAgeSeconds: 1,
40 skipWaitForDeleteTimeoutSeconds: 20,
41 expectedDelete: true,
42 },
43 {
44 timeStampAgeSeconds: 100,
45 skipWaitForDeleteTimeoutSeconds: 20,
46 expectedDelete: false,
47 },
48 }
49 for i, tc := range tCases {
50 h := &Helper{
51 SkipWaitForDeleteTimeoutSeconds: tc.skipWaitForDeleteTimeoutSeconds,
52 }
53 pod := corev1.Pod{
54 ObjectMeta: metav1.ObjectMeta{
55 Name: "pod",
56 Namespace: "default",
57 },
58 }
59
60 if tc.timeStampAgeSeconds > 0 {
61 dTime := &metav1.Time{Time: time.Now().Add(time.Duration(tc.timeStampAgeSeconds) * time.Second * -1)}
62 pod.ObjectMeta.SetDeletionTimestamp(dTime)
63 }
64
65 podDeleteStatus := h.skipDeletedFilter(pod)
66 if podDeleteStatus.Delete != tc.expectedDelete {
67 t.Errorf("test %v: unexpected podDeleteStatus.delete; actual %v; expected %v", i, podDeleteStatus.Delete, tc.expectedDelete)
68 }
69 }
70 }
71
View as plain text