mirror of
https://github.com/yggdrasil-network/water.git
synced 2025-05-19 16:35:10 +03:00
use blocking mode pre-go1.11
This commit is contained in:
parent
240a3d7b51
commit
3fe638a7bf
13 changed files with 132 additions and 95 deletions
29
ipv4_test.go
29
ipv4_test.go
|
@ -1,9 +1,7 @@
|
|||
package water
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
const BUFFERSIZE = 1522
|
||||
|
@ -22,30 +20,3 @@ func startRead(t *testing.T, ifce *Interface, dataCh chan<- []byte, errCh chan<-
|
|||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func TestCloseUnblockPendingRead(t *testing.T) {
|
||||
ifce, err := New(Config{DeviceType: TUN})
|
||||
if err != nil {
|
||||
t.Fatalf("creating TUN error: %v\n", err)
|
||||
}
|
||||
|
||||
c := make(chan struct{})
|
||||
go func() {
|
||||
ifce.Read(make([]byte, 1<<16))
|
||||
close(c)
|
||||
}()
|
||||
|
||||
// make sure ifce.Close() happens after ifce.Read() blocks
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
ifce.Close()
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
||||
defer cancel()
|
||||
|
||||
select {
|
||||
case <-c:
|
||||
t.Log("Pending Read unblocked")
|
||||
case <-ctx.Done():
|
||||
t.Fatal("Timeouted, pending read blocked")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue