Fix golint issues in test/e2e/lifecycle/

This commit is contained in:
tanjunchen 2019-12-03 17:14:38 +08:00
parent cf16e4988f
commit d2d68026fc
5 changed files with 39 additions and 27 deletions

View File

@ -532,7 +532,6 @@ staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1
staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/fischer staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/fischer
staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/flunder staging/src/k8s.io/sample-apiserver/pkg/registry/wardle/flunder
test/e2e/common test/e2e/common
test/e2e/lifecycle/bootstrap
test/e2e/storage/vsphere test/e2e/storage/vsphere
test/e2e_node/remote test/e2e_node/remote
test/e2e_node/runner/remote test/e2e_node/runner/remote

View File

@ -27,7 +27,10 @@ import (
) )
const ( const (
// TokenIDBytes is the length of the byte array to generate tokenID.
TokenIDBytes = 3 TokenIDBytes = 3
// TokenSecretBytes is the length of the byte array to generate tokenSecret.
TokenSecretBytes = 8 TokenSecretBytes = 8
) )
@ -50,34 +53,34 @@ var _ = lifecycle.SIGDescribe("[Feature:BootstrapTokens]", func() {
ginkgo.It("should sign the new added bootstrap tokens", func() { ginkgo.It("should sign the new added bootstrap tokens", func() {
ginkgo.By("create a new bootstrap token secret") ginkgo.By("create a new bootstrap token secret")
tokenId, err := GenerateTokenId() tokenID, err := GenerateTokenID()
framework.ExpectNoError(err) framework.ExpectNoError(err)
secret := newTokenSecret(tokenId, "tokenSecret") secret := newTokenSecret(tokenID, "tokenSecret")
_, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret) _, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret)
secretNeedClean = bootstrapapi.BootstrapTokenSecretPrefix + tokenId secretNeedClean = bootstrapapi.BootstrapTokenSecretPrefix + tokenID
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By("wait for the bootstrap token secret be signed") ginkgo.By("wait for the bootstrap token secret be signed")
err = WaitforSignedClusterInfoByBootStrapToken(c, tokenId) err = WaitforSignedClusterInfoByBootStrapToken(c, tokenID)
framework.ExpectNoError(err) framework.ExpectNoError(err)
}) })
ginkgo.It("should resign the bootstrap tokens when the clusterInfo ConfigMap updated [Serial][Disruptive]", func() { ginkgo.It("should resign the bootstrap tokens when the clusterInfo ConfigMap updated [Serial][Disruptive]", func() {
ginkgo.By("create a new bootstrap token secret") ginkgo.By("create a new bootstrap token secret")
tokenId, err := GenerateTokenId() tokenID, err := GenerateTokenID()
framework.ExpectNoError(err) framework.ExpectNoError(err)
secret := newTokenSecret(tokenId, "tokenSecret") secret := newTokenSecret(tokenID, "tokenSecret")
_, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret) _, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret)
framework.ExpectNoError(err) framework.ExpectNoError(err)
secretNeedClean = bootstrapapi.BootstrapTokenSecretPrefix + tokenId secretNeedClean = bootstrapapi.BootstrapTokenSecretPrefix + tokenID
ginkgo.By("wait for the bootstrap token secret be signed") ginkgo.By("wait for the bootstrap token secret be signed")
err = WaitforSignedClusterInfoByBootStrapToken(c, tokenId) err = WaitforSignedClusterInfoByBootStrapToken(c, tokenID)
cfgMap, err := f.ClientSet.CoreV1().ConfigMaps(metav1.NamespacePublic).Get(bootstrapapi.ConfigMapClusterInfo, metav1.GetOptions{}) cfgMap, err := f.ClientSet.CoreV1().ConfigMaps(metav1.NamespacePublic).Get(bootstrapapi.ConfigMapClusterInfo, metav1.GetOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
signedToken, ok := cfgMap.Data[bootstrapapi.JWSSignatureKeyPrefix+tokenId] signedToken, ok := cfgMap.Data[bootstrapapi.JWSSignatureKeyPrefix+tokenID]
framework.ExpectEqual(ok, true) framework.ExpectEqual(ok, true)
ginkgo.By("update the cluster-info ConfigMap") ginkgo.By("update the cluster-info ConfigMap")
@ -97,28 +100,28 @@ var _ = lifecycle.SIGDescribe("[Feature:BootstrapTokens]", func() {
}() }()
ginkgo.By("wait for signed bootstrap token updated") ginkgo.By("wait for signed bootstrap token updated")
err = WaitForSignedClusterInfoGetUpdatedByBootstrapToken(c, tokenId, signedToken) err = WaitForSignedClusterInfoGetUpdatedByBootstrapToken(c, tokenID, signedToken)
framework.ExpectNoError(err) framework.ExpectNoError(err)
}) })
ginkgo.It("should delete the signed bootstrap tokens from clusterInfo ConfigMap when bootstrap token is deleted", func() { ginkgo.It("should delete the signed bootstrap tokens from clusterInfo ConfigMap when bootstrap token is deleted", func() {
ginkgo.By("create a new bootstrap token secret") ginkgo.By("create a new bootstrap token secret")
tokenId, err := GenerateTokenId() tokenID, err := GenerateTokenID()
framework.ExpectNoError(err) framework.ExpectNoError(err)
secret := newTokenSecret(tokenId, "tokenSecret") secret := newTokenSecret(tokenID, "tokenSecret")
_, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret) _, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret)
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By("wait for the bootstrap secret be signed") ginkgo.By("wait for the bootstrap secret be signed")
err = WaitforSignedClusterInfoByBootStrapToken(c, tokenId) err = WaitforSignedClusterInfoByBootStrapToken(c, tokenID)
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By("delete the bootstrap token secret") ginkgo.By("delete the bootstrap token secret")
err = c.CoreV1().Secrets(metav1.NamespaceSystem).Delete(bootstrapapi.BootstrapTokenSecretPrefix+tokenId, &metav1.DeleteOptions{}) err = c.CoreV1().Secrets(metav1.NamespaceSystem).Delete(bootstrapapi.BootstrapTokenSecretPrefix+tokenID, &metav1.DeleteOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By("wait for the bootstrap token removed from cluster-info ConfigMap") ginkgo.By("wait for the bootstrap token removed from cluster-info ConfigMap")
err = WaitForSignedClusterInfoByBootstrapTokenToDisappear(c, tokenId) err = WaitForSignedClusterInfoByBootstrapTokenToDisappear(c, tokenID)
framework.ExpectNoError(err) framework.ExpectNoError(err)
}) })
}) })

View File

@ -49,36 +49,36 @@ var _ = lifecycle.SIGDescribe("[Feature:BootstrapTokens]", func() {
}) })
ginkgo.It("should delete the token secret when the secret expired", func() { ginkgo.It("should delete the token secret when the secret expired", func() {
ginkgo.By("create a new expired bootstrap token secret") ginkgo.By("create a new expired bootstrap token secret")
tokenId, err := GenerateTokenId() tokenID, err := GenerateTokenID()
framework.ExpectNoError(err) framework.ExpectNoError(err)
tokenSecret, err := GenerateTokenSecret() tokenSecret, err := GenerateTokenSecret()
framework.ExpectNoError(err) framework.ExpectNoError(err)
secret := newTokenSecret(tokenId, tokenSecret) secret := newTokenSecret(tokenID, tokenSecret)
addSecretExpiration(secret, TimeStringFromNow(-time.Hour)) addSecretExpiration(secret, TimeStringFromNow(-time.Hour))
_, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret) _, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret)
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By("wait for the bootstrap token secret be deleted") ginkgo.By("wait for the bootstrap token secret be deleted")
err = WaitForBootstrapTokenSecretToDisappear(c, tokenId) err = WaitForBootstrapTokenSecretToDisappear(c, tokenID)
framework.ExpectNoError(err) framework.ExpectNoError(err)
}) })
ginkgo.It("should not delete the token secret when the secret is not expired", func() { ginkgo.It("should not delete the token secret when the secret is not expired", func() {
ginkgo.By("create a new expired bootstrap token secret") ginkgo.By("create a new expired bootstrap token secret")
tokenId, err := GenerateTokenId() tokenID, err := GenerateTokenID()
framework.ExpectNoError(err) framework.ExpectNoError(err)
tokenSecret, err := GenerateTokenSecret() tokenSecret, err := GenerateTokenSecret()
framework.ExpectNoError(err) framework.ExpectNoError(err)
secret := newTokenSecret(tokenId, tokenSecret) secret := newTokenSecret(tokenID, tokenSecret)
addSecretExpiration(secret, TimeStringFromNow(time.Hour)) addSecretExpiration(secret, TimeStringFromNow(time.Hour))
_, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret) _, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(secret)
secretNeedClean = bootstrapapi.BootstrapTokenSecretPrefix + tokenId secretNeedClean = bootstrapapi.BootstrapTokenSecretPrefix + tokenID
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By("wait for the bootstrap token secret not be deleted") ginkgo.By("wait for the bootstrap token secret not be deleted")
err = WaitForBootstrapTokenSecretNotDisappear(c, tokenId, 20*time.Second) err = WaitForBootstrapTokenSecretNotDisappear(c, tokenID, 20*time.Second)
framework.ExpectNoError(err) framework.ExpectNoError(err)
}) })
}) })

View File

@ -22,7 +22,7 @@ import (
"errors" "errors"
"time" "time"
"k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
apierrs "k8s.io/apimachinery/pkg/api/errors" apierrs "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
@ -46,13 +46,16 @@ func newTokenSecret(tokenID, tokenSecret string) *v1.Secret {
} }
} }
func GenerateTokenId() (string, error) { // GenerateTokenID generates tokenID.
func GenerateTokenID() (string, error) {
tokenID, err := randBytes(TokenIDBytes) tokenID, err := randBytes(TokenIDBytes)
if err != nil { if err != nil {
return "", err return "", err
} }
return tokenID, nil return tokenID, nil
} }
// GenerateTokenSecret generates tokenSecret.
func GenerateTokenSecret() (string, error) { func GenerateTokenSecret() (string, error) {
tokenSecret, err := randBytes(TokenSecretBytes) tokenSecret, err := randBytes(TokenSecretBytes)
if err != nil { if err != nil {
@ -74,10 +77,13 @@ func addSecretExpiration(s *v1.Secret, expiration string) {
s.Data[bootstrapapi.BootstrapTokenExpirationKey] = []byte(expiration) s.Data[bootstrapapi.BootstrapTokenExpirationKey] = []byte(expiration)
} }
// TimeStringFromNow returns the time as a string from now.
// e.g: 2019-12-03T14:30:40+08:00.
func TimeStringFromNow(delta time.Duration) string { func TimeStringFromNow(delta time.Duration) string {
return time.Now().Add(delta).Format(time.RFC3339) return time.Now().Add(delta).Format(time.RFC3339)
} }
// WaitforSignedClusterInfoByBootStrapToken waits for signed cluster info by bootstrap token.
func WaitforSignedClusterInfoByBootStrapToken(c clientset.Interface, tokenID string) error { func WaitforSignedClusterInfoByBootStrapToken(c clientset.Interface, tokenID string) error {
return wait.Poll(framework.Poll, 2*time.Minute, func() (bool, error) { return wait.Poll(framework.Poll, 2*time.Minute, func() (bool, error) {
@ -94,6 +100,7 @@ func WaitforSignedClusterInfoByBootStrapToken(c clientset.Interface, tokenID str
}) })
} }
// WaitForSignedClusterInfoGetUpdatedByBootstrapToken waits for signed cluster info to be updated by bootstrap token.
func WaitForSignedClusterInfoGetUpdatedByBootstrapToken(c clientset.Interface, tokenID string, signedToken string) error { func WaitForSignedClusterInfoGetUpdatedByBootstrapToken(c clientset.Interface, tokenID string, signedToken string) error {
return wait.Poll(framework.Poll, 2*time.Minute, func() (bool, error) { return wait.Poll(framework.Poll, 2*time.Minute, func() (bool, error) {
@ -110,6 +117,7 @@ func WaitForSignedClusterInfoGetUpdatedByBootstrapToken(c clientset.Interface, t
}) })
} }
// WaitForSignedClusterInfoByBootstrapTokenToDisappear waits for signed cluster info to be disappeared by bootstrap token.
func WaitForSignedClusterInfoByBootstrapTokenToDisappear(c clientset.Interface, tokenID string) error { func WaitForSignedClusterInfoByBootstrapTokenToDisappear(c clientset.Interface, tokenID string) error {
return wait.Poll(framework.Poll, 2*time.Minute, func() (bool, error) { return wait.Poll(framework.Poll, 2*time.Minute, func() (bool, error) {
@ -126,6 +134,7 @@ func WaitForSignedClusterInfoByBootstrapTokenToDisappear(c clientset.Interface,
}) })
} }
// WaitForBootstrapTokenSecretToDisappear waits for bootstrap token secret to be disappeared.
func WaitForBootstrapTokenSecretToDisappear(c clientset.Interface, tokenID string) error { func WaitForBootstrapTokenSecretToDisappear(c clientset.Interface, tokenID string) error {
return wait.Poll(framework.Poll, 1*time.Minute, func() (bool, error) { return wait.Poll(framework.Poll, 1*time.Minute, func() (bool, error) {
@ -137,6 +146,7 @@ func WaitForBootstrapTokenSecretToDisappear(c clientset.Interface, tokenID strin
}) })
} }
// WaitForBootstrapTokenSecretNotDisappear waits for bootstrap token secret not to be disappeared and takes time for the specified timeout as success path.
func WaitForBootstrapTokenSecretNotDisappear(c clientset.Interface, tokenID string, t time.Duration) error { func WaitForBootstrapTokenSecretNotDisappear(c clientset.Interface, tokenID string, t time.Duration) error {
err := wait.Poll(framework.Poll, t, func() (bool, error) { err := wait.Poll(framework.Poll, t, func() (bool, error) {
secret, err := c.CoreV1().Secrets(metav1.NamespaceSystem).Get(bootstrapapi.BootstrapTokenSecretPrefix+tokenID, metav1.GetOptions{}) secret, err := c.CoreV1().Secrets(metav1.NamespaceSystem).Get(bootstrapapi.BootstrapTokenSecretPrefix+tokenID, metav1.GetOptions{})

View File

@ -47,7 +47,7 @@ func (b bootstrapSecrets) Get(name string) (*corev1.Secret, error) {
// TestBootstrapTokenAuth tests the bootstrap token auth provider // TestBootstrapTokenAuth tests the bootstrap token auth provider
func TestBootstrapTokenAuth(t *testing.T) { func TestBootstrapTokenAuth(t *testing.T) {
tokenID, err := bootstraputil.GenerateTokenId() tokenID, err := bootstraputil.GenerateTokenID()
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }