diff --git a/transport/internet/domainsocket/listener_test.go b/transport/internet/domainsocket/listener_test.go index f8c193e0b..5846cb97c 100644 --- a/transport/internet/domainsocket/listener_test.go +++ b/transport/internet/domainsocket/listener_test.go @@ -92,3 +92,41 @@ func TestListenA(t *testing.T) { fin() listener.Down() } + +func TestListenDial(t *testing.T) { + listener, err := domainsocket.ListenDS(context.Background(), "\x00/tmp/ts") + asrt := assert.With(t) + asrt(err, assert.IsNil) + asrt(listener, assert.IsNotNil) + errolu := listener.LowerUP() + asrt(errolu, assert.IsNil) + ctx, fin := context.WithCancel(context.Background()) + chi := make(chan net.Conn, 2) + go func() { + for { + select { + case conn := <-chi: + test := make([]byte, 256) + nc, errc := conn.Read(test) + asrt(errc, assert.IsNil) + conn.Write(test[:nc]) + time.Sleep(time.Second) + conn.Close() + case <-ctx.Done(): + return + } + } + }() + listener.UP(chi, false) + con, erro := domainsocket.DialDS(context.Background(), "\x00/tmp/ts") + asrt(erro, assert.IsNil) + b := []byte("ABC") + c := []byte("XXX") + _, erron := con.Write(b) + asrt(erron, assert.IsNil) + con.Read(c) + con.Close() + asrt(b[0]-c[0] == 0, assert.IsTrue) + fin() + listener.Down() +}