(t *testing.T)
| 2586 | } |
| 2587 | |
| 2588 | func (s) TestHeaderTblSize(t *testing.T) { |
| 2589 | limits := &tableSizeLimit{} |
| 2590 | updateHeaderTblSize = func(e *hpack.Encoder, v uint32) { |
| 2591 | e.SetMaxDynamicTableSizeLimit(v) |
| 2592 | limits.add(v) |
| 2593 | } |
| 2594 | defer func() { |
| 2595 | updateHeaderTblSize = func(e *hpack.Encoder, v uint32) { |
| 2596 | e.SetMaxDynamicTableSizeLimit(v) |
| 2597 | } |
| 2598 | }() |
| 2599 | |
| 2600 | server, ct, cancel := setUp(t, 0, normal) |
| 2601 | defer cancel() |
| 2602 | defer ct.Close(fmt.Errorf("closed manually by test")) |
| 2603 | defer server.stop() |
| 2604 | ctx, ctxCancel := context.WithTimeout(context.Background(), defaultTestTimeout) |
| 2605 | defer ctxCancel() |
| 2606 | _, err := ct.NewStream(ctx, &CallHdr{}, nil) |
| 2607 | if err != nil { |
| 2608 | t.Fatalf("failed to open stream: %v", err) |
| 2609 | } |
| 2610 | |
| 2611 | var svrTransport ServerTransport |
| 2612 | var i int |
| 2613 | for i = 0; i < 1000; i++ { |
| 2614 | server.mu.Lock() |
| 2615 | if len(server.conns) != 0 { |
| 2616 | server.mu.Unlock() |
| 2617 | break |
| 2618 | } |
| 2619 | server.mu.Unlock() |
| 2620 | time.Sleep(10 * time.Millisecond) |
| 2621 | continue |
| 2622 | } |
| 2623 | if i == 1000 { |
| 2624 | t.Fatalf("unable to create any server transport after 10s") |
| 2625 | } |
| 2626 | |
| 2627 | for st := range server.conns { |
| 2628 | svrTransport = st |
| 2629 | break |
| 2630 | } |
| 2631 | svrTransport.(*http2Server).controlBuf.put(&outgoingSettings{ |
| 2632 | ss: []http2.Setting{ |
| 2633 | { |
| 2634 | ID: http2.SettingHeaderTableSize, |
| 2635 | Val: uint32(100), |
| 2636 | }, |
| 2637 | }, |
| 2638 | }) |
| 2639 | |
| 2640 | for i = 0; i < 1000; i++ { |
| 2641 | if limits.getLen() != 1 { |
| 2642 | time.Sleep(10 * time.Millisecond) |
| 2643 | continue |
| 2644 | } |
| 2645 | if val := limits.getIndex(0); val != uint32(100) { |
nothing calls this directly
no test coverage detected