Make future flake diagnosis possible.

It's currently unclear if the request failed because the proxy wasn't
quite up yet, or if it failed because traffic couldn't get from the
proxy to apiserver. Getting the proxy logs unconditionally should help
narrow this down.
This commit is contained in:
Daniel Smith
2016-01-21 15:58:37 -08:00
parent 76f02d562a
commit 23fd5e9a33

View File

@@ -352,7 +352,9 @@ var _ = Describe("Kubectl client", func() {
} }
proxyAddr := fmt.Sprintf("http://%s:8080", goproxyPod.Status.PodIP) proxyAddr := fmt.Sprintf("http://%s:8080", goproxyPod.Status.PodIP)
shellCommand := fmt.Sprintf("%s=%s .%s --kubeconfig=%s --server=%s --namespace=%s exec nginx echo running in container", proxyVar, proxyAddr, uploadBinaryName, kubecConfigRemotePath, apiServer, ns) shellCommand := fmt.Sprintf("%s=%s .%s --kubeconfig=%s --server=%s --namespace=%s exec nginx echo running in container",
proxyVar, proxyAddr, uploadBinaryName, kubecConfigRemotePath, apiServer, ns)
Logf("About to remote exec: %v", shellCommand)
// Execute kubectl on remote exec server. // Execute kubectl on remote exec server.
var netexecShellOutput []byte var netexecShellOutput []byte
if subResourceProxyAvailable { if subResourceProxyAvailable {
@@ -383,6 +385,12 @@ var _ = Describe("Kubectl client", func() {
Failf("Unable to read the result from the netexec server. Error: %s", err) Failf("Unable to read the result from the netexec server. Error: %s", err)
} }
// Get (and print!) the proxy logs here, so
// they'll be present in case the below check
// fails the test, to help diagnose #19500 if
// it recurs.
proxyLog := runKubectlOrDie("log", "goproxy", fmt.Sprintf("--namespace=%v", ns))
// Verify we got the normal output captured by the exec server // Verify we got the normal output captured by the exec server
expectedExecOutput := "running in container\n" expectedExecOutput := "running in container\n"
if netexecOuput.Output != expectedExecOutput { if netexecOuput.Output != expectedExecOutput {
@@ -391,7 +399,6 @@ var _ = Describe("Kubectl client", func() {
// Verify the proxy server logs saw the connection // Verify the proxy server logs saw the connection
expectedProxyLog := fmt.Sprintf("Accepting CONNECT to %s", strings.TrimRight(strings.TrimLeft(testContext.Host, "https://"), "/api")) expectedProxyLog := fmt.Sprintf("Accepting CONNECT to %s", strings.TrimRight(strings.TrimLeft(testContext.Host, "https://"), "/api"))
proxyLog := runKubectlOrDie("log", "goproxy", fmt.Sprintf("--namespace=%v", ns))
if !strings.Contains(proxyLog, expectedProxyLog) { if !strings.Contains(proxyLog, expectedProxyLog) {
Failf("Missing expected log result on proxy server for %s. Expected: %q, got %q", proxyVar, expectedProxyLog, proxyLog) Failf("Missing expected log result on proxy server for %s. Expected: %q, got %q", proxyVar, expectedProxyLog, proxyLog)