@@ -21,23 +21,23 @@ import (
21
21
testpb "github.com/hyperledger/fabric/core/comm/testdata/grpc"
22
22
"github.com/pkg/errors"
23
23
"github.com/stretchr/testify/assert"
24
- netctx "golang.org/x/net/context"
24
+ "google.golang.org/grpc"
25
+ "google.golang.org/grpc/credentials"
25
26
)
26
27
27
- var caPEM , certPEM , keyPEM , serverKey , serverPEM []byte
28
28
var testClientCert , testServerCert tls.Certificate
29
29
var testTimeout = 1 * time .Second // conservative
30
30
31
31
type echoServer struct {}
32
32
33
- func (es * echoServer ) EchoCall (ctx netctx .Context ,
33
+ func (es * echoServer ) EchoCall (ctx context .Context ,
34
34
echo * testpb.Echo ) (* testpb.Echo , error ) {
35
35
return echo , nil
36
36
}
37
37
38
38
func TestNewGRPCClient_GoodConfig (t * testing.T ) {
39
39
t .Parallel ()
40
- loadCerts (t )
40
+ caPEM , certPEM , keyPEM , _ , _ := loadCerts (t )
41
41
42
42
config := comm.ClientConfig {}
43
43
client , err := comm .NewGRPCClient (config )
@@ -82,7 +82,7 @@ func TestNewGRPCClient_GoodConfig(t *testing.T) {
82
82
83
83
func TestNewGRPCClient_BadConfig (t * testing.T ) {
84
84
t .Parallel ()
85
- loadCerts (t )
85
+ _ , certPEM , keyPEM , _ , _ := loadCerts (t )
86
86
// bad root cert
87
87
config := comm.ClientConfig {
88
88
SecOpts : & comm.SecureOptions {
@@ -143,7 +143,7 @@ func TestNewConnection_Timeout(t *testing.T) {
143
143
144
144
func TestNewConnection (t * testing.T ) {
145
145
t .Parallel ()
146
- loadCerts (t )
146
+ caPEM , certPEM , keyPEM , _ , _ := loadCerts (t )
147
147
certPool := x509 .NewCertPool ()
148
148
ok := certPool .AppendCertsFromPEM (caPEM )
149
149
if ! ok {
@@ -269,24 +269,15 @@ func TestNewConnection(t *testing.T) {
269
269
t .Fatalf ("error creating server for test: %v" , err )
270
270
}
271
271
defer lis .Close ()
272
+ serverOpts := []grpc.ServerOption {}
272
273
if test .serverTLS != nil {
273
- t .Log ("starting server with TLS" )
274
- tlsLis := tls .NewListener (lis , test .serverTLS )
275
- defer tlsLis .Close ()
276
- go func () {
277
- rawConn , err := tlsLis .Accept ()
278
- defer rawConn .Close ()
279
- if err != nil {
280
- t .Fatalf ("error accepting TLS connection: %v" , err )
281
- }
282
- t .Logf ("server: accepted from %s" , rawConn .RemoteAddr ())
283
- sconn := tls .Server (rawConn , test .serverTLS )
284
- err = sconn .Handshake ()
285
- if err != nil {
286
- t .Logf ("tls handshake error: %v" , err )
287
- }
288
- }()
274
+ serverOpts = append (
275
+ serverOpts ,
276
+ grpc .Creds (credentials .NewTLS (test .serverTLS )))
289
277
}
278
+ srv := grpc .NewServer (serverOpts ... )
279
+ defer srv .Stop ()
280
+ go srv .Serve (lis )
290
281
client , err := comm .NewGRPCClient (test .config )
291
282
if err != nil {
292
283
t .Fatalf ("error creating client for test: %v" , err )
@@ -306,7 +297,7 @@ func TestNewConnection(t *testing.T) {
306
297
307
298
func TestSetServerRootCAs (t * testing.T ) {
308
299
t .Parallel ()
309
- loadCerts (t )
300
+ caPEM , _ , _ , _ , _ := loadCerts (t )
310
301
311
302
config := comm.ClientConfig {
312
303
SecOpts : & comm.SecureOptions {
@@ -325,26 +316,10 @@ func TestSetServerRootCAs(t *testing.T) {
325
316
t .Fatalf ("failed to create listener for test server: %v" , err )
326
317
}
327
318
defer lis .Close ()
328
- tlsConf := & tls.Config {
329
- Certificates : []tls.Certificate {testServerCert }}
330
- tlsLis := tls .NewListener (lis , tlsConf )
331
- defer tlsLis .Close ()
332
- go func () {
333
- // 3 connection tests
334
- for i := 0 ; i < 3 ; i ++ {
335
- rawConn , err := tlsLis .Accept ()
336
- defer rawConn .Close ()
337
- if err != nil {
338
- t .Fatalf ("error accepting TLS connection: %v" , err )
339
- }
340
- t .Logf ("server: accepted from %s" , rawConn .RemoteAddr ())
341
- sconn := tls .Server (rawConn , tlsConf )
342
- err = sconn .Handshake ()
343
- if err != nil {
344
- t .Logf ("tls handshake error: %v" , err )
345
- }
346
- }
347
- }()
319
+ srv := grpc .NewServer (grpc .Creds (credentials .NewTLS (
320
+ & tls.Config {Certificates : []tls.Certificate {testServerCert }})))
321
+ defer srv .Stop ()
322
+ go srv .Serve (lis )
348
323
349
324
// initial config should work
350
325
t .Log ("running initial good config" )
@@ -371,7 +346,9 @@ func TestSetServerRootCAs(t *testing.T) {
371
346
conn , err = client .NewConnection (address , "" )
372
347
assert .NoError (t , err )
373
348
assert .NotNil (t , conn )
374
- conn .Close ()
349
+ if conn != nil {
350
+ conn .Close ()
351
+ }
375
352
376
353
// bad root cert
377
354
t .Log ("running bad root cert" )
@@ -472,7 +449,13 @@ func TestSetMessageSize(t *testing.T) {
472
449
}
473
450
}
474
451
475
- func loadCerts (t * testing.T ) {
452
+ func loadCerts (t * testing.T ) (
453
+ caPEM ,
454
+ certPEM ,
455
+ keyPEM ,
456
+ serverKey ,
457
+ serverPEM []byte ) {
458
+
476
459
t .Helper ()
477
460
var err error
478
461
caPEM , err = ioutil .ReadFile (filepath .Join ("testdata" , "certs" ,
@@ -497,4 +480,6 @@ func loadCerts(t *testing.T) {
497
480
testServerCert , err = tls .LoadX509KeyPair (filepath .Join ("testdata" , "certs" ,
498
481
"Org1-server1-cert.pem" ), filepath .Join ("testdata" , "certs" ,
499
482
"Org1-server1-key.pem" ))
483
+
484
+ return caPEM , certPEM , keyPEM , serverKey , serverPEM
500
485
}
0 commit comments