|
|
@@ -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()
|
|
|
+}
|