| // benchmarkTCP sets up nConns TCP connections and measures throughput. |
| func benchmarkTCP(b *testing.B, nConns int) { |
| rchan := make(chan net.Conn, nConns) |
| wchan := make(chan net.Conn, nConns) |
| ln, err := net.Listen("tcp", "127.0.0.1:0") |
| b.Fatalf("net.Listen failed: %v", err) |
| // One goroutine to dial nConns connections. |
| for i := 0; i < nConns; i++ { |
| conn, err := net.Dial("tcp", ln.Addr().String()) |
| b.Fatalf("net.Dial(%q, %q) failed: %v", "tcp", ln.Addr(), err) |
| // One goroutine to accept nConns connections. |
| for i := 0; i < nConns; i++ { |
| b.Fatalf("Accept failed: %v", err) |
| var readers []io.ReadCloser |
| var writers []io.WriteCloser |
| readers = append(readers, r) |
| writers = append(writers, w) |
| (&throughputTester{b: b, readers: readers, writers: writers}).Run() |