@@ -9,12 +9,15 @@ import (
99 autoscalingv1 "k8s.io/api/autoscaling/v1"
1010 corev1 "k8s.io/api/core/v1"
1111 kexternalfake "k8s.io/client-go/kubernetes/fake"
12+ "k8s.io/client-go/restmapper"
13+ scalefake "k8s.io/client-go/scale/fake"
1214 clientgotesting "k8s.io/client-go/testing"
1315
1416 appsv1 "github.com/openshift/api/apps/v1"
1517 appsfake "github.com/openshift/client-go/apps/clientset/versioned/fake"
1618 unidlingapi "github.com/openshift/origin/pkg/unidling/api"
1719 "k8s.io/apimachinery/pkg/api/errors"
20+ "k8s.io/apimachinery/pkg/api/meta"
1821 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1922 "k8s.io/apimachinery/pkg/runtime"
2023 "k8s.io/apimachinery/pkg/types"
@@ -28,9 +31,10 @@ type fakeResults struct {
2831 resEndpoints * corev1.Endpoints
2932}
3033
31- func prepFakeClient (t * testing.T , nowTime time.Time , scales ... autoscalingv1.Scale ) (* kexternalfake.Clientset , * appsfake.Clientset , * fakeResults ) {
34+ func prepFakeClient (t * testing.T , nowTime time.Time , scales ... autoscalingv1.Scale ) (* kexternalfake.Clientset , * appsfake.Clientset , * scalefake. FakeScaleClient , meta. RESTMapper , * fakeResults ) {
3235 fakeClient := & kexternalfake.Clientset {}
3336 fakeDeployClient := & appsfake.Clientset {}
37+ fakeScaleClient := & scalefake.FakeScaleClient {}
3438
3539 nowTimeStr := nowTime .Format (time .RFC3339 )
3640
@@ -179,17 +183,55 @@ func prepFakeClient(t *testing.T, nowTime time.Time, scales ...autoscalingv1.Sca
179183 return true , obj , nil
180184 })
181185
182- return fakeClient , fakeDeployClient , res
186+ fakeScaleClient .PrependReactor ("get" , "deploymentconfigs" , func (action clientgotesting.Action ) (bool , runtime.Object , error ) {
187+ objName := action .(clientgotesting.GetAction ).GetName ()
188+ for _ , scale := range scales {
189+ if scale .Kind == "DeploymentConfig" && objName == scale .Name {
190+ return true , & autoscalingv1.Scale {
191+ ObjectMeta : metav1.ObjectMeta {
192+ Name : objName ,
193+ Namespace : action .(clientgotesting.GetAction ).GetNamespace (),
194+ },
195+ Spec : autoscalingv1.ScaleSpec {
196+ Replicas : scale .Spec .Replicas ,
197+ },
198+ }, nil
199+ }
200+ }
201+
202+ return true , nil , errors .NewNotFound (action .GetResource ().GroupResource (), objName )
203+ })
204+
205+ apiGroupResources := []* restmapper.APIGroupResources {
206+ {
207+ Group : metav1.APIGroup {
208+ Versions : []metav1.GroupVersionForDiscovery {
209+ {Version : "v1" },
210+ },
211+ PreferredVersion : metav1.GroupVersionForDiscovery {Version : "v1" },
212+ },
213+ VersionedResources : map [string ][]metav1.APIResource {
214+ "v1" : {
215+ {Name : "replicationcontrollers" , Namespaced : true , Kind : "ReplicationController" },
216+ {Name : "deploymentconfigs" , Namespaced : true , Kind : "DeploymentConfig" },
217+ },
218+ },
219+ },
220+ }
221+ mapper := restmapper .NewDiscoveryRESTMapper (apiGroupResources )
222+
223+ return fakeClient , fakeDeployClient , fakeScaleClient , mapper , res
183224}
184225
185226func TestControllerHandlesStaleEvents (t * testing.T ) {
186- t .Skip ("failing because of missing client" )
187227 nowTime := time .Now ().Truncate (time .Second )
188- fakeClient , fakeDeployClient , res := prepFakeClient (t , nowTime )
228+ fakeClient , fakeDeployClient , fakeScaleClient , mapper , res := prepFakeClient (t , nowTime )
189229 controller := & UnidlingController {
230+ mapper : mapper ,
190231 endpointsNamespacer : fakeClient .CoreV1 (),
191232 rcNamespacer : fakeClient .CoreV1 (),
192233 dcNamespacer : fakeDeployClient .AppsV1 (),
234+ scaleNamespacer : fakeScaleClient ,
193235 }
194236
195237 retry , err := controller .handleRequest (types.NamespacedName {
@@ -211,7 +253,6 @@ func TestControllerHandlesStaleEvents(t *testing.T) {
211253}
212254
213255func TestControllerIgnoresAlreadyScaledObjects (t * testing.T ) {
214- t .Skip ("failing because of missing client" )
215256 // truncate to avoid conversion comparison issues
216257 nowTime := time .Now ().Truncate (time .Second )
217258 baseScales := []autoscalingv1.Scale {
@@ -240,9 +281,11 @@ func TestControllerIgnoresAlreadyScaledObjects(t *testing.T) {
240281 }
241282
242283 idledTime := nowTime .Add (- 10 * time .Second )
243- fakeClient , fakeDeployClient , res := prepFakeClient (t , idledTime , baseScales ... )
284+ fakeClient , fakeDeployClient , fakeScaleClient , mapper , res := prepFakeClient (t , idledTime , baseScales ... )
244285
245286 controller := & UnidlingController {
287+ mapper : mapper ,
288+ scaleNamespacer : fakeScaleClient ,
246289 endpointsNamespacer : fakeClient .CoreV1 (),
247290 rcNamespacer : fakeClient .CoreV1 (),
248291 dcNamespacer : fakeDeployClient .AppsV1 (),
@@ -324,7 +367,6 @@ func TestControllerIgnoresAlreadyScaledObjects(t *testing.T) {
324367}
325368
326369func TestControllerUnidlesProperly (t * testing.T ) {
327- t .Skip ("failing because of missing client" )
328370 nowTime := time .Now ().Truncate (time .Second )
329371 baseScales := []autoscalingv1.Scale {
330372 {
@@ -352,12 +394,14 @@ func TestControllerUnidlesProperly(t *testing.T) {
352394 },
353395 }
354396
355- fakeClient , fakeDeployClient , res := prepFakeClient (t , nowTime .Add (- 10 * time .Second ), baseScales ... )
397+ fakeClient , fakeDeployClient , fakeScaleClient , mapper , res := prepFakeClient (t , nowTime .Add (- 10 * time .Second ), baseScales ... )
356398
357399 controller := & UnidlingController {
400+ mapper : mapper ,
358401 endpointsNamespacer : fakeClient .CoreV1 (),
359402 rcNamespacer : fakeClient .CoreV1 (),
360403 dcNamespacer : fakeDeployClient .AppsV1 (),
404+ scaleNamespacer : fakeScaleClient ,
361405 }
362406
363407 retry , err := controller .handleRequest (types.NamespacedName {
@@ -417,9 +461,10 @@ type failureTestInfo struct {
417461 annotationsExpected map [string ]string
418462}
419463
420- func prepareFakeClientForFailureTest (test failureTestInfo ) (* kexternalfake.Clientset , * appsfake.Clientset ) {
464+ func prepareFakeClientForFailureTest (test failureTestInfo ) (* kexternalfake.Clientset , * appsfake.Clientset , * scalefake. FakeScaleClient , meta. RESTMapper ) {
421465 fakeClient := & kexternalfake.Clientset {}
422466 fakeDeployClient := & appsfake.Clientset {}
467+ fakeScaleClient := & scalefake.FakeScaleClient {}
423468
424469 fakeClient .PrependReactor ("get" , "endpoints" , func (action clientgotesting.Action ) (bool , runtime.Object , error ) {
425470 objName := action .(clientgotesting.GetAction ).GetName ()
@@ -508,11 +553,41 @@ func prepareFakeClientForFailureTest(test failureTestInfo) (*kexternalfake.Clien
508553 return true , obj , nil
509554 })
510555
511- return fakeClient , fakeDeployClient
556+ apiGroupResources := []* restmapper.APIGroupResources {
557+ {
558+ Group : metav1.APIGroup {
559+ Versions : []metav1.GroupVersionForDiscovery {
560+ {Version : "v1" },
561+ },
562+ PreferredVersion : metav1.GroupVersionForDiscovery {Version : "v1" },
563+ },
564+ VersionedResources : map [string ][]metav1.APIResource {
565+ "v1" : {
566+ {Name : "replicationcontrollers" , Namespaced : true , Kind : "ReplicationController" },
567+ },
568+ },
569+ },
570+ {
571+ Group : metav1.APIGroup {
572+ Name : "apps.openshift.io" ,
573+ Versions : []metav1.GroupVersionForDiscovery {
574+ {Version : "v1" },
575+ },
576+ PreferredVersion : metav1.GroupVersionForDiscovery {Version : "v1" },
577+ },
578+ VersionedResources : map [string ][]metav1.APIResource {
579+ "v1" : {
580+ {Name : "deploymentconfigs" , Namespaced : true , Kind : "DeploymentConfig" },
581+ },
582+ },
583+ },
584+ }
585+ mapper := restmapper .NewDiscoveryRESTMapper (apiGroupResources )
586+
587+ return fakeClient , fakeDeployClient , fakeScaleClient , mapper
512588}
513589
514590func TestControllerPerformsCorrectlyOnFailures (t * testing.T ) {
515- t .Skip ("failing because of missing client" )
516591 nowTime := time .Now ().Truncate (time .Second )
517592
518593 baseScalables := []unidlingapi.RecordedScaleReference {
@@ -693,11 +768,13 @@ func TestControllerPerformsCorrectlyOnFailures(t *testing.T) {
693768 }
694769
695770 for _ , test := range tests {
696- fakeClient , fakeDeployClient := prepareFakeClientForFailureTest (test )
771+ fakeClient , fakeDeployClient , fakeScaleClient , mapper := prepareFakeClientForFailureTest (test )
697772 controller := & UnidlingController {
773+ mapper : mapper ,
698774 endpointsNamespacer : fakeClient .CoreV1 (),
699775 rcNamespacer : fakeClient .CoreV1 (),
700776 dcNamespacer : fakeDeployClient .AppsV1 (),
777+ scaleNamespacer : fakeScaleClient ,
701778 }
702779
703780 var retry bool
0 commit comments