Skip to content

Commit c279cb7

Browse files
Merge pull request #22588 from rcarrillocruz/enable_unidling_tests
Enable unidling tests
2 parents 00a7323 + bafb499 commit c279cb7

1 file changed

Lines changed: 89 additions & 12 deletions

File tree

pkg/unidling/controller/unidling_controller_test.go

Lines changed: 89 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

185226
func 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

213255
func 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

326369
func 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

514590
func 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

Comments
 (0)