test/e2e: wait for socket

Do not use podman info/version as they are expensive and clutter the log
for no reason. Just checking if we can connect to the socket should be
good enough and much faster.

Fix the non existing error checking, so that we actually see an useful
error when this does not work.

Also change the interval, why wait 2s for a retry lets take 100ms steps
instead.

Fixes #19010

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
Paul Holzinger
2023-07-10 15:41:16 +02:00
parent 70428baef3
commit 97fd03ccdf
2 changed files with 11 additions and 11 deletions

View File

@ -57,7 +57,6 @@ type PodmanTestIntegration struct {
CgroupManager string
Host HostOS
TmpDir string
RemoteStartErr error
}
var LockTmpDir string

View File

@ -6,6 +6,7 @@ package integration
import (
"errors"
"fmt"
"net"
"os"
"os/exec"
"path/filepath"
@ -94,7 +95,8 @@ func (p *PodmanTestIntegration) StartRemoteService() {
command.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
p.RemoteCommand = command
p.RemoteSession = command.Process
p.RemoteStartErr = p.DelayForService()
err = p.DelayForService()
Expect(err).ToNot(HaveOccurred())
}
func (p *PodmanTestIntegration) StopRemoteService() {
@ -145,16 +147,15 @@ func (p *PodmanTestIntegration) RestoreArtifact(image string) error {
}
func (p *PodmanTestIntegration) DelayForService() error {
var session *PodmanSessionIntegration
for i := 0; i < 5; i++ {
session = p.Podman([]string{"info"})
session.WaitWithDefaultTimeout()
if session.ExitCode() == 0 {
var err error
var conn net.Conn
for i := 0; i < 100; i++ {
conn, err = net.Dial("unix", strings.TrimPrefix(p.RemoteSocket, "unix:"))
if err == nil {
conn.Close()
return nil
} else if i == 4 {
break
}
time.Sleep(2 * time.Second)
time.Sleep(100 * time.Millisecond)
}
return fmt.Errorf("service not detected, exit code(%d)", session.ExitCode())
return fmt.Errorf("service socket not detected, timeout after 10 seconds: %w", err)
}