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

Function testFlowControlAccountCheck

internal/transport/transport_test.go:1879–2010  ·  view source on GitHub ↗
(t *testing.T, msgSize int, wc windowSizeConfig)

Source from the content-addressed store, hash-verified

1877}
1878
1879func testFlowControlAccountCheck(t *testing.T, msgSize int, wc windowSizeConfig) {
1880 sc := &ServerConfig{
1881 InitialWindowSize: wc.serverStream,
1882 InitialConnWindowSize: wc.serverConn,
1883 StaticWindowSize: true,
1884 BufferPool: mem.DefaultBufferPool(),
1885 }
1886 co := ConnectOptions{
1887 InitialWindowSize: wc.clientStream,
1888 InitialConnWindowSize: wc.clientConn,
1889 StaticWindowSize: true,
1890 BufferPool: mem.DefaultBufferPool(),
1891 }
1892 server, client, cancel := setUpWithOptions(t, 0, sc, pingpong, co)
1893 defer cancel()
1894 defer server.stop()
1895 defer client.Close(fmt.Errorf("closed manually by test"))
1896 waitWhileTrue(t, func() (bool, error) {
1897 server.mu.Lock()
1898 defer server.mu.Unlock()
1899 if len(server.conns) == 0 {
1900 return true, fmt.Errorf("timed out while waiting for server transport to be created")
1901 }
1902 return false, nil
1903 })
1904 var st *http2Server
1905 server.mu.Lock()
1906 for k := range server.conns {
1907 st = k.(*http2Server)
1908 }
1909 server.mu.Unlock()
1910
1911 ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
1912 defer cancel()
1913 const numStreams = 5
1914 clientStreams := make([]*ClientStream, numStreams)
1915 for i := 0; i < numStreams; i++ {
1916 var err error
1917 clientStreams[i], err = client.NewStream(ctx, &CallHdr{}, nil)
1918 if err != nil {
1919 t.Fatalf("Failed to create stream. Err: %v", err)
1920 }
1921 }
1922 var wg sync.WaitGroup
1923 // For each stream send pingpong messages to the server.
1924 for _, stream := range clientStreams {
1925 wg.Add(1)
1926 go func(stream *ClientStream) {
1927 defer wg.Done()
1928 buf := make([]byte, msgSize+5)
1929 buf[0] = byte(0)
1930 binary.BigEndian.PutUint32(buf[1:], uint32(msgSize))
1931 opts := WriteOptions{}
1932 header := make([]byte, 5)
1933 for i := 1; i <= 5; i++ {
1934 if err := stream.Write(nil, newBufferSlice(buf), &opts); err != nil {
1935 t.Errorf("Error on client while writing message %v on stream %v: %v", i, stream.id, err)
1936 return

Calls 15

CloseMethod · 0.95
DefaultBufferPoolFunction · 0.92
setUpWithOptionsFunction · 0.85
waitWhileTrueFunction · 0.85
newBufferSliceFunction · 0.85
readToMethod · 0.80
WaitMethod · 0.80
stopMethod · 0.65
CloseMethod · 0.65
ErrorfMethod · 0.65
NewStreamMethod · 0.65
FatalfMethod · 0.65

Tested by

no test coverage detected