Simplify how dialing and listening works

Also add support for bare TCP
This commit is contained in:
2025-10-20 16:44:07 -04:00
parent da01a0d119
commit 09b2259a8c
3 changed files with 61 additions and 43 deletions

View File

@@ -1,11 +1,11 @@
package hopp
import "io"
import "net"
import "bytes"
import "errors"
import "slices"
import "testing"
import "context"
// some of these tests spawn goroutines that can signal a failure.
// abide by the documentation for testing.T (https://pkg.go.dev/testing#T):
@@ -230,34 +230,31 @@ func clientServerEnvironment(test *testing.T, clientFunc func(conn Conn), server
addr := "localhost:7959"
// server
listener, err := net.Listen(network, addr)
if err != nil { test.Fatal(err) }
listener, err := Listen(network, addr, nil)
test.Cleanup(func() { listener.Close() })
go func() {
test.Log("SERVER listening")
conn, err := listener.Accept()
if err != nil { test.Error("SERVER", err); return }
defer conn.Close()
test.Cleanup(func() { conn.Close() })
a := AdaptA(conn, ServerSide)
test.Cleanup(func() { a.Close() })
serverFunc(a)
serverFunc(conn)
test.Log("SERVER closing")
}()
// client
test.Log("CLIENT dialing")
conn, err := net.Dial(network, addr)
conn, err := Dial(context.Background(), network, addr, nil)
if err != nil { test.Fatal("CLIENT", err) }
test.Cleanup(func() { conn.Close() })
test.Log("CLIENT dialed")
a := AdaptA(conn, ClientSide)
test.Cleanup(func() { a.Close() })
clientFunc(a)
clientFunc(conn)
test.Log("CLIENT waiting for connection close...")
trans, err := a.AcceptTrans()
trans, err := conn.AcceptTrans()
if !errors.Is(err, io.EOF) {
test.Error("CLIENT wrong error:", err)
test.Fatal("CLIENT trans:", trans)