From 258135221260202c1652aaac1e10499a78fe73ad Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Mon, 10 Jul 2023 15:41:16 +0200 Subject: [PATCH] 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 --- test/e2e/common_test.go | 1 - test/e2e/libpod_suite_remote_test.go | 21 +++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go index 22d0c7aa4b..331e1a8670 100644 --- a/test/e2e/common_test.go +++ b/test/e2e/common_test.go @@ -58,7 +58,6 @@ type PodmanTestIntegration struct { Host HostOS Timings []string TmpDir string - RemoteStartErr error } var LockTmpDir string diff --git a/test/e2e/libpod_suite_remote_test.go b/test/e2e/libpod_suite_remote_test.go index e328830340..ae7d97c059 100644 --- a/test/e2e/libpod_suite_remote_test.go +++ b/test/e2e/libpod_suite_remote_test.go @@ -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) }