Skip to content

Commit 353caf3

Browse files
fix: only return the first of each script's run
1 parent 23cf61a commit 353caf3

File tree

5 files changed

+29
-12
lines changed

5 files changed

+29
-12
lines changed

coderd/database/dbgen/dbgen.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,17 @@ func WorkspaceAgentScript(t testing.TB, db database.Store, orig database.Workspa
211211
return scripts[0]
212212
}
213213

214-
func WorkspaceAgentScriptTimings(t testing.TB, db database.Store, script database.WorkspaceAgentScript, count int) []database.WorkspaceAgentScriptTiming {
215-
timings := make([]database.WorkspaceAgentScriptTiming, count)
216-
for i := range count {
214+
func WorkspaceAgentScripts(t testing.TB, db database.Store, orig database.WorkspaceAgentScript, count int) []database.WorkspaceAgentScript {
215+
scripts := make([]database.WorkspaceAgentScript, 0, count)
216+
for range count {
217+
scripts = append(scripts, WorkspaceAgentScript(t, db, orig))
218+
}
219+
return scripts
220+
}
221+
222+
func WorkspaceAgentScriptTimings(t testing.TB, db database.Store, scripts []database.WorkspaceAgentScript) []database.WorkspaceAgentScriptTiming {
223+
timings := make([]database.WorkspaceAgentScriptTiming, len(scripts))
224+
for i, script := range scripts {
217225
timings[i] = WorkspaceAgentScriptTiming(t, db, database.WorkspaceAgentScriptTiming{
218226
ScriptID: script.ID,
219227
})

coderd/database/queries.sql.go

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

coderd/database/queries/workspaceagents.sql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ RETURNING workspace_agent_script_timings.*;
304304

305305
-- name: GetWorkspaceAgentScriptTimingsByBuildID :many
306306
SELECT
307-
workspace_agent_script_timings.*,
307+
DISTINCT ON (workspace_agent_script_timings.script_id) workspace_agent_script_timings.*,
308308
workspace_agent_scripts.display_name,
309309
workspace_agents.id as workspace_agent_id,
310310
workspace_agents.name as workspace_agent_name
@@ -313,4 +313,5 @@ INNER JOIN workspace_agent_scripts ON workspace_agent_scripts.id = workspace_age
313313
INNER JOIN workspace_agents ON workspace_agents.id = workspace_agent_scripts.workspace_agent_id
314314
INNER JOIN workspace_resources ON workspace_resources.id = workspace_agents.resource_id
315315
INNER JOIN workspace_builds ON workspace_builds.job_id = workspace_resources.job_id
316-
WHERE workspace_builds.id = $1;
316+
WHERE workspace_builds.id = $1
317+
ORDER BY workspace_agent_script_timings.script_id, workspace_agent_script_timings.started_at;

coderd/workspacebuilds_test.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/stretchr/testify/require"
1515
"go.opentelemetry.io/otel"
1616
"go.opentelemetry.io/otel/propagation"
17+
"golang.org/x/exp/slices"
1718
"golang.org/x/xerrors"
1819

1920
"cdr.dev/slog"
@@ -1558,10 +1559,10 @@ func TestWorkspaceBuildTimings(t *testing.T) {
15581559
agent := dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{
15591560
ResourceID: resource.ID,
15601561
})
1561-
script := dbgen.WorkspaceAgentScript(t, db, database.WorkspaceAgentScript{
1562+
scripts := dbgen.WorkspaceAgentScripts(t, db, database.WorkspaceAgentScript{
15621563
WorkspaceAgentID: agent.ID,
1563-
})
1564-
agentScriptTimings := dbgen.WorkspaceAgentScriptTimings(t, db, script, 5)
1564+
}, 5)
1565+
agentScriptTimings := dbgen.WorkspaceAgentScriptTimings(t, db, scripts)
15651566

15661567
// When: fetching timings for the build
15671568
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
@@ -1571,6 +1572,12 @@ func TestWorkspaceBuildTimings(t *testing.T) {
15711572

15721573
// Then: return a response with the expected timings
15731574
require.Len(t, res.AgentScriptTimings, 5)
1575+
slices.SortFunc(res.AgentScriptTimings, func(a, b codersdk.AgentScriptTiming) int {
1576+
return a.StartedAt.Compare(b.StartedAt)
1577+
})
1578+
slices.SortFunc(agentScriptTimings, func(a, b database.WorkspaceAgentScriptTiming) int {
1579+
return a.StartedAt.Compare(b.StartedAt)
1580+
})
15741581
for i := range res.AgentScriptTimings {
15751582
timingRes := res.AgentScriptTimings[i]
15761583
genTiming := agentScriptTimings[i]

coderd/workspaces_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3913,10 +3913,10 @@ func TestWorkspaceTimings(t *testing.T) {
39133913
agent := dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{
39143914
ResourceID: resource.ID,
39153915
})
3916-
script := dbgen.WorkspaceAgentScript(t, db, database.WorkspaceAgentScript{
3916+
scripts := dbgen.WorkspaceAgentScripts(t, db, database.WorkspaceAgentScript{
39173917
WorkspaceAgentID: agent.ID,
3918-
})
3919-
dbgen.WorkspaceAgentScriptTimings(t, db, script, 3)
3918+
}, 3)
3919+
dbgen.WorkspaceAgentScriptTimings(t, db, scripts)
39203920

39213921
// When: fetching the timings
39223922
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)

0 commit comments

Comments
 (0)