Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit97ac5bc

Browse files
committed
remove coderd test
1 parenta9f2bad commit97ac5bc

File tree

5 files changed

+105
-117
lines changed

5 files changed

+105
-117
lines changed

‎coderd/database/dbmem/dbmem.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11105,7 +11105,7 @@ func (q *FakeQuerier) GetAuthorizedWorkspacesAndAgents(ctx context.Context, prep
1110511105

1110611106
out:=make([]database.GetWorkspacesAndAgentsRow,0,len(workspaces))
1110711107
for_,w:=rangeworkspaces {
11108-
//psql constraints ensure allthese exist
11108+
// these always exist
1110911109
build,err:=q.getLatestWorkspaceBuildByWorkspaceIDNoLock(ctx,w.ID)
1111011110
iferr!=nil {
1111111111
returnnil,xerrors.Errorf("get latest build: %w",err)
@@ -11116,18 +11116,19 @@ func (q *FakeQuerier) GetAuthorizedWorkspacesAndAgents(ctx context.Context, prep
1111611116
returnnil,xerrors.Errorf("get provisioner job: %w",err)
1111711117
}
1111811118

11119-
resource,err:=q.getWorkspaceResourcesByJobIDNoLock(ctx,job.ID)
11120-
iferr!=nil||len(resource)==0 {
11121-
returnnil,xerrors.Errorf("get workspace resources: %w",err)
11122-
}
11123-
11124-
agents,err:=q.getWorkspaceAgentsByResourceIDsNoLock(ctx, []uuid.UUID{resource[0].ID})
11119+
agentIDs:=make([]uuid.UUID,0)
11120+
resources,err:=q.getWorkspaceResourcesByJobIDNoLock(ctx,job.ID)
1112511121
iferr!=nil {
11126-
returnnil,xerrors.Errorf("get workspaceagents: %w",err)
11122+
returnnil,xerrors.Errorf("get workspaceresources: %w",err)
1112711123
}
11128-
agentIDs:=make([]uuid.UUID,0,len(agents))
11129-
for_,a:=rangeagents {
11130-
agentIDs=append(agentIDs,a.ID)
11124+
iflen(resources)>0 {
11125+
agents,err:=q.getWorkspaceAgentsByResourceIDsNoLock(ctx, []uuid.UUID{resources[0].ID})
11126+
iferr!=nil {
11127+
returnnil,xerrors.Errorf("get workspace agents: %w",err)
11128+
}
11129+
for_,a:=rangeagents {
11130+
agentIDs=append(agentIDs,a.ID)
11131+
}
1113111132
}
1113211133

1113311134
out=append(out, database.GetWorkspacesAndAgentsRow{

‎coderd/database/querier_test.go

Lines changed: 91 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ import (
2424
"github.com/coder/coder/v2/coderd/database/dbtestutil"
2525
"github.com/coder/coder/v2/coderd/database/dbtime"
2626
"github.com/coder/coder/v2/coderd/database/migrations"
27+
"github.com/coder/coder/v2/coderd/httpmw"
2728
"github.com/coder/coder/v2/coderd/rbac"
29+
"github.com/coder/coder/v2/coderd/rbac/policy"
2830
"github.com/coder/coder/v2/testutil"
2931
)
3032

@@ -612,70 +614,98 @@ func TestGetWorkspaceAgentUsageStatsAndLabels(t *testing.T) {
612614
})
613615
}
614616

615-
funcTestGetWorkspacesAndAgents(t*testing.T) {
617+
funcTestGetAuthorizedWorkspacesAndAgents(t*testing.T) {
616618
t.Parallel()
617619
iftesting.Short() {
618620
t.SkipNow()
619621
}
620622

623+
ctx:=testutil.Context(t,testutil.WaitLong)
621624
sqlDB:=testSQLDB(t)
622625
err:=migrations.Up(sqlDB)
623626
require.NoError(t,err)
624627
db:=database.New(sqlDB)
625628

626629
org:=dbgen.Organization(t,db, database.Organization{})
630+
owner:=dbgen.User(t,db, database.User{
631+
RBACRoles: []string{rbac.RoleOwner().String()},
632+
})
627633
user:=dbgen.User(t,db, database.User{})
628634
tpl:=dbgen.Template(t,db, database.Template{
629635
OrganizationID:org.ID,
630-
CreatedBy:user.ID,
636+
CreatedBy:owner.ID,
631637
})
632638

633-
pending:=createTemplateVersion(t,db,tpl,tvArgs{
639+
pendingID:=uuid.New()
640+
createTemplateVersion(t,db,tpl,tvArgs{
634641
Status:database.ProvisionerJobStatusPending,
635642
CreateWorkspace:true,
643+
WorkspaceID:pendingID,
636644
CreateAgent:true,
637645
})
638-
failed:=createTemplateVersion(t,db,tpl,tvArgs{
646+
failedID:=uuid.New()
647+
createTemplateVersion(t,db,tpl,tvArgs{
639648
Status:database.ProvisionerJobStatusFailed,
640649
CreateWorkspace:true,
641650
CreateAgent:true,
651+
WorkspaceID:failedID,
642652
})
643-
succeeded:=createTemplateVersion(t,db,tpl,tvArgs{
653+
succeededID:=uuid.New()
654+
createTemplateVersion(t,db,tpl,tvArgs{
644655
Status:database.ProvisionerJobStatusSucceeded,
645656
WorkspaceTransition:database.WorkspaceTransitionStart,
646657
CreateWorkspace:true,
658+
WorkspaceID:succeededID,
647659
CreateAgent:true,
648660
ExtraAgents:1,
649661
ExtraBuilds:2,
650662
})
651-
deleted:=createTemplateVersion(t,db,tpl,tvArgs{
663+
deletedID:=uuid.New()
664+
createTemplateVersion(t,db,tpl,tvArgs{
652665
Status:database.ProvisionerJobStatusSucceeded,
653666
WorkspaceTransition:database.WorkspaceTransitionDelete,
654667
CreateWorkspace:true,
668+
WorkspaceID:deletedID,
655669
CreateAgent:false,
656670
})
657671

658-
ctx:=testutil.Context(t,testutil.WaitLong)
659-
rows,err:=db.GetWorkspacesAndAgents(ctx)
672+
authorizer:=rbac.NewStrictCachingAuthorizer(prometheus.NewRegistry())
673+
674+
userSubject,_,err:=httpmw.UserRBACSubject(ctx,db,user.ID,rbac.ExpandableScope(rbac.ScopeAll))
675+
require.NoError(t,err)
676+
preparedUser,err:=authorizer.Prepare(ctx,userSubject,policy.ActionRead,rbac.ResourceWorkspace.Type)
660677
require.NoError(t,err)
678+
userCtx:=dbauthz.As(ctx,userSubject)
679+
userRows,err:=db.GetAuthorizedWorkspacesAndAgents(userCtx,preparedUser)
680+
require.NoError(t,err)
681+
require.Len(t,userRows,0)
661682

662-
require.Len(t,rows,4)
663-
for_,row:=rangerows {
683+
ownerSubject,_,err:=httpmw.UserRBACSubject(ctx,db,owner.ID,rbac.ExpandableScope(rbac.ScopeAll))
684+
require.NoError(t,err)
685+
preparedOwner,err:=authorizer.Prepare(ctx,ownerSubject,policy.ActionRead,rbac.ResourceWorkspace.Type)
686+
require.NoError(t,err)
687+
ownerCtx:=dbauthz.As(ctx,ownerSubject)
688+
ownerRows,err:=db.GetAuthorizedWorkspacesAndAgents(ownerCtx,preparedOwner)
689+
require.NoError(t,err)
690+
require.Len(t,ownerRows,4)
691+
for_,row:=rangeownerRows {
664692
switchrow.WorkspaceID {
665-
casepending.ID:
693+
casependingID:
666694
require.Len(t,row.AgentIds,1)
667695
require.Equal(t,database.ProvisionerJobStatusPending,row.JobStatus)
668-
casefailed.ID:
696+
casefailedID:
669697
require.Len(t,row.AgentIds,1)
670698
require.Equal(t,database.ProvisionerJobStatusFailed,row.JobStatus)
671-
casesucceeded.ID:
699+
casesucceededID:
672700
require.Len(t,row.AgentIds,2)
673701
require.Equal(t,database.ProvisionerJobStatusSucceeded,row.JobStatus)
674702
require.Equal(t,database.WorkspaceTransitionStart,row.Transition)
675-
casedeleted.ID:
703+
casedeletedID:
676704
require.Len(t,row.AgentIds,0)
677705
require.Equal(t,database.ProvisionerJobStatusSucceeded,row.JobStatus)
678706
require.Equal(t,database.WorkspaceTransitionDelete,row.Transition)
707+
default:
708+
t.Fatalf("unexpected workspace ID: %s",row.WorkspaceID)
679709
}
680710
}
681711
}
@@ -1605,6 +1635,7 @@ type tvArgs struct {
16051635
Status database.ProvisionerJobStatus
16061636
// CreateWorkspace is true if we should create a workspace for the template version
16071637
CreateWorkspacebool
1638+
WorkspaceID uuid.UUID
16081639
CreateAgentbool
16091640
WorkspaceTransition database.WorkspaceTransition
16101641
ExtraAgentsint
@@ -1625,49 +1656,18 @@ func createTemplateVersion(t testing.TB, db database.Store, tpl database.Templat
16251656
CreatedBy:tpl.CreatedBy,
16261657
})
16271658

1628-
earlier:= sql.NullTime{
1629-
Time:dbtime.Now().Add(time.Second*-30),
1630-
Valid:true,
1631-
}
1632-
now:= sql.NullTime{
1633-
Time:dbtime.Now(),
1634-
Valid:true,
1635-
}
1636-
j:= database.ProvisionerJob{
1659+
latestJob:= database.ProvisionerJob{
16371660
ID:version.JobID,
1638-
CreatedAt:earlier.Time,
1639-
UpdatedAt:earlier.Time,
16401661
Error: sql.NullString{},
16411662
OrganizationID:tpl.OrganizationID,
16421663
InitiatorID:tpl.CreatedBy,
16431664
Type:database.ProvisionerJobTypeTemplateVersionImport,
16441665
}
1645-
1646-
switchargs.Status {
1647-
casedatabase.ProvisionerJobStatusRunning:
1648-
j.StartedAt=earlier
1649-
casedatabase.ProvisionerJobStatusPending:
1650-
casedatabase.ProvisionerJobStatusFailed:
1651-
j.StartedAt=earlier
1652-
j.CompletedAt=now
1653-
j.Error= sql.NullString{
1654-
String:"failed",
1655-
Valid:true,
1656-
}
1657-
j.ErrorCode= sql.NullString{
1658-
String:"failed",
1659-
Valid:true,
1660-
}
1661-
casedatabase.ProvisionerJobStatusSucceeded:
1662-
j.StartedAt=earlier
1663-
j.CompletedAt=now
1664-
default:
1665-
t.Fatalf("invalid status: %s",args.Status)
1666-
}
1667-
1668-
dbgen.ProvisionerJob(t,db,nil,j)
1666+
setJobStatus(t,args.Status,&latestJob)
1667+
dbgen.ProvisionerJob(t,db,nil,latestJob)
16691668
ifargs.CreateWorkspace {
16701669
wrk:=dbgen.Workspace(t,db, database.Workspace{
1670+
ID:args.WorkspaceID,
16711671
CreatedAt: time.Time{},
16721672
UpdatedAt: time.Time{},
16731673
OwnerID:tpl.CreatedBy,
@@ -1678,13 +1678,13 @@ func createTemplateVersion(t testing.TB, db database.Store, tpl database.Templat
16781678
ifargs.WorkspaceTransition!="" {
16791679
trans=args.WorkspaceTransition
16801680
}
1681-
1682-
latestJob:=dbgen.ProvisionerJob(t,db,nil, database.ProvisionerJob{
1681+
latestJob= database.ProvisionerJob{
16831682
Type:database.ProvisionerJobTypeWorkspaceBuild,
1684-
CompletedAt:now,
16851683
InitiatorID:tpl.CreatedBy,
16861684
OrganizationID:tpl.OrganizationID,
1687-
})
1685+
}
1686+
setJobStatus(t,args.Status,&latestJob)
1687+
latestJob=dbgen.ProvisionerJob(t,db,nil,latestJob)
16881688
latestResource:=dbgen.WorkspaceResource(t,db, database.WorkspaceResource{
16891689
JobID:latestJob.ID,
16901690
})
@@ -1697,12 +1697,13 @@ func createTemplateVersion(t testing.TB, db database.Store, tpl database.Templat
16971697
JobID:latestJob.ID,
16981698
})
16991699
fori:=0;i<args.ExtraBuilds;i++ {
1700-
latestJob=dbgen.ProvisionerJob(t,db,nil,database.ProvisionerJob{
1700+
latestJob= database.ProvisionerJob{
17011701
Type:database.ProvisionerJobTypeWorkspaceBuild,
1702-
CompletedAt:now,
17031702
InitiatorID:tpl.CreatedBy,
17041703
OrganizationID:tpl.OrganizationID,
1705-
})
1704+
}
1705+
setJobStatus(t,args.Status,&latestJob)
1706+
latestJob=dbgen.ProvisionerJob(t,db,nil,latestJob)
17061707
latestResource=dbgen.WorkspaceResource(t,db, database.WorkspaceResource{
17071708
JobID:latestJob.ID,
17081709
})
@@ -1730,6 +1731,40 @@ func createTemplateVersion(t testing.TB, db database.Store, tpl database.Templat
17301731
returnversion
17311732
}
17321733

1734+
funcsetJobStatus(t testing.TB,status database.ProvisionerJobStatus,j*database.ProvisionerJob) {
1735+
t.Helper()
1736+
1737+
earlier:= sql.NullTime{
1738+
Time:dbtime.Now().Add(time.Second*-30),
1739+
Valid:true,
1740+
}
1741+
now:= sql.NullTime{
1742+
Time:dbtime.Now(),
1743+
Valid:true,
1744+
}
1745+
switchstatus {
1746+
casedatabase.ProvisionerJobStatusRunning:
1747+
j.StartedAt=earlier
1748+
casedatabase.ProvisionerJobStatusPending:
1749+
casedatabase.ProvisionerJobStatusFailed:
1750+
j.StartedAt=earlier
1751+
j.CompletedAt=now
1752+
j.Error= sql.NullString{
1753+
String:"failed",
1754+
Valid:true,
1755+
}
1756+
j.ErrorCode= sql.NullString{
1757+
String:"failed",
1758+
Valid:true,
1759+
}
1760+
casedatabase.ProvisionerJobStatusSucceeded:
1761+
j.StartedAt=earlier
1762+
j.CompletedAt=now
1763+
default:
1764+
t.Fatalf("invalid status: %s",status)
1765+
}
1766+
}
1767+
17331768
funcTestArchiveVersions(t*testing.T) {
17341769
t.Parallel()
17351770
iftesting.Short() {

‎coderd/database/queries.sql.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/workspaces.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,7 @@ SELECT
694694
workspaces.nameas workspace_name,
695695
job_status,
696696
transition,
697-
array_agg(agent_id)::uuid[]as agent_ids
697+
(array_agg(agent_id) FILTER (WHERE agent_idIS NOT NULL))::uuid[]as agent_ids
698698
FROM workspaces
699699
LEFT JOIN LATERAL (
700700
SELECT

‎coderd/workspaces_test.go

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import (
3030
"github.com/coder/coder/v2/coderd/database/dbgen"
3131
"github.com/coder/coder/v2/coderd/database/dbtestutil"
3232
"github.com/coder/coder/v2/coderd/database/dbtime"
33-
"github.com/coder/coder/v2/coderd/httpmw"
3433
"github.com/coder/coder/v2/coderd/notifications"
3534
"github.com/coder/coder/v2/coderd/rbac"
3635
"github.com/coder/coder/v2/coderd/rbac/policy"
@@ -3723,50 +3722,3 @@ func TestWorkspaceTimings(t *testing.T) {
37233722
})
37243723
}
37253724
}
3726-
3727-
funcTestGetAuthorizedWorkspacesAndAgents(t*testing.T) {
3728-
t.Parallel()
3729-
3730-
ownerClient,_,api:=coderdtest.NewWithAPI(t,&coderdtest.Options{
3731-
IncludeProvisionerDaemon:true,
3732-
})
3733-
owner:=coderdtest.CreateFirstUser(t,ownerClient)
3734-
_,user:=coderdtest.CreateAnotherUser(t,ownerClient,owner.OrganizationID)
3735-
authToken:=uuid.NewString()
3736-
version:=coderdtest.CreateTemplateVersion(t,ownerClient,owner.OrganizationID,&echo.Responses{
3737-
Parse:echo.ParseComplete,
3738-
ProvisionPlan:echo.PlanComplete,
3739-
ProvisionApply:echo.ProvisionApplyWithAgent(authToken),
3740-
})
3741-
coderdtest.AwaitTemplateVersionJobCompleted(t,ownerClient,version.ID)
3742-
template:=coderdtest.CreateTemplate(t,ownerClient,owner.OrganizationID,version.ID)
3743-
workspace:=coderdtest.CreateWorkspace(t,ownerClient,template.ID)
3744-
coderdtest.AwaitWorkspaceBuildJobCompleted(t,ownerClient,workspace.LatestBuild.ID)
3745-
_=agenttest.New(t,ownerClient.URL,authToken)
3746-
_=coderdtest.NewWorkspaceAgentWaiter(t,ownerClient,workspace.ID).Wait()
3747-
3748-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
3749-
defercancel()
3750-
3751-
ownerSubject,_,err:=httpmw.UserRBACSubject(ctx,api.Database,owner.UserID,rbac.ExpandableScope(rbac.ScopeAll))
3752-
require.NoError(t,err)
3753-
preparedOwner,err:=api.Authorizer.Prepare(ctx,ownerSubject,policy.ActionRead,rbac.ResourceWorkspace.Type)
3754-
require.NoError(t,err)
3755-
3756-
ownerCtx:=dbauthz.As(ctx,ownerSubject)
3757-
ownerRows,err:=api.Database.GetAuthorizedWorkspacesAndAgents(ownerCtx,preparedOwner)
3758-
require.NoError(t,err)
3759-
require.Len(t,ownerRows,1)
3760-
require.Equal(t,workspace.ID,ownerRows[0].WorkspaceID)
3761-
require.Len(t,ownerRows[0].AgentIds,1)
3762-
3763-
userSubject,_,err:=httpmw.UserRBACSubject(ctx,api.Database,user.ID,rbac.ExpandableScope(rbac.ScopeAll))
3764-
require.NoError(t,err)
3765-
preparedUser,err:=api.Authorizer.Prepare(ctx,userSubject,policy.ActionRead,rbac.ResourceWorkspace.Type)
3766-
require.NoError(t,err)
3767-
3768-
userCtx:=dbauthz.As(ctx,userSubject)
3769-
userRows,err:=api.Database.GetAuthorizedWorkspacesAndAgents(userCtx,preparedUser)
3770-
require.NoError(t,err)
3771-
require.Len(t,userRows,0)
3772-
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp