Use Hashicorp testutil for testing vs Consul API #286
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The behaviors we're testing in the consul package are very thin wrappers around the upstream Consul API library, but that library doesn't have a interfaces (in the golang sense) that we can mock. Using httptest with a test server could give us the HTTP server but not the stateful behaviors without having to implement a lot of Consul's own behavior and we'd have to build code generation in order to validate it.
Here we'll use Hashi's own test infrastructure around Consul to run the Consul binary and tear it down after tests. This lets us run locally without Docker (and is a lot faster!) and makes it clear where the boundary of tests that depend on the server lies. In future work we can try to minimize this test region and try to eliminate the requirement or move these pieces into integration tests.
This PR contains all the commits from #285 and will be rebased once that's been merged.8494f83d6d0f58 contains the only commit in this PR.