diff --git a/test/helm_task_test.go b/test/helm_task_test.go index b5b1cc7fbb9..f0438fc678c 100644 --- a/test/helm_task_test.go +++ b/test/helm_task_test.go @@ -57,8 +57,8 @@ func TestHelmDeployPipelineRun(t *testing.T) { c, namespace := setup(t, logger) setupClusterBindingForHelm(c, t, namespace, logger) - knativetest.CleanupOnInterrupt(func() { tearDown(logger, c.KubeClient, namespace) }, logger) - defer tearDown(logger, c.KubeClient, namespace) + knativetest.CleanupOnInterrupt(func() { tearDown(t, logger, c, namespace) }, logger) + defer tearDown(t, logger, c, namespace) logger.Infof("Creating Git PipelineResource %s", sourceResourceName) if _, err := c.PipelineResourceClient.Create(getGoHelloworldGitResource(namespace)); err != nil { diff --git a/test/init_test.go b/test/init_test.go index 61c9cd23401..92bef6573d6 100644 --- a/test/init_test.go +++ b/test/init_test.go @@ -19,7 +19,10 @@ package test import ( "flag" + "fmt" + "github.com/ghodss/yaml" "os" + "strings" "testing" knativetest "github.com/knative/pkg/test" @@ -44,13 +47,34 @@ func setup(t *testing.T, logger *logging.BaseLogger) (*clients, string) { return c, namespace } -func tearDown(logger *logging.BaseLogger, kubeClient *knativetest.KubeClient, namespace string) { - if kubeClient != nil { - logger.Infof("Deleting namespace %s", namespace) - if err := kubeClient.Kube.CoreV1().Namespaces().Delete(namespace, &metav1.DeleteOptions{}); err != nil { - logger.Errorf("Failed to delete namespace %s: %s", namespace, err) +func header(logger *logging.BaseLogger, text string) { + left := "### " + right := " ###" + txt := left + text + right + bar := strings.Repeat("#", len(txt)) + logger.Info(bar) + logger.Info(txt) + logger.Info(bar) +} + +func tearDown(t *testing.T, logger *logging.BaseLogger, cs *clients, namespace string) { + if cs.KubeClient == nil { + return + } + if t.Failed() { + header(logger, fmt.Sprintf("Dumping objects from %s", namespace)) + bs, err := getCRDYaml(cs) + if err != nil { + logger.Error(err) + } else { + logger.Info(string(bs)) } } + + logger.Infof("Deleting namespace %s", namespace) + if err := cs.KubeClient.Kube.CoreV1().Namespaces().Delete(namespace, &metav1.DeleteOptions{}); err != nil { + logger.Errorf("Failed to delete namespace %s: %s", namespace, err) + } } func initializeLogsAndMetrics() { @@ -83,3 +107,72 @@ func TestMain(m *testing.M) { c := m.Run() os.Exit(c) } + +func getCRDYaml(cs *clients) ([]byte, error) { + var output []byte + printOrAdd := func(kind, name string, i interface{}) { + bs, err := yaml.Marshal(i) + if err != nil { + return + } + output = append(output, []byte("\n---\n")...) + output = append(output, bs...) + } + + ps, err := cs.PipelineClient.List(metav1.ListOptions{}) + if err != nil { + return nil, err + } + for _, i := range ps.Items { + printOrAdd("Pipeline", i.Name, i) + } + + pps, err := cs.PipelineParamsClient.List(metav1.ListOptions{}) + if err != nil { + return nil, err + } + for _, i := range pps.Items { + printOrAdd("PipelineParamses", i.Name, i) + } + + bds, err := cs.BuildClient.List(metav1.ListOptions{}) + if err != nil { + return nil, err + } + for _, i := range bds.Items { + printOrAdd("Build", i.Name, i) + } + + prs, err := cs.PipelineResourceClient.List(metav1.ListOptions{}) + if err != nil { + return nil, err + } + for _, i := range prs.Items { + printOrAdd("PipelineResource", i.Name, i) + } + + prrs, err := cs.PipelineRunClient.List(metav1.ListOptions{}) + if err != nil { + return nil, err + } + for _, i := range prrs.Items { + printOrAdd("PipelineRun", i.Name, i) + } + + ts, err := cs.TaskClient.List(metav1.ListOptions{}) + if err != nil { + return nil, err + } + for _, i := range ts.Items { + printOrAdd("Task", i.Name, i) + } + trs, err := cs.TaskRunClient.List(metav1.ListOptions{}) + if err != nil { + return nil, err + } + for _, i := range trs.Items { + printOrAdd("TaskRun", i.Name, i) + } + return output, nil +} + diff --git a/test/kaniko_task_test.go b/test/kaniko_task_test.go index 9323d5cfa31..f1fb6441223 100644 --- a/test/kaniko_task_test.go +++ b/test/kaniko_task_test.go @@ -196,8 +196,8 @@ func TestKanikoTaskRun(t *testing.T) { t.Errorf("Expected to get docker repo") } - knativetest.CleanupOnInterrupt(func() { tearDown(logger, c.KubeClient, namespace) }, logger) - defer tearDown(logger, c.KubeClient, namespace) + knativetest.CleanupOnInterrupt(func() { tearDown(t, logger, c, namespace) }, logger) + defer tearDown(t, logger, c, namespace) hasSecretConfig, err := createSecret(c.KubeClient, namespace) if err != nil { diff --git a/test/pipeline_test.go b/test/pipeline_test.go index 57525b793c0..0886c1c8065 100644 --- a/test/pipeline_test.go +++ b/test/pipeline_test.go @@ -32,8 +32,8 @@ func TestPipeline(t *testing.T) { logger := logging.GetContextLogger(t.Name()) c, namespace := setup(t, logger) - knativetest.CleanupOnInterrupt(func() { tearDown(logger, c.KubeClient, namespace) }, logger) - defer tearDown(logger, c.KubeClient, namespace) + knativetest.CleanupOnInterrupt(func() { tearDown(t, logger, c, namespace) }, logger) + defer tearDown(t, logger, c, namespace) p, err := c.PipelineClient.List(metav1.ListOptions{}) if err != nil { diff --git a/test/pipelinerun_test.go b/test/pipelinerun_test.go index c422b17d241..3d169328d7c 100644 --- a/test/pipelinerun_test.go +++ b/test/pipelinerun_test.go @@ -38,8 +38,8 @@ func TestPipelineRun(t *testing.T) { logger := logging.GetContextLogger(t.Name()) c, namespace := setup(t, logger) - knativetest.CleanupOnInterrupt(func() { tearDown(logger, c.KubeClient, namespace) }, logger) - defer tearDown(logger, c.KubeClient, namespace) + knativetest.CleanupOnInterrupt(func() { tearDown(t, logger, c, namespace) }, logger) + defer tearDown(t, logger, c, namespace) logger.Infof("Creating Pipeline Resources in namespace %s", namespace) if _, err := c.TaskClient.Create(getHelloWorldTask(namespace, []string{"echo", taskOutput})); err != nil { @@ -59,9 +59,9 @@ func TestPipelineRun(t *testing.T) { if err := WaitForPipelineRunState(c, hwPipelineRunName, func(tr *v1alpha1.PipelineRun) (bool, error) { c := tr.Status.GetCondition(duckv1alpha1.ConditionSucceeded) if c != nil { - if c.Status == corev1.ConditionTrue { + if c.Status == corev1.ConditionFalse { return true, nil - } else if c.Status == corev1.ConditionFalse { + } else if c.Status == corev1.ConditionTrue { return true, fmt.Errorf("pipeline run %s failed!", hwPipelineRunName) } } @@ -102,8 +102,8 @@ func TestPipelineRun_WithServiceAccount(t *testing.T) { logger := logging.GetContextLogger(t.Name()) c, namespace := setup(t, logger) - knativetest.CleanupOnInterrupt(func() { tearDown(logger, c.KubeClient, namespace) }, logger) - defer tearDown(logger, c.KubeClient, namespace) + knativetest.CleanupOnInterrupt(func() { tearDown(t, logger, c, namespace) }, logger) + defer tearDown(t, logger, c, namespace) logger.Infof("Creating pipeline resources in namespace %s", namespace) diff --git a/test/taskrun_test.go b/test/taskrun_test.go index d7b178c08b4..93985d07ed0 100644 --- a/test/taskrun_test.go +++ b/test/taskrun_test.go @@ -34,8 +34,8 @@ func TestTaskRun(t *testing.T) { logger := logging.GetContextLogger(t.Name()) c, namespace := setup(t, logger) - knativetest.CleanupOnInterrupt(func() { tearDown(logger, c.KubeClient, namespace) }, logger) - defer tearDown(logger, c.KubeClient, namespace) + knativetest.CleanupOnInterrupt(func() { tearDown(t, logger, c, namespace) }, logger) + defer tearDown(t, logger, c, namespace) logger.Infof("Creating Task and TaskRun in namespace %s", namespace) if _, err := c.TaskClient.Create(getHelloWorldTask(namespace, []string{"/bin/sh", "-c", fmt.Sprintf("echo %s", taskOutput)})); err != nil {