From 0ef42f7bcbdde3b92dc9fade76e65d8f3a3d3ad7 Mon Sep 17 00:00:00 2001 From: Guillaume Tardif Date: Fri, 13 Nov 2020 11:49:44 +0100 Subject: [PATCH] Fix converting run health check options Signed-off-by: Guillaume Tardif --- cli/options/run/opts.go | 29 +++++++++++++++++------------ cli/options/run/opts_test.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 12 deletions(-) diff --git a/cli/options/run/opts.go b/cli/options/run/opts.go index eaca7a2ec..bd6a8b2a0 100644 --- a/cli/options/run/opts.go +++ b/cli/options/run/opts.go @@ -86,13 +86,6 @@ func (r *Opts) ToContainerConfig(image string) (containers.ContainerConfig, erro envVars = append(envVars, vars...) } - var healthCmd []string - var healthInterval types.Duration - if len(r.HealthCmd) > 0 { - healthCmd = strings.Split(r.HealthCmd, " ") - healthInterval = types.Duration(r.HealthInterval) - } - return containers.ContainerConfig{ ID: r.Name, Image: image, @@ -106,14 +99,26 @@ func (r *Opts) ToContainerConfig(image string) (containers.ContainerConfig, erro RestartPolicyCondition: restartPolicy, DomainName: r.DomainName, AutoRemove: r.Rm, - Healthcheck: containers.Healthcheck{ - Disable: len(healthCmd) == 0, - Test: healthCmd, - Interval: healthInterval, - }, + Healthcheck: r.toHealthcheck(), }, nil } +func (r *Opts) toHealthcheck() containers.Healthcheck { + var healthCmd []string + + if len(r.HealthCmd) > 0 { + healthCmd = strings.Split(r.HealthCmd, " ") + } + return containers.Healthcheck{ + Disable: len(healthCmd) == 0, + Test: healthCmd, + Interval: types.Duration(r.HealthInterval), + StartPeriod: types.Duration(r.HealthStartPeriod), + Timeout: types.Duration(r.HealthTimeout), + Retries: r.HealthRetries, + } +} + var restartPolicyMap = map[string]string{ "": containers.RestartPolicyNone, containers.RestartPolicyNone: containers.RestartPolicyNone, diff --git a/cli/options/run/opts_test.go b/cli/options/run/opts_test.go index 547d0968f..639a71f93 100644 --- a/cli/options/run/opts_test.go +++ b/cli/options/run/opts_test.go @@ -20,7 +20,9 @@ import ( "errors" "regexp" "testing" + "time" + "github.com/compose-spec/compose-go/types" "github.com/google/go-cmp/cmp/cmpopts" "gotest.tools/v3/assert" "gotest.tools/v3/assert/cmp" @@ -227,3 +229,31 @@ func TestValidateRestartPolicy(t *testing.T) { assert.Equal(t, testCase.expected, result) } } + +func TestToHealthcheck(t *testing.T) { + testOpt := Opts{ + HealthCmd: "curl", + } + + assert.DeepEqual(t, testOpt.toHealthcheck(), containers.Healthcheck{ + Disable: false, + Test: []string{"curl"}, + }) + + testOpt = Opts{ + HealthCmd: "curl", + HealthRetries: 3, + HealthInterval: 5 * time.Second, + HealthTimeout: 2 * time.Second, + HealthStartPeriod: 10 * time.Second, + } + + assert.DeepEqual(t, testOpt.toHealthcheck(), containers.Healthcheck{ + Disable: false, + Test: []string{"curl"}, + Retries: 3, + Interval: types.Duration(5 * time.Second), + StartPeriod: types.Duration(10 * time.Second), + Timeout: types.Duration(2 * time.Second), + }) +}