Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/praefect/subcmd_check.go13
-rw-r--r--cmd/praefect/subcmd_check_test.go27
2 files changed, 37 insertions, 3 deletions
diff --git a/cmd/praefect/subcmd_check.go b/cmd/praefect/subcmd_check.go
index d84bef069..7d49ae50a 100644
--- a/cmd/praefect/subcmd_check.go
+++ b/cmd/praefect/subcmd_check.go
@@ -8,14 +8,18 @@ import (
"io"
"time"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/helper/env"
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect"
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect/config"
)
const (
- checkCmdName = "check"
+ skipChecksVar = "PRAEFECT_SKIP_STARTUP_CHECKS"
+ checkCmdName = "check"
)
+var errFatalChecksFailed = errors.New("checks failed")
+
type checkSubcommand struct {
w io.Writer
checkFuncs []praefect.CheckFunc
@@ -39,9 +43,12 @@ func (cmd *checkSubcommand) FlagSet() *flag.FlagSet {
return fs
}
-var errFatalChecksFailed = errors.New("checks failed")
-
func (cmd *checkSubcommand) Exec(flags *flag.FlagSet, cfg config.Config) error {
+ if skipChecks, _ := env.GetBool(skipChecksVar, false); skipChecks {
+ fmt.Fprintf(cmd.w, "Skipping startup checks.\n")
+ return nil
+ }
+
var allChecks []*praefect.Check
for _, checkFunc := range cmd.checkFuncs {
allChecks = append(allChecks, checkFunc(cfg))
diff --git a/cmd/praefect/subcmd_check_test.go b/cmd/praefect/subcmd_check_test.go
index ec9108a54..ddc01f8be 100644
--- a/cmd/praefect/subcmd_check_test.go
+++ b/cmd/praefect/subcmd_check_test.go
@@ -10,6 +10,7 @@ import (
"github.com/stretchr/testify/assert"
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect"
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect/config"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/testhelper"
)
func TestCheckSubcommand_Exec(t *testing.T) {
@@ -119,3 +120,29 @@ func TestCheckSubcommand_Exec(t *testing.T) {
})
}
}
+
+func TestCheckSubcommand_Skip(t *testing.T) {
+ var cfg config.Config
+ var stdout bytes.Buffer
+
+ var functionRan bool
+ checks := []praefect.CheckFunc{
+ func(cfg config.Config) *praefect.Check {
+ return &praefect.Check{
+ Name: "check 1",
+ Run: func(ctx context.Context) error {
+ functionRan = true
+ return nil
+ },
+ Severity: praefect.Fatal,
+ }
+ },
+ }
+ checkCmd := checkSubcommand{w: &stdout, checkFuncs: checks}
+ cleanup := testhelper.ModifyEnvironment(t, skipChecksVar, "true")
+ defer cleanup()
+
+ assert.Nil(t, checkCmd.Exec(flag.NewFlagSet("", flag.PanicOnError), cfg))
+ assert.False(t, functionRan)
+ assert.Equal(t, "Skipping startup checks.\n", stdout.String())
+}