mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-11 04:52:08 +00:00
Merge pull request #108075 from ialidzhikov/cleanup/pointer-duration
Make use of `k8s.io/utils/pointer.Duration`
This commit is contained in:
commit
988094878e
@ -17,37 +17,37 @@ limitations under the License.
|
||||
package ttlafterfinished
|
||||
|
||||
import (
|
||||
"k8s.io/klog/v2"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
batch "k8s.io/api/batch/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
batchv1 "k8s.io/api/batch/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/klog/v2/ktesting"
|
||||
"k8s.io/utils/pointer"
|
||||
)
|
||||
|
||||
func newJob(completionTime, failedTime metav1.Time, ttl *int32) *batch.Job {
|
||||
j := &batch.Job{
|
||||
func newJob(completionTime, failedTime metav1.Time, ttl *int32) *batchv1.Job {
|
||||
j := &batchv1.Job{
|
||||
TypeMeta: metav1.TypeMeta{Kind: "Job"},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foobar",
|
||||
Namespace: metav1.NamespaceDefault,
|
||||
},
|
||||
Spec: batch.JobSpec{
|
||||
Spec: batchv1.JobSpec{
|
||||
Selector: &metav1.LabelSelector{
|
||||
MatchLabels: map[string]string{"foo": "bar"},
|
||||
},
|
||||
Template: v1.PodTemplateSpec{
|
||||
Template: corev1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
Spec: corev1.PodSpec{
|
||||
Containers: []corev1.Container{
|
||||
{Image: "foo/bar"},
|
||||
},
|
||||
},
|
||||
@ -56,12 +56,12 @@ func newJob(completionTime, failedTime metav1.Time, ttl *int32) *batch.Job {
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
@ -72,11 +72,6 @@ func newJob(completionTime, failedTime metav1.Time, ttl *int32) *batch.Job {
|
||||
return j
|
||||
}
|
||||
|
||||
func durationPointer(n int) *time.Duration {
|
||||
s := time.Duration(n) * time.Second
|
||||
return &s
|
||||
}
|
||||
|
||||
func TestTimeLeft(t *testing.T) {
|
||||
now := metav1.Now()
|
||||
|
||||
@ -110,7 +105,7 @@ func TestTimeLeft(t *testing.T) {
|
||||
completionTime: now,
|
||||
ttl: pointer.Int32(0),
|
||||
since: &now.Time,
|
||||
expectedTimeLeft: durationPointer(0),
|
||||
expectedTimeLeft: pointer.Duration(0 * time.Second),
|
||||
expectedExpireAt: now.Time,
|
||||
},
|
||||
{
|
||||
@ -118,7 +113,7 @@ func TestTimeLeft(t *testing.T) {
|
||||
completionTime: now,
|
||||
ttl: pointer.Int32(10),
|
||||
since: &now.Time,
|
||||
expectedTimeLeft: durationPointer(10),
|
||||
expectedTimeLeft: pointer.Duration(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)),
|
||||
ttl: pointer.Int32(15),
|
||||
since: &now.Time,
|
||||
expectedTimeLeft: durationPointer(5),
|
||||
expectedTimeLeft: pointer.Duration(5 * time.Second),
|
||||
expectedExpireAt: now.Add(5 * time.Second),
|
||||
},
|
||||
{
|
||||
@ -141,7 +136,7 @@ func TestTimeLeft(t *testing.T) {
|
||||
failedTime: now,
|
||||
ttl: pointer.Int32(0),
|
||||
since: &now.Time,
|
||||
expectedTimeLeft: durationPointer(0),
|
||||
expectedTimeLeft: pointer.Duration(0 * time.Second),
|
||||
expectedExpireAt: now.Time,
|
||||
},
|
||||
{
|
||||
@ -149,7 +144,7 @@ func TestTimeLeft(t *testing.T) {
|
||||
failedTime: now,
|
||||
ttl: pointer.Int32(10),
|
||||
since: &now.Time,
|
||||
expectedTimeLeft: durationPointer(10),
|
||||
expectedTimeLeft: pointer.Duration(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)),
|
||||
ttl: pointer.Int32(15),
|
||||
since: &now.Time,
|
||||
expectedTimeLeft: durationPointer(5),
|
||||
expectedTimeLeft: pointer.Duration(5 * time.Second),
|
||||
expectedExpireAt: now.Add(5 * time.Second),
|
||||
},
|
||||
}
|
||||
|
@ -46,6 +46,7 @@ import (
|
||||
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
|
||||
"k8s.io/kubernetes/pkg/controller/certificates/signer"
|
||||
"k8s.io/kubernetes/test/integration/framework"
|
||||
"k8s.io/utils/pointer"
|
||||
)
|
||||
|
||||
func TestCSRDuration(t *testing.T) {
|
||||
@ -119,62 +120,63 @@ func TestCSRDuration(t *testing.T) {
|
||||
go c.Run(ctx, 1)
|
||||
|
||||
tests := []struct {
|
||||
name, csrName string
|
||||
duration, wantDuration time.Duration
|
||||
wantError string
|
||||
name, csrName string
|
||||
duration *time.Duration
|
||||
wantDuration time.Duration
|
||||
wantError string
|
||||
}{
|
||||
{
|
||||
name: "no duration set",
|
||||
duration: 0,
|
||||
duration: nil,
|
||||
wantDuration: 24 * time.Hour,
|
||||
wantError: "",
|
||||
},
|
||||
{
|
||||
name: "same duration set as certTTL",
|
||||
duration: 24 * time.Hour,
|
||||
duration: pointer.Duration(24 * time.Hour),
|
||||
wantDuration: 24 * time.Hour,
|
||||
wantError: "",
|
||||
},
|
||||
{
|
||||
name: "longer duration than certTTL",
|
||||
duration: 48 * time.Hour,
|
||||
duration: pointer.Duration(48 * time.Hour),
|
||||
wantDuration: 24 * time.Hour,
|
||||
wantError: "",
|
||||
},
|
||||
{
|
||||
name: "slightly shorter duration set",
|
||||
duration: 20 * time.Hour,
|
||||
duration: pointer.Duration(20 * time.Hour),
|
||||
wantDuration: 20 * time.Hour,
|
||||
wantError: "",
|
||||
},
|
||||
{
|
||||
name: "even shorter duration set",
|
||||
duration: 10 * time.Hour,
|
||||
duration: pointer.Duration(10 * time.Hour),
|
||||
wantDuration: 10 * time.Hour,
|
||||
wantError: "",
|
||||
},
|
||||
{
|
||||
name: "short duration set",
|
||||
duration: 2 * time.Hour,
|
||||
duration: pointer.Duration(2 * time.Hour),
|
||||
wantDuration: 2*time.Hour + 5*time.Minute,
|
||||
wantError: "",
|
||||
},
|
||||
{
|
||||
name: "very short duration set",
|
||||
duration: 30 * time.Minute,
|
||||
duration: pointer.Duration(30 * time.Minute),
|
||||
wantDuration: 30*time.Minute + 5*time.Minute,
|
||||
wantError: "",
|
||||
},
|
||||
{
|
||||
name: "shortest duration set",
|
||||
duration: 10 * time.Minute,
|
||||
duration: pointer.Duration(10 * time.Minute),
|
||||
wantDuration: 10*time.Minute + 5*time.Minute,
|
||||
wantError: "",
|
||||
},
|
||||
{
|
||||
name: "just too short duration set",
|
||||
csrName: "invalid-csr-001",
|
||||
duration: 10*time.Minute - time.Second,
|
||||
duration: pointer.Duration(10*time.Minute - time.Second),
|
||||
wantDuration: 0,
|
||||
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)`,
|
||||
@ -182,7 +184,7 @@ func TestCSRDuration(t *testing.T) {
|
||||
{
|
||||
name: "really too short duration set",
|
||||
csrName: "invalid-csr-002",
|
||||
duration: 3 * time.Minute,
|
||||
duration: pointer.Duration(3 * time.Minute),
|
||||
wantDuration: 0,
|
||||
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)`,
|
||||
@ -190,7 +192,7 @@ func TestCSRDuration(t *testing.T) {
|
||||
{
|
||||
name: "negative duration set",
|
||||
csrName: "invalid-csr-003",
|
||||
duration: -7 * time.Minute,
|
||||
duration: pointer.Duration(-7 * time.Minute),
|
||||
wantDuration: 0,
|
||||
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)`,
|
||||
@ -211,7 +213,7 @@ func TestCSRDuration(t *testing.T) {
|
||||
}
|
||||
|
||||
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 {
|
||||
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 {
|
||||
if err == nil {
|
||||
return ""
|
||||
|
Loading…
Reference in New Issue
Block a user