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

Commit6afb914

Browse files
committed
Test parameter usage
1 parente605a15 commit6afb914

File tree

2 files changed

+94
-6
lines changed

2 files changed

+94
-6
lines changed

‎coderd/insights.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77
"net/http"
8+
"sort"
89
"time"
910

1011
"github.com/google/uuid"
@@ -339,6 +340,11 @@ func convertTemplateInsightsParameters(parameterRows []database.GetTemplateParam
339340
for_,param:=rangeparametersByNum {
340341
parametersUsage=append(parametersUsage,*param)
341342
}
343+
344+
sort.Slice(parametersUsage,func(i,jint)bool {
345+
returnparametersUsage[i].Name<parametersUsage[j].Name
346+
})
347+
342348
returnparametersUsage,nil
343349
}
344350

‎coderd/insights_test.go

Lines changed: 88 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/coder/coder/codersdk"
2121
"github.com/coder/coder/codersdk/agentsdk"
2222
"github.com/coder/coder/provisioner/echo"
23+
"github.com/coder/coder/provisionersdk/proto"
2324
"github.com/coder/coder/testutil"
2425
)
2526

@@ -231,6 +232,32 @@ func TestUserLatencyInsights_BadRequest(t *testing.T) {
231232
funcTestTemplateInsights(t*testing.T) {
232233
t.Parallel()
233234

235+
const (
236+
firstParameterName="first_parameter"
237+
firstParameterDisplayName="First PARAMETER"
238+
firstParameterType="string"
239+
firstParameterDescription="This is first parameter"
240+
firstParameterValue="abc"
241+
242+
secondParameterName="second_parameter"
243+
secondParameterDisplayName="Second PARAMETER"
244+
secondParameterType="number"
245+
secondParameterDescription="This is second parameter"
246+
secondParameterValue="123"
247+
248+
thirdParameterName="third_parameter"
249+
thirdParameterDisplayName="Third PARAMETER"
250+
thirdParameterType="string"
251+
thirdParameterDescription="This is third parameter"
252+
thirdParameterValue="bbb"
253+
thirdParameterOptionName1="This is AAA"
254+
thirdParameterOptionValue1="aaa"
255+
thirdParameterOptionName2="This is BBB"
256+
thirdParameterOptionValue2="bbb"
257+
thirdParameterOptionName3="This is CCC"
258+
thirdParameterOptionValue3="ccc"
259+
)
260+
234261
logger:=slogtest.Make(t,nil)
235262
opts:=&coderdtest.Options{
236263
IncludeProvisionerDaemon:true,
@@ -241,15 +268,39 @@ func TestTemplateInsights(t *testing.T) {
241268
user:=coderdtest.CreateFirstUser(t,client)
242269
authToken:=uuid.NewString()
243270
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,&echo.Responses{
244-
Parse:echo.ParseComplete,
245-
ProvisionPlan:echo.ProvisionComplete,
271+
Parse:echo.ParseComplete,
272+
ProvisionPlan: []*proto.Provision_Response{
273+
{
274+
Type:&proto.Provision_Response_Complete{
275+
Complete:&proto.Provision_Complete{
276+
Parameters: []*proto.RichParameter{
277+
{Name:firstParameterName,DisplayName:firstParameterDisplayName,Type:firstParameterType,Description:firstParameterDescription,Required:true},
278+
{Name:secondParameterName,DisplayName:secondParameterDisplayName,Type:secondParameterType,Description:secondParameterDescription,Required:true},
279+
{Name:thirdParameterName,DisplayName:thirdParameterDisplayName,Type:thirdParameterType,Description:thirdParameterDescription,Required:true,Options: []*proto.RichParameterOption{
280+
{Name:thirdParameterOptionName1,Value:thirdParameterOptionValue1},
281+
{Name:thirdParameterOptionName2,Value:thirdParameterOptionValue2},
282+
{Name:thirdParameterOptionName3,Value:thirdParameterOptionValue3},
283+
}},
284+
},
285+
},
286+
},
287+
},
288+
},
246289
ProvisionApply:echo.ProvisionApplyWithAgent(authToken),
247290
})
248291
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
249292
require.Empty(t,template.BuildTimeStats[codersdk.WorkspaceTransitionStart])
250-
251293
coderdtest.AwaitTemplateVersionJob(t,client,version.ID)
252-
workspace:=coderdtest.CreateWorkspace(t,client,user.OrganizationID,template.ID)
294+
295+
buildParameters:= []codersdk.WorkspaceBuildParameter{
296+
{Name:firstParameterName,Value:firstParameterValue},
297+
{Name:secondParameterName,Value:secondParameterValue},
298+
{Name:thirdParameterName,Value:thirdParameterValue},
299+
}
300+
301+
workspace:=coderdtest.CreateWorkspace(t,client,user.OrganizationID,template.ID,func(cwr*codersdk.CreateWorkspaceRequest) {
302+
cwr.RichParameterValues=buildParameters
303+
})
253304
coderdtest.AwaitWorkspaceBuildJob(t,client,workspace.LatestBuild.ID)
254305

255306
// Start an agent so that we can generate stats.
@@ -346,12 +397,43 @@ func TestTemplateInsights(t *testing.T) {
346397
}
347398
}
348399
// The full timeframe is <= 24h, so the interval matches exactly.
349-
assert.Len(t,resp.IntervalReports,1,"want one interval report")
400+
require.Len(t,resp.IntervalReports,1,"want one interval report")
350401
assert.WithinDuration(t,req.StartTime,resp.IntervalReports[0].StartTime,0)
351402
assert.WithinDuration(t,req.EndTime,resp.IntervalReports[0].EndTime,0)
352403
assert.Equal(t,resp.IntervalReports[0].ActiveUsers,int64(1),"want one active user in the interval report")
353404

354-
// TODO(mafredri): Verify template parameter insights (first we need to generate them).
405+
// The workspace uses 3 parameters
406+
require.Len(t,resp.Report.ParametersUsage,3)
407+
assert.Equal(t,firstParameterName,resp.Report.ParametersUsage[0].Name)
408+
assert.Equal(t,firstParameterDisplayName,resp.Report.ParametersUsage[0].DisplayName)
409+
assert.Contains(t,resp.Report.ParametersUsage[0].Values, codersdk.TemplateParameterValue{
410+
Value:firstParameterValue,
411+
Count:1,
412+
})
413+
assert.Contains(t,resp.Report.ParametersUsage[0].TemplateIDs,template.ID)
414+
assert.Empty(t,resp.Report.ParametersUsage[0].Options)
415+
416+
assert.Equal(t,secondParameterName,resp.Report.ParametersUsage[1].Name)
417+
assert.Equal(t,secondParameterDisplayName,resp.Report.ParametersUsage[1].DisplayName)
418+
assert.Contains(t,resp.Report.ParametersUsage[1].Values, codersdk.TemplateParameterValue{
419+
Value:secondParameterValue,
420+
Count:1,
421+
})
422+
assert.Contains(t,resp.Report.ParametersUsage[1].TemplateIDs,template.ID)
423+
assert.Empty(t,resp.Report.ParametersUsage[1].Options)
424+
425+
assert.Equal(t,thirdParameterName,resp.Report.ParametersUsage[2].Name)
426+
assert.Equal(t,thirdParameterDisplayName,resp.Report.ParametersUsage[2].DisplayName)
427+
assert.Contains(t,resp.Report.ParametersUsage[2].Values, codersdk.TemplateParameterValue{
428+
Value:thirdParameterValue,
429+
Count:1,
430+
})
431+
assert.Contains(t,resp.Report.ParametersUsage[2].TemplateIDs,template.ID)
432+
assert.Equal(t, []codersdk.TemplateVersionParameterOption{
433+
{Name:thirdParameterOptionName1,Value:thirdParameterOptionValue1},
434+
{Name:thirdParameterOptionName2,Value:thirdParameterOptionValue2},
435+
{Name:thirdParameterOptionName3,Value:thirdParameterOptionValue3},
436+
},resp.Report.ParametersUsage[2].Options)
355437
}
356438

357439
funcTestTemplateInsights_BadRequest(t*testing.T) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp