mirror of
https://github.com/containers/podman.git
synced 2025-06-25 20:26:51 +08:00
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>
This commit is contained in:
@ -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"})
|
||||
|
Reference in New Issue
Block a user