@@ -53,7 +53,6 @@ import (
5353 "google.golang.org/grpc/peer"
5454 "google.golang.org/grpc/status"
5555 "google.golang.org/grpc/tap"
56- "google.golang.org/grpc/test/bufconn"
5756 testpb "google.golang.org/grpc/test/grpc_testing"
5857)
5958
@@ -355,7 +354,7 @@ const tlsDir = "testdata/"
355354
356355type env struct {
357356 name string
358- network string // The type of network such as tcp, unix, bufconn, etc.
357+ network string // The type of network such as tcp, unix, etc.
359358 security string // The security protocol such as TLS, SSH, etc.
360359 httpHandler bool // whether to use the http.Handler ServerTransport; requires TLS
361360 balancer bool // whether to use balancer
@@ -368,19 +367,21 @@ func (e env) runnable() bool {
368367 return true
369368}
370369
371- const bufconnNetwork = "bufconn"
370+ func (e env ) dialer (addr string , timeout time.Duration ) (net.Conn , error ) {
371+ return net .DialTimeout (e .network , addr , timeout )
372+ }
372373
373374var (
374375 tcpClearEnv = env {name : "tcp-clear" , network : "tcp" , balancer : true }
375376 tcpTLSEnv = env {name : "tcp-tls" , network : "tcp" , security : "tls" , balancer : true }
376377 unixClearEnv = env {name : "unix-clear" , network : "unix" , balancer : true }
377378 unixTLSEnv = env {name : "unix-tls" , network : "unix" , security : "tls" , balancer : true }
378- handlerEnv = env {name : "handler-tls" , network : bufconnNetwork , security : "tls" , httpHandler : true , balancer : true }
379- noBalancerEnv = env {name : "no-balancer" , network : bufconnNetwork , security : "tls" , balancer : false }
379+ handlerEnv = env {name : "handler-tls" , network : "tcp" , security : "tls" , httpHandler : true , balancer : true }
380+ noBalancerEnv = env {name : "no-balancer" , network : "tcp" , security : "tls" , balancer : false }
380381 allEnv = []env {tcpClearEnv , tcpTLSEnv , unixClearEnv , unixTLSEnv , handlerEnv , noBalancerEnv }
381382)
382383
383- var onlyEnv = flag .String ("only_env" , "" , "Restrict tests to the named environment. Empty means all." )
384+ var onlyEnv = flag .String ("only_env" , "" , "If non-empty, one of 'tcp-clear', 'tcp-tls', 'unix-clear', 'unix-tls', or 'handler-tls' to only run the tests for that environment. Empty means all." )
384385
385386func listTestEnv () (envs []env ) {
386387 if * onlyEnv != "" {
@@ -441,7 +442,6 @@ type test struct {
441442 // srv and srvAddr are set once startServer is called.
442443 srv * grpc.Server
443444 srvAddr string
444- lis net.Listener
445445
446446 cc * grpc.ClientConn // nil until requested via clientConn
447447 restoreLogs func () // nil unless declareLogNoise is used
@@ -523,12 +523,7 @@ func (te *test) startServer(ts testpb.TestServiceServer) {
523523 la = "/tmp/testsock" + fmt .Sprintf ("%d" , time .Now ().UnixNano ())
524524 syscall .Unlink (la )
525525 }
526- var err error
527- if te .e .network == bufconnNetwork {
528- te .lis = bufconn .Listen (1024 * 1024 )
529- } else {
530- te .lis , err = net .Listen (te .e .network , la )
531- }
526+ lis , err := net .Listen (te .e .network , la )
532527 if err != nil {
533528 te .t .Fatalf ("Failed to listen: %v" , err )
534529 }
@@ -561,36 +556,24 @@ func (te *test) startServer(ts testpb.TestServiceServer) {
561556 addr := la
562557 switch te .e .network {
563558 case "unix" :
564- case "bufconn" :
565- addr = te .lis .Addr ().String ()
566559 default :
567- _ , port , err := net .SplitHostPort (te . lis .Addr ().String ())
560+ _ , port , err := net .SplitHostPort (lis .Addr ().String ())
568561 if err != nil {
569562 te .t .Fatalf ("Failed to parse listener address: %v" , err )
570563 }
571564 addr = "localhost:" + port
572565 }
573566
574- go s .Serve (te . lis )
567+ go s .Serve (lis )
575568 te .srvAddr = addr
576569}
577570
578- func (te * test ) dialer (addr string , timeout time.Duration ) (net.Conn , error ) {
579- if te .lis == nil {
580- return nil , fmt .Errorf ("no listener" )
581- }
582- if te .e .network == bufconnNetwork {
583- return te .lis .(* bufconn.Listener ).Dial ()
584- }
585- return net .DialTimeout (te .e .network , addr , timeout )
586- }
587-
588571func (te * test ) clientConn () * grpc.ClientConn {
589572 if te .cc != nil {
590573 return te .cc
591574 }
592575 opts := []grpc.DialOption {
593- grpc .WithDialer (te .dialer ),
576+ grpc .WithDialer (te .e . dialer ),
594577 grpc .WithUserAgent (te .userAgent ),
595578 }
596579
@@ -661,7 +644,7 @@ func (te *test) declareLogNoise(phrases ...string) {
661644}
662645
663646func (te * test ) withServerTester (fn func (st * serverTester )) {
664- c , err := te .dialer (te .srvAddr , 10 * time .Second )
647+ c , err := te .e . dialer (te .srvAddr , 10 * time .Second )
665648 if err != nil {
666649 te .t .Fatal (err )
667650 }
@@ -1106,7 +1089,7 @@ func testFailFast(t *testing.T, e env) {
11061089 if grpc .Code (err ) == codes .Unavailable {
11071090 break
11081091 }
1109- t . Logf ("%v.EmptyCall(_, _) = _, %v" , tc , err )
1092+ fmt . Printf ("%v.EmptyCall(_, _) = _, %v" , tc , err )
11101093 time .Sleep (10 * time .Millisecond )
11111094 }
11121095 // The client keeps reconnecting and ongoing fail-fast RPCs should fail with code.Unavailable.
@@ -2239,8 +2222,7 @@ func testPeerClientSide(t *testing.T, e env) {
22392222 t .Fatalf ("TestService/EmptyCall(_, _) = _, %v, want _, <nil>" , err )
22402223 }
22412224 pa := peer .Addr .String ()
2242- switch e .network {
2243- case "unix" , "bufconn" :
2225+ if e .network == "unix" {
22442226 if pa != te .srvAddr {
22452227 t .Fatalf ("peer.Addr = %v, want %v" , pa , te .srvAddr )
22462228 }
@@ -3986,8 +3968,12 @@ func TestDialWithBlockErrorOnBadCertificates(t *testing.T) {
39863968 te .startServer (& testServer {security : te .e .security })
39873969 defer te .tearDown ()
39883970
3989- var err error
3990- te .cc , err = grpc .Dial (te .srvAddr , grpc .WithTransportCredentials (clientAlwaysFailCred {}), grpc .WithBlock (), grpc .WithDialer (te .dialer ))
3971+ var (
3972+ err error
3973+ opts []grpc.DialOption
3974+ )
3975+ opts = append (opts , grpc .WithTransportCredentials (clientAlwaysFailCred {}), grpc .WithBlock ())
3976+ te .cc , err = grpc .Dial (te .srvAddr , opts ... )
39913977 if err != errClientAlwaysFailCred {
39923978 te .t .Fatalf ("Dial(%q) = %v, want %v" , te .srvAddr , err , errClientAlwaysFailCred )
39933979 }
@@ -4449,16 +4435,18 @@ func (ss *stubServer) FullDuplexCall(stream testpb.TestService_FullDuplexCallSer
44494435
44504436// Start starts the server and creates a client connected to it.
44514437func (ss * stubServer ) Start () error {
4452- lis := bufconn .Listen (1024 * 1024 )
4453- dialer := func (string , time.Duration ) (net.Conn , error ) { return lis .Dial () }
4438+ lis , err := net .Listen ("tcp" , "localhost:0" )
4439+ if err != nil {
4440+ return fmt .Errorf (`net.Listen("tcp", "localhost:0") = %v` , err )
4441+ }
44544442 ss .cleanups = append (ss .cleanups , func () { lis .Close () })
44554443
44564444 s := grpc .NewServer ()
44574445 testpb .RegisterTestServiceServer (s , ss )
44584446 go s .Serve (lis )
44594447 ss .cleanups = append (ss .cleanups , s .Stop )
44604448
4461- cc , err := grpc .Dial (lis .Addr ().String (), grpc .WithInsecure (), grpc .WithBlock (), grpc . WithDialer ( dialer ) )
4449+ cc , err := grpc .Dial (lis .Addr ().String (), grpc .WithInsecure (), grpc .WithBlock ())
44624450 if err != nil {
44634451 return fmt .Errorf ("grpc.Dial(%q) = %v" , lis .Addr ().String (), err )
44644452 }
0 commit comments