Skip to content

Stepwise docker env#9292

Merged
catsby merged 48 commits into
masterfrom
stepwise-docker-env
Jun 26, 2020
Merged

Stepwise docker env#9292
catsby merged 48 commits into
masterfrom
stepwise-docker-env

Conversation

@catsby
Copy link
Copy Markdown
Contributor

@catsby catsby commented Jun 23, 2020

This PR introduces the first environment for the Stepwise plugin testing framework, as well as 3 plugin tests that utilizes it:

With a local instance of Docker accessible, the tests can be ran using with the make testacc step:

$ make testacc TEST=./builtin/logical/transit TESTARGS="-count=1 -run=TestAcc"  
$ make testacc TEST=./builtin/credential/userpass TESTARGS="-count=1 -run=TestAcc"  
$ make testacc TEST=./builtin/logical/aws TESTARGS="-count=1 -run=TestAcc"  # requires TEST_AWS env vars

This is a work in progress which will continue beyond this PR, including tests for this environment which will follow later.

@catsby catsby added this to the 1.5 milestone Jun 23, 2020
@catsby catsby marked this pull request as ready for review June 23, 2020 15:34
@calvn calvn self-requested a review June 23, 2020 18:21
catsby added 7 commits June 23, 2020 15:43
* master:
  Entity and alias counts (#9262)
  Token gauge metrics implementation. (#9239)
  mfa: fix import path on test file (#9303)
  doc: update vault helm enterprise image examples (#9299)
  raft: add support for using backend for ha_storage (#9193)
  Document new and previously undocumented telemetry metrics: (#9283)
  Improve the performance of snapshot installs by using rename (#9247)
  docs: add additional info around transform for tweak and template type (#9203)
  Update CHANGELOG.md
  CL++: Add go version to server message output
Comment thread builtin/credential/userpass/stepwise_test.go
Comment thread builtin/logical/aws/stepwise_test.go
Comment thread sdk/testing/stepwise/environments/docker/environment.go
Comment thread sdk/testing/stepwise/environments/docker/environment.go Outdated
catsby added 4 commits June 24, 2020 16:19
* master:
  changelog++
  Update kerberos auth plugin (#9307)
  Ui/fix manage grid (#9309)
  plugins/openldap: update go mod (#9301)
  plugins/ssh: add diabled host key verification warning (#9304)
@catsby catsby requested a review from jasonodonnell June 25, 2020 12:11
Copy link
Copy Markdown
Contributor

@jasonodonnell jasonodonnell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Comment thread builtin/credential/userpass/stepwise_test.go
Comment thread builtin/credential/userpass/stepwise_test.go
Comment thread builtin/credential/userpass/stepwise_test.go Outdated
Comment thread builtin/credential/userpass/stepwise_test.go
Comment thread builtin/credential/userpass/stepwise_test.go
Comment thread sdk/testing/stepwise/environments/docker/environment.go Outdated
return nil
}

func (rc *DockerCluster) setupCA(opts *DockerClusterOptions) error {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need to do anything for this PR, but I'm curious if an existing library could be used here instead of doing all of the cert generation logic here? Maybe https://github.com/hashicorp/vault/blob/master/helper/testhelpers/certhelpers/cert_helpers.go ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this.


// Cleanup kills the container of the node
func (n *DockerClusterNode) Cleanup() error {
return n.dockerAPI.ContainerKill(context.Background(), n.container.ID, "KILL")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note for future iterations: this could potentially hang forever since there isn't any timeout or way of cancelling the underlying request since this is using context.Background()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could add this via context.WithTimeout and use a relatively long value. Log something along the lines of "Waiting for cleanup to finish", and output the container ID if the cleanup times out so that users can clean them up manually.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a context.WithTimeout in b953396

Comment thread sdk/testing/stepwise/environments/docker/runner.go
Comment thread sdk/testing/stepwise/environments/docker/environment.go
catsby and others added 2 commits June 25, 2020 17:00
haha thanks :D

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>
Great catch, thanks

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>
catsby and others added 24 commits June 26, 2020 06:26
Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>
Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>
Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>
Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>
Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>
Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>
Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>
@catsby
Copy link
Copy Markdown
Contributor Author

catsby commented Jun 26, 2020

test-go-race is failing on the main branch, I have the go-ahead to merge as-is

@catsby catsby merged commit b3f0e9b into master Jun 26, 2020
andaley pushed a commit that referenced this pull request Jul 17, 2020
* add first stepwise test env, Docker, with example transit test

* update transit stepwise test

* add other tests that use stepwise

* cleanup test, make names different than just 'transit'

* return the stderr if compile fails with error

* minor cleanups

* minor cleanups

* go mod vendor

* cleanups

* remove some extra code, and un-export some fields/methods

* update vendor

* remove reference to vault.CoreConfig, which really wasn't used anyway

* update with go mod vendor

* restore Precheck method to test cases

* clean up some networking things; create networks with UUID, clean up during teardown

* vendor stepwise

* Update sdk/testing/stepwise/environments/docker/environment.go

haha thanks :D

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>

* Update sdk/testing/stepwise/environments/docker/environment.go

Great catch, thanks

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>

* fix redundant name

* update error message in test

* Update builtin/credential/userpass/stepwise_test.go

More explicit error checking and responding

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>

* Update builtin/logical/aws/stepwise_test.go

`test` -> `testFunc`

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>

* Update builtin/logical/transit/stepwise_test.go

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>

* fix typos

* update error messages to provide clarity

* Update sdk/testing/stepwise/environments/docker/environment.go

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>

* update error handling / collection in Teardown

* panic if GenerateUUID returns an error

* Update sdk/testing/stepwise/environments/docker/environment.go

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>

* Update builtin/credential/userpass/stepwise_test.go

Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>

* Update builtin/logical/aws/stepwise_test.go

Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>

* Update builtin/logical/transit/stepwise_test.go

Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>

* Update sdk/testing/stepwise/environments/docker/environment.go

Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>

* import ordering

* standardize on dc from rc for cluster

* lowercase name

* CreateAPIClient -> NewAPIClient

* testWait -> ensure

* go mod cleanup

* cleanups

* move fields and method around

* make start and dockerclusternode private; use better random serial number

* use better random for SerialNumber

* add a timeout to the context used for terminating the docker container

* Use a constant for the Docker client version

* rearrange import statements

Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com>
Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>
pull Bot pushed a commit to Zezo-Ai/vault that referenced this pull request Sep 11, 2025
Co-authored-by: Dan Rivera <dan.rivera@hashicorp.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants