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

Commit06ed8c7

Browse files
committed
chore: address comments
1 parentb20b801 commit06ed8c7

File tree

9 files changed

+201
-39
lines changed

9 files changed

+201
-39
lines changed

‎coderd/aitasks_test.go‎

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"github.com/coder/coder/v2/coderd/database"
2020
"github.com/coder/coder/v2/coderd/database/dbauthz"
2121
"github.com/coder/coder/v2/coderd/database/dbfake"
22+
"github.com/coder/coder/v2/coderd/database/dbgen"
2223
"github.com/coder/coder/v2/coderd/database/dbtestutil"
2324
"github.com/coder/coder/v2/coderd/notifications"
2425
"github.com/coder/coder/v2/coderd/notifications/notificationstest"
@@ -932,37 +933,62 @@ func TestTasksNotification(t *testing.T) {
932933

933934
for_,tc:=range []struct {
934935
namestring
935-
appStatus codersdk.WorkspaceAppStatusState
936+
latestAppStatuses []codersdk.WorkspaceAppStatusState
937+
newAppStatus codersdk.WorkspaceAppStatusState
936938
isAITaskbool
937939
isNotificationSentbool
938940
notificationTemplate uuid.UUID
939941
}{
940942
// Should not send a notification when the agent app is not an AI task.
941943
{
942944
name:"NoAITask",
943-
appStatus:codersdk.WorkspaceAppStatusStateWorking,
945+
latestAppStatuses:nil,
946+
newAppStatus:codersdk.WorkspaceAppStatusStateWorking,
944947
isAITask:false,
945948
isNotificationSent:false,
946949
},
947-
// Should not send a notification when the app status is neither 'Working' nor 'Idle'.
950+
// Should not send a notification when thenewapp status is neither 'Working' nor 'Idle'.
948951
{
949-
name:"NoNotifiedStatus",
950-
appStatus:codersdk.WorkspaceAppStatusStateComplete,
952+
name:"NonNotifiedState",
953+
latestAppStatuses:nil,
954+
newAppStatus:codersdk.WorkspaceAppStatusStateComplete,
955+
isAITask:true,
956+
isNotificationSent:false,
957+
},
958+
// Should not send a notification when the new app status equals the latest status (Working).
959+
{
960+
name:"NonNotifiedTransition",
961+
latestAppStatuses: []codersdk.WorkspaceAppStatusState{codersdk.WorkspaceAppStatusStateWorking},
962+
newAppStatus:codersdk.WorkspaceAppStatusStateWorking,
951963
isAITask:true,
952964
isNotificationSent:false,
953965
},
954966
// Should send TemplateTaskWorking when the AI task transitions to 'Working'.
955967
{
956968
name:"TemplateTaskWorking",
957-
appStatus:codersdk.WorkspaceAppStatusStateWorking,
969+
latestAppStatuses:nil,
970+
newAppStatus:codersdk.WorkspaceAppStatusStateWorking,
971+
isAITask:true,
972+
isNotificationSent:true,
973+
notificationTemplate:notifications.TemplateTaskWorking,
974+
},
975+
// Should send TemplateTaskWorking when the AI task transitions to 'Working' from 'Idle'.
976+
{
977+
name:"TemplateTaskWorkingFromIdle",
978+
latestAppStatuses: []codersdk.WorkspaceAppStatusState{
979+
codersdk.WorkspaceAppStatusStateWorking,
980+
codersdk.WorkspaceAppStatusStateIdle,
981+
},// latest
982+
newAppStatus:codersdk.WorkspaceAppStatusStateWorking,
958983
isAITask:true,
959984
isNotificationSent:true,
960985
notificationTemplate:notifications.TemplateTaskWorking,
961986
},
962987
// Should send TemplateTaskIdle when the AI task transitions to 'Idle'.
963988
{
964989
name:"TemplateTaskIdle",
965-
appStatus:codersdk.WorkspaceAppStatusStateIdle,
990+
latestAppStatuses: []codersdk.WorkspaceAppStatusState{codersdk.WorkspaceAppStatusStateWorking},
991+
newAppStatus:codersdk.WorkspaceAppStatusStateIdle,
966992
isAITask:true,
967993
isNotificationSent:true,
968994
notificationTemplate:notifications.TemplateTaskIdle,
@@ -978,12 +1004,12 @@ func TestTasksNotification(t *testing.T) {
9781004
NotificationsEnqueuer:notifyEnq,
9791005
})
9801006

981-
// Given:A member user
1007+
// Given:a member user
9821008
ownerUser:=coderdtest.CreateFirstUser(t,client)
9831009
client,memberUser:=coderdtest.CreateAnotherUser(t,client,ownerUser.OrganizationID)
9841010

9851011
// Given: a workspace build with an agent containing an App
986-
workspaceAgentID:=uuid.NewString()
1012+
workspaceAgentAppID:=uuid.New()
9871013
workspaceBuildID:=uuid.New()
9881014
workspaceBuildSeed:= database.WorkspaceBuild{
9891015
ID:workspaceBuildID,
@@ -993,7 +1019,7 @@ func TestTasksNotification(t *testing.T) {
9931019
ID:workspaceBuildID,
9941020
// AI Task configuration
9951021
HasAITask: sql.NullBool{Bool:true,Valid:true},
996-
AITaskSidebarAppID: uuid.NullUUID{UUID:uuid.MustParse(workspaceAgentID),Valid:true},
1022+
AITaskSidebarAppID: uuid.NullUUID{UUID:workspaceAgentAppID,Valid:true},
9971023
}
9981024
}
9991025
workspaceBuild:=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
@@ -1005,19 +1031,32 @@ func TestTasksNotification(t *testing.T) {
10051031
Value:"task prompt",
10061032
}).WithAgent(func(agent []*proto.Agent) []*proto.Agent {
10071033
agent[0].Apps= []*proto.App{{
1008-
Id:workspaceAgentID,
1034+
Id:workspaceAgentAppID.String(),
10091035
Slug:"ccw",
10101036
}}
10111037
returnagent
10121038
}).Do()
10131039

1014-
//When: Theagentupdates the app status
1040+
//Given: the workspaceagentapp has previous statuses
10151041
agentClient:=agentsdk.New(client.URL,agentsdk.WithFixedToken(workspaceBuild.AgentToken))
1042+
iflen(tc.latestAppStatuses)>0 {
1043+
workspace:=coderdtest.MustWorkspace(t,client,workspaceBuild.Workspace.ID)
1044+
for_,appStatus:=rangetc.latestAppStatuses {
1045+
dbgen.WorkspaceAppStatus(t,db, database.WorkspaceAppStatus{
1046+
WorkspaceID:workspaceBuild.Workspace.ID,
1047+
AgentID:workspace.LatestBuild.Resources[0].Agents[0].ID,
1048+
AppID:workspaceAgentAppID,
1049+
State:database.WorkspaceAppStatusState(appStatus),
1050+
})
1051+
}
1052+
}
1053+
1054+
// When: the agent updates the app status
10161055
err:=agentClient.PatchAppStatus(ctx, agentsdk.PatchAppStatus{
10171056
AppSlug:"ccw",
10181057
Message:"testing",
10191058
URI:"https://example.com",
1020-
State:tc.appStatus,
1059+
State:tc.newAppStatus,
10211060
})
10221061
require.NoError(t,err)
10231062

@@ -1026,8 +1065,10 @@ func TestTasksNotification(t *testing.T) {
10261065
require.NoError(t,err)
10271066
workspaceAgent,err:=client.WorkspaceAgent(ctx,workspace.LatestBuild.Resources[0].Agents[0].ID)
10281067
require.NoError(t,err)
1029-
require.Len(t,workspaceAgent.Apps[0].Statuses,1)
1030-
require.Equal(t,workspaceAgent.Apps[0].Statuses[0].State,tc.appStatus)
1068+
require.Len(t,workspaceAgent.Apps,1)
1069+
require.GreaterOrEqual(t,len(workspaceAgent.Apps[0].Statuses),1)
1070+
latestStatusIndex:=len(workspaceAgent.Apps[0].Statuses)-1
1071+
require.Equal(t,tc.newAppStatus,workspaceAgent.Apps[0].Statuses[latestStatusIndex].State)
10311072

10321073
iftc.isNotificationSent {
10331074
// Then: A notification is sent to the workspace owner (memberUser)

‎coderd/database/dbauthz/dbauthz.go‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2313,6 +2313,13 @@ func (q *querier) GetLatestCryptoKeyByFeature(ctx context.Context, feature datab
23132313
returnq.db.GetLatestCryptoKeyByFeature(ctx,feature)
23142314
}
23152315

2316+
func (q*querier)GetLatestWorkspaceAppStatusesByAppID(ctx context.Context,appID uuid.UUID) ([]database.WorkspaceAppStatus,error) {
2317+
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceSystem);err!=nil {
2318+
returnnil,err
2319+
}
2320+
returnq.db.GetLatestWorkspaceAppStatusesByAppID(ctx,appID)
2321+
}
2322+
23162323
func (q*querier)GetLatestWorkspaceAppStatusesByWorkspaceIDs(ctx context.Context,ids []uuid.UUID) ([]database.WorkspaceAppStatus,error) {
23172324
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceSystem);err!=nil {
23182325
returnnil,err

‎coderd/database/dbgen/dbgen.go‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -905,6 +905,21 @@ func WorkspaceAppStat(t testing.TB, db database.Store, orig database.WorkspaceAp
905905
returnscheme
906906
}
907907

908+
funcWorkspaceAppStatus(t testing.TB,db database.Store,orig database.WorkspaceAppStatus) database.WorkspaceAppStatus {
909+
appStatus,err:=db.InsertWorkspaceAppStatus(genCtx, database.InsertWorkspaceAppStatusParams{
910+
ID:takeFirst(orig.ID,uuid.New()),
911+
CreatedAt:takeFirst(orig.CreatedAt,dbtime.Now()),
912+
WorkspaceID:takeFirst(orig.WorkspaceID,uuid.New()),
913+
AgentID:takeFirst(orig.AgentID,uuid.New()),
914+
AppID:takeFirst(orig.AppID,uuid.New()),
915+
State:takeFirst(orig.State,database.WorkspaceAppStatusStateWorking),
916+
Message:takeFirst(orig.Message,""),
917+
Uri:takeFirst(orig.Uri, sql.NullString{}),
918+
})
919+
require.NoError(t,err,"insert workspace agent status")
920+
returnappStatus
921+
}
922+
908923
funcWorkspaceResource(t testing.TB,db database.Store,orig database.WorkspaceResource) database.WorkspaceResource {
909924
resource,err:=db.InsertWorkspaceResource(genCtx, database.InsertWorkspaceResourceParams{
910925
ID:takeFirst(orig.ID,uuid.New()),

‎coderd/database/dbmetrics/querymetrics.go‎

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbmock/dbmock.go‎

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/querier.go‎

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

‎coderd/database/queries.sql.go‎

Lines changed: 39 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/workspaceapps.sql‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ RETURNING *;
7373
-- name: GetWorkspaceAppStatusesByAppIDs :many
7474
SELECT*FROM workspace_app_statusesWHERE app_id= ANY(@ids :: uuid [ ]);
7575

76+
-- name: GetLatestWorkspaceAppStatusesByAppID :many
77+
SELECT*
78+
FROM workspace_app_statuses
79+
WHERE app_id= @app_id::uuid
80+
ORDER BY created_atDESC, idDESC;
81+
7682
-- name: GetLatestWorkspaceAppStatusesByWorkspaceIDs :many
7783
SELECT DISTINCTON (workspace_id)
7884
*

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp