Commit 9df172b0 authored by k8s-merge-robot's avatar k8s-merge-robot

Merge pull request #14246 from mvdan/fix-race-lifecycle

Auto commit by PR queue bot
parents 2e5a3cfb 80a37fbc
......@@ -18,6 +18,7 @@ package lifecycle
import (
"fmt"
"sync"
"testing"
"k8s.io/kubernetes/pkg/admission"
......@@ -39,6 +40,7 @@ func TestAdmission(t *testing.T) {
Phase: api.NamespaceActive,
},
}
var namespaceLock sync.RWMutex
store := cache.NewStore(cache.MetaNamespaceKeyFunc)
store.Add(namespaceObj)
......@@ -46,12 +48,16 @@ func TestAdmission(t *testing.T) {
mockClient := &testclient.Fake{}
mockClient.AddWatchReactor("*", testclient.DefaultWatchReactor(fakeWatch, nil))
mockClient.AddReactor("get", "namespaces", func(action testclient.Action) (bool, runtime.Object, error) {
namespaceLock.RLock()
defer namespaceLock.RUnlock()
if getAction, ok := action.(testclient.GetAction); ok && getAction.GetName() == namespaceObj.Name {
return true, namespaceObj, nil
}
return true, nil, fmt.Errorf("No result for action %v", action)
})
mockClient.AddReactor("list", "namespaces", func(action testclient.Action) (bool, runtime.Object, error) {
namespaceLock.RLock()
defer namespaceLock.RUnlock()
return true, &api.NamespaceList{Items: []api.Namespace{*namespaceObj}}, nil
})
......@@ -78,7 +84,9 @@ func TestAdmission(t *testing.T) {
}
// change namespace state to terminating
namespaceLock.Lock()
namespaceObj.Status.Phase = api.NamespaceTerminating
namespaceLock.Unlock()
store.Add(namespaceObj)
// verify create operations in the namespace cause an error
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment