diff options
author | Chris Evich <cevich@redhat.com> | 2021-10-26 16:30:17 -0400 |
---|---|---|
committer | Chris Evich <cevich@redhat.com> | 2021-10-26 16:39:14 -0400 |
commit | d53789068a6cd2269e5f899930ae6c9327eee573 (patch) | |
tree | 758bc96c58a4140f8d166fb4516c65448adf3e0a /test/e2e | |
parent | 12439543721f0c361a09866c8bba4220ef4e414c (diff) | |
download | podman-d53789068a6cd2269e5f899930ae6c9327eee573.tar.gz podman-d53789068a6cd2269e5f899930ae6c9327eee573.tar.bz2 podman-d53789068a6cd2269e5f899930ae6c9327eee573.zip |
Fix systemd PID1 test
Previously this test used an ad-hoc timeout mechanism to synchronize
with output of the container ID. However, depending on runtime
conditions this may not correctly correspond with complete startup
of the systemd process. Consequently this test fails under some
conditions with an error like:
`System has not been booted with systemd as init system (PID 1). Can't
operate. Failed to connect to bus: Host is down`
Fix this by using the more appropriate `WaitContainerReady()`
against output from system startup, close to finalization. In this way,
the test status command cannot run until systemd is fully operational.
Signed-off-by: Chris Evich <cevich@redhat.com>
Diffstat (limited to 'test/e2e')
-rw-r--r-- | test/e2e/systemd_test.go | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/test/e2e/systemd_test.go b/test/e2e/systemd_test.go index a1b25b723..98def3d8f 100644 --- a/test/e2e/systemd_test.go +++ b/test/e2e/systemd_test.go @@ -4,7 +4,6 @@ import ( "io/ioutil" "os" "strings" - "time" . "github.com/containers/podman/v3/test/utils" . "github.com/onsi/ginkgo" @@ -82,27 +81,13 @@ WantedBy=multi-user.target run := podmanTest.Podman([]string{"run", "--name", ctrName, "-t", "-i", "-d", ubi_init, "/sbin/init"}) run.WaitWithDefaultTimeout() Expect(run).Should(Exit(0)) - ctrID := run.OutputToString() logs := podmanTest.Podman([]string{"logs", ctrName}) logs.WaitWithDefaultTimeout() Expect(logs).Should(Exit(0)) // Give container 10 seconds to start - started := false - for i := 0; i < 10; i++ { - runningCtrs := podmanTest.Podman([]string{"ps", "-q", "--no-trunc"}) - runningCtrs.WaitWithDefaultTimeout() - Expect(runningCtrs).Should(Exit(0)) - - if strings.Contains(runningCtrs.OutputToString(), ctrID) { - started = true - break - } - - time.Sleep(1 * time.Second) - } - + started := podmanTest.WaitContainerReady(ctrName, "Reached target Multi-User System.", 30, 1) Expect(started).To(BeTrue()) systemctl := podmanTest.Podman([]string{"exec", "-t", "-i", ctrName, "systemctl", "status", "--no-pager"}) |