Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1dbcf0f

Browse files
committed
use agentexec
1 parentb53552d commit1dbcf0f

File tree

4 files changed

+24
-13
lines changed

4 files changed

+24
-13
lines changed

‎agent/agent.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ func New(options Options) Agent {
124124
options.ScriptDataDir=options.TempDir
125125
}
126126
ifoptions.ExchangeToken==nil {
127-
options.ExchangeToken=func(ctx context.Context) (string,error) {
127+
options.ExchangeToken=func(_ context.Context) (string,error) {
128128
return"",nil
129129
}
130130
}
@@ -147,7 +147,7 @@ func New(options Options) Agent {
147147
options.Execer=agentexec.DefaultExecer
148148
}
149149
ifoptions.ContainerLister==nil {
150-
options.ContainerLister=&agentcontainers.DockerCLILister{}
150+
options.ContainerLister=agentcontainers.NewDocker(options.Execer)
151151
}
152152

153153
hardCtx,hardCancel:=context.WithCancel(context.Background())

‎agent/agentcontainers/containers_dockercli.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,35 @@ import (
66
"context"
77
"encoding/json"
88
"fmt"
9-
"os/exec"
109
"sort"
1110
"strconv"
1211
"strings"
1312
"time"
1413

14+
"github.com/coder/coder/v2/agent/agentexec"
1515
"github.com/coder/coder/v2/codersdk"
1616

1717
"golang.org/x/exp/maps"
1818
"golang.org/x/xerrors"
1919
)
2020

2121
// DockerCLILister is a ContainerLister that lists containers using the docker CLI
22-
typeDockerCLIListerstruct{}
22+
typeDockerCLIListerstruct {
23+
execer agentexec.Execer
24+
}
2325

2426
var_Lister=&DockerCLILister{}
2527

26-
func (*DockerCLILister)List(ctx context.Context) (codersdk.WorkspaceAgentListContainersResponse,error) {
28+
funcNewDocker(execer agentexec.Execer)Lister {
29+
return&DockerCLILister{
30+
execer:agentexec.DefaultExecer,
31+
}
32+
}
33+
34+
func (dcl*DockerCLILister)List(ctx context.Context) (codersdk.WorkspaceAgentListContainersResponse,error) {
2735
varstdoutBuf,stderrBuf bytes.Buffer
2836
// List all container IDs, one per line, with no truncation
29-
cmd:=exec.CommandContext(ctx,"docker","ps","--all","--quiet","--no-trunc")
37+
cmd:=dcl.execer.CommandContext(ctx,"docker","ps","--all","--quiet","--no-trunc")
3038
cmd.Stdout=&stdoutBuf
3139
cmd.Stderr=&stderrBuf
3240
iferr:=cmd.Run();err!=nil {
@@ -56,7 +64,7 @@ func (*DockerCLILister) List(ctx context.Context) (codersdk.WorkspaceAgentListCo
5664
stderrBuf.Reset()
5765
// nolint: gosec // We are not executing user input, these IDs come from
5866
// `docker ps`.
59-
cmd=exec.CommandContext(ctx,"docker",append([]string{"inspect"},ids...)...)
67+
cmd=dcl.execer.CommandContext(ctx,"docker",append([]string{"inspect"},ids...)...)
6068
cmd.Stdout=&stdoutBuf
6169
cmd.Stderr=&stderrBuf
6270
iferr:=cmd.Run();err!=nil {

‎agent/agentcontainers/containers_internal_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"go.uber.org/mock/gomock"
1616

1717
"github.com/coder/coder/v2/agent/agentcontainers/acmock"
18+
"github.com/coder/coder/v2/agent/agentexec"
1819
"github.com/coder/coder/v2/codersdk"
1920
"github.com/coder/coder/v2/testutil"
2021
"github.com/coder/quartz"
@@ -52,7 +53,7 @@ func TestDockerCLIContainerLister(t *testing.T) {
5253
assert.NoError(t,pool.Purge(ct),"Could not purge resource %q",ct.Container.Name)
5354
})
5455

55-
dcl:=DockerCLILister{}
56+
dcl:=NewDocker(agentexec.DefaultExecer)
5657
ctx:=testutil.Context(t,testutil.WaitShort)
5758
actual,err:=dcl.List(ctx)
5859
require.NoError(t,err,"Could not list containers")

‎coderd/workspaceagents_test.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import (
3131
"cdr.dev/slog/sloggers/slogtest"
3232
"github.com/coder/coder/v2/agent"
3333
"github.com/coder/coder/v2/agent/agentcontainers"
34+
"github.com/coder/coder/v2/agent/agentcontainers/acmock"
35+
"github.com/coder/coder/v2/agent/agentexec"
3436
"github.com/coder/coder/v2/agent/agenttest"
3537
agentproto"github.com/coder/coder/v2/agent/proto"
3638
"github.com/coder/coder/v2/coderd/coderdtest"
@@ -1115,7 +1117,7 @@ func TestWorkspaceAgentContainers(t *testing.T) {
11151117
returnagents
11161118
}).Do()
11171119
_=agenttest.New(t,client.URL,r.AgentToken,func(opts*agent.Options) {
1118-
opts.ContainerLister=&agentcontainers.DockerCLILister{}
1120+
opts.ContainerLister=agentcontainers.NewDocker(agentexec.DefaultExecer)
11191121
})
11201122
resources:=coderdtest.NewWorkspaceAgentWaiter(t,client,r.Workspace.ID).Wait()
11211123
require.Len(t,resources,1,"expected one resource")
@@ -1182,18 +1184,18 @@ func TestWorkspaceAgentContainers(t *testing.T) {
11821184

11831185
for_,tc:=range []struct {
11841186
namestring
1185-
setupMockfunc(*agentcontainers.MockLister) (codersdk.WorkspaceAgentListContainersResponse,error)
1187+
setupMockfunc(*acmock.MockLister) (codersdk.WorkspaceAgentListContainersResponse,error)
11861188
}{
11871189
{
11881190
name:"test response",
1189-
setupMock:func(mcl*agentcontainers.MockLister) (codersdk.WorkspaceAgentListContainersResponse,error) {
1191+
setupMock:func(mcl*acmock.MockLister) (codersdk.WorkspaceAgentListContainersResponse,error) {
11901192
mcl.EXPECT().List(gomock.Any()).Return(testResponse,nil).Times(1)
11911193
returntestResponse,nil
11921194
},
11931195
},
11941196
{
11951197
name:"error response",
1196-
setupMock:func(mcl*agentcontainers.MockLister) (codersdk.WorkspaceAgentListContainersResponse,error) {
1198+
setupMock:func(mcl*acmock.MockLister) (codersdk.WorkspaceAgentListContainersResponse,error) {
11971199
mcl.EXPECT().List(gomock.Any()).Return(codersdk.WorkspaceAgentListContainersResponse{},assert.AnError).Times(1)
11981200
return codersdk.WorkspaceAgentListContainersResponse{},assert.AnError
11991201
},
@@ -1204,7 +1206,7 @@ func TestWorkspaceAgentContainers(t *testing.T) {
12041206
t.Parallel()
12051207

12061208
ctrl:=gomock.NewController(t)
1207-
mcl:=agentcontainers.NewMockLister(ctrl)
1209+
mcl:=acmock.NewMockLister(ctrl)
12081210
expected,expectedErr:=tc.setupMock(mcl)
12091211
client,db:=coderdtest.NewWithDatabase(t,&coderdtest.Options{})
12101212
user:=coderdtest.CreateFirstUser(t,client)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp