8000 Apply PR reviews · coder/coder@e1a61d8 · GitHub
[go: up one dir, main page]

Skip to content

Commit e1a61d8

Browse files
committed
Apply PR reviews
1 parent e8bbecd commit e1a61d8

File tree

10 files changed

+200
-86
lines changed

10 files changed

+200
-86
lines changed

coderd/apidoc/docs.go

Lines changed: 27 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 27 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/workspacebuilds.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -979,7 +979,7 @@ func (api *API) buildTimings(ctx context.Context, build database.WorkspaceBuild)
979979
for _, t := range provisionerTimings {
980980
res.ProvisionerTimings = append(res.ProvisionerTimings, codersdk.Provision 8000 erTiming{
981981
JobID: t.JobID,
982-
Stage: string(t.Stage),
982+
Stage: codersdk.TimingStage(t.Stage),
983983
Source: t.Source,
984984
Action: t.Action,
985985
Resource: t.Resource,
@@ -992,7 +992,7 @@ func (api *API) buildTimings(ctx context.Context, build database.WorkspaceBuild)
992992
StartedAt: t.StartedAt,
993993
EndedAt: t.EndedAt,
994994
ExitCode: t.ExitCode,
995-
Stage: string(t.Stage),
995+
Stage: codersdk.TimingStage(t.Stage),
996996
Status: string(t.Status),
997997
DisplayName: t.DisplayName,
998998
WorkspaceAgentID: t.WorkspaceAgentID.String(),
@@ -1004,7 +1004,7 @@ func (api *API) buildTimings(ctx context.Context, build database.WorkspaceBuild)
10041004
WorkspaceAgentID: agent.ID.String(),
10051005
WorkspaceAgentName: agent.Name,
10061006
StartedAt: agent.CreatedAt,
1007-
Stage: "connect",
1007+
Stage: codersdk.TimingStageConnect,
10081008
EndedAt: agent.FirstConnectedAt.Time,
10091009
})
10101010
}

coderd/workspacebuilds_test.go

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,6 +1382,35 @@ func TestWorkspaceBuildTimings(t *testing.T) {
13821382
t.Run("AgentConnectionTimings", func(t *testing.T) {
13831383
t.Parallel()
13841384

1385+
// Given: a build with an agent
1386+
build := makeBuild()
1387+
resource := dbgen.WorkspaceResource(t, db, database.WorkspaceResource{
1388+
JobID: build.JobID,
1389+
})
1390+
agent := dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{
1391+
ResourceID: resource.ID,
1392+
})
1393+
1394+
// When: fetching timings for the build
1395+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1396+
t.Cleanup(cancel)
1397+
res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1398+
require.NoError(t, err)
1399+
1400+
// Then: return a response with the expected timings
1401+
require.Len(t, res.AgentConnectionTimings, 1)
1402+
for i := range res.ProvisionerTimings {
1403+
timingRes := res.AgentConnectionTimings[i]
1404+
require.Equal(t, agent.ID.String(), timingRes.WorkspaceAgentID)
1405+
require.Equal(t, agent.Name, timingRes.WorkspaceAgentName)
1406+
require.NotEmpty(t, timingRes.StartedAt)
1407+
require.NotEmpty(t, timingRes.EndedAt)
1408+
}
1409+
})
1410+
1411+
t.Run("MultipleAgents", func(t *testing.T) {
1412+
t.Parallel()
1413+
13851414
// Given: a build with multiple agents
13861415
build := makeBuild()
13871416
resource := dbgen.WorkspaceResource(t, db, database.WorkspaceResource{
@@ -1402,12 +1431,5 @@ func TestWorkspaceBuildTimings(t *testing.T) {
14021431

14031432
// Then: return a response with the expected timings
14041433
require.Len(t, res.AgentConnectionTimings, 5)
1405-
for i := range res.ProvisionerTimings {
1406-
timingRes := res.AgentConnectionTimings[i]
1407-
require.Equal(t, agents[i].ID.String(), timingRes.WorkspaceAgentID)
1408-
require.Equal(t, agents[i].Name, timingRes.WorkspaceAgentName)
1409-
require.NotEmpty(t, timingRes.StartedAt)
1410-
require.NotEmpty(t, timingRes.EndedAt)
1411-
}
14121434
})
14131435
}

codersdk/workspacebuilds.go

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -175,37 +175,55 @@ func (c *Client) WorkspaceBuildParameters(ctx context.Context, build uuid.UUID)
175175
return params, json.NewDecoder(res.Body).Decode(&params)
176176
}
177177

178+
type TimingStage string
179+
180+
const (
181+
// Based on ProvisionerJobTimingStage
182+
TimingStageInit TimingStage = "init"
183+
TimingStagePlan TimingStage = "plan"
184+
TimingStageGraph TimingStage = "graph"
185+
TimingStageApply TimingStage = "apply"
186+
// Based on WorkspaceAgentScriptTimingStage
187+
TimingStageStart TimingStage = "start"
188+
TimingStageStop TimingStage = "stop"
189+
TimingStageCron TimingStage = "cron"
190+
// Custom timing stage to represent the time taken to connect to an agent
191+
TimingStageConnect TimingStage = "connect"
192+
)
193+
178194
type ProvisionerTiming struct {
179-
JobID uuid.UUID `json:"job_id" format:"uuid"`
180-
StartedAt time.Time `json:"started_at" format:"date-time"`
181-
EndedAt time.Time `json:"ended_at" format:"date-time"`
182-
Stage string `json:"stage"`
183-
Source string `json:"source"`
184-
Action string `json:"action"`
185-
Resource string `json:"resource"`
195+
JobID uuid.UUID `json:"job_id" format:"uuid"`
196+
StartedAt time.Time `json:"started_at" format:"date-time"`
197+
EndedAt time.Time `json:"ended_at" format:"date-time"`
198+
Stage TimingStage `json:"stage"`
199+
Source string `json:"source"`
200+
Action string `json:"action"`
201+
Resource string `json:"resource"`
186202
}
187203

188204
type AgentScriptTiming struct {
189-
StartedAt time.Time `json:"started_at" format:"date-time"`
190-
EndedAt time.Time `json:"ended_at" format:"date-time"`
191-
ExitCode int32 `json:"exit_code"`
192-
Stage string `json:"stage"`
193-
Status string `json:"status"`
194-
DisplayName string `json:"display_name"`
195-
WorkspaceAgentID string `json:"workspace_agent_id"`
196-
WorkspaceAgentName string `json:"workspace_agent_name"`
205+
StartedAt time.Time `json:"started_at" format:"date-time"`
206+
EndedAt time.Time `json:"ended_at" format:"date-time"`
207+
ExitCode int32 `json:"exit_code"`
208+
Stage TimingStage `json:"stage"`
209+
Status string `json:"status"`
210+
DisplayName string `json:"display_name"`
211+
WorkspaceAgentID string `json:"workspace_agent_id"`
212+
WorkspaceAgentName string `json:"workspace_agent_name"`
197213
}
198214

199215
type AgentConnectionTiming struct {
200-
StartedAt time.Time `json:"started_at" format:"date-time"`
201-
EndedAt time.Time `json:"ended_at" format:"date-time"`
202-
Stage string `json:"stage"`
203-
WorkspaceAgentID string `json:"workspace_agent_id"`
204-
WorkspaceAgentName string `json:"workspace_agent_name"`
216+
StartedAt time.Time `json:"started_at" format:"date-time"`
217+
EndedAt time.Time `json:"ended_at" format:"date-time"`
218+
Stage TimingStage `json:"stage"`
219+
WorkspaceAgentID string `json:"workspace_agent_id"`
220+
WorkspaceAgentName string `json:"workspace_agent_name"`
205221
}
206222

207223
type WorkspaceBuildTimings struct {
208-
ProvisionerTimings []ProvisionerTiming `json:"provisioner_timings"`
224+
ProvisionerTimings []ProvisionerTiming `json:"provisioner_timings"`
225+
// TODO: Consolidate agent-related timing metrics into a single struct when
226+
// updating the API version
209227
AgentScriptTimings []AgentScriptTiming `json:"agent_script_timings"`
210228
AgentConnectionTimings []AgentConnectionTiming `json:"agent_connection_timings"`
211229
}

docs/reference/api/builds.md

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
0