Fix crashes in schedulercache

This commit is contained in:
Wojciech Tyczynski 2016-07-18 10:04:36 +02:00
parent 1e1d4b023a
commit 78101ac55e
2 changed files with 31 additions and 0 deletions

View File

@ -149,6 +149,7 @@ func (cache *schedulerCache) ForgetPod(pod *api.Pod) error {
if err != nil {
return err
}
delete(cache.assumedPods, key)
delete(cache.podStates, key)
default:
return fmt.Errorf("pod state wasn't assumed but get forgotten. Pod key: %v", key)

View File

@ -457,6 +457,36 @@ func TestRemovePod(t *testing.T) {
}
}
func TestForgetPod(t *testing.T) {
nodeName := "node"
basePod := makeBasePod(nodeName, "test", "100m", "500", []api.ContainerPort{{HostPort: 80}})
tests := []struct {
pods []*api.Pod
}{{
pods: []*api.Pod{basePod},
}}
now := time.Now()
ttl := 10 * time.Second
for i, tt := range tests {
cache := newSchedulerCache(ttl, time.Second, nil)
for _, pod := range tt.pods {
if err := cache.assumePod(pod, now); err != nil {
t.Fatalf("assumePod failed: %v", err)
}
}
for _, pod := range tt.pods {
if err := cache.ForgetPod(pod); err != nil {
t.Fatalf("ForgetPod failed: %v", err)
}
}
cache.cleanupAssumedPods(now.Add(2 * ttl))
if n := cache.nodes[nodeName]; n != nil {
t.Errorf("#%d: expecting pod deleted and nil node info, get=%s", i, n)
}
}
}
func BenchmarkList1kNodes30kPods(b *testing.B) {
cache := setupCacheOf1kNodes30kPods(b)
b.ResetTimer()