mirror of
https://github.com/restic/restic.git
synced 2024-08-23 12:50:45 +02:00
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
|
// Copyright 2016 The Go Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package http2
|
||
|
|
||
|
import "testing"
|
||
|
|
||
|
func TestRandomScheduler(t *testing.T) {
|
||
|
ws := NewRandomWriteScheduler()
|
||
|
ws.Push(makeWriteHeadersRequest(3))
|
||
|
ws.Push(makeWriteHeadersRequest(4))
|
||
|
ws.Push(makeWriteHeadersRequest(1))
|
||
|
ws.Push(makeWriteHeadersRequest(2))
|
||
|
ws.Push(makeWriteNonStreamRequest())
|
||
|
ws.Push(makeWriteNonStreamRequest())
|
||
|
|
||
|
// Pop all frames. Should get the non-stream requests first,
|
||
|
// followed by the stream requests in any order.
|
||
|
var order []FrameWriteRequest
|
||
|
for {
|
||
|
wr, ok := ws.Pop()
|
||
|
if !ok {
|
||
|
break
|
||
|
}
|
||
|
order = append(order, wr)
|
||
|
}
|
||
|
t.Logf("got frames: %v", order)
|
||
|
if len(order) != 6 {
|
||
|
t.Fatalf("got %d frames, expected 6", len(order))
|
||
|
}
|
||
|
if order[0].StreamID() != 0 || order[1].StreamID() != 0 {
|
||
|
t.Fatal("expected non-stream frames first", order[0], order[1])
|
||
|
}
|
||
|
got := make(map[uint32]bool)
|
||
|
for _, wr := range order[2:] {
|
||
|
got[wr.StreamID()] = true
|
||
|
}
|
||
|
for id := uint32(1); id <= 4; id++ {
|
||
|
if !got[id] {
|
||
|
t.Errorf("frame not found for stream %d", id)
|
||
|
}
|
||
|
}
|
||
|
}
|