mirror of
https://github.com/containers/podman
synced 2024-10-20 09:13:46 +00:00
598bde52d0
Add the ability to manually run a container's healthcheck command. This is only the first phase of implementing the healthcheck. Subsequent pull requests will deal with the exposing the results and history of healthchecks as well as the scheduling. Signed-off-by: baude <bbaude@redhat.com>
86 lines
2.4 KiB
Go
86 lines
2.4 KiB
Go
// +build !remoteclient
|
|
|
|
package integration
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
. "github.com/containers/libpod/test/utils"
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Podman healthcheck run", func() {
|
|
var (
|
|
tempdir string
|
|
err error
|
|
podmanTest *PodmanTestIntegration
|
|
)
|
|
|
|
BeforeEach(func() {
|
|
tempdir, err = CreateTempDirInTempDir()
|
|
if err != nil {
|
|
os.Exit(1)
|
|
}
|
|
podmanTest = PodmanTestCreate(tempdir)
|
|
podmanTest.RestoreAllArtifacts()
|
|
})
|
|
|
|
AfterEach(func() {
|
|
podmanTest.Cleanup()
|
|
f := CurrentGinkgoTestDescription()
|
|
timedResult := fmt.Sprintf("Test: %s completed in %f seconds", f.TestText, f.Duration.Seconds())
|
|
GinkgoWriter.Write([]byte(timedResult))
|
|
|
|
})
|
|
|
|
It("podman healthcheck run bogus container", func() {
|
|
session := podmanTest.Podman([]string{"healthcheck", "run", "foobar"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session.ExitCode()).To(Not(Equal(0)))
|
|
})
|
|
|
|
It("podman healthcheck on valid container", func() {
|
|
podmanTest.RestoreArtifact(healthcheck)
|
|
session := podmanTest.Podman([]string{"run", "-dt", "--name", "hc", healthcheck})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session.ExitCode()).To(Equal(0))
|
|
|
|
hc := podmanTest.Podman([]string{"healthcheck", "run", "hc"})
|
|
hc.WaitWithDefaultTimeout()
|
|
Expect(hc.ExitCode()).To(Equal(0))
|
|
})
|
|
|
|
It("podman healthcheck that should fail", func() {
|
|
session := podmanTest.Podman([]string{"run", "-dt", "--name", "hc", "docker.io/libpod/badhealthcheck:latest"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session.ExitCode()).To(Equal(0))
|
|
|
|
hc := podmanTest.Podman([]string{"healthcheck", "run", "hc"})
|
|
hc.WaitWithDefaultTimeout()
|
|
Expect(hc.ExitCode()).To(Equal(1))
|
|
})
|
|
|
|
It("podman healthcheck on stopped container", func() {
|
|
podmanTest.RestoreArtifact(healthcheck)
|
|
session := podmanTest.Podman([]string{"run", "-dt", "--name", "hc", healthcheck, "ls"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session.ExitCode()).To(Equal(0))
|
|
|
|
hc := podmanTest.Podman([]string{"healthcheck", "run", "hc"})
|
|
hc.WaitWithDefaultTimeout()
|
|
Expect(hc.ExitCode()).To(Equal(125))
|
|
})
|
|
|
|
It("podman healthcheck on container without healthcheck", func() {
|
|
session := podmanTest.Podman([]string{"run", "-dt", "--name", "hc", ALPINE, "top"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session.ExitCode()).To(Equal(0))
|
|
|
|
hc := podmanTest.Podman([]string{"healthcheck", "run", "hc"})
|
|
hc.WaitWithDefaultTimeout()
|
|
Expect(hc.ExitCode()).To(Equal(125))
|
|
})
|
|
})
|