mirror of
https://github.com/golang/go
synced 2024-11-20 07:24:40 -07:00
netchan: export before import when testing.
Fixes some race conditions. R=r CC=golang-dev https://golang.org/cl/2456041
This commit is contained in:
parent
8a1b2e59ef
commit
d465ea5724
@ -29,9 +29,10 @@ func exportSend(exp *Exporter, n int, t *testing.T) {
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
func exportReceive(exp *Exporter, t *testing.T) {
|
func exportReceive(exp *Exporter, t *testing.T, expDone chan bool) {
|
||||||
ch := make(chan int)
|
ch := make(chan int)
|
||||||
err := exp.Export("exportedRecv", ch, Recv)
|
err := exp.Export("exportedRecv", ch, Recv)
|
||||||
|
expDone <- true
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("exportReceive:", err)
|
t.Fatal("exportReceive:", err)
|
||||||
}
|
}
|
||||||
@ -108,8 +109,15 @@ func TestExportReceiveImportSend(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("new importer:", err)
|
t.Fatal("new importer:", err)
|
||||||
}
|
}
|
||||||
|
expDone := make(chan bool)
|
||||||
|
done := make(chan bool)
|
||||||
|
go func() {
|
||||||
|
exportReceive(exp, t, expDone)
|
||||||
|
done <- true
|
||||||
|
}()
|
||||||
|
<-expDone
|
||||||
importSend(imp, count, t)
|
importSend(imp, count, t)
|
||||||
exportReceive(exp, t)
|
<-done
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestClosingExportSendImportReceive(t *testing.T) {
|
func TestClosingExportSendImportReceive(t *testing.T) {
|
||||||
@ -134,8 +142,15 @@ func TestClosingImportSendExportReceive(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("new importer:", err)
|
t.Fatal("new importer:", err)
|
||||||
}
|
}
|
||||||
|
expDone := make(chan bool)
|
||||||
|
done := make(chan bool)
|
||||||
|
go func() {
|
||||||
|
exportReceive(exp, t, expDone)
|
||||||
|
done <- true
|
||||||
|
}()
|
||||||
|
<-expDone
|
||||||
importSend(imp, closeCount, t)
|
importSend(imp, closeCount, t)
|
||||||
exportReceive(exp, t)
|
<-done
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestErrorForIllegalChannel(t *testing.T) {
|
func TestErrorForIllegalChannel(t *testing.T) {
|
||||||
@ -188,7 +203,11 @@ func TestExportDrain(t *testing.T) {
|
|||||||
t.Fatal("new importer:", err)
|
t.Fatal("new importer:", err)
|
||||||
}
|
}
|
||||||
done := make(chan bool)
|
done := make(chan bool)
|
||||||
go exportSend(exp, closeCount, t)
|
go func() {
|
||||||
|
exportSend(exp, closeCount, t)
|
||||||
|
done <- true
|
||||||
|
}()
|
||||||
|
<-done
|
||||||
go importReceive(imp, t, done)
|
go importReceive(imp, t, done)
|
||||||
exp.Drain(0)
|
exp.Drain(0)
|
||||||
<-done
|
<-done
|
||||||
@ -205,8 +224,8 @@ func TestExportSync(t *testing.T) {
|
|||||||
t.Fatal("new importer:", err)
|
t.Fatal("new importer:", err)
|
||||||
}
|
}
|
||||||
done := make(chan bool)
|
done := make(chan bool)
|
||||||
go importReceive(imp, t, done)
|
|
||||||
exportSend(exp, closeCount, t)
|
exportSend(exp, closeCount, t)
|
||||||
|
go importReceive(imp, t, done)
|
||||||
exp.Sync(0)
|
exp.Sync(0)
|
||||||
<-done
|
<-done
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user