net: add helpers for server testing

Also moves a few server test helpers into mockserver_test.go.

Change-Id: I5a95c9bc6f0c4683751bcca77e26a8586a377466
Reviewed-on: https://go-review.googlesource.com/9106
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/src/net/tcp_test.go b/src/net/tcp_test.go
index 9b2c8b3..cb58ab5 100644
--- a/src/net/tcp_test.go
+++ b/src/net/tcp_test.go
@@ -398,8 +398,7 @@
 			{"tcp6", "[ip6-localhost%" + ifi.Name + "]:0", true},
 		}...)
 	}
-	handler := func(ls *localServer, ln Listener) { transponder(t, ln) }
-	for _, tt := range tests {
+	for i, tt := range tests {
 		ln, err := Listen(tt.net, tt.addr)
 		if err != nil {
 			// It might return "LookupHost returned no
@@ -412,6 +411,8 @@
 			t.Fatal(err)
 		}
 		defer ls.teardown()
+		ch := make(chan error, 1)
+		handler := func(ls *localServer, ln Listener) { transponder(ln, ch) }
 		if err := ls.buildup(handler); err != nil {
 			t.Fatal(err)
 		}
@@ -438,6 +439,10 @@
 		if _, err := c.Read(b); err != nil {
 			t.Fatalf("Conn.Read failed: %v", err)
 		}
+
+		for err := range ch {
+			t.Errorf("#%d: %v", i, err)
+		}
 	}
 }