Skip to content

feat: add dbfake for workspace builds and resources #10426

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Nov 2, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix comments
  • Loading branch information
kylecarbs committed Oct 30, 2023
commit 7e0fefdd7f928aea0f5829e1a882e466056fb6a3
16 changes: 8 additions & 8 deletions cli/agent_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func TestWorkspaceAgent(t *testing.T) {

client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -65,11 +65,11 @@ func TestWorkspaceAgent(t *testing.T) {
AzureCertificates: certificates,
})
user := coderdtest.CreateFirstUser(t, client)
ws := dbfake.CreateWorkspace(t, db, database.Workspace{
ws := dbfake.Workspace(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "somename",
Type: "someinstance",
Agents: []*proto.Agent{{
Expand Down Expand Up @@ -107,11 +107,11 @@ func TestWorkspaceAgent(t *testing.T) {
AWSCertificates: certificates,
})
user := coderdtest.CreateFirstUser(t, client)
ws := dbfake.CreateWorkspace(t, db, database.Workspace{
ws := dbfake.Workspace(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "somename",
Type: "someinstance",
Agents: []*proto.Agent{{
Expand Down Expand Up @@ -150,11 +150,11 @@ func TestWorkspaceAgent(t *testing.T) {
})
owner := coderdtest.CreateFirstUser(t, client)
member, memberUser := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
ws := dbfake.CreateWorkspace(t, db, database.Workspace{
ws := dbfake.Workspace(t, db, database.Workspace{
OrganizationID: owner.OrganizationID,
OwnerID: memberUser.ID,
})
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "somename",
Type: "someinstance",
Agents: []*proto.Agent{{
Expand Down Expand Up @@ -207,7 +207,7 @@ func TestWorkspaceAgent(t *testing.T) {

client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down
22 changes: 11 additions & 11 deletions coderd/database/dbfake/dbfake.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import (
sdkproto "github.com/coder/coder/v2/provisionersdk/proto"
)

// CreateWorkspace inserts a workspace into the database.
func CreateWorkspace(t testing.TB, db database.Store, seed database.Workspace) database.Workspace {
// Workspace inserts a workspace into the database.
func Workspace(t testing.TB, db database.Store, seed database.Workspace) database.Workspace {
t.Helper()

// This intentionally fulfills the minimum requirements of the schema.
Expand All @@ -37,13 +37,13 @@ func CreateWorkspace(t testing.TB, db database.Store, seed database.Workspace) d
return dbgen.Workspace(t, db, seed)
}

// CreateWorkspaceWithAgent is a helper that generates a workspace with a single resource
// WorkspaceWithAgent is a helper that generates a workspace with a single resource
// that has an agent attached to it. The agent token is returned.
func CreateWorkspaceWithAgent(t testing.TB, db database.Store, seed database.Workspace) (database.Workspace, string) {
func WorkspaceWithAgent(t testing.TB, db database.Store, seed database.Workspace) (database.Workspace, string) {
t.Helper()
authToken := uuid.NewString()
ws := CreateWorkspace(t, db, seed)
CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
ws := Workspace(t, db, seed)
WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
Expand All @@ -56,8 +56,8 @@ func CreateWorkspaceWithAgent(t testing.TB, db database.Store, seed database.Wor
return ws, authToken
}

// CreateWorkspaceBuild inserts a build and a successful job into the database.
func CreateWorkspaceBuild(t testing.TB, db database.Store, ws database.Workspace, seed database.WorkspaceBuild, resources ...*sdkproto.Resource) database.WorkspaceBuild {
// WorkspaceBuild inserts a build and a successful job into the database.
func WorkspaceBuild(t testing.TB, db database.Store, ws database.Workspace, seed database.WorkspaceBuild, resources ...*sdkproto.Resource) database.WorkspaceBuild {
t.Helper()
jobID := uuid.New()
seed.JobID = jobID
Expand Down Expand Up @@ -105,12 +105,12 @@ func CreateWorkspaceBuild(t testing.TB, db database.Store, ws database.Workspace
Valid: true,
},
})
CreateProvisionerJobResources(t, db, job.ID, seed.Transition, resources...)
ProvisionerJobResources(t, db, job.ID, seed.Transition, resources...)
return build
}

// CreateProvisionerJobResources inserts a series of resources into a provisioner job.
func CreateProvisionerJobResources(t testing.TB, db database.Store, job uuid.UUID, transition database.WorkspaceTransition, resources ...*sdkproto.Resource) {
// ProvisionerJobResources inserts a series of resources into a provisioner job.
func ProvisionerJobResources(t testing.TB, db database.Store, job uuid.UUID, transition database.WorkspaceTransition, resources ...*sdkproto.Resource) {
t.Helper()
if transition == "" {
// Default to start!
Expand Down
52 changes: 26 additions & 26 deletions coderd/workspaceagents_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ func TestWorkspaceAgent(t *testing.T) {
tmpDir := t.TempDir()
anotherClient, anotherUser := coderdtest.CreateAnotherUser(t, client, user.OrganizationID)

ws := dbfake.CreateWorkspace(t, db, database.Workspace{
ws := dbfake.Workspace(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: anotherUser.ID,
})
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "aws_instance",
Agents: []*proto.Agent{{
Id: uuid.NewString(),
Expand All @@ -67,11 +67,11 @@ func TestWorkspaceAgent(t *testing.T) {
client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
tmpDir := t.TempDir()
ws := dbfake.CreateWorkspace(t, db, database.Workspace{
ws := dbfake.Workspace(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "aws_instance",
Agents: []*proto.Agent{{
Id: uuid.NewString(),
Expand Down Expand Up @@ -99,11 +99,11 @@ func TestWorkspaceAgent(t *testing.T) {

wantTroubleshootingURL := "https://example.com/troubleshoot"

ws := dbfake.CreateWorkspace(t, db, database.Workspace{
ws := dbfake.Workspace(t, db, database.Workspace{
OwnerID: user.UserID,
OrganizationID: user.OrganizationID,
})
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
Expand Down Expand Up @@ -139,7 +139,7 @@ func TestWorkspaceAgent(t *testing.T) {
t.Parallel()
client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws := dbfake.CreateWorkspace(t, db, database.Workspace{
ws := dbfake.Workspace(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand All @@ -152,7 +152,7 @@ func TestWorkspaceAgent(t *testing.T) {
PortForwardingHelper: true,
SshHelper: true,
}
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{
Expand Down Expand Up @@ -191,11 +191,11 @@ func TestWorkspaceAgent(t *testing.T) {
apps.WebTerminal = false

// Creating another workspace is easier
ws = dbfake.CreateWorkspace(t, db, database.Workspace{
ws = dbfake.Workspace(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{
Expand Down Expand Up @@ -225,7 +225,7 @@ func TestWorkspaceAgentLogs(t *testing.T) {
ctx := testutil.Context(t, testutil.WaitMedium)
client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -267,7 +267,7 @@ func TestWorkspaceAgentLogs(t *testing.T) {
ctx := testutil.Context(t, testutil.WaitMedium)
client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -309,7 +309,7 @@ func TestWorkspaceAgentLogs(t *testing.T) {
ctx := testutil.Context(t, testutil.WaitMedium)
client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -352,7 +352,7 @@ func TestWorkspaceAgentListen(t *testing.T) {

client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -438,7 +438,7 @@ func TestWorkspaceAgentTailnet(t *testing.T) {
client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)

ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -477,7 +477,7 @@ func TestWorkspaceAgentTailnetDirectDisabled(t *testing.T) {
DeploymentValues: dv,
})
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -540,7 +540,7 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
require.NoError(t, err)

user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -765,11 +765,11 @@ func TestWorkspaceAgentAppHealth(t *testing.T) {
},
},
}
ws := dbfake.CreateWorkspace(t, db, database.Workspace{
ws := dbfake.Workspace(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
Expand Down Expand Up @@ -840,7 +840,7 @@ func TestWorkspaceAgentReportStats(t *testing.T) {

client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -881,7 +881,7 @@ func TestWorkspaceAgent_LifecycleState(t *testing.T) {

client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -947,11 +947,11 @@ func TestWorkspaceAgent_Metadata(t *testing.T) {
client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
authToken := uuid.NewString()
ws := dbfake.CreateWorkspace(t, db, database.Workspace{
ws := dbfake.Workspace(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.CreateWorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
Expand Down Expand Up @@ -1111,7 +1111,7 @@ func TestWorkspaceAgent_Startup(t *testing.T) {

client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
ws, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
ws, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -1156,7 +1156,7 @@ func TestWorkspaceAgent_Startup(t *testing.T) {

client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
_, authToken := dbfake.CreateWorkspaceWithAgent(t, db, database.Workspace{
_, authToken := dbfake.WorkspaceWithAgent(t, db, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down Expand Up @@ -1204,7 +1204,7 @@ func TestWorkspaceAgent_UpdatedDERP(t *testing.T) {
api.DERPMapper.Store(&derpMapFn)

// Start workspace a workspace agent.
ws, agentToken := dbfake.CreateWorkspaceWithAgent(t, api.Database, database.Workspace{
ws, agentToken := dbfake.WorkspaceWithAgent(t, api.Database, database.Workspace{
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
Expand Down