rpcreplay: fix Connection to work with grpc >= v1.17

It is now required that an actual gRPC server be running for Dial to succeed.
So modify Replayer.Connection to start one.

Change-Id: Ie7c2dd38bee497e42520eced853458b19c51a670
Reviewed-on: https://code-review.googlesource.com/c/37710
Reviewed-by: Eno Compton <enocom@google.com>
diff --git a/rpcreplay/rpcreplay.go b/rpcreplay/rpcreplay.go
index dadd6a7..5151acc 100644
--- a/rpcreplay/rpcreplay.go
+++ b/rpcreplay/rpcreplay.go
@@ -378,18 +378,24 @@
 func (rep *Replayer) Connection() (*grpc.ClientConn, error) {
 	// We don't need an actual connection, not even a loopback one.
 	// But we do need something to attach gRPC interceptors to.
-	// So we start a local listener and connect to it, then close them down.
+	// So we start a local server and connect to it, then close it down.
+	srv := grpc.NewServer()
 	l, err := net.Listen("tcp", "127.0.0.1:0")
 	if err != nil {
 		return nil, err
 	}
+	go func() {
+		if err := srv.Serve(l); err != nil {
+			panic(err) // we should never get an error because we just connect and stop
+		}
+	}()
 	conn, err := grpc.Dial(l.Addr().String(),
 		append([]grpc.DialOption{grpc.WithInsecure()}, rep.DialOptions()...)...)
 	if err != nil {
 		return nil, err
 	}
 	conn.Close()
-	l.Close()
+	srv.Stop()
 	return conn, nil
 }
 
diff --git a/rpcreplay/rpcreplay_test.go b/rpcreplay/rpcreplay_test.go
index 08b343d..8e17322 100644
--- a/rpcreplay/rpcreplay_test.go
+++ b/rpcreplay/rpcreplay_test.go
@@ -243,7 +243,6 @@
 }
 
 func TestReplay(t *testing.T) {
-	t.Skip("skipping until listening on loopback doesn't timeout on Kokoro.")
 	srv := newIntStoreServer()
 	defer srv.stop()