Skip to content

Commit 6121231

Browse files
committed
test: add sub agent antagonist for workspace builder too
1 parent 5f51c2d commit 6121231

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+
require.NoError(b.t, err, "get workspace agents")
253+
// Insert deleted subagent test antagonists for the workspace build.
254+
// See also `dbgen.WorkspaceAgent()`.
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy