From af2921498bd3918a61a97bc273e23b57e9a482e5 Mon Sep 17 00:00:00 2001 From: Song Gao Date: Sun, 31 Mar 2019 14:57:04 -0700 Subject: [PATCH] add test that fails on go1.10.* --- ipv4_darwin_test.go | 9 ++++++--- ipv4_linux_test.go | 7 +++++-- ipv4_test.go | 8 +++++--- ipv4_windows_test.go | 5 ++++- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/ipv4_darwin_test.go b/ipv4_darwin_test.go index 0936258..74044c7 100644 --- a/ipv4_darwin_test.go +++ b/ipv4_darwin_test.go @@ -32,12 +32,13 @@ func TestP2PTUN(t *testing.T) { t.Fatalf("creating TUN error: %v\n", err) } + dataCh := make(chan []byte) + errCh := make(chan error) + startRead(t, ifce, dataCh, errCh) + setupIfce(t, self, remote, ifce.Name()) startPing(t, remote) - dataCh := make(chan []byte, 8) - startRead(dataCh, ifce) - timeout := time.NewTimer(8 * time.Second).C readFrame: @@ -58,6 +59,8 @@ readFrame: } t.Logf("received broadcast packet: %#v\n", packet) break readFrame + case err := <-errCh: + t.Fatalf("read error: %v", err) case <-timeout: t.Fatal("Waiting for broadcast packet timeout") } diff --git a/ipv4_linux_test.go b/ipv4_linux_test.go index 0d60e28..f488ffc 100644 --- a/ipv4_linux_test.go +++ b/ipv4_linux_test.go @@ -39,8 +39,9 @@ func TestBroadcastTAP(t *testing.T) { setupIfce(t, net.IPNet{IP: self, Mask: mask}, ifce.Name()) startBroadcast(t, brd) - dataCh := make(chan []byte, 8) - startRead(dataCh, ifce) + dataCh := make(chan []byte) + errCh := make(chan error) + startRead(t, ifce, dataCh, errCh) timeout := time.NewTimer(8 * time.Second).C @@ -70,6 +71,8 @@ readFrame: } t.Logf("received broadcast frame: %#v\n", buffer) break readFrame + case err := <-errCh: + t.Fatalf("read error: %v", err) case <-timeout: t.Fatal("Waiting for broadcast packet timeout") } diff --git a/ipv4_test.go b/ipv4_test.go index ea660c1..37979cb 100644 --- a/ipv4_test.go +++ b/ipv4_test.go @@ -8,14 +8,16 @@ import ( const BUFFERSIZE = 1522 -func startRead(ch chan<- []byte, ifce *Interface) { +func startRead(t *testing.T, ifce *Interface, dataCh chan<- []byte, errCh chan<- error) { go func() { for { buffer := make([]byte, BUFFERSIZE) n, err := ifce.Read(buffer) - if err == nil { + if err != nil { + errCh <- err + } else { buffer = buffer[:n:n] - ch <- buffer + dataCh <- buffer } } }() diff --git a/ipv4_windows_test.go b/ipv4_windows_test.go index eb6b4d4..c5c617a 100644 --- a/ipv4_windows_test.go +++ b/ipv4_windows_test.go @@ -45,7 +45,8 @@ func TestBroadcastTAP(t *testing.T) { startBroadcast(t, brd) dataCh := make(chan []byte, 8) - startRead(dataCh, ifce) + errCh := make(chan error) + startRead(t, ifce, dataCh, errCh) timeout := time.NewTimer(8 * time.Second).C @@ -75,6 +76,8 @@ readFrame: } t.Logf("received broadcast frame: %#v\n", buffer) break readFrame + case err := <-errCh: + t.Fatalf("read error: %v", err) case <-timeout: t.Fatal("Waiting for broadcast packet timeout") }