Commit 4e406a23 authored by Dave Cheney's avatar Dave Cheney Committed by Robert Griesemer

go/token: add test for concurrent use of FileSet.Pos

Update #4354.

Add a test to expose the race in the FileSet position cache.

R=dvyukov, gri
CC=fullung, golang-dev
https://golang.org/cl/6940078
parent 4ea8538c
......@@ -6,6 +6,8 @@ package token
import (
"fmt"
"math/rand"
"sync"
"testing"
)
......@@ -179,3 +181,26 @@ func TestFiles(t *testing.T) {
}
}
}
// issue 4345. Test concurrent use of FileSet.Pos does not trigger a
// race in the FileSet position cache.
func TestFileSetRace(t *testing.T) {
fset := NewFileSet()
for i := 0; i < 100; i++ {
fset.AddFile(fmt.Sprintf("file-%d", i), fset.Base(), 1031)
}
max := int32(fset.Base())
var stop sync.WaitGroup
r := rand.New(rand.NewSource(7))
for i := 0; i < 2; i++ {
r := rand.New(rand.NewSource(r.Int63()))
stop.Add(1)
go func() {
for i := 0; i < 1000; i++ {
fset.Position(Pos(r.Int31n(max)))
}
stop.Done()
}()
}
stop.Wait()
}
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