This is an automated email from the ASF dual-hosted git repository. zhangke pushed a commit to branch cleanup in repository https://gitbox.apache.org/repos/asf/skywalking-infra-e2e.git
commit 93f19b94f7f352d385edd52ea42123c7ba7e2f61 Author: HumbertZhang <[email protected]> AuthorDate: Sat Mar 27 16:58:07 2021 +0800 add on field in cleanup --- 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" +)
