mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-18 16:21:13 +00:00
fixes data races
This commit is contained in:
parent
4c13f5fdf5
commit
a221218681
@ -131,6 +131,7 @@ func TestWatchFileChanged(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type testCase struct {
|
type testCase struct {
|
||||||
|
lock *sync.Mutex
|
||||||
desc string
|
desc string
|
||||||
linkedFile string
|
linkedFile string
|
||||||
pod runtime.Object
|
pod runtime.Object
|
||||||
@ -141,6 +142,7 @@ func getTestCases(hostname types.NodeName) []*testCase {
|
|||||||
grace := int64(30)
|
grace := int64(30)
|
||||||
return []*testCase{
|
return []*testCase{
|
||||||
{
|
{
|
||||||
|
lock: &sync.Mutex{},
|
||||||
desc: "Simple pod",
|
desc: "Simple pod",
|
||||||
pod: &v1.Pod{
|
pod: &v1.Pod{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
@ -304,11 +306,10 @@ func watchFileChanged(watchDir bool, symlink bool, t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var file string
|
var file string
|
||||||
lock := &sync.Mutex{}
|
|
||||||
ch := make(chan interface{})
|
ch := make(chan interface{})
|
||||||
func() {
|
func() {
|
||||||
lock.Lock()
|
testCase.lock.Lock()
|
||||||
defer lock.Unlock()
|
defer testCase.lock.Unlock()
|
||||||
|
|
||||||
if symlink {
|
if symlink {
|
||||||
file = testCase.writeToFile(linkedDirName, fileName, t)
|
file = testCase.writeToFile(linkedDirName, fileName, t)
|
||||||
@ -332,8 +333,8 @@ func watchFileChanged(watchDir bool, symlink bool, t *testing.T) {
|
|||||||
|
|
||||||
changeFile := func() {
|
changeFile := func() {
|
||||||
// Edit the file content
|
// Edit the file content
|
||||||
lock.Lock()
|
testCase.lock.Lock()
|
||||||
defer lock.Unlock()
|
defer testCase.lock.Unlock()
|
||||||
|
|
||||||
pod := testCase.pod.(*v1.Pod)
|
pod := testCase.pod.(*v1.Pod)
|
||||||
pod.Spec.Containers[0].Name = "image2"
|
pod.Spec.Containers[0].Name = "image2"
|
||||||
@ -352,9 +353,7 @@ func watchFileChanged(watchDir bool, symlink bool, t *testing.T) {
|
|||||||
expectUpdate(t, ch, testCase)
|
expectUpdate(t, ch, testCase)
|
||||||
|
|
||||||
if watchDir {
|
if watchDir {
|
||||||
from := fileName
|
go changeFileName(dirName, fileName, fileName+"_ch", t)
|
||||||
fileName = fileName + "_ch"
|
|
||||||
go changeFileName(dirName, from, fileName, t)
|
|
||||||
// expect an update by MOVED_FROM inotify event cause changing file name
|
// expect an update by MOVED_FROM inotify event cause changing file name
|
||||||
expectEmptyUpdate(t, ch)
|
expectEmptyUpdate(t, ch)
|
||||||
// expect an update by MOVED_TO inotify event cause changing file name
|
// expect an update by MOVED_TO inotify event cause changing file name
|
||||||
@ -365,8 +364,12 @@ func watchFileChanged(watchDir bool, symlink bool, t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deleteFile(dir, file string, ch chan interface{}, t *testing.T) {
|
func deleteFile(dir, file string, ch chan interface{}, t *testing.T) {
|
||||||
|
path := filepath.Join(dir, file)
|
||||||
|
if _, err := os.Stat(path); err != nil {
|
||||||
|
// The file might absent if it's renamed, deleted..
|
||||||
|
return
|
||||||
|
}
|
||||||
go func() {
|
go func() {
|
||||||
path := filepath.Join(dir, file)
|
|
||||||
err := os.Remove(path)
|
err := os.Remove(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unable to remove test file %s: %s", path, err)
|
t.Errorf("unable to remove test file %s: %s", path, err)
|
||||||
@ -397,6 +400,8 @@ func expectUpdate(t *testing.T, ch chan interface{}, testCase *testCase) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testCase.lock.Lock()
|
||||||
|
defer testCase.lock.Unlock()
|
||||||
if !apiequality.Semantic.DeepEqual(testCase.expected, update) {
|
if !apiequality.Semantic.DeepEqual(testCase.expected, update) {
|
||||||
t.Fatalf("%s: Expected: %#v, Got: %#v", testCase.desc, testCase.expected, update)
|
t.Fatalf("%s: Expected: %#v, Got: %#v", testCase.desc, testCase.expected, update)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user