mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Merge pull request #4944 from ncdc/master
bump(docker/spdystream):e9bf9912b85eec0ed6aaf317808a0eab25e3ca43
This commit is contained in:
commit
93d6c85253
2
Godeps/Godeps.json
generated
2
Godeps/Godeps.json
generated
@ -114,7 +114,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/docker/spdystream",
|
"ImportPath": "github.com/docker/spdystream",
|
||||||
"Rev": "29e1da2890f60336f98d0b3bf28b05070aa2ee4d"
|
"Rev": "e9bf9912b85eec0ed6aaf317808a0eab25e3ca43"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/elazarl/go-bindata-assetfs",
|
"ImportPath": "github.com/elazarl/go-bindata-assetfs",
|
||||||
|
16
Godeps/_workspace/src/github.com/docker/spdystream/connection.go
generated
vendored
16
Godeps/_workspace/src/github.com/docker/spdystream/connection.go
generated
vendored
@ -72,11 +72,17 @@ Loop:
|
|||||||
timer.Reset(i.timeout)
|
timer.Reset(i.timeout)
|
||||||
}
|
}
|
||||||
case <-expired:
|
case <-expired:
|
||||||
for _, stream := range i.conn.streams {
|
i.conn.streamCond.L.Lock()
|
||||||
stream.Reset()
|
streams := i.conn.streams
|
||||||
}
|
i.conn.streams = make(map[spdy.StreamId]*Stream)
|
||||||
i.conn.Close()
|
i.conn.streamCond.Broadcast()
|
||||||
break Loop
|
i.conn.streamCond.L.Unlock()
|
||||||
|
go func() {
|
||||||
|
for _, stream := range streams {
|
||||||
|
stream.resetStream()
|
||||||
|
}
|
||||||
|
i.conn.Close()
|
||||||
|
}()
|
||||||
case <-i.conn.closeChan:
|
case <-i.conn.closeChan:
|
||||||
if timer != nil {
|
if timer != nil {
|
||||||
timer.Stop()
|
timer.Stop()
|
||||||
|
81
Godeps/_workspace/src/github.com/docker/spdystream/spdy_test.go
generated
vendored
81
Godeps/_workspace/src/github.com/docker/spdystream/spdy_test.go
generated
vendored
@ -396,6 +396,49 @@ func TestCloseNotification(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIdleShutdownRace(t *testing.T) {
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
server, listen, serverErr := runServer(&wg)
|
||||||
|
if serverErr != nil {
|
||||||
|
t.Fatalf("Error initializing server: %s", serverErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
conn, dialErr := net.Dial("tcp", listen)
|
||||||
|
if dialErr != nil {
|
||||||
|
t.Fatalf("Error dialing server: %s", dialErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
spdyConn, spdyErr := NewConnection(conn, false)
|
||||||
|
if spdyErr != nil {
|
||||||
|
t.Fatalf("Error creating spdy connection: %s", spdyErr)
|
||||||
|
}
|
||||||
|
go spdyConn.Serve(NoOpStreamHandler)
|
||||||
|
|
||||||
|
authenticated = true
|
||||||
|
stream, err := spdyConn.CreateStream(http.Header{}, nil, false)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Error creating stream: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
spdyConn.SetIdleTimeout(5 * time.Millisecond)
|
||||||
|
go func() {
|
||||||
|
time.Sleep(5 * time.Millisecond)
|
||||||
|
stream.Reset()
|
||||||
|
}()
|
||||||
|
|
||||||
|
select {
|
||||||
|
case <-spdyConn.CloseChan():
|
||||||
|
case <-time.After(20 * time.Millisecond):
|
||||||
|
t.Fatal("Timed out waiting for idle connection closure")
|
||||||
|
}
|
||||||
|
|
||||||
|
closeErr := server.Close()
|
||||||
|
if closeErr != nil {
|
||||||
|
t.Fatalf("Error shutting down server: %s", closeErr)
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
}
|
||||||
|
|
||||||
func TestIdleNoTimeoutSet(t *testing.T) {
|
func TestIdleNoTimeoutSet(t *testing.T) {
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
server, listen, serverErr := runServer(&wg)
|
server, listen, serverErr := runServer(&wg)
|
||||||
@ -558,6 +601,44 @@ Loop:
|
|||||||
wg.Wait()
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIdleRace(t *testing.T) {
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
server, listen, serverErr := runServer(&wg)
|
||||||
|
if serverErr != nil {
|
||||||
|
t.Fatalf("Error initializing server: %s", serverErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
conn, dialErr := net.Dial("tcp", listen)
|
||||||
|
if dialErr != nil {
|
||||||
|
t.Fatalf("Error dialing server: %s", dialErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
spdyConn, spdyErr := NewConnection(conn, false)
|
||||||
|
if spdyErr != nil {
|
||||||
|
t.Fatalf("Error creating spdy connection: %s", spdyErr)
|
||||||
|
}
|
||||||
|
go spdyConn.Serve(NoOpStreamHandler)
|
||||||
|
|
||||||
|
spdyConn.SetIdleTimeout(10 * time.Millisecond)
|
||||||
|
|
||||||
|
authenticated = true
|
||||||
|
|
||||||
|
for i := 0; i < 10; i++ {
|
||||||
|
_, err := spdyConn.CreateStream(http.Header{}, nil, false)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Error creating stream: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
<-spdyConn.CloseChan()
|
||||||
|
|
||||||
|
closeErr := server.Close()
|
||||||
|
if closeErr != nil {
|
||||||
|
t.Fatalf("Error shutting down server: %s", closeErr)
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
}
|
||||||
|
|
||||||
func TestHalfClosedIdleTimeout(t *testing.T) {
|
func TestHalfClosedIdleTimeout(t *testing.T) {
|
||||||
listener, listenErr := net.Listen("tcp", "localhost:0")
|
listener, listenErr := net.Listen("tcp", "localhost:0")
|
||||||
if listenErr != nil {
|
if listenErr != nil {
|
||||||
|
3
Godeps/_workspace/src/github.com/docker/spdystream/stream.go
generated
vendored
3
Godeps/_workspace/src/github.com/docker/spdystream/stream.go
generated
vendored
@ -168,7 +168,10 @@ func (s *Stream) Close() error {
|
|||||||
// Reset sends a reset frame, putting the stream into the fully closed state.
|
// Reset sends a reset frame, putting the stream into the fully closed state.
|
||||||
func (s *Stream) Reset() error {
|
func (s *Stream) Reset() error {
|
||||||
s.conn.removeStream(s)
|
s.conn.removeStream(s)
|
||||||
|
return s.resetStream()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Stream) resetStream() error {
|
||||||
s.finishLock.Lock()
|
s.finishLock.Lock()
|
||||||
if s.finished {
|
if s.finished {
|
||||||
s.finishLock.Unlock()
|
s.finishLock.Unlock()
|
||||||
|
Loading…
Reference in New Issue
Block a user