Skip to content

Commit 6aa4bbe

Browse files
committed
Merge remote-tracking branch 'origin/main' into cj/agenttest
2 parents c2cba9d + 382843d commit 6aa4bbe

File tree

73 files changed

+2691
-1286
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+2691
-1286
lines changed
Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Upload tests to Datadog
1+
name: Upload tests to datadog
22
if: always()
33
inputs:
44
api-key:
@@ -7,26 +7,8 @@ inputs:
77
runs:
88
using: "composite"
99
steps:
10-
- name: Set work dir
11-
shell: bash
12-
run: |
13-
WORK_DIR=${{ runner.temp }}/datadog-ci
14-
mkdir -p $WORK_DIR
15-
echo "WORK_DIR=$WORK_DIR" >> $GITHUB_ENV
16-
# The npm install was taking 30s to 1m, accounting for 20+% of the total
17-
# job time.
18-
- name: Cache datadog-ci
19-
uses: buildjet/cache@v3
20-
with:
21-
path: |
22-
${{ env.WORK_DIR }}
23-
key: datadog-ci-${{ runner.os }}
24-
restore-keys: |
25-
datadog-ci-${{ runner.os }}-
26-
datadog-ci-
2710
- shell: bash
2811
run: |
29-
cd ${{ env.WORK_DIR }}
3012
owner=${{ github.repository_owner }}
3113
echo "owner: $owner"
3214
if [[ $owner != "coder" ]]; then
@@ -38,8 +20,8 @@ runs:
3820
echo "No API key provided, skipping..."
3921
exit 0
4022
fi
41-
npm install @datadog/datadog-ci@2.10.0
42-
npm x -- datadog-ci junit upload --service coder ./gotests.xml \
23+
npm install -g @datadog/datadog-ci@2.10.0
24+
datadog-ci junit upload --service coder ./gotests.xml \
4325
--tags os:${{runner.os}} --tags runner_name:${{runner.name}}
4426
env:
4527
DATADOG_API_KEY: ${{ inputs.api-key }}

coderd/activitybump_test.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,11 @@ func TestWorkspaceActivityBump(t *testing.T) {
7676
dbBuild, err := db.GetWorkspaceBuildByID(ctx, workspace.LatestBuild.ID)
7777
require.NoError(t, err)
7878

79-
err = db.UpdateWorkspaceBuildByID(ctx, database.UpdateWorkspaceBuildByIDParams{
80-
ID: workspace.LatestBuild.ID,
81-
UpdatedAt: dbtime.Now(),
82-
ProvisionerState: dbBuild.ProvisionerState,
83-
Deadline: dbBuild.Deadline,
84-
MaxDeadline: dbtime.Now().Add(maxTTL),
79+
err = db.UpdateWorkspaceBuildDeadlineByID(ctx, database.UpdateWorkspaceBuildDeadlineByIDParams{
80+
ID: workspace.LatestBuild.ID,
81+
UpdatedAt: dbtime.Now(),
82+
Deadline: dbBuild.Deadline,
83+
MaxDeadline: dbtime.Now().Add(maxTTL),
8584
})
8685
require.NoError(t, err)
8786
}

coderd/coderdtest/coderdtest.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,7 @@ func UpdateTemplateVersion(t *testing.T, client *codersdk.Client, organizationID
763763
func AwaitTemplateVersionJob(t *testing.T, client *codersdk.Client, version uuid.UUID) codersdk.TemplateVersion {
764764
t.Helper()
765765

766-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium)
766+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
767767
defer cancel()
768768

769769
t.Logf("waiting for template version job %s", version)
@@ -772,7 +772,7 @@ func AwaitTemplateVersionJob(t *testing.T, client *codersdk.Client, version uuid
772772
var err error
773773
templateVersion, err = client.TemplateVersion(ctx, version)
774774
return assert.NoError(t, err) && templateVersion.Job.CompletedAt != nil
775-
}, testutil.WaitMedium, testutil.IntervalFast)
775+
}, testutil.WaitLong, testutil.IntervalMedium)
776776
t.Logf("got template version job %s", version)
777777
return templateVersion
778778
}
@@ -790,7 +790,7 @@ func AwaitWorkspaceBuildJob(t *testing.T, client *codersdk.Client, build uuid.UU
790790
var err error
791791
workspaceBuild, err = client.WorkspaceBuild(ctx, build)
792792
return assert.NoError(t, err) && workspaceBuild.Job.CompletedAt != nil
793-
}, testutil.WaitShort, testutil.IntervalFast)
793+
}, testutil.WaitMedium, testutil.IntervalMedium)
794794
t.Logf("got workspace build job %s", build)
795795
return workspaceBuild
796796
}
@@ -838,7 +838,7 @@ func AwaitWorkspaceAgents(t testing.TB, client *codersdk.Client, workspaceID uui
838838
resources = workspace.LatestBuild.Resources
839839

840840
return true
841-
}, testutil.WaitLong, testutil.IntervalFast)
841+
}, testutil.WaitLong, testutil.IntervalMedium)
842842
t.Logf("got workspace agents (workspace %s)", workspaceID)
843843
return resources
844844
}

coderd/database/dbauthz/dbauthz.go

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,13 @@ func (q *querier) DeleteAPIKeysByUserID(ctx context.Context, userID uuid.UUID) e
694694
return q.db.DeleteAPIKeysByUserID(ctx, userID)
695695
}
696696

697+
func (q *querier) DeleteAllTailnetClientSubscriptions(ctx context.Context, arg database.DeleteAllTailnetClientSubscriptionsParams) error {
698+
if err := q.authorizeContext(ctx, rbac.ActionDelete, rbac.ResourceTailnetCoordinator); err != nil {
699+
return err
700+
}
701+
return q.db.DeleteAllTailnetClientSubscriptions(ctx, arg)
702+
}
703+
697704
func (q *querier) DeleteApplicationConnectAPIKeysByUserID(ctx context.Context, userID uuid.UUID) error {
698705
// TODO: This is not 100% correct because it omits apikey IDs.
699706
err := q.authorizeContext(ctx, rbac.ActionDelete,
@@ -783,6 +790,13 @@ func (q *querier) DeleteTailnetClient(ctx context.Context, arg database.DeleteTa
783790
return q.db.DeleteTailnetClient(ctx, arg)
784791
}
785792

793+
func (q *querier) DeleteTailnetClientSubscription(ctx context.Context, arg database.DeleteTailnetClientSubscriptionParams) error {
794+
if err := q.authorizeContext(ctx, rbac.ActionDelete, rbac.ResourceTailnetCoordinator); err != nil {
795+
return err
796+
}
797+
return q.db.DeleteTailnetClientSubscription(ctx, arg)
798+
}
799+
786800
func (q *querier) GetAPIKeyByID(ctx context.Context, id string) (database.APIKey, error) {
787801
return fetch(q.log, q.auth, q.db.GetAPIKeyByID)(ctx, id)
788802
}
@@ -825,9 +839,9 @@ func (q *querier) GetAllTailnetAgents(ctx context.Context) ([]database.TailnetAg
825839
return q.db.GetAllTailnetAgents(ctx)
826840
}
827841

828-
func (q *querier) GetAllTailnetClients(ctx context.Context) ([]database.TailnetClient, error) {
842+
func (q *querier) GetAllTailnetClients(ctx context.Context) ([]database.GetAllTailnetClientsRow, error) {
829843
if err := q.authorizeContext(ctx, rbac.ActionRead, rbac.ResourceTailnetCoordinator); err != nil {
830-
return []database.TailnetClient{}, err
844+
return []database.GetAllTailnetClientsRow{}, err
831845
}
832846
return q.db.GetAllTailnetClients(ctx)
833847
}
@@ -2661,7 +2675,15 @@ func (q *querier) UpdateWorkspaceAutostart(ctx context.Context, arg database.Upd
26612675
return update(q.log, q.auth, fetch, q.db.UpdateWorkspaceAutostart)(ctx, arg)
26622676
}
26632677

2664-
func (q *querier) UpdateWorkspaceBuildByID(ctx context.Context, arg database.UpdateWorkspaceBuildByIDParams) error {
2678+
// UpdateWorkspaceBuildCostByID is used by the provisioning system to update the cost of a workspace build.
2679+
func (q *querier) UpdateWorkspaceBuildCostByID(ctx context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) error {
2680+
if err := q.authorizeContext(ctx, rbac.ActionUpdate, rbac.ResourceSystem); err != nil {
2681+
return err
2682+
}
2683+
return q.db.UpdateWorkspaceBuildCostByID(ctx, arg)
2684+
}
2685+
2686+
func (q *querier) UpdateWorkspaceBuildDeadlineByID(ctx context.Context, arg database.UpdateWorkspaceBuildDeadlineByIDParams) error {
26652687
build, err := q.db.GetWorkspaceBuildByID(ctx, arg.ID)
26662688
if err != nil {
26672689
return err
@@ -2671,20 +2693,19 @@ func (q *querier) UpdateWorkspaceBuildByID(ctx context.Context, arg database.Upd
26712693
if err != nil {
26722694
return err
26732695
}
2696+
26742697
err = q.authorizeContext(ctx, rbac.ActionUpdate, workspace.RBACObject())
26752698
if err != nil {
26762699
return err
26772700
}
2678-
2679-
return q.db.UpdateWorkspaceBuildByID(ctx, arg)
2701+
return q.db.UpdateWorkspaceBuildDeadlineByID(ctx, arg)
26802702
}
26812703

2682-
// UpdateWorkspaceBuildCostByID is used by the provisioning system to update the cost of a workspace build.
2683-
func (q *querier) UpdateWorkspaceBuildCostByID(ctx context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) error {
2704+
func (q *querier) UpdateWorkspaceBuildProvisionerStateByID(ctx context.Context, arg database.UpdateWorkspaceBuildProvisionerStateByIDParams) error {
26842705
if err := q.authorizeContext(ctx, rbac.ActionUpdate, rbac.ResourceSystem); err != nil {
26852706
return err
26862707
}
2687-
return q.db.UpdateWorkspaceBuildCostByID(ctx, arg)
2708+
return q.db.UpdateWorkspaceBuildProvisionerStateByID(ctx, arg)
26882709
}
26892710

26902711
// Deprecated: Use SoftDeleteWorkspaceByID
@@ -2794,6 +2815,13 @@ func (q *querier) UpsertTailnetClient(ctx context.Context, arg database.UpsertTa
27942815
return q.db.UpsertTailnetClient(ctx, arg)
27952816
}
27962817

2818+
func (q *querier) UpsertTailnetClientSubscription(ctx context.Context, arg database.UpsertTailnetClientSubscriptionParams) error {
2819+
if err := q.authorizeContext(ctx, rbac.ActionUpdate, rbac.ResourceTailnetCoordinator); err != nil {
2820+
return err
2821+
}
2822+
return q.db.UpsertTailnetClientSubscription(ctx, arg)
2823+
}
2824+
27972825
func (q *querier) UpsertTailnetCoordinator(ctx context.Context, id uuid.UUID) (database.TailnetCoordinator, error) {
27982826
if err := q.authorizeContext(ctx, rbac.ActionUpdate, rbac.ResourceTailnetCoordinator); err != nil {
27992827
return database.TailnetCoordinator{}, err

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,14 +1232,13 @@ func (s *MethodTestSuite) TestWorkspace() {
12321232
ID: ws.ID,
12331233
}).Asserts(ws, rbac.ActionUpdate).Returns()
12341234
}))
1235-
s.Run("UpdateWorkspaceBuildByID", s.Subtest(func(db database.Store, check *expects) {
1235+
s.Run("UpdateWorkspaceBuildDeadlineByID", s.Subtest(func(db database.Store, check *expects) {
12361236
ws := dbgen.Workspace(s.T(), db, database.Workspace{})
12371237
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1238-
check.Args(database.UpdateWorkspaceBuildByIDParams{
1239-
ID: build.ID,
1240-
UpdatedAt: build.UpdatedAt,
1241-
Deadline: build.Deadline,
1242-
ProvisionerState: []byte{},
1238+
check.Args(database.UpdateWorkspaceBuildDeadlineByIDParams{
1239+
ID: build.ID,
1240+
UpdatedAt: build.UpdatedAt,
1241+
Deadline: build.Deadline,
12431242
}).Asserts(ws, rbac.ActionUpdate)
12441243
}))
12451244
s.Run("SoftDeleteWorkspaceByID", s.Subtest(func(db database.Store, check *expects) {
@@ -1378,6 +1377,14 @@ func (s *MethodTestSuite) TestSystemFunctions() {
13781377
DailyCost: 10,
13791378
}).Asserts(rbac.ResourceSystem, rbac.ActionUpdate)
13801379
}))
1380+
s.Run("UpdateWorkspaceBuildProvisionerStateByID", s.Subtest(func(db database.Store, check *expects) {
1381+
ws := dbgen.Workspace(s.T(), db, database.Workspace{})
1382+
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1383+
check.Args(database.UpdateWorkspaceBuildProvisionerStateByIDParams{
1384+
ID: build.ID,
1385+
ProvisionerState: []byte("testing"),
1386+
}).Asserts(rbac.ResourceSystem, rbac.ActionUpdate)
1387+
}))
13811388
s.Run("UpsertLastUpdateCheck", s.Subtest(func(db database.Store, check *expects) {
13821389
check.Args("value").Asserts(rbac.ResourceSystem, rbac.ActionUpdate)
13831390
}))

coderd/database/dbfake/dbfake.go

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -854,6 +854,15 @@ func (q *FakeQuerier) DeleteAPIKeysByUserID(_ context.Context, userID uuid.UUID)
854854
return nil
855855
}
856856

857+
func (*FakeQuerier) DeleteAllTailnetClientSubscriptions(_ context.Context, arg database.DeleteAllTailnetClientSubscriptionsParams) error {
858+
err := validateDatabaseType(arg)
859+
if err != nil {
860+
return err
861+
}
862+
863+
return ErrUnimplemented
864+
}
865+
857866
func (q *FakeQuerier) DeleteApplicationConnectAPIKeysByUserID(_ context.Context, userID uuid.UUID) error {
858867
q.mutex.Lock()
859868
defer q.mutex.Unlock()
@@ -987,6 +996,10 @@ func (*FakeQuerier) DeleteTailnetClient(context.Context, database.DeleteTailnetC
987996
return database.DeleteTailnetClientRow{}, ErrUnimplemented
988997
}
989998

999+
func (*FakeQuerier) DeleteTailnetClientSubscription(context.Context, database.DeleteTailnetClientSubscriptionParams) error {
1000+
return ErrUnimplemented
1001+
}
1002+
9901003
func (q *FakeQuerier) GetAPIKeyByID(_ context.Context, id string) (database.APIKey, error) {
9911004
q.mutex.RLock()
9921005
defer q.mutex.RUnlock()
@@ -1102,7 +1115,7 @@ func (*FakeQuerier) GetAllTailnetAgents(_ context.Context) ([]database.TailnetAg
11021115
return nil, ErrUnimplemented
11031116
}
11041117

1105-
func (*FakeQuerier) GetAllTailnetClients(_ context.Context) ([]database.TailnetClient, error) {
1118+
func (*FakeQuerier) GetAllTailnetClients(_ context.Context) ([]database.GetAllTailnetClientsRow, error) {
11061119
return nil, ErrUnimplemented
11071120
}
11081121

@@ -5841,7 +5854,7 @@ func (q *FakeQuerier) UpdateWorkspaceAutostart(_ context.Context, arg database.U
58415854
return sql.ErrNoRows
58425855
}
58435856

5844-
func (q *FakeQuerier) UpdateWorkspaceBuildByID(_ context.Context, arg database.UpdateWorkspaceBuildByIDParams) error {
5857+
func (q *FakeQuerier) UpdateWorkspaceBuildCostByID(_ context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) error {
58455858
if err := validateDatabaseType(arg); err != nil {
58465859
return err
58475860
}
@@ -5853,32 +5866,55 @@ func (q *FakeQuerier) UpdateWorkspaceBuildByID(_ context.Context, arg database.U
58535866
if workspaceBuild.ID != arg.ID {
58545867
continue
58555868
}
5856-
workspaceBuild.UpdatedAt = arg.UpdatedAt
5857-
workspaceBuild.ProvisionerState = arg.ProvisionerState
5858-
workspaceBuild.Deadline = arg.Deadline
5859-
workspaceBuild.MaxDeadline = arg.MaxDeadline
5869+
workspaceBuild.DailyCost = arg.DailyCost
58605870
q.workspaceBuilds[index] = workspaceBuild
58615871
return nil
58625872
}
58635873
return sql.ErrNoRows
58645874
}
58655875

5866-
func (q *FakeQuerier) UpdateWorkspaceBuildCostByID(_ context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) error {
5867-
if err := validateDatabaseType(arg); err != nil {
5876+
func (q *FakeQuerier) UpdateWorkspaceBuildDeadlineByID(_ context.Context, arg database.UpdateWorkspaceBuildDeadlineByIDParams) error {
5877+
err := validateDatabaseType(arg)
5878+
if err != nil {
58685879
return err
58695880
}
58705881

58715882
q.mutex.Lock()
58725883
defer q.mutex.Unlock()
58735884

5874-
for index, workspaceBuild := range q.workspaceBuilds {
5875-
if workspaceBuild.ID != arg.ID {
5885+
for idx, build := range q.workspaceBuilds {
5886+
if build.ID != arg.ID {
58765887
continue
58775888
}
5878-
workspaceBuild.DailyCost = arg.DailyCost
5879-
q.workspaceBuilds[index] = workspaceBuild
5889+
build.Deadline = arg.Deadline
5890+
build.MaxDeadline = arg.MaxDeadline
5891+
build.UpdatedAt = arg.UpdatedAt
5892+
q.workspaceBuilds[idx] = build
58805893
return nil
58815894
}
5895+
5896+
return sql.ErrNoRows
5897+
}
5898+
5899+
func (q *FakeQuerier) UpdateWorkspaceBuildProvisionerStateByID(_ context.Context, arg database.UpdateWorkspaceBuildProvisionerStateByIDParams) error {
5900+
err := validateDatabaseType(arg)
5901+
if err != nil {
5902+
return err
5903+
}
5904+
5905+
q.mutex.Lock()
5906+
defer q.mutex.Unlock()
5907+
5908+
for idx, build := range q.workspaceBuilds {
5909+
if build.ID != arg.ID {
5910+
continue
5911+
}
5912+
build.ProvisionerState = arg.ProvisionerState
5913+
build.UpdatedAt = arg.UpdatedAt
5914+
q.workspaceBuilds[idx] = build
5915+
return nil
5916+
}
5917+
58825918
return sql.ErrNoRows
58835919
}
58845920

@@ -6112,6 +6148,10 @@ func (*FakeQuerier) UpsertTailnetClient(context.Context, database.UpsertTailnetC
61126148
return database.TailnetClient{}, ErrUnimplemented
61136149
}
61146150

6151+
func (*FakeQuerier) UpsertTailnetClientSubscription(context.Context, database.UpsertTailnetClientSubscriptionParams) error {
6152+
return ErrUnimplemented
6153+
}
6154+
61156155
func (*FakeQuerier) UpsertTailnetCoordinator(context.Context, uuid.UUID) (database.TailnetCoordinator, error) {
61166156
return database.TailnetCoordinator{}, ErrUnimplemented
61176157
}

0 commit comments

Comments
 (0)