Merge pull request #61962 from liggitt/flag-race
Automatic merge from submit-queue (batch tested with PRs 61962, 58972, 62509, 62606). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Avoid data races in unit tests Setting global flags in unit tests leads to data races like this: ``` ================== WARNING: DATA RACE Write at 0x0000028f5241 by goroutine 47: flag.(*boolValue).Set() /home/jliggitt/.gvm/gos/go1.9.5/src/flag/flag.go:91 +0x7b flag.(*FlagSet).Set() /home/jliggitt/.gvm/gos/go1.9.5/src/flag/flag.go:366 +0x10c flag.Set() /home/jliggitt/.gvm/gos/go1.9.5/src/flag/flag.go:379 +0x76 k8s.io/kubernetes/pkg/kubelet/cm/devicemanager.TestPodContainerDeviceAllocation() /home/jliggitt/go/src/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/manager_test.go:549 +0x126 testing.tRunner() /home/jliggitt/.gvm/gos/go1.9.5/src/testing/testing.go:746 +0x16c Previous read at 0x0000028f5241 by goroutine 34: k8s.io/kubernetes/vendor/github.com/golang/glog.(*loggingT).output() /home/jliggitt/go/src/k8s.io/kubernetes/vendor/github.com/golang/glog/glog.go:682 +0x730 k8s.io/kubernetes/vendor/github.com/golang/glog.(*loggingT).printf() /home/jliggitt/go/src/k8s.io/kubernetes/vendor/github.com/golang/glog/glog.go:655 +0x259 k8s.io/kubernetes/vendor/github.com/golang/glog.Errorf() /home/jliggitt/go/src/k8s.io/kubernetes/vendor/github.com/golang/glog/glog.go:1118 +0x74 k8s.io/kubernetes/pkg/kubelet/cm/devicemanager.(*endpointImpl).run() /home/jliggitt/go/src/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/endpoint.go:132 +0x1c7e k8s.io/kubernetes/pkg/kubelet/cm/devicemanager.(*ManagerImpl).addEndpoint.func1() /home/jliggitt/go/src/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/manager.go:378 +0x3f Goroutine 47 (running) created at: testing.(*T).Run() /home/jliggitt/.gvm/gos/go1.9.5/src/testing/testing.go:789 +0x568 testing.runTests.func1() /home/jliggitt/.gvm/gos/go1.9.5/src/testing/testing.go:1004 +0xa7 testing.tRunner() /home/jliggitt/.gvm/gos/go1.9.5/src/testing/testing.go:746 +0x16c testing.runTests() /home/jliggitt/.gvm/gos/go1.9.5/src/testing/testing.go:1002 +0x521 testing.(*M).Run() /home/jliggitt/.gvm/gos/go1.9.5/src/testing/testing.go:921 +0x206 main.main() k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/_test/_testmain.go:68 +0x1d3 Goroutine 34 (finished) created at: k8s.io/kubernetes/pkg/kubelet/cm/devicemanager.(*ManagerImpl).addEndpoint() /home/jliggitt/go/src/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/manager.go:377 +0x9d6 ================== --- FAIL: TestPodContainerDeviceAllocation (0.00s) testing.go:699: race detected during execution of test FAIL FAIL k8s.io/kubernetes/pkg/kubelet/cm/devicemanager 0.124s ```
This commit is contained in:
		| @@ -18,7 +18,6 @@ package state | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"flag" |  | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| @@ -69,9 +68,6 @@ func stderrCapture(t *testing.T, f func() State) (bytes.Buffer, State) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func TestFileStateTryRestore(t *testing.T) { | func TestFileStateTryRestore(t *testing.T) { | ||||||
| 	flag.Set("alsologtostderr", "true") |  | ||||||
| 	flag.Parse() |  | ||||||
|  |  | ||||||
| 	testCases := []struct { | 	testCases := []struct { | ||||||
| 		description      string | 		description      string | ||||||
| 		stateFileContent string | 		stateFileContent string | ||||||
| @@ -292,9 +288,6 @@ func TestFileStateTryRestorePanic(t *testing.T) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func TestUpdateStateFile(t *testing.T) { | func TestUpdateStateFile(t *testing.T) { | ||||||
| 	flag.Set("alsologtostderr", "true") |  | ||||||
| 	flag.Parse() |  | ||||||
|  |  | ||||||
| 	testCases := []struct { | 	testCases := []struct { | ||||||
| 		description   string | 		description   string | ||||||
| 		expErr        string | 		expErr        string | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Submit Queue
					Kubernetes Submit Queue