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

Commit6fdad02

Browse files
fix: avoid sharingecho.Responses across tests (#17211)
Closescoder/internal#551We've noticed lots of flakes in `go test -race` tests that use the echo provisioner. I believe the root cause of this to be#17012, where we started mutating the `echo.Responses`. This only caused issues as we previously shared `echo.Responses` across multiple test cases.This PR is therefore the same as#17128, but I believe this is all the cases where an `echo.Responses` is shared between tests - including tests that haven't flaked (yet).
1 parentd575e7f commit6fdad02

File tree

3 files changed

+59
-52
lines changed

3 files changed

+59
-52
lines changed

‎cli/restart_test.go

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,16 @@ import (
2020
funcTestRestart(t*testing.T) {
2121
t.Parallel()
2222

23-
echoResponses:=prepareEchoResponses([]*proto.RichParameter{
24-
{
25-
Name:ephemeralParameterName,
26-
Description:ephemeralParameterDescription,
27-
Mutable:true,
28-
Ephemeral:true,
29-
},
30-
})
23+
echoResponses:=func()*echo.Responses {
24+
returnprepareEchoResponses([]*proto.RichParameter{
25+
{
26+
Name:ephemeralParameterName,
27+
Description:ephemeralParameterDescription,
28+
Mutable:true,
29+
Ephemeral:true,
30+
},
31+
})
32+
}
3133

3234
t.Run("OK",func(t*testing.T) {
3335
t.Parallel()
@@ -66,7 +68,7 @@ func TestRestart(t *testing.T) {
6668
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
6769
owner:=coderdtest.CreateFirstUser(t,client)
6870
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
69-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
71+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
7072
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
7173
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
7274
workspace:=coderdtest.CreateWorkspace(t,member,template.ID)
@@ -120,7 +122,7 @@ func TestRestart(t *testing.T) {
120122
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
121123
owner:=coderdtest.CreateFirstUser(t,client)
122124
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
123-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
125+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
124126
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
125127
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
126128
workspace:=coderdtest.CreateWorkspace(t,member,template.ID)
@@ -174,7 +176,7 @@ func TestRestart(t *testing.T) {
174176
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
175177
owner:=coderdtest.CreateFirstUser(t,client)
176178
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
177-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
179+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
178180
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
179181
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
180182
workspace:=coderdtest.CreateWorkspace(t,member,template.ID)
@@ -228,7 +230,7 @@ func TestRestart(t *testing.T) {
228230
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
229231
owner:=coderdtest.CreateFirstUser(t,client)
230232
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
231-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
233+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
232234
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
233235
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
234236
workspace:=coderdtest.CreateWorkspace(t,member,template.ID)
@@ -280,24 +282,26 @@ func TestRestart(t *testing.T) {
280282
funcTestRestartWithParameters(t*testing.T) {
281283
t.Parallel()
282284

283-
echoResponses:=&echo.Responses{
284-
Parse:echo.ParseComplete,
285-
ProvisionPlan: []*proto.Response{
286-
{
287-
Type:&proto.Response_Plan{
288-
Plan:&proto.PlanComplete{
289-
Parameters: []*proto.RichParameter{
290-
{
291-
Name:immutableParameterName,
292-
Description:immutableParameterDescription,
293-
Required:true,
285+
echoResponses:=func()*echo.Responses {
286+
return&echo.Responses{
287+
Parse:echo.ParseComplete,
288+
ProvisionPlan: []*proto.Response{
289+
{
290+
Type:&proto.Response_Plan{
291+
Plan:&proto.PlanComplete{
292+
Parameters: []*proto.RichParameter{
293+
{
294+
Name:immutableParameterName,
295+
Description:immutableParameterDescription,
296+
Required:true,
297+
},
294298
},
295299
},
296300
},
297301
},
298302
},
299-
},
300-
ProvisionApply:echo.ApplyComplete,
303+
ProvisionApply:echo.ApplyComplete,
304+
}
301305
}
302306

303307
t.Run("DoNotAskForImmutables",func(t*testing.T) {
@@ -307,7 +311,7 @@ func TestRestartWithParameters(t *testing.T) {
307311
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
308312
owner:=coderdtest.CreateFirstUser(t,client)
309313
member,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
310-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
314+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
311315
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
312316
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
313317
workspace:=coderdtest.CreateWorkspace(t,member,template.ID,func(cwr*codersdk.CreateWorkspaceRequest) {

‎cli/start_test.go

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -79,25 +79,27 @@ var (
7979
funcTestStart(t*testing.T) {
8080
t.Parallel()
8181

82-
echoResponses:=&echo.Responses{
83-
Parse:echo.ParseComplete,
84-
ProvisionPlan: []*proto.Response{
85-
{
86-
Type:&proto.Response_Plan{
87-
Plan:&proto.PlanComplete{
88-
Parameters: []*proto.RichParameter{
89-
{
90-
Name:ephemeralParameterName,
91-
Description:ephemeralParameterDescription,
92-
Mutable:true,
93-
Ephemeral:true,
82+
echoResponses:=func()*echo.Responses {
83+
return&echo.Responses{
84+
Parse:echo.ParseComplete,
85+
ProvisionPlan: []*proto.Response{
86+
{
87+
Type:&proto.Response_Plan{
88+
Plan:&proto.PlanComplete{
89+
Parameters: []*proto.RichParameter{
90+
{
91+
Name:ephemeralParameterName,
92+
Description:ephemeralParameterDescription,
93+
Mutable:true,
94+
Ephemeral:true,
95+
},
9496
},
9597
},
9698
},
9799
},
98100
},
99-
},
100-
ProvisionApply:echo.ApplyComplete,
101+
ProvisionApply:echo.ApplyComplete,
102+
}
101103
}
102104

103105
t.Run("BuildOptions",func(t*testing.T) {
@@ -106,7 +108,7 @@ func TestStart(t *testing.T) {
106108
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
107109
owner:=coderdtest.CreateFirstUser(t,client)
108110
member,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
109-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
111+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
110112
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
111113
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
112114
workspace:=coderdtest.CreateWorkspace(t,member,template.ID)
@@ -160,7 +162,7 @@ func TestStart(t *testing.T) {
160162
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
161163
owner:=coderdtest.CreateFirstUser(t,client)
162164
member,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
163-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
165+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
164166
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
165167
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
166168
workspace:=coderdtest.CreateWorkspace(t,member,template.ID)

‎cli/update_test.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,21 +101,22 @@ func TestUpdateWithRichParameters(t *testing.T) {
101101
immutableParameterValue="4"
102102
)
103103

104-
echoResponses:=prepareEchoResponses([]*proto.RichParameter{
105-
{Name:firstParameterName,Description:firstParameterDescription,Mutable:true},
106-
{Name:immutableParameterName,Description:immutableParameterDescription,Mutable:false},
107-
{Name:secondParameterName,Description:secondParameterDescription,Mutable:true},
108-
{Name:ephemeralParameterName,Description:ephemeralParameterDescription,Mutable:true,Ephemeral:true},
109-
},
110-
)
104+
echoResponses:=func()*echo.Responses {
105+
returnprepareEchoResponses([]*proto.RichParameter{
106+
{Name:firstParameterName,Description:firstParameterDescription,Mutable:true},
107+
{Name:immutableParameterName,Description:immutableParameterDescription,Mutable:false},
108+
{Name:secondParameterName,Description:secondParameterDescription,Mutable:true},
109+
{Name:ephemeralParameterName,Description:ephemeralParameterDescription,Mutable:true,Ephemeral:true},
110+
})
111+
}
111112

112113
t.Run("ImmutableCannotBeCustomized",func(t*testing.T) {
113114
t.Parallel()
114115

115116
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
116117
owner:=coderdtest.CreateFirstUser(t,client)
117118
member,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
118-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
119+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
119120
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
120121

121122
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
@@ -166,7 +167,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
166167
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
167168
owner:=coderdtest.CreateFirstUser(t,client)
168169
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
169-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
170+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
170171
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
171172

172173
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
@@ -231,7 +232,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
231232
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
232233
owner:=coderdtest.CreateFirstUser(t,client)
233234
member,memberUser:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
234-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses)
235+
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,echoResponses())
235236
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
236237

237238
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp