diff --git a/pkg/controller/replication_controller.go b/pkg/controller/replication_controller.go index 0b87356bb2a..c6d6cc77f5c 100644 --- a/pkg/controller/replication_controller.go +++ b/pkg/controller/replication_controller.go @@ -190,10 +190,10 @@ func (rm *ReplicationManager) watchControllers(resourceVersion *string) { // filterActivePods returns pods that have not terminated. func filterActivePods(pods []api.Pod) []*api.Pod { var result []*api.Pod - for _, value := range pods { - if api.PodSucceeded != value.Status.Phase && - api.PodFailed != value.Status.Phase { - result = append(result, &value) + for i := range pods { + if api.PodSucceeded != pods[i].Status.Phase && + api.PodFailed != pods[i].Status.Phase { + result = append(result, &pods[i]) } } return result diff --git a/pkg/controller/replication_controller_test.go b/pkg/controller/replication_controller_test.go index aac5fc7bcb3..ddfcbf6c93e 100644 --- a/pkg/controller/replication_controller_test.go +++ b/pkg/controller/replication_controller_test.go @@ -379,6 +379,25 @@ func TestWatchControllers(t *testing.T) { } } +func TestActivePodFiltering(t *testing.T) { + podList := newPodList(5) + podList.Items[0].Status.Phase = api.PodSucceeded + podList.Items[1].Status.Phase = api.PodFailed + expectedNames := util.NewStringSet() + for _, pod := range podList.Items[2:] { + expectedNames.Insert(pod.Name) + } + + got := filterActivePods(podList.Items) + gotNames := util.NewStringSet() + for _, pod := range got { + gotNames.Insert(pod.Name) + } + if expectedNames.Difference(gotNames).Len() != 0 || gotNames.Difference(expectedNames).Len() != 0 { + t.Errorf("expected %v, got %v", expectedNames.List(), gotNames.List()) + } +} + func TestSortingActivePods(t *testing.T) { numPods := 5 podList := newPodList(numPods)