This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-infra-e2e.git


The following commit(s) were added to refs/heads/main by this push:
     new a536481  add on field in cleanup (#16)
a536481 is described below

commit a53648153b502df271acc201d2cabe9bedc058d6
Author: Humbert Zhang <[email protected]>
AuthorDate: Sat Mar 27 17:29:47 2021 +0800

    add on field in cleanup (#16)
---
 commands/cleanup/cleanup.go       |  1 +
 commands/run/run.go               | 23 +++++++++++++++++++++++
 examples/simple/e2e.yaml          | 11 +++++------
 internal/components/setup/kind.go |  6 +++---
 internal/config/e2eConfig.go      |  5 +++++
 internal/constant/cleanup.go      | 26 ++++++++++++++++++++++++++
 6 files changed, 63 insertions(+), 9 deletions(-)

diff --git a/commands/cleanup/cleanup.go b/commands/cleanup/cleanup.go
index dd87482..7e48757 100644
--- a/commands/cleanup/cleanup.go
+++ b/commands/cleanup/cleanup.go
@@ -45,6 +45,7 @@ var Cleanup = &cobra.Command{
 
 func DoCleanupAccordingE2E() error {
        e2eConfig := config.GlobalConfig.E2EConfig
+
        if e2eConfig.Setup.Env == constant.Kind {
                err := cleanup.KindCleanUp(&e2eConfig)
                if err != nil {
diff --git a/commands/run/run.go b/commands/run/run.go
index 2a32006..b35da3e 100644
--- a/commands/run/run.go
+++ b/commands/run/run.go
@@ -23,6 +23,7 @@ import (
        "github.com/apache/skywalking-infra-e2e/commands/trigger"
        "github.com/apache/skywalking-infra-e2e/commands/verify"
        "github.com/apache/skywalking-infra-e2e/internal/config"
+       "github.com/apache/skywalking-infra-e2e/internal/constant"
        "github.com/apache/skywalking-infra-e2e/internal/logger"
 
        "github.com/spf13/cobra"
@@ -55,6 +56,28 @@ func runAccordingE2E() error {
 
        // cleanup part
        defer func() {
+               clean := true
+
+               switch config.GlobalConfig.E2EConfig.Cleanup.On {
+               case constant.CleanUpNever:
+                       clean = false
+               case constant.CleanUpOnSuccess:
+                       // failed
+                       if err != nil {
+                               clean = false
+                       }
+               case constant.CleanUpOnFailure:
+                       // success
+                       if err == nil {
+                               clean = false
+                       }
+               }
+
+               if !clean {
+                       logger.Log.Infof("cleanup passed according to config")
+                       return
+               }
+
                err = cleanup.DoCleanupAccordingE2E()
                if err != nil {
                        logger.Log.Errorf("cleanup part error: %s", err)
diff --git a/examples/simple/e2e.yaml b/examples/simple/e2e.yaml
index f71d3a8..46505ee 100644
--- a/examples/simple/e2e.yaml
+++ b/examples/simple/e2e.yaml
@@ -20,12 +20,7 @@ setup:
   file: kind.yaml
   steps:
     - command: |
-        if test -d "$TMPDIR"; then
-            :
-        else
-            TMPDIR=/tmp
-        fi
-
+        # kind k8s cluster is in $TMPDIR
         cp $TMPDIR/e2e-k8s.config ~/.kube/config
         export ISTIO_VERSION=1.9.1
         istioctl version || (curl -L https://istio.io/downloadIstio | sh - && 
sudo mv $PWD/istio-$ISTIO_VERSION/bin/istioctl /usr/local/bin/)
@@ -46,6 +41,10 @@ setup:
           for: condition=Available
   timeout: 1200
 
+cleanup:
+  # always never success failure
+  on: always
+
 trigger:
   action: http
   interval: 3s
diff --git a/internal/components/setup/kind.go 
b/internal/components/setup/kind.go
index 915a207..3108f58 100644
--- a/internal/components/setup/kind.go
+++ b/internal/components/setup/kind.go
@@ -58,9 +58,9 @@ func KindSetup(e2eConfig *config.E2EConfig) error {
                return fmt.Errorf("no kind config file was provided")
        }
 
-       manifests := e2eConfig.Setup.Steps
-       // if no manifests was provided, then no need to create the cluster.
-       if manifests == nil {
+       steps := e2eConfig.Setup.Steps
+       // if no steps was provided, then no need to create the cluster.
+       if steps == nil {
                logger.Log.Info("no steps is provided")
                return nil
        }
diff --git a/internal/config/e2eConfig.go b/internal/config/e2eConfig.go
index 23620f1..4758473 100644
--- a/internal/config/e2eConfig.go
+++ b/internal/config/e2eConfig.go
@@ -23,6 +23,7 @@ import "github.com/apache/skywalking-infra-e2e/internal/util"
 // E2EConfig corresponds to configuration file e2e.yaml.
 type E2EConfig struct {
        Setup   Setup        `yaml:"setup"`
+       Cleanup Cleanup      `yaml:"cleanup"`
        Trigger Trigger      `yaml:"trigger"`
        Verify  []VerifyCase `yaml:"verify"`
 }
@@ -34,6 +35,10 @@ type Setup struct {
        Timeout int    `yaml:"timeout"`
 }
 
+type Cleanup struct {
+       On string `yaml:"on"`
+}
+
 type Step struct {
        Path    string `yaml:"path"`
        Command string `yaml:"command"`
diff --git a/internal/constant/cleanup.go b/internal/constant/cleanup.go
new file mode 100644
index 0000000..72a72f4
--- /dev/null
+++ b/internal/constant/cleanup.go
@@ -0,0 +1,26 @@
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package constant
+
+const (
+       CleanUpOnSuccess = "success"
+       CleanUpOnFailure = "failure"
+       CleanUpAlways    = "always"
+       CleanUpNever     = "never"
+)

Reply via email to