Fix pod filtering in replication controller

pull/6/head
Yu-Ju Hong 2015-04-22 16:06:18 -07:00
parent 8b04e7f737
commit 10ecbb8aab
2 changed files with 23 additions and 4 deletions

View File

@ -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

View File

@ -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)