-
Notifications
You must be signed in to change notification settings - Fork 148
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
clean up configuration handling #233
Conversation
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: pohly The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
os.Exit(m.Run()) | ||
} | ||
|
||
func TestSanity(t *testing.T) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am wondering whether we need this special hack with csi-sanity
being a go test
program. It prevents using "go get" to build it. I might still change that as part of this PR...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that was pretty simple.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See #234.
/assign @misterikkit |
d53f998
to
d5badbb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops! I forgot to send these draft comments. If they no longer make sense, feel free to ignore. I will take another pass at reviewing this soon.
pkg/sanity/sanity.go
Outdated
CreatePathCmdTimeout: 10, | ||
RemovePathCmdTimeout: 10, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these values in seconds? Any reason it's not time.Duration
type?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Historic reasons. I can change it.
pkg/sanity/sanity.go
Outdated
StagingPath: os.TempDir() + "/csi-staging", | ||
CreatePathCmdTimeout: 10, | ||
RemovePathCmdTimeout: 10, | ||
TestVolumeSize: 10 * 1024 * 1024 * 1024, // 10 GB |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is 10 GiB
. Could you update the comment?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure.
// the instance to [Ginkgo]Test and/or (when using GinkgoTest) in a | ||
// BeforeEach. For example, the BeforeEach could set up the CSI driver | ||
// and then set the Address field differently for each test. | ||
type TestConfig struct { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why change the struct name?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know, this is GitHub, so no-one reads commit messages, but I write them anyway... 😬
In the commit message, I usually explain the "why" for a change ("why do we need it, why this way") if it doesn't fit into a comment. In this case, the explanation is: "To ensure that callers adapt to the
new semantic, the struct gets renamed. ... SanityContext gets renamed to TestContext for consistency."
Another reason (not called out specifically) is that sanity.SanityConfig
stuttered. sanity.TestConfig
is a better name.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for taking the time to answer this twice. 😄
// BeforeEach. For example, the BeforeEach could set up the CSI driver | ||
// and then set the Address field differently for each test. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could add a godoc example of how one would use this struct. That's enough of a change that it doesn't need to be in this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that's overkill. I find it more likely that someone starts using this package based on some existing CSI driver, i.e. with a working example, than starting just with the godocs. I could be wrong, of course.
@misterikkit : PR updated, please have another look. |
NewTestConfig now must be used to initialize the struct with defaults. This makes it easier to introduce new fields where the empty value isn't a suitable default. To ensure that callers adapt to the new semantic, the struct gets renamed. This also allows removing replicated default values all over the source code. SanityContext gets renamed to TestContext for consistency. Its new Finalize method should be used to clean up. To allow that, GinkgoTest returns the context pointer.
This is cleaner. This also changes the values of the command line timeout parameters from plain int (10) to durations (10s), but this is okay as we are preparing a major new release.
81bc939
to
90f9d07
Compare
@misterikkit: rebased on top of the recently merged #236. @wnxn: perhaps you can have a look at this PR and verify that I didn't break anything? |
I verified it. It didn't break anything. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
"testing" | ||
|
||
"github.com/kubernetes-csi/csi-test/pkg/sanity" | ||
. "github.com/onsi/ginkgo" | ||
. "github.com/onsi/gomega" | ||
) | ||
|
||
var context *sanity.TestContext |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems like a global is the best way to do this within Ginkgo. Oh well.
// the instance to [Ginkgo]Test and/or (when using GinkgoTest) in a | ||
// BeforeEach. For example, the BeforeEach could set up the CSI driver | ||
// and then set the Address field differently for each test. | ||
type TestConfig struct { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for taking the time to answer this twice. 😄
// GinkgoTest for use when the tests run. Therefore its content can | ||
// still be modified in a BeforeEach. The sanity package itself treats | ||
// it as read-only. | ||
func GinkgoTest(config *TestConfig) *TestContext { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe RegisterGinkgoTests
would be a good name for this, but we seem to have enough breaking changes on our hands.
remove windows 20H2 build since it's EOL long time ago
227577e Merge pull request kubernetes-csi#258 from gnufied/enable-race-detection e1ceee2 Always enable race detection while running tests 988496a Merge pull request kubernetes-csi#257 from jakobmoellerdev/csi-prow-sidecar-e2e-path 028f8c6 chore: bump to Go 1.22.5 69bd71e chore: add CSI_PROW_SIDECAR_E2E_PATH f40f0cc Merge pull request kubernetes-csi#256 from solumath/master cfa9210 Instruction update 379a1bb Merge pull request kubernetes-csi#255 from humblec/sidecar-md a5667bb fix typo in sidecar release process 4967685 Merge pull request kubernetes-csi#254 from bells17/add-github-actions d9bd160 Update skip list in codespell GitHub Action adb3af9 Merge pull request kubernetes-csi#252 from bells17/update-go-version f5aebfc Add GitHub Actions workflows b82ee38 Merge pull request kubernetes-csi#253 from bells17/fix-typo c317456 Fix typo 0a78505 Bump to Go 1.22.3 edd89ad Merge pull request kubernetes-csi#251 from jsafrane/add-logcheck 043fd09 Add test-logcheck target d7535ae Merge pull request kubernetes-csi#250 from jsafrane/go-1.22 b52e7ad Update go to 1.22.2 14fdb6f Merge pull request kubernetes-csi#247 from msau42/prow dc4d0ae Merge pull request kubernetes-csi#249 from jsafrane/use-go-version e681b17 Use .go-version to get Kubernetes go version 9b4352e Update release playbook c7bb972 Fix release notes script to use fixed tags 463a0e9 Add script to update specific go modules b54c1ba Merge pull request kubernetes-csi#246 from xing-yang/go_1.21 5436c81 Change go version to 1.21.5 267b40e Merge pull request kubernetes-csi#244 from carlory/sig-storage b42e5a2 nominate self (carlory) as kubernetes-csi reviewer a17f536 Merge pull request kubernetes-csi#210 from sunnylovestiramisu/sidecar 011033d Use set -x instead of die 5deaf66 Add wrapper script for sidecar release f8c8cc4 Merge pull request kubernetes-csi#237 from msau42/prow b36b5bf Merge pull request kubernetes-csi#240 from dannawang0221/upgrade-go-version adfddcc Merge pull request kubernetes-csi#243 from pohly/git-subtree-pull-fix c465088 pull-test.sh: avoid "git subtree pull" error 7b175a1 Update csi-test version to v5.2.0 987c90c Update go version to 1.21 to match k/k 2c625d4 Add script to generate patch release notes f9d5b9c Merge pull request kubernetes-csi#236 from mowangdk/feature/bump_csi-driver-host-path_version b01fd53 Bump csi-driver-host-path version up to v1.12.0 984feec Merge pull request kubernetes-csi#234 from siddhikhapare/csi-tools 1f7e605 fixed broken links of testgrid dashboard de2fba8 Merge pull request kubernetes-csi#233 from andyzhangx/andyzhangx-patch-1 cee895e remove windows 20H2 build since it's EOL long time ago 670bb0e Merge pull request kubernetes-csi#229 from marosset/fix-codespell-errors 35d5e78 Merge pull request kubernetes-csi#219 from yashsingh74/update-registry 63473cc Merge pull request kubernetes-csi#231 from coulof/bump-go-version-1.20.5 29a5c76 Merge pull request kubernetes-csi#228 from mowangdk/chore/adopt_kubernetes_recommand_labels 8dd2821 Update cloudbuild image with go 1.20.5 1df23db Merge pull request kubernetes-csi#230 from msau42/prow 1f92b7e Add ginkgo timeout to e2e tests to help catch any stuck tests 2b8b80e fixing some codespell errors c10b678 Merge pull request kubernetes-csi#227 from coulof/check-sidecar-supported-versions 72984ec chore: adopt kubernetes recommand label b055535 Header bd0a10b typo c39d73c Add comments f6491af Script to verify EOL sidecar version 4133d1d Merge pull request kubernetes-csi#226 from msau42/cloudbuild 8d519d2 Pin buildkit to v0.10.6 to workaround v0.11 bug with docker manifest 6e04a03 Merge pull request kubernetes-csi#224 from msau42/cloudbuild 26fdfff Update cloudbuild image 6613c39 Merge pull request kubernetes-csi#223 from sunnylovestiramisu/update 0e7ae99 Update k8s image repo url 77e47cc Merge pull request kubernetes-csi#222 from xinydev/fix-dep-version 155854b Fix dep version mismatch 8f83905 Merge pull request kubernetes-csi#221 from sunnylovestiramisu/go-update 1d3f94d Update go version to 1.20 to match k/k v1.27 e322ce5 Merge pull request kubernetes-csi#220 from andyzhangx/fix-golint-error b74a512 test: fix golint error 901bcb5 Update registry k8s.gcr.io -> registry.k8s.io git-subtree-dir: release-tools git-subtree-split: 227577e
What type of PR is this?
/kind api-change
What this PR does / why we need it:
As discussed in #220, the current API makes it hard to introduce new config fields which don't have the nul value as default. The new
NewTestConfig
addresses that.As were are breaking the API with that already, several other shortcomings can also be addressed.
Special notes for your reviewer:
This is meant to go into v3.0.0 together with PR #232 .
/cc @misterikkit @davidz627
Does this PR introduce a user-facing change?: