@@ -16,6 +16,7 @@ import (
1616 "k8s.io/kubernetes/pkg/apis/authorization"
1717 kapi "k8s.io/kubernetes/pkg/apis/core"
1818 "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
19+ "k8s.io/utils/clock"
1920
2021 templateapi "github.com/openshift/origin/pkg/template/apis/template"
2122 restutil "github.com/openshift/origin/pkg/util/rest"
@@ -27,10 +28,21 @@ func (rt roundtripper) RoundTrip(r *http.Request) (*http.Response, error) {
2728 return rt (r )
2829}
2930
31+ type fakeClock struct {
32+ clock.RealClock
33+ now time.Time
34+ }
35+
36+ func (f * fakeClock ) Now () time.Time {
37+ return f .now
38+ }
39+
3040// TestControllerCheckReadiness verifies the basic behaviour of
3141// TemplateInstanceController.checkReadiness(): that it can return ready, not
3242// ready and timed out correctly.
3343func TestControllerCheckReadiness (t * testing.T ) {
44+ clock := & fakeClock {now : time .Unix (0 , 0 )}
45+
3446 job := batchv1.Job {
3547 TypeMeta : metav1.TypeMeta {
3648 APIVersion : "batch/v1" ,
@@ -66,15 +78,15 @@ func TestControllerCheckReadiness(t *testing.T) {
6678 restmapper : restutil .DefaultMultiRESTMapper (),
6779 kc : fakeclientset ,
6880 config : fakerestconfig ,
81+ clock : clock ,
6982 }
7083 fakeclientset .AddReactor ("create" , "subjectaccessreviews" , func (action clientgotesting.Action ) (handled bool , ret runtime.Object , err error ) {
7184 return true , & authorization.SubjectAccessReview {Status : authorization.SubjectAccessReviewStatus {Allowed : true }}, nil
7285 })
7386
74- now := time .Now ()
7587 templateInstance := & templateapi.TemplateInstance {
7688 ObjectMeta : metav1.ObjectMeta {
77- CreationTimestamp : metav1.Time {Time : now },
89+ CreationTimestamp : metav1.Time {Time : clock . now },
7890 },
7991 Spec : templateapi.TemplateInstanceSpec {
8092 Requester : & templateapi.TemplateInstanceRequester {},
@@ -94,27 +106,29 @@ func TestControllerCheckReadiness(t *testing.T) {
94106 }
95107
96108 // should report not ready yet
97- ready , err := c .checkReadiness (templateInstance , now )
109+ ready , err := c .checkReadiness (templateInstance )
98110 if ready || err != nil {
99111 t .Error (ready , err )
100112 }
101113
102114 // should report timed out
103- ready , err = c .checkReadiness (templateInstance , now .Add (readinessTimeout + 1 ))
115+ clock .now = clock .now .Add (readinessTimeout + 1 )
116+ ready , err = c .checkReadiness (templateInstance )
104117 if ready || err == nil || err .Error () != "Timeout" {
105118 t .Error (ready , err )
106119 }
107120
108121 // should report ready
109- job .Status .CompletionTime = & metav1.Time {Time : now }
110- ready , err = c .checkReadiness (templateInstance , now )
122+ clock .now = time .Unix (0 , 0 )
123+ job .Status .CompletionTime = & metav1.Time {Time : clock .now }
124+ ready , err = c .checkReadiness (templateInstance )
111125 if ! ready || err != nil {
112126 t .Error (ready , err )
113127 }
114128
115129 // should report failed
116- job .Status .Failed = int32 ( 1 )
117- ready , err = c .checkReadiness (templateInstance , now )
130+ job .Status .Failed = 1
131+ ready , err = c .checkReadiness (templateInstance )
118132 if ready || err == nil || err .Error () != "Readiness failed on Job namespace/name" {
119133 t .Error (ready , err )
120134 }
0 commit comments