Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 77e3844

Browse files
committed
some small revisions
1 parent 717e4c2 commit 77e3844

File tree

4 files changed

+43
-50
lines changed

4 files changed

+43
-50
lines changed

coderd/coderdtest/coderdtest.go

+26-4
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,22 @@ func New(t *testing.T, options *Options) *codersdk.Client {
8080
return client
8181
}
8282

83-
// newWithAPI constructs a codersdk client connected to the returned in-memory API instance.
84-
func newWithAPI(t *testing.T, options *Options) (*codersdk.Client, *coderd.API) {
83+
// NewWithProvisionerCloser returns a client as well as a handle to close
84+
// the provisioner. This is a temporary function while work is done to
85+
// standardize how provisioners are registered with coderd. The option
86+
// to include a provisioner is set to true for convenience.
87+
func NewWithProvisionerCloser(t *testing.T, options *Options) (*codersdk.Client, io.Closer) {
88+
if options == nil {
89+
options = &Options{}
90+
}
91+
options.IncludeProvisionerD = true
92+
client, close := newWithAPI(t, options)
93+
return client, close
94+
}
95+
96+
// newWithAPI constructs a codersdk client connected to an in-memory API instance.
97+
// The returned closer closes a provisioner if it was provided
98+
func newWithAPI(t *testing.T, options *Options) (*codersdk.Client, io.Closer) {
8599
if options == nil {
86100
options = &Options{}
87101
}
@@ -170,17 +184,21 @@ func newWithAPI(t *testing.T, options *Options) (*codersdk.Client, *coderd.API)
170184
Telemetry: telemetry.NewNoop(),
171185
})
172186
srv.Config.Handler = coderAPI.Handler
187+
188+
var provisionerCloser io.Closer = nopcloser{}
173189
if options.IncludeProvisionerD {
174-
_ = NewProvisionerDaemon(t, coderAPI)
190+
provisionerCloser = NewProvisionerDaemon(t, coderAPI)
175191
}
192+
176193
t.Cleanup(func() {
177194
cancelFunc()
178195
_ = turnServer.Close()
179196
srv.Close()
180197
_ = coderAPI.Close()
198+
_ = provisionerCloser.Close()
181199
})
182200

183-
return codersdk.New(serverURL), coderAPI
201+
return codersdk.New(serverURL), provisionerCloser
184202
}
185203

186204
// NewProvisionerDaemon launches a provisionerd instance configured to work
@@ -649,3 +667,7 @@ type roundTripper func(req *http.Request) (*http.Response, error)
649667
func (r roundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
650668
return r(req)
651669
}
670+
671+
type nopcloser struct{}
672+
673+
func (nopcloser) Close() error { return nil }

coderd/templateversions_test.go

+13-18
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,9 @@ func TestTemplateVersionDryRun(t *testing.T) {
553553

554554
t.Run("OK", func(t *testing.T) {
555555
t.Parallel()
556-
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerD: true})
556+
client, closer := coderdtest.NewWithProvisionerCloser(t, nil)
557+
defer closer.Close()
558+
557559
user := coderdtest.CreateFirstUser(t, client)
558560

559561
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
@@ -574,16 +576,10 @@ func TestTemplateVersionDryRun(t *testing.T) {
574576
version = coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
575577
require.Equal(t, codersdk.ProvisionerJobSucceeded, version.Job.Status)
576578

579+
closer.Close()
577580
// Create the dry-run
578581
job, err := client.CreateTemplateVersionDryRun(context.Background(), version.ID, codersdk.CreateTemplateVersionDryRunRequest{
579-
ParameterValues: []codersdk.CreateParameterRequest{
580-
{
581-
Name: echo.ParameterExecKey,
582-
// Sleep for a ridiculously long time so we don't accidentally complete
583-
// before we successfully cancel the job.
584-
SourceValue: echo.ParameterSleep(time.Minute * 5),
585-
},
586-
},
582+
ParameterValues: []codersdk.CreateParameterRequest{},
587583
})
588584
require.NoError(t, err)
589585

@@ -592,7 +588,7 @@ func TestTemplateVersionDryRun(t *testing.T) {
592588
assert.NoError(t, err)
593589

594590
t.Logf("Status: %s", job.Status)
595-
return job.Status == codersdk.ProvisionerJobRunning
591+
return job.Status == codersdk.ProvisionerJobPending
596592
}, 5*time.Second, 25*time.Millisecond)
597593

598594
err = client.CancelTemplateVersionDryRun(context.Background(), version.ID, job.ID)
@@ -603,7 +599,7 @@ func TestTemplateVersionDryRun(t *testing.T) {
603599
assert.NoError(t, err)
604600

605601
t.Logf("Status: %s", job.Status)
606-
return job.Status == codersdk.ProvisionerJobCanceled
602+
return job.Status == codersdk.ProvisionerJobCanceling
607603
}, 5*time.Second, 25*time.Millisecond)
608604
})
609605

@@ -636,7 +632,9 @@ func TestTemplateVersionDryRun(t *testing.T) {
636632

637633
t.Run("AlreadyCanceled", func(t *testing.T) {
638634
t.Parallel()
639-
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerD: true})
635+
client, closer := coderdtest.NewWithProvisionerCloser(t, nil)
636+
defer closer.Close()
637+
640638
user := coderdtest.CreateFirstUser(t, client)
641639
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
642640
Parse: echo.ParseComplete,
@@ -656,14 +654,11 @@ func TestTemplateVersionDryRun(t *testing.T) {
656654
version = coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
657655
require.Equal(t, codersdk.ProvisionerJobSucceeded, version.Job.Status)
658656

657+
closer.Close()
658+
659659
// Create the dry-run
660660
job, err := client.CreateTemplateVersionDryRun(context.Background(), version.ID, codersdk.CreateTemplateVersionDryRunRequest{
661-
ParameterValues: []codersdk.CreateParameterRequest{
662-
{
663-
Name: echo.ParameterExecKey,
664-
SourceValue: echo.ParameterSleep(time.Minute * 5),
665-
},
666-
},
661+
ParameterValues: []codersdk.CreateParameterRequest{},
667662
})
668663
require.NoError(t, err)
669664

coderd/workspaces_test.go

+4-16
Original file line numberDiff line numberDiff line change
@@ -614,28 +614,16 @@ func TestPostWorkspaceBuild(t *testing.T) {
614614

615615
t.Run("AlreadyActive", func(t *testing.T) {
616616
t.Parallel()
617-
client := coderdtest.New(t, &coderdtest.Options{
618-
IncludeProvisionerD: true,
619-
})
617+
client, closer := coderdtest.NewWithProvisionerCloser(t, nil)
618+
defer closer.Close()
620619

621620
user := coderdtest.CreateFirstUser(t, client)
622621
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
623622
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
624623
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
624+
closer.Close()
625625
// Close here so workspace build doesn't process!
626-
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID,
627-
// Provide a parameter that will cause the workspace build to
628-
// hang.
629-
func(req *codersdk.CreateWorkspaceRequest) {
630-
req.ParameterValues = []codersdk.CreateParameterRequest{
631-
{
632-
Name: echo.ParameterExecKey,
633-
SourceValue: echo.ParameterSleep(time.Minute * 5),
634-
SourceScheme: codersdk.ParameterSourceSchemeData,
635-
DestinationScheme: codersdk.ParameterDestinationSchemeProvisionerVariable,
636-
},
637-
}
638-
})
626+
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
639627
_, err := client.CreateWorkspaceBuild(context.Background(), workspace.ID, codersdk.CreateWorkspaceBuildRequest{
640628
TemplateVersionID: template.ActiveVersionID,
641629
Transition: codersdk.WorkspaceTransitionStart,

provisioner/echo/serve.go

-12
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"fmt"
88
"path/filepath"
99
"strings"
10-
"time"
1110

1211
"golang.org/x/xerrors"
1312
protobuf "google.golang.org/protobuf/proto"
@@ -21,7 +20,6 @@ import (
2120
const (
2221
ParameterExecKey = "echo.exec"
2322

24-
sleepKey = "sleep"
2523
errorKey = "error"
2624
successKey = "success"
2725
)
@@ -30,10 +28,6 @@ func ParameterError(s string) string {
3028
return formatExecValue(errorKey, s)
3129
}
3230

33-
func ParameterSleep(dur time.Duration) string {
34-
return formatExecValue(sleepKey, dur.String())
35-
}
36-
3731
func ParameterSucceed() string {
3832
return formatExecValue(successKey, "")
3933
}
@@ -117,12 +111,6 @@ func (e *echo) Provision(stream proto.DRPCProvisioner_ProvisionStream) error {
117111
}
118112

119113
switch toks[0] {
120-
case sleepKey:
121-
dur, err := time.ParseDuration(toks[1])
122-
if err != nil {
123-
return xerrors.Errorf("parse duration: %w", err)
124-
}
125-
time.Sleep(dur)
126114
case errorKey:
127115
return xerrors.Errorf("returning error: %v", toks[1])
128116
default:

0 commit comments

Comments
 (0)