Fix deployment unit test by adding a dummy update reactor
This commit is contained in:
		@@ -420,8 +420,10 @@ func (fdc *DeploymentController) schedule(fd *extensionsv1.Deployment, clusters
 | 
			
		||||
	if fdPref != nil { // create a new planner if user specified a preference
 | 
			
		||||
		plannerToBeUsed = planner.NewPlanner(fdPref)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	replicas := int64(*fd.Spec.Replicas)
 | 
			
		||||
	replicas := int64(0)
 | 
			
		||||
	if fd.Spec.Replicas != nil {
 | 
			
		||||
		replicas = int64(*fd.Spec.Replicas)
 | 
			
		||||
	}
 | 
			
		||||
	var clusterNames []string
 | 
			
		||||
	for _, cluster := range clusters {
 | 
			
		||||
		clusterNames = append(clusterNames, cluster.Name)
 | 
			
		||||
 
 | 
			
		||||
@@ -85,6 +85,9 @@ func TestDeploymentController(t *testing.T) {
 | 
			
		||||
	cluster2 := NewCluster("cluster2", apiv1.ConditionTrue)
 | 
			
		||||
 | 
			
		||||
	fakeClient := &fakefedclientset.Clientset{}
 | 
			
		||||
	// Add an update reactor on fake client to return the desired updated object.
 | 
			
		||||
	// This is a hack to workaround https://github.com/kubernetes/kubernetes/issues/40939.
 | 
			
		||||
	AddFakeUpdateReactor("deployments", &fakeClient.Fake)
 | 
			
		||||
	RegisterFakeList("clusters", &fakeClient.Fake, &fedv1.ClusterList{Items: []fedv1.Cluster{*cluster1}})
 | 
			
		||||
	deploymentsWatch := RegisterFakeWatch("deployments", &fakeClient.Fake)
 | 
			
		||||
	clusterWatch := RegisterFakeWatch("clusters", &fakeClient.Fake)
 | 
			
		||||
 
 | 
			
		||||
@@ -226,6 +226,18 @@ func RegisterFakeCopyOnUpdate(resource string, client *core.Fake, watcher *Watch
 | 
			
		||||
	return objChan
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Adds an update reactor to the given fake client.
 | 
			
		||||
// The reactor just returns the object passed to update action.
 | 
			
		||||
// This is used as a hack to workaround https://github.com/kubernetes/kubernetes/issues/40939.
 | 
			
		||||
// Without this, all update actions using fake client return empty objects.
 | 
			
		||||
func AddFakeUpdateReactor(resource string, client *core.Fake) {
 | 
			
		||||
	client.AddReactor("update", resource, func(action core.Action) (bool, runtime.Object, error) {
 | 
			
		||||
		updateAction := action.(core.UpdateAction)
 | 
			
		||||
		originalObj := updateAction.GetObject()
 | 
			
		||||
		return true, originalObj, nil
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetObjectFromChan tries to get an api object from the given channel
 | 
			
		||||
// within a reasonable time.
 | 
			
		||||
func GetObjectFromChan(c chan runtime.Object) runtime.Object {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user