MCPcopy
hub / github.com/grpc/grpc-go / TestWriteHeaderConnectionError

Method TestWriteHeaderConnectionError

internal/transport/transport_test.go:2436–2498  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2434}
2435
2436func (s) TestWriteHeaderConnectionError(t *testing.T) {
2437 server, client, cancel := setUp(t, 0, notifyCall)
2438 defer cancel()
2439 defer server.stop()
2440
2441 waitWhileTrue(t, func() (bool, error) {
2442 server.mu.Lock()
2443 defer server.mu.Unlock()
2444
2445 if len(server.conns) == 0 {
2446 return true, fmt.Errorf("timed-out while waiting for connection to be created on the server")
2447 }
2448 return false, nil
2449 })
2450
2451 server.mu.Lock()
2452
2453 if len(server.conns) != 1 {
2454 t.Fatalf("Server has %d connections from the client, want 1", len(server.conns))
2455 }
2456
2457 // Get the server transport for the connection to the client.
2458 var serverTransport *http2Server
2459 for k := range server.conns {
2460 serverTransport = k.(*http2Server)
2461 }
2462 notifyChan := make(chan struct{})
2463 server.h.notify = notifyChan
2464 server.mu.Unlock()
2465
2466 ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
2467 defer cancel()
2468 cstream, err := client.NewStream(ctx, &CallHdr{}, nil)
2469 if err != nil {
2470 t.Fatalf("Client failed to create first stream. Err: %v", err)
2471 }
2472
2473 <-notifyChan // Wait for server stream to be established.
2474 var sstream *ServerStream
2475 // Access stream on the server.
2476 serverTransport.mu.Lock()
2477 for _, v := range serverTransport.activeStreams {
2478 if v.id == cstream.id {
2479 sstream = v
2480 }
2481 }
2482 serverTransport.mu.Unlock()
2483 if sstream == nil {
2484 t.Fatalf("Didn't find stream corresponding to client cstream.id: %v on the server", cstream.id)
2485 }
2486
2487 client.Close(fmt.Errorf("closed manually by test"))
2488
2489 // Wait for server transport to be closed.
2490 <-serverTransport.done
2491
2492 // Write header on a closed server transport.
2493 err = sstream.SendHeader(metadata.MD{})

Callers

nothing calls this directly

Calls 12

SendHeaderMethod · 0.95
ConvertFunction · 0.92
setUpFunction · 0.85
waitWhileTrueFunction · 0.85
CodeMethod · 0.80
stopMethod · 0.65
ErrorfMethod · 0.65
FatalfMethod · 0.65
NewStreamMethod · 0.65
CloseMethod · 0.65
LockMethod · 0.45
UnlockMethod · 0.45

Tested by

no test coverage detected