Fix int test that was failing on MacOS, and some small doc changes

This commit is contained in:
Ryan Richard 2022-02-15 11:19:49 -08:00
parent 82cdc870a6
commit b0c36c6633
4 changed files with 20 additions and 13 deletions

View File

@ -72,7 +72,7 @@ Please follow the procedure described in [SECURITY.md](SECURITY.md).
## CLA ## CLA
We welcome contributions from everyone but we can only accept them if you sign We welcome contributions from everyone but, we can only accept them if you sign
our Contributor License Agreement (CLA). If you would like to contribute and you our Contributor License Agreement (CLA). If you would like to contribute and you
have not signed it, our CLA-bot will walk you through the process when you open have not signed it, our CLA-bot will walk you through the process when you open
a Pull Request. For questions about the CLA process, see the a Pull Request. For questions about the CLA process, see the
@ -82,13 +82,21 @@ tracker.
## Building ## Building
The [Dockerfile](Dockerfile) at the root of the repo can be used to build and The [Dockerfile](Dockerfile) at the root of the repo can be used to build and
package the code. After making a change to the code, rebuild the docker image with the following command. package the server-side code. After making a change to the code, rebuild the
docker image with the following command.
```bash ```bash
# From the root directory of the repo... # From the root directory of the repo...
docker build . docker build .
``` ```
The Pinniped CLI client can be built for local use with the following command.
```bash
# From the root directory of the repo...
go build -o pinniped ./cmd/pinniped
```
## Testing ## Testing
### Running Lint ### Running Lint
@ -122,7 +130,7 @@ docker build .
brew install kind k14s/tap/ytt k14s/tap/kapp kubectl chromedriver nmap && brew cask install docker brew install kind k14s/tap/ytt k14s/tap/kapp kubectl chromedriver nmap && brew cask install docker
``` ```
1. Create a kind cluster, compile, create container images, and install Pinniped and supporting dependencies using: 1. Create a kind cluster, compile, create container images, and install Pinniped and supporting test dependencies using:
```bash ```bash
./hack/prepare-for-integration-tests.sh ./hack/prepare-for-integration-tests.sh

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright 2020-2021 the Pinniped contributors. All Rights Reserved. # Copyright 2020-2022 the Pinniped contributors. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# #
@ -420,6 +420,7 @@ EOF
log_note log_note
log_note "🚀 Ready to run integration tests! For example..." log_note "🚀 Ready to run integration tests! For example..."
log_note " cd $pinniped_path" log_note " cd $pinniped_path"
log_note " ulimit -n 512"
log_note ' source /tmp/integration-test-env && go test -v -race -count 1 -timeout 0 ./test/integration' log_note ' source /tmp/integration-test-env && go test -v -race -count 1 -timeout 0 ./test/integration'
log_note log_note
log_note "Using GoLand? Paste the result of this command into GoLand's run configuration \"Environment\"." log_note "Using GoLand? Paste the result of this command into GoLand's run configuration \"Environment\"."

View File

@ -449,8 +449,6 @@ func TestE2EFullIntegration(t *testing.T) { // nolint:gocyclo
start := time.Now() start := time.Now()
kubectlCmd := exec.CommandContext(ctx, "kubectl", "get", "namespace", "--kubeconfig", kubeconfigPath) kubectlCmd := exec.CommandContext(ctx, "kubectl", "get", "namespace", "--kubeconfig", kubeconfigPath)
kubectlCmd.Env = append(os.Environ(), env.ProxyEnv()...) kubectlCmd.Env = append(os.Environ(), env.ProxyEnv()...)
stdoutPipe, err := kubectlCmd.StdoutPipe()
require.NoError(t, err)
ptyFile, err := pty.Start(kubectlCmd) ptyFile, err := pty.Start(kubectlCmd)
require.NoError(t, err) require.NoError(t, err)
@ -492,10 +490,10 @@ func TestE2EFullIntegration(t *testing.T) { // nolint:gocyclo
t.Logf("waiting for kubectl to output namespace list") t.Logf("waiting for kubectl to output namespace list")
// Read all output from the subprocess until EOF. // Read all output from the subprocess until EOF.
// Ignore any errors returned because there is always an error on linux. // Ignore any errors returned because there is always an error on linux.
kubectlStdOutOutputBytes, _ := ioutil.ReadAll(stdoutPipe) kubectlOutputBytes, _ := ioutil.ReadAll(ptyFile)
kubectlStdErrOutputBytes, _ := ioutil.ReadAll(ptyFile) requireKubectlGetNamespaceOutput(t, env, string(kubectlOutputBytes))
requireKubectlGetNamespaceOutput(t, env, string(kubectlStdOutOutputBytes)) // This warning should be on stderr, but with pty on MacOS it's hard to assert that specifically.
require.Contains(t, string(kubectlStdErrOutputBytes), "Access token from identity provider has lifetime of less than 3 hours. Expect frequent prompts to log in.") require.Contains(t, string(kubectlOutputBytes), "Access token from identity provider has lifetime of less than 3 hours. Expect frequent prompts to log in.")
t.Logf("first kubectl command took %s", time.Since(start).String()) t.Logf("first kubectl command took %s", time.Since(start).String())
@ -1013,7 +1011,7 @@ func readFromFileUntilStringIsSeen(t *testing.T, f *os.File, until string) strin
return true, nil // found it! finished. return true, nil // found it! finished.
} }
if foundEOF { if foundEOF {
return false, fmt.Errorf("reached EOF of subcommand's output without seeing expected string %q", until) return false, fmt.Errorf("reached EOF of subcommand's output without seeing expected string %q. Output read so far was:\n%s", until, readFromFile)
} }
return false, nil // keep waiting and reading return false, nil // keep waiting and reading
}, 1*time.Minute, 1*time.Second) }, 1*time.Minute, 1*time.Second)