Skip to content

Commit c26d6ab

Browse files
committed
test: add sub agent antagonist for workspace builder too
1 parent bc370a8 commit c26d6ab

File tree

2 files changed

+58
-28
lines changed

2 files changed

+58
-28
lines changed

coderd/database/dbfake/dbfake.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"database/sql"
66
"encoding/json"
7+
"errors"
78
"testing"
89
"time"
910

@@ -243,6 +244,25 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
243244
require.NoError(b.t, err)
244245
}
245246

247+
agents, err := b.db.GetWorkspaceAgentsByWorkspaceAndBuildNumber(ownerCtx, database.GetWorkspaceAgentsByWorkspaceAndBuildNumberParams{
248+
WorkspaceID: resp.Workspace.ID,
249+
BuildNumber: resp.Build.BuildNumber,
250+
})
251+
if !errors.Is(err, sql.ErrNoRows) {
252+
// Insert deleted subagent test antagonists for the workspace build.
253+
// See also `dbgen.WorkspaceAgent()`.
254+
require.NoError(b.t, err, "get workspace agents")
255+
for _, agent := range agents {
256+
subAgent := dbgen.WorkspaceSubAgent(b.t, b.db, agent, database.WorkspaceAgent{
257+
TroubleshootingURL: "I AM A TEST ANTAGONIST AND I AM HERE TO MESS UP YOUR TESTS. IF YOU SEE ME, SOMETHING IS WRONG AND SUB AGENT DELETION MAY NOT BE HANDLED CORRECTLY IN A QUERY.",
258+
})
259+
err = b.db.DeleteWorkspaceSubAgentByID(ownerCtx, subAgent.ID)
260+
require.NoError(b.t, err, "delete workspace agent subagent antagonist")
261+
262+
b.t.Logf("inserted deleted subagent antagonist %s (%v) for workspace agent %s (%v)", subAgent.Name, subAgent.ID, agent.Name, agent.ID)
263+
}
264+
}
265+
246266
return resp
247267
}
248268

coderd/database/dbgen/dbgen.go

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -227,39 +227,49 @@ func WorkspaceAgent(t testing.TB, db database.Store, orig database.WorkspaceAgen
227227
require.NoError(t, err, "update workspace agent first connected at")
228228
}
229229

230-
// Add a test antagonist. For every agent we add a deleted sub agent
231-
// to discover cases where deletion should be handled.
232-
subAgt, err := db.InsertWorkspaceAgent(genCtx, database.InsertWorkspaceAgentParams{
233-
ID: uuid.New(),
234-
ParentID: uuid.NullUUID{UUID: agt.ID, Valid: true},
235-
CreatedAt: dbtime.Now(),
236-
UpdatedAt: dbtime.Now(),
237-
Name: testutil.GetRandomName(t),
238-
ResourceID: agt.ResourceID,
239-
AuthToken: uuid.New(),
240-
AuthInstanceID: sql.NullString{},
241-
Architecture: agt.Architecture,
242-
EnvironmentVariables: pqtype.NullRawMessage{},
243-
OperatingSystem: agt.OperatingSystem,
244-
Directory: agt.Directory,
245-
InstanceMetadata: pqtype.NullRawMessage{},
246-
ResourceMetadata: pqtype.NullRawMessage{},
247-
ConnectionTimeoutSeconds: agt.ConnectionTimeoutSeconds,
248-
TroubleshootingURL: "I AM A TEST ANTAGONIST AND I AM HERE TO MESS UP YOUR TESTS. IF YOU SEE ME, SOMETHING IS WRONG AND SUB AGENT DELETION MAY NOT BE HANDLED CORRECTLY IN A QUERY.",
249-
MOTDFile: "",
250-
DisplayApps: nil,
251-
DisplayOrder: agt.DisplayOrder,
252-
APIKeyScope: agt.APIKeyScope,
253-
})
254-
require.NoError(t, err, "insert workspace agent subagent antagonist")
255-
err = db.DeleteWorkspaceSubAgentByID(genCtx, subAgt.ID)
256-
require.NoError(t, err, "delete workspace agent subagent antagonist")
230+
if orig.ParentID.UUID == uuid.Nil {
231+
// Add a test antagonist. For every agent we add a deleted sub agent
232+
// to discover cases where deletion should be handled.
233+
// See also `(dbfake.WorkspaceBuildBuilder).Do()`.
234+
subAgt, err := db.InsertWorkspaceAgent(genCtx, database.InsertWorkspaceAgentParams{
235+
ID: uuid.New(),
236+
ParentID: uuid.NullUUID{UUID: agt.ID, Valid: true},
237+
CreatedAt: dbtime.Now(),
238+
UpdatedAt: dbtime.Now(),
239+
Name: testutil.GetRandomName(t),
240+
ResourceID: agt.ResourceID,
241+
AuthToken: uuid.New(),
242+
AuthInstanceID: sql.NullString{},
243+
Architecture: agt.Architecture,
244+
EnvironmentVariables: pqtype.NullRawMessage{},
245+
OperatingSystem: agt.OperatingSystem,
246+
Directory: agt.Directory,
247+
InstanceMetadata: pqtype.NullRawMessage{},
248+
ResourceMetadata: pqtype.NullRawMessage{},
249+
ConnectionTimeoutSeconds: agt.ConnectionTimeoutSeconds,
250+
TroubleshootingURL: "I AM A TEST ANTAGONIST AND I AM HERE TO MESS UP YOUR TESTS. IF YOU SEE ME, SOMETHING IS WRONG AND SUB AGENT DELETION MAY NOT BE HANDLED CORRECTLY IN A QUERY.",
251+
MOTDFile: "",
252+
DisplayApps: nil,
253+
DisplayOrder: agt.DisplayOrder,
254+
APIKeyScope: agt.APIKeyScope,
255+
})
256+
require.NoError(t, err, "insert workspace agent subagent antagonist")
257+
err = db.DeleteWorkspaceSubAgentByID(genCtx, subAgt.ID)
258+
require.NoError(t, err, "delete workspace agent subagent antagonist")
257259

258-
t.Logf("inserted workspace agent %s (%v) with deleted subagent antagonist %s (%v)", agt.Name, agt.ID, subAgt.Name, subAgt.ID)
260+
t.Logf("inserted deleted subagent antagonist %s (%v) for workspace agent %s (%v)", subAgt.Name, subAgt.ID, agt.Name, agt.ID)
261+
}
259262

260263
return agt
261264
}
262265

266+
func WorkspaceSubAgent(t testing.TB, db database.Store, parentAgent database.WorkspaceAgent, orig database.WorkspaceAgent) database.WorkspaceAgent {
267+
orig.ParentID = uuid.NullUUID{UUID: parentAgent.ID, Valid: true}
268+
orig.ResourceID = parentAgent.ResourceID
269+
subAgt := WorkspaceAgent(t, db, orig)
270+
return subAgt
271+
}
272+
263273
func WorkspaceAgentScript(t testing.TB, db database.Store, orig database.WorkspaceAgentScript) database.WorkspaceAgentScript {
264274
scripts, err := db.InsertWorkspaceAgentScripts(genCtx, database.InsertWorkspaceAgentScriptsParams{
265275
WorkspaceAgentID: takeFirst(orig.WorkspaceAgentID, uuid.New()),

0 commit comments

Comments
 (0)