diff --git a/pkg/healthcheck/healthcheck.go b/pkg/healthcheck/healthcheck.go index a2bdc2d2c06..21e98165e2b 100644 --- a/pkg/healthcheck/healthcheck.go +++ b/pkg/healthcheck/healthcheck.go @@ -31,6 +31,13 @@ func MicroShiftHealthcheck(ctx context.Context, timeout time.Duration) error { } func CustomWorkloadHealthcheck(ctx context.Context, timeout time.Duration, definition string) error { + if enabled, err := microshiftServiceShouldBeOk(ctx, timeout); err != nil { + printPrerunLog() + return err + } else if !enabled { + return nil + } + workloads := map[string]NamespaceWorkloads{} err := json.Unmarshal([]byte(definition), &workloads) @@ -47,6 +54,13 @@ func CustomWorkloadHealthcheck(ctx context.Context, timeout time.Duration, defin } func EasyCustomWorkloadHealthcheck(ctx context.Context, timeout time.Duration, namespace string, deployments, daemonsets, statefulsets []string) error { + if enabled, err := microshiftServiceShouldBeOk(ctx, timeout); err != nil { + printPrerunLog() + return err + } else if !enabled { + return nil + } + workloads := map[string]NamespaceWorkloads{ namespace: { Deployments: deployments, diff --git a/test/suites/optional/healthchecks-disabled-service.robot b/test/suites/optional/healthchecks-disabled-service.robot new file mode 100644 index 00000000000..081a72e9135 --- /dev/null +++ b/test/suites/optional/healthchecks-disabled-service.robot @@ -0,0 +1,31 @@ +*** Settings *** +Documentation Test if healthcheck exits quickly when MicroShift service is disabled + +Resource ../../resources/common.resource +Resource ../../resources/microshift-process.resource +Library DateTime + +Suite Setup Setup Suite +Suite Teardown Teardown Suite + + +*** Test Cases *** +Healthchecks Should Exit Fast And Successful When MicroShift Is Disabled + [Documentation] When microshift.service is disabled, the healtchecks should + ... exit quickly and without an error. They should not attempt to query API Server. + [Tags] ushift-5381 + [Setup] Disable MicroShift + ${before}= Get Current Date + ${stdout} ${stderr} ${rc}= SSHLibrary.Execute Command + ... /etc/greenboot/check/required.d/41_microshift_running_check_multus.sh + ... sudo=True + ... return_rc=True + ... return_stderr=True + ... return_stdout=True + Should Be Equal As Integers 0 ${rc} + ${after}= Get Current Date + Should Contain ${stderr} microshift.service is not enabled + ${diff}= Subtract Date From Date ${after} ${before} + # Verify that the command returned very quickly - it didn't waste time trying to access API Server. + Should Be True ${diff} < 5 Multus healthcheck script took too long to finish + [Teardown] Enable MicroShift