Fix flaky exec/portforward tests

Fixes #4676
This commit is contained in:
Andy Goldstein 2015-02-20 16:29:42 -05:00
parent c2c86b0a6d
commit bd2eb2fa8f
2 changed files with 11 additions and 67 deletions

View File

@ -261,11 +261,7 @@ func TestForwardPorts(t *testing.T) {
go func() { go func() {
doneChan <- pf.ForwardPorts() doneChan <- pf.ForwardPorts()
}() }()
select { <-pf.Ready
case <-pf.Ready:
case <-time.After(500 * time.Millisecond):
t.Fatalf("%d: timed out waiting for listeners", i)
}
conn := testCase.Upgrader.conn conn := testCase.Upgrader.conn
@ -301,13 +297,9 @@ func TestForwardPorts(t *testing.T) {
close(stopChan) close(stopChan)
// wait for r.ForwardPorts to actually return // wait for r.ForwardPorts to actually return
select { err = <-doneChan
case err := <-doneChan: if err != nil {
if err != nil { t.Fatalf("%d: unexpected error: %s", err)
t.Fatalf("%d: unexpected error: %s", err)
}
case <-time.After(200 * time.Millisecond):
t.Fatalf("%d: timeout waiting for ForwardPorts to finish")
} }
if e, a := len(testCase.Send), len(conn.streams); e != a { if e, a := len(testCase.Send), len(conn.streams); e != a {

View File

@ -569,17 +569,6 @@ func TestServeExecInContainerIdleTimeout(t *testing.T) {
return 100 * time.Millisecond return 100 * time.Millisecond
} }
idleSuccess := make(chan struct{})
fw.fakeKubelet.execFunc = func(podFullName string, uid types.UID, containerName string, cmd []string, in io.Reader, out, stderr io.WriteCloser, tty bool) error {
select {
case <-idleSuccess:
case <-time.After(150 * time.Millisecond):
t.Fatalf("execFunc timed out waiting for idle timeout")
}
return nil
}
podNamespace := "other" podNamespace := "other"
podName := "foo" podName := "foo"
expectedContainerName := "baz" expectedContainerName := "baz"
@ -605,19 +594,14 @@ func TestServeExecInContainerIdleTimeout(t *testing.T) {
defer conn.Close() defer conn.Close()
h := http.Header{} h := http.Header{}
h.Set("type", "input") h.Set(api.StreamType, api.StreamTypeError)
stream, err := conn.CreateStream(h) stream, err := conn.CreateStream(h)
if err != nil { if err != nil {
t.Fatalf("error creating input stream: %v", err) t.Fatalf("error creating input stream: %v", err)
} }
defer stream.Reset() defer stream.Reset()
select { <-conn.CloseChan()
case <-conn.CloseChan():
close(idleSuccess)
case <-time.After(150 * time.Millisecond):
t.Fatalf("Timed out waiting for connection closure due to idle timeout")
}
} }
func TestServeExecInContainer(t *testing.T) { func TestServeExecInContainer(t *testing.T) {
@ -698,11 +682,7 @@ func TestServeExecInContainer(t *testing.T) {
t.Fatalf("%d:, error writing to stdout: %v", i, err) t.Fatalf("%d:, error writing to stdout: %v", i, err)
} }
out.Close() out.Close()
select { <-clientStdoutReadDone
case <-clientStdoutReadDone:
case <-time.After(10 * time.Millisecond):
t.Fatalf("%d: timed out waiting for client to read stdout", i)
}
} else if out != nil { } else if out != nil {
t.Fatalf("%d: stdout: expected nil: %#v", i, out) t.Fatalf("%d: stdout: expected nil: %#v", i, out)
} }
@ -720,11 +700,7 @@ func TestServeExecInContainer(t *testing.T) {
t.Fatalf("%d:, error writing to stderr: %v", i, err) t.Fatalf("%d:, error writing to stderr: %v", i, err)
} }
stderr.Close() stderr.Close()
select { <-clientStderrReadDone
case <-clientStderrReadDone:
case <-time.After(10 * time.Millisecond):
t.Fatalf("%d: timed out waiting for client to read stderr", i)
}
} else if stderr != nil { } else if stderr != nil {
t.Fatalf("%d: stderr: expected nil: %#v", i, stderr) t.Fatalf("%d: stderr: expected nil: %#v", i, stderr)
} }
@ -858,11 +834,7 @@ func TestServeExecInContainer(t *testing.T) {
} }
} }
select { <-execFuncDone
case <-execFuncDone:
case <-time.After(10 * time.Millisecond):
t.Fatalf("%d: timed out waiting for execFunc to complete", i)
}
} }
} }
@ -873,17 +845,6 @@ func TestServePortForwardIdleTimeout(t *testing.T) {
return 100 * time.Millisecond return 100 * time.Millisecond
} }
idleSuccess := make(chan struct{})
fw.fakeKubelet.portForwardFunc = func(name string, uid types.UID, port uint16, stream io.ReadWriteCloser) error {
select {
case <-idleSuccess:
case <-time.After(150 * time.Millisecond):
t.Fatalf("execFunc timed out waiting for idle timeout")
}
return nil
}
podNamespace := "other" podNamespace := "other"
podName := "foo" podName := "foo"
@ -907,12 +868,7 @@ func TestServePortForwardIdleTimeout(t *testing.T) {
} }
defer conn.Close() defer conn.Close()
select { <-conn.CloseChan()
case <-conn.CloseChan():
close(idleSuccess)
case <-time.After(150 * time.Millisecond):
t.Fatalf("Timed out waiting for connection closure due to idle timeout")
}
} }
func TestServePortForward(t *testing.T) { func TestServePortForward(t *testing.T) {
@ -1054,10 +1010,6 @@ func TestServePortForward(t *testing.T) {
} }
} }
select { <-portForwardFuncDone
case <-portForwardFuncDone:
case <-time.After(100 * time.Millisecond):
t.Fatalf("%d: timed out waiting for portForwardFuncDone", i)
}
} }
} }