mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
2840fdcb54
relates to: https://github.com/coder/internal/issues/1094 This is number 2 of 5 pull requests in an effort to add agent script ordering. It adds a drpc API that is exposed via a local socket. This API serves access to a lightweight DAG based dependency manager that was inspired by systemd. In follow-up PRs: * This unit manager will be plumbed into the workspace agent struct. * CLI commands will use this agentsocket api to express dependencies between coder scripts I used an LLM to produce some of these changes, but I have conducted thorough self review and consider this contribution to be ready for an external reviewer.
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package agentsocket_test
|
|
|
|
import (
|
|
"path/filepath"
|
|
"runtime"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"cdr.dev/slog"
|
|
"github.com/coder/coder/v2/agent/agentsocket"
|
|
)
|
|
|
|
func TestServer(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
if runtime.GOOS == "windows" {
|
|
t.Skip("agentsocket is not supported on Windows")
|
|
}
|
|
|
|
t.Run("StartStop", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
socketPath := filepath.Join(t.TempDir(), "test.sock")
|
|
logger := slog.Make().Leveled(slog.LevelDebug)
|
|
server, err := agentsocket.NewServer(socketPath, logger)
|
|
require.NoError(t, err)
|
|
require.NoError(t, server.Close())
|
|
})
|
|
|
|
t.Run("AlreadyStarted", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
socketPath := filepath.Join(t.TempDir(), "test.sock")
|
|
logger := slog.Make().Leveled(slog.LevelDebug)
|
|
server1, err := agentsocket.NewServer(socketPath, logger)
|
|
require.NoError(t, err)
|
|
defer server1.Close()
|
|
_, err = agentsocket.NewServer(socketPath, logger)
|
|
require.ErrorContains(t, err, "create socket")
|
|
})
|
|
|
|
t.Run("AutoSocketPath", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
socketPath := filepath.Join(t.TempDir(), "test.sock")
|
|
logger := slog.Make().Leveled(slog.LevelDebug)
|
|
server, err := agentsocket.NewServer(socketPath, logger)
|
|
require.NoError(t, err)
|
|
require.NoError(t, server.Close())
|
|
})
|
|
}
|