Browse Source

refactor TestListenerConnectDeadlines to avoid data races (#3201)

Fixes #3179
pull/3218/head
Anton Kaliaev 5 years ago
committed by GitHub
parent
commit
8d2dd7e554
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 24 deletions
  1. +17
    -24
      privval/socket_test.go

+ 17
- 24
privval/socket_test.go View File

@ -98,36 +98,29 @@ func TestListenerAcceptDeadlines(t *testing.T) {
func TestListenerConnectDeadlines(t *testing.T) {
for _, tc := range listenerTestCases(t, time.Second, time.Millisecond) {
readyc := make(chan struct{})
donec := make(chan struct{})
go func(ln net.Listener) {
defer close(donec)
c, err := ln.Accept()
go func(dialer Dialer) {
_, err := dialer()
if err != nil {
t.Fatal(err)
panic(err)
}
<-readyc
}(tc.dialer)
time.Sleep(2 * time.Millisecond)
c, err := tc.listener.Accept()
if err != nil {
t.Fatal(err)
}
msg := make([]byte, 200)
_, err = c.Read(msg)
opErr, ok := err.(*net.OpError)
if !ok {
t.Fatalf("for %s listener, have %v, want *net.OpError", tc.description, err)
}
time.Sleep(2 * time.Millisecond)
if have, want := opErr.Op, "read"; have != want {
t.Errorf("for %s listener, have %v, want %v", tc.description, have, want)
}
}(tc.listener)
msg := make([]byte, 200)
_, err = c.Read(msg)
opErr, ok := err.(*net.OpError)
if !ok {
t.Fatalf("for %s listener, have %v, want *net.OpError", tc.description, err)
}
_, err := tc.dialer()
if err != nil {
t.Fatal(err)
if have, want := opErr.Op, "read"; have != want {
t.Errorf("for %s listener, have %v, want %v", tc.description, have, want)
}
close(readyc)
<-donec
}
}

Loading…
Cancel
Save