// The intent is to ensure the replication controller manager has observed and reported status of // the replication controller at least once since the manager restarted, so that we can determine // that it had the opportunity to create/delete pods, if it were going to do so. Scaling the RC // to the same size achieves this, because the scale operation advances the RC's sequence number // and awaits it to be observed and reported back in the RC's status. ScaleRC(framework.Client, ns, rcName, numPods, true) // Only check the keys, the pods can be different if the kubelet updated it. // TODO: Can it really? existingKeys := sets.NewString() newKeys := sets.NewString() for _, k := range existingPods.ListKeys() { existingKeys.Insert(k) } for _, k := range newPods.ListKeys() { newKeys.Insert(k) } if len(newKeys.List()) != len(existingKeys.List()) || !newKeys.IsSuperset(existingKeys) { Failf("RcManager created/deleted pods after restart \n\n %+v", tracker) } }) It("Scheduler should continue assigning pods to nodes across restart", func() { restarter := NewRestartConfig( getMasterHost(), "kube-scheduler", ports.SchedulerPort, restartPollInterval, restartTimeout) // Create pods while the scheduler is down and make sure the scheduler picks them up by // scaling the rc to the same size.