github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/helper/bufconndialer/bufconndialer_test.go (about) 1 package bufconndialer 2 3 import ( 4 "io" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 // TestBufConnDialer asserts that bufconndialer creates a dialer connected to a 11 // listener. 12 func TestBufConnDialer(t *testing.T) { 13 listener, dialer := New() 14 15 cleanup := make(chan struct{}) 16 go func() { 17 defer close(cleanup) 18 for { 19 conn, err := listener.Accept() 20 if err != nil { 21 // google.golang.org/grpc/test/bufconn.Listener doesn't 22 // return a net.ErrClosed so we have to compare strings 23 if err.Error() == "closed" { 24 return 25 } 26 27 t.Errorf("error accepting connection: %v", err) 28 return 29 } 30 31 n, err := conn.Write([]byte("ok")) 32 if err != nil { 33 t.Errorf("error writing to connection after %d bytes: %v", n, err) 34 return 35 } 36 if err := conn.Close(); err != nil { 37 t.Errorf("error closing connection: %v", err) 38 return 39 } 40 } 41 }() 42 43 conn, err := dialer.Dial("anything", "goes") 44 require.NoError(t, err) 45 46 buf := make([]byte, 2) 47 _, err = conn.Read(buf) 48 require.NoError(t, err) 49 require.Equal(t, "ok", string(buf)) 50 51 _, err = conn.Read(buf) 52 require.EqualError(t, err, io.EOF.Error()) 53 54 listener.Close() 55 <-cleanup 56 }