diff --git a/plugin/pkg/admission/namespace/lifecycle/admission_test.go b/plugin/pkg/admission/namespace/lifecycle/admission_test.go index f714c54732f..dec42f15297 100644 --- a/plugin/pkg/admission/namespace/lifecycle/admission_test.go +++ b/plugin/pkg/admission/namespace/lifecycle/admission_test.go @@ -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