Merge pull request #108075 from ialidzhikov/cleanup/pointer-duration

Make use of `k8s.io/utils/pointer.Duration`
This commit is contained in:
Kubernetes Prow Robot 2023-06-19 05:22:21 -07:00 committed by GitHub
commit 988094878e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 44 deletions

View File

@ -17,37 +17,37 @@ limitations under the License.
package ttlafterfinished package ttlafterfinished
import ( import (
"k8s.io/klog/v2"
"strings" "strings"
"testing" "testing"
"time" "time"
batch "k8s.io/api/batch/v1" batchv1 "k8s.io/api/batch/v1"
v1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/klog/v2"
"k8s.io/klog/v2/ktesting" "k8s.io/klog/v2/ktesting"
"k8s.io/utils/pointer" "k8s.io/utils/pointer"
) )
func newJob(completionTime, failedTime metav1.Time, ttl *int32) *batch.Job { func newJob(completionTime, failedTime metav1.Time, ttl *int32) *batchv1.Job {
j := &batch.Job{ j := &batchv1.Job{
TypeMeta: metav1.TypeMeta{Kind: "Job"}, TypeMeta: metav1.TypeMeta{Kind: "Job"},
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foobar", Name: "foobar",
Namespace: metav1.NamespaceDefault, Namespace: metav1.NamespaceDefault,
}, },
Spec: batch.JobSpec{ Spec: batchv1.JobSpec{
Selector: &metav1.LabelSelector{ Selector: &metav1.LabelSelector{
MatchLabels: map[string]string{"foo": "bar"}, MatchLabels: map[string]string{"foo": "bar"},
}, },
Template: v1.PodTemplateSpec{ Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{ Labels: map[string]string{
"foo": "bar", "foo": "bar",
}, },
}, },
Spec: v1.PodSpec{ Spec: corev1.PodSpec{
Containers: []v1.Container{ Containers: []corev1.Container{
{Image: "foo/bar"}, {Image: "foo/bar"},
}, },
}, },
@ -56,12 +56,12 @@ func newJob(completionTime, failedTime metav1.Time, ttl *int32) *batch.Job {
} }
if !completionTime.IsZero() { if !completionTime.IsZero() {
c := batch.JobCondition{Type: batch.JobComplete, Status: v1.ConditionTrue, LastTransitionTime: completionTime} c := batchv1.JobCondition{Type: batchv1.JobComplete, Status: corev1.ConditionTrue, LastTransitionTime: completionTime}
j.Status.Conditions = append(j.Status.Conditions, c) j.Status.Conditions = append(j.Status.Conditions, c)
} }
if !failedTime.IsZero() { if !failedTime.IsZero() {
c := batch.JobCondition{Type: batch.JobFailed, Status: v1.ConditionTrue, LastTransitionTime: failedTime} c := batchv1.JobCondition{Type: batchv1.JobFailed, Status: corev1.ConditionTrue, LastTransitionTime: failedTime}
j.Status.Conditions = append(j.Status.Conditions, c) j.Status.Conditions = append(j.Status.Conditions, c)
} }
@ -72,11 +72,6 @@ func newJob(completionTime, failedTime metav1.Time, ttl *int32) *batch.Job {
return j return j
} }
func durationPointer(n int) *time.Duration {
s := time.Duration(n) * time.Second
return &s
}
func TestTimeLeft(t *testing.T) { func TestTimeLeft(t *testing.T) {
now := metav1.Now() now := metav1.Now()
@ -110,7 +105,7 @@ func TestTimeLeft(t *testing.T) {
completionTime: now, completionTime: now,
ttl: pointer.Int32(0), ttl: pointer.Int32(0),
since: &now.Time, since: &now.Time,
expectedTimeLeft: durationPointer(0), expectedTimeLeft: pointer.Duration(0 * time.Second),
expectedExpireAt: now.Time, expectedExpireAt: now.Time,
}, },
{ {
@ -118,7 +113,7 @@ func TestTimeLeft(t *testing.T) {
completionTime: now, completionTime: now,
ttl: pointer.Int32(10), ttl: pointer.Int32(10),
since: &now.Time, since: &now.Time,
expectedTimeLeft: durationPointer(10), expectedTimeLeft: pointer.Duration(10 * time.Second),
expectedExpireAt: now.Add(10 * time.Second), expectedExpireAt: now.Add(10 * time.Second),
}, },
{ {
@ -126,7 +121,7 @@ func TestTimeLeft(t *testing.T) {
completionTime: metav1.NewTime(now.Add(-10 * time.Second)), completionTime: metav1.NewTime(now.Add(-10 * time.Second)),
ttl: pointer.Int32(15), ttl: pointer.Int32(15),
since: &now.Time, since: &now.Time,
expectedTimeLeft: durationPointer(5), expectedTimeLeft: pointer.Duration(5 * time.Second),
expectedExpireAt: now.Add(5 * time.Second), expectedExpireAt: now.Add(5 * time.Second),
}, },
{ {
@ -141,7 +136,7 @@ func TestTimeLeft(t *testing.T) {
failedTime: now, failedTime: now,
ttl: pointer.Int32(0), ttl: pointer.Int32(0),
since: &now.Time, since: &now.Time,
expectedTimeLeft: durationPointer(0), expectedTimeLeft: pointer.Duration(0 * time.Second),
expectedExpireAt: now.Time, expectedExpireAt: now.Time,
}, },
{ {
@ -149,7 +144,7 @@ func TestTimeLeft(t *testing.T) {
failedTime: now, failedTime: now,
ttl: pointer.Int32(10), ttl: pointer.Int32(10),
since: &now.Time, since: &now.Time,
expectedTimeLeft: durationPointer(10), expectedTimeLeft: pointer.Duration(10 * time.Second),
expectedExpireAt: now.Add(10 * time.Second), expectedExpireAt: now.Add(10 * time.Second),
}, },
{ {
@ -157,7 +152,7 @@ func TestTimeLeft(t *testing.T) {
failedTime: metav1.NewTime(now.Add(-10 * time.Second)), failedTime: metav1.NewTime(now.Add(-10 * time.Second)),
ttl: pointer.Int32(15), ttl: pointer.Int32(15),
since: &now.Time, since: &now.Time,
expectedTimeLeft: durationPointer(5), expectedTimeLeft: pointer.Duration(5 * time.Second),
expectedExpireAt: now.Add(5 * time.Second), expectedExpireAt: now.Add(5 * time.Second),
}, },
} }

View File

@ -46,6 +46,7 @@ import (
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
"k8s.io/kubernetes/pkg/controller/certificates/signer" "k8s.io/kubernetes/pkg/controller/certificates/signer"
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
"k8s.io/utils/pointer"
) )
func TestCSRDuration(t *testing.T) { func TestCSRDuration(t *testing.T) {
@ -120,61 +121,62 @@ func TestCSRDuration(t *testing.T) {
tests := []struct { tests := []struct {
name, csrName string name, csrName string
duration, wantDuration time.Duration duration *time.Duration
wantDuration time.Duration
wantError string wantError string
}{ }{
{ {
name: "no duration set", name: "no duration set",
duration: 0, duration: nil,
wantDuration: 24 * time.Hour, wantDuration: 24 * time.Hour,
wantError: "", wantError: "",
}, },
{ {
name: "same duration set as certTTL", name: "same duration set as certTTL",
duration: 24 * time.Hour, duration: pointer.Duration(24 * time.Hour),
wantDuration: 24 * time.Hour, wantDuration: 24 * time.Hour,
wantError: "", wantError: "",
}, },
{ {
name: "longer duration than certTTL", name: "longer duration than certTTL",
duration: 48 * time.Hour, duration: pointer.Duration(48 * time.Hour),
wantDuration: 24 * time.Hour, wantDuration: 24 * time.Hour,
wantError: "", wantError: "",
}, },
{ {
name: "slightly shorter duration set", name: "slightly shorter duration set",
duration: 20 * time.Hour, duration: pointer.Duration(20 * time.Hour),
wantDuration: 20 * time.Hour, wantDuration: 20 * time.Hour,
wantError: "", wantError: "",
}, },
{ {
name: "even shorter duration set", name: "even shorter duration set",
duration: 10 * time.Hour, duration: pointer.Duration(10 * time.Hour),
wantDuration: 10 * time.Hour, wantDuration: 10 * time.Hour,
wantError: "", wantError: "",
}, },
{ {
name: "short duration set", name: "short duration set",
duration: 2 * time.Hour, duration: pointer.Duration(2 * time.Hour),
wantDuration: 2*time.Hour + 5*time.Minute, wantDuration: 2*time.Hour + 5*time.Minute,
wantError: "", wantError: "",
}, },
{ {
name: "very short duration set", name: "very short duration set",
duration: 30 * time.Minute, duration: pointer.Duration(30 * time.Minute),
wantDuration: 30*time.Minute + 5*time.Minute, wantDuration: 30*time.Minute + 5*time.Minute,
wantError: "", wantError: "",
}, },
{ {
name: "shortest duration set", name: "shortest duration set",
duration: 10 * time.Minute, duration: pointer.Duration(10 * time.Minute),
wantDuration: 10*time.Minute + 5*time.Minute, wantDuration: 10*time.Minute + 5*time.Minute,
wantError: "", wantError: "",
}, },
{ {
name: "just too short duration set", name: "just too short duration set",
csrName: "invalid-csr-001", csrName: "invalid-csr-001",
duration: 10*time.Minute - time.Second, duration: pointer.Duration(10*time.Minute - time.Second),
wantDuration: 0, wantDuration: 0,
wantError: `cannot create certificate signing request: ` + wantError: `cannot create certificate signing request: ` +
`CertificateSigningRequest.certificates.k8s.io "invalid-csr-001" is invalid: spec.expirationSeconds: Invalid value: 599: may not specify a duration less than 600 seconds (10 minutes)`, `CertificateSigningRequest.certificates.k8s.io "invalid-csr-001" is invalid: spec.expirationSeconds: Invalid value: 599: may not specify a duration less than 600 seconds (10 minutes)`,
@ -182,7 +184,7 @@ func TestCSRDuration(t *testing.T) {
{ {
name: "really too short duration set", name: "really too short duration set",
csrName: "invalid-csr-002", csrName: "invalid-csr-002",
duration: 3 * time.Minute, duration: pointer.Duration(3 * time.Minute),
wantDuration: 0, wantDuration: 0,
wantError: `cannot create certificate signing request: ` + wantError: `cannot create certificate signing request: ` +
`CertificateSigningRequest.certificates.k8s.io "invalid-csr-002" is invalid: spec.expirationSeconds: Invalid value: 180: may not specify a duration less than 600 seconds (10 minutes)`, `CertificateSigningRequest.certificates.k8s.io "invalid-csr-002" is invalid: spec.expirationSeconds: Invalid value: 180: may not specify a duration less than 600 seconds (10 minutes)`,
@ -190,7 +192,7 @@ func TestCSRDuration(t *testing.T) {
{ {
name: "negative duration set", name: "negative duration set",
csrName: "invalid-csr-003", csrName: "invalid-csr-003",
duration: -7 * time.Minute, duration: pointer.Duration(-7 * time.Minute),
wantDuration: 0, wantDuration: 0,
wantError: `cannot create certificate signing request: ` + wantError: `cannot create certificate signing request: ` +
`CertificateSigningRequest.certificates.k8s.io "invalid-csr-003" is invalid: spec.expirationSeconds: Invalid value: -420: may not specify a duration less than 600 seconds (10 minutes)`, `CertificateSigningRequest.certificates.k8s.io "invalid-csr-003" is invalid: spec.expirationSeconds: Invalid value: -420: may not specify a duration less than 600 seconds (10 minutes)`,
@ -211,7 +213,7 @@ func TestCSRDuration(t *testing.T) {
} }
csrName, csrUID, errReq := csr.RequestCertificate(client, csrData, tt.csrName, certificatesv1.KubeAPIServerClientSignerName, csrName, csrUID, errReq := csr.RequestCertificate(client, csrData, tt.csrName, certificatesv1.KubeAPIServerClientSignerName,
durationPtr(tt.duration), []certificatesv1.KeyUsage{certificatesv1.UsageClientAuth}, privateKey) tt.duration, []certificatesv1.KeyUsage{certificatesv1.UsageClientAuth}, privateKey)
if diff := cmp.Diff(tt.wantError, errStr(errReq)); len(diff) > 0 { if diff := cmp.Diff(tt.wantError, errStr(errReq)); len(diff) > 0 {
t.Fatalf("CSR input duration %v err diff (-want, +got):\n%s", tt.duration, diff) t.Fatalf("CSR input duration %v err diff (-want, +got):\n%s", tt.duration, diff)
@ -268,13 +270,6 @@ func TestCSRDuration(t *testing.T) {
} }
} }
func durationPtr(duration time.Duration) *time.Duration {
if duration == 0 {
return nil
}
return &duration
}
func errStr(err error) string { func errStr(err error) string {
if err == nil { if err == nil {
return "" return ""