OSDN Git Service

new repo
[bytom/vapor.git] / vendor / golang.org / x / net / http2 / writesched_random_test.go
1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package http2
6
7 import "testing"
8
9 func TestRandomScheduler(t *testing.T) {
10         ws := NewRandomWriteScheduler()
11         ws.Push(makeWriteHeadersRequest(3))
12         ws.Push(makeWriteHeadersRequest(4))
13         ws.Push(makeWriteHeadersRequest(1))
14         ws.Push(makeWriteHeadersRequest(2))
15         ws.Push(makeWriteNonStreamRequest())
16         ws.Push(makeWriteNonStreamRequest())
17
18         // Pop all frames. Should get the non-stream requests first,
19         // followed by the stream requests in any order.
20         var order []FrameWriteRequest
21         for {
22                 wr, ok := ws.Pop()
23                 if !ok {
24                         break
25                 }
26                 order = append(order, wr)
27         }
28         t.Logf("got frames: %v", order)
29         if len(order) != 6 {
30                 t.Fatalf("got %d frames, expected 6", len(order))
31         }
32         if order[0].StreamID() != 0 || order[1].StreamID() != 0 {
33                 t.Fatal("expected non-stream frames first", order[0], order[1])
34         }
35         got := make(map[uint32]bool)
36         for _, wr := range order[2:] {
37                 got[wr.StreamID()] = true
38         }
39         for id := uint32(1); id <= 4; id++ {
40                 if !got[id] {
41                         t.Errorf("frame not found for stream %d", id)
42                 }
43         }
44 }