Skip to content

Commit 2015d7c

Browse files
authored
Merge pull request #1587 from dgageot/fix-flaky-test
Fix flaky test
2 parents d9c56aa + cbd7610 commit 2015d7c

2 files changed

Lines changed: 18 additions & 22 deletions

File tree

e2e/cagent_api_test.go

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package e2e_test
22

33
import (
4-
"bytes"
54
"context"
65
"encoding/json"
7-
"fmt"
86
"io"
97
"net"
108
"net/http"
@@ -15,8 +13,9 @@ import (
1513
"github.com/stretchr/testify/assert"
1614
"github.com/stretchr/testify/require"
1715

18-
"github.com/docker/cagent/cmd/root"
16+
"github.com/docker/cagent/pkg/config"
1917
"github.com/docker/cagent/pkg/server"
18+
"github.com/docker/cagent/pkg/session"
2019
)
2120

2221
type Session struct {
@@ -38,10 +37,8 @@ func TestCagentAPI_ListSessions(t *testing.T) {
3837
{"desktop.db", 2},
3938
} {
4039
t.Run(tc.db, func(t *testing.T) {
41-
dbPath, err := filepath.Abs("testdata/db/" + tc.db)
42-
require.NoError(t, err)
40+
socketPath := startCagentAPI(t, filepath.Join("testdata", "db", tc.db))
4341

44-
socketPath := startCagentAPI(t, dbPath)
4542
client := &http.Client{
4643
Transport: &http.Transport{
4744
DialContext: func(ctx context.Context, _, _ string) (net.Conn, error) {
@@ -66,12 +63,18 @@ func TestCagentAPI_ListSessions(t *testing.T) {
6663
func startCagentAPI(t *testing.T, db string) string {
6764
t.Helper()
6865

66+
// Get absolute path to db before changing directory
67+
absDB, err := filepath.Abs(db)
68+
require.NoError(t, err)
69+
6970
tmpDir := t.TempDir()
70-
t.Chdir(tmpDir)
71+
t.Chdir(tmpDir) // Use relative socket path to avoid Unix socket path length limit
7172

72-
copyFile(t, "session.db", db)
73-
if _, err := os.Stat(db + "-wal"); err == nil {
74-
copyFile(t, "session.db-wal", db+"-wal")
73+
// Copy database files to temp directory
74+
dbCopy := tmpDir + "/session.db"
75+
copyFile(t, dbCopy, absDB)
76+
if _, err := os.Stat(absDB + "-wal"); err == nil {
77+
copyFile(t, dbCopy+"-wal", absDB+"-wal")
7578
}
7679

7780
ln, err := server.Listen(t.Context(), "unix://cagent.sock")
@@ -80,12 +83,14 @@ func startCagentAPI(t *testing.T, db string) string {
8083
_ = ln.Close()
8184
})
8285

83-
file, err := ln.(*net.UnixListener).File()
86+
sessionStore, err := session.NewSQLiteSessionStore(dbCopy)
87+
require.NoError(t, err)
88+
89+
srv, err := server.New(t.Context(), sessionStore, &config.RuntimeConfig{}, 0, nil)
8490
require.NoError(t, err)
8591

8692
go func() {
87-
var stdout, stderr bytes.Buffer
88-
_ = root.Execute(t.Context(), nil, &stdout, &stderr, "api", "-s", "session.db", "--listen", fmt.Sprintf("fd://%d", file.Fd()), "default")
93+
_ = srv.Serve(t.Context(), ln)
8994
}()
9095

9196
return "cagent.sock"

pkg/server/listen.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"net"
66
"os"
77
"path/filepath"
8-
"strconv"
98
"strings"
109
)
1110

@@ -18,14 +17,6 @@ func Listen(ctx context.Context, addr string) (net.Listener, error) {
1817
return listenNamedPipe(path)
1918
}
2019

21-
if fdStr, ok := strings.CutPrefix(addr, "fd://"); ok {
22-
fd, err := strconv.Atoi(fdStr)
23-
if err != nil {
24-
return nil, err
25-
}
26-
return net.FileListener(os.NewFile(uintptr(fd), ""))
27-
}
28-
2920
return listenTCP(ctx, addr)
3021
}
3122

0 commit comments

Comments
 (0)