From 11ec2889f34ef4becdef60f58fde49d31a5ad25d Mon Sep 17 00:00:00 2001 From: Adam Kaplan Date: Thu, 26 Mar 2020 14:09:58 -0400 Subject: [PATCH] Test timing of SA pull secret creation * Ensure service account pull secrets are created in 2 seconds or less. * Dump secrets instead of ocm logs for pull secret controller e2e tests. --- .../controller_manager/pull_secret.go | 20 +++++++++++++++++-- .../generated/zz_generated.annotations.go | 1 + test/extended/util/framework.go | 11 ++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/test/extended/controller_manager/pull_secret.go b/test/extended/controller_manager/pull_secret.go index ba7688b4c3ff..c54aaa36ea69 100644 --- a/test/extended/controller_manager/pull_secret.go +++ b/test/extended/controller_manager/pull_secret.go @@ -133,8 +133,8 @@ var _ = g.Describe("[sig-devex][Feature:OpenShiftControllerManager]", func() { g.AfterEach(func() { if g.CurrentGinkgoTestDescription().Failed { - g.By("dumping openshift-controller-manager logs") - exutil.DumpPodLogsStartingWithInNamespace("controller-manager", "openshift-controller-manager", oc.AsAdmin()) + g.By("dumping secrets") + exutil.DumpSecretStates(oc) } }) @@ -197,4 +197,20 @@ var _ = g.Describe("[sig-devex][Feature:OpenShiftControllerManager]", func() { t.Fatalf("error waiting for pull secret deletion: %v", err) } }) + + g.It("checks service account pull secret creation timing", func() { + clusterAdminKubeClient := oc.AdminKubeClient() + saNamespace := oc.Namespace() + + g.By("creating test service account") + sa := &corev1.ServiceAccount{ + ObjectMeta: metav1.ObjectMeta{Name: "new-sa", Namespace: saNamespace}, + } + + sa, err := clusterAdminKubeClient.CoreV1().ServiceAccounts(sa.Namespace).Create(context.Background(), sa, metav1.CreateOptions{}) + o.Expect(err).NotTo(o.HaveOccurred()) + g.By("waiting up to 2 seconds for the service account's pull secret to be created") + _, _, err = waitForServiceAccountPullSecret(clusterAdminKubeClient, sa.Namespace, sa.Name, 20, 100*time.Millisecond) + o.Expect(err).NotTo(o.HaveOccurred()) + }) }) diff --git a/test/extended/util/annotate/generated/zz_generated.annotations.go b/test/extended/util/annotate/generated/zz_generated.annotations.go index fcd5f6c7d017..b104adf88dd9 100644 --- a/test/extended/util/annotate/generated/zz_generated.annotations.go +++ b/test/extended/util/annotate/generated/zz_generated.annotations.go @@ -792,6 +792,7 @@ var annotations = map[string]string{ "[Top Level] [sig-devex][Feature:Jenkins][Slow] Jenkins repos e2e openshift using slow openshift pipeline build Sync plugin tests using the persistent template": "using the persistent template [Suite:openshift]", "[Top Level] [sig-devex][Feature:OpenShiftControllerManager] TestAutomaticCreationOfPullSecrets": "TestAutomaticCreationOfPullSecrets [Suite:openshift/conformance/parallel]", "[Top Level] [sig-devex][Feature:OpenShiftControllerManager] TestDockercfgTokenDeletedController": "TestDockercfgTokenDeletedController [Suite:openshift/conformance/parallel]", + "[Top Level] [sig-devex][Feature:OpenShiftControllerManager] checks service account pull secret creation timing": "checks service account pull secret creation timing [Suite:openshift/conformance/parallel]", "[Top Level] [sig-devex][Feature:Templates] template-api TestTemplate": "TestTemplate [Suite:openshift/conformance/parallel]", "[Top Level] [sig-devex][Feature:Templates] template-api TestTemplateTransformationFromConfig": "TestTemplateTransformationFromConfig [Suite:openshift/conformance/parallel]", "[Top Level] [sig-devex][Feature:Templates] templateinstance creation with invalid object reports error should report a failure on creation": "should report a failure on creation [Suite:openshift/conformance/parallel]", diff --git a/test/extended/util/framework.go b/test/extended/util/framework.go index c6879ac43bf7..df1c861c3789 100644 --- a/test/extended/util/framework.go +++ b/test/extended/util/framework.go @@ -480,6 +480,17 @@ func DumpConfigMapStates(oc *CLI) { e2e.Logf(out) } +// DumpSecretStates dumps the state of all Secrets in the CLI's current namespace +func DumpSecretStates(oc *CLI) { + e2e.Logf("Dumping secret states for namespace %s", oc.Namespace()) + out, err := oc.AsAdmin().Run("get").Args("secrets", "-o", "yaml").Output() + if err != nil { + e2e.Logf("Error dumping secret states: %v", err) + return + } + e2e.Logf(out) +} + // GetMasterThreadDump will get a golang thread stack dump func GetMasterThreadDump(oc *CLI) { out, err := oc.AsAdmin().Run("get").Args("--raw", "/debug/pprof/goroutine?debug=2").Output()