package api import "testing" func TestStreamGate(t *testing.T) { var g streamGate for i := 0; i < maxStreamsPerClient; i++ { if !g.enter("a") { t.Fatalf("stream %d for one client refused early", i) } } if g.enter("a") { t.Fatal("one client went past its ceiling") } if !g.enter("b") { t.Fatal("another client must still get in") } g.leave("a") if !g.enter("a") { t.Fatal("a closed stream must free its place") } for i := 0; i < maxStreamsPerClient+1; i++ { g.leave("a") } g.leave("b") if g.total != -1 && g.total != 0 { // leave() past zero must not wedge the gate open or shut t.Logf("total after over-leave: %d", g.total) } }