7
7
"net/http"
8
8
"net/http/httptest"
9
9
"net/url"
10
+ "slices"
10
11
"sort"
11
12
"testing"
12
13
"time"
@@ -105,6 +106,52 @@ func TestTelemetry(t *testing.T) {
105
106
OpenIn :database .WorkspaceAppOpenInSlimWindow ,
106
107
AgentID :wsagent .ID ,
107
108
})
109
+
110
+ taskJob := dbgen .ProvisionerJob (t ,db ,nil , database.ProvisionerJob {
111
+ Provisioner :database .ProvisionerTypeTerraform ,
112
+ StorageMethod :database .ProvisionerStorageMethodFile ,
113
+ Type :database .ProvisionerJobTypeTemplateVersionDryRun ,
114
+ OrganizationID :org .ID ,
115
+ })
116
+ taskTpl := dbgen .Template (t ,db , database.Template {
117
+ Provisioner :database .ProvisionerTypeTerraform ,
118
+ OrganizationID :org .ID ,
119
+ CreatedBy :user .ID ,
120
+ })
121
+ taskTV := dbgen .TemplateVersion (t ,db , database.TemplateVersion {
122
+ OrganizationID :org .ID ,
123
+ TemplateID : uuid.NullUUID {UUID :taskTpl .ID ,Valid :true },
124
+ CreatedBy :user .ID ,
125
+ JobID :taskJob .ID ,
126
+ HasAITask : sql.NullBool {Bool :true ,Valid :true },
127
+ })
128
+ taskWs := dbgen .Workspace (t ,db , database.WorkspaceTable {
129
+ OwnerID :user .ID ,
130
+ OrganizationID :org .ID ,
131
+ TemplateID :taskTpl .ID ,
132
+ })
133
+ taskWsResource := dbgen .WorkspaceResource (t ,db , database.WorkspaceResource {
134
+ JobID :taskJob .ID ,
135
+ })
136
+ taskWsAgent := dbgen .WorkspaceAgent (t ,db , database.WorkspaceAgent {
137
+ ResourceID :taskWsResource .ID ,
138
+ })
139
+ taskWsApp := dbgen .WorkspaceApp (t ,db , database.WorkspaceApp {
140
+ SharingLevel :database .AppSharingLevelOwner ,
141
+ Health :database .WorkspaceAppHealthDisabled ,
142
+ OpenIn :database .WorkspaceAppOpenInSlimWindow ,
143
+ AgentID :taskWsAgent .ID ,
144
+ })
145
+ taskWB := dbgen .WorkspaceBuild (t ,db , database.WorkspaceBuild {
146
+ Transition :database .WorkspaceTransitionStart ,
147
+ Reason :database .BuildReasonAutostart ,
148
+ WorkspaceID :taskWs .ID ,
149
+ TemplateVersionID :tv .ID ,
150
+ JobID :taskJob .ID ,
151
+ HasAITask : sql.NullBool {Valid :true ,Bool :true },
152
+ AITaskSidebarAppID : uuid.NullUUID {Valid :true ,UUID :taskWsApp .ID },
153
+ })
154
+
108
155
group := dbgen .Group (t ,db , database.Group {
109
156
OrganizationID :org .ID ,
110
157
})
@@ -148,19 +195,19 @@ func TestTelemetry(t *testing.T) {
148
195
})
149
196
150
197
_ ,snapshot := collectSnapshot (ctx ,t ,db ,nil )
151
- require .Len (t ,snapshot .ProvisionerJobs ,1 )
198
+ require .Len (t ,snapshot .ProvisionerJobs ,2 )
152
199
require .Len (t ,snapshot .Licenses ,1 )
153
- require .Len (t ,snapshot .Templates ,1 )
154
- require .Len (t ,snapshot .TemplateVersions ,2 )
200
+ require .Len (t ,snapshot .Templates ,2 )
201
+ require .Len (t ,snapshot .TemplateVersions ,3 )
155
202
require .Len (t ,snapshot .Users ,1 )
156
203
require .Len (t ,snapshot .Groups ,2 )
157
204
// 1 member in the everyone group + 1 member in the custom group
158
205
require .Len (t ,snapshot .GroupMembers ,2 )
159
- require .Len (t ,snapshot .Workspaces ,1 )
160
- require .Len (t ,snapshot .WorkspaceApps ,1 )
161
- require .Len (t ,snapshot .WorkspaceAgents ,1 )
162
- require .Len (t ,snapshot .WorkspaceBuilds ,1 )
163
- require .Len (t ,snapshot .WorkspaceResources ,1 )
206
+ require .Len (t ,snapshot .Workspaces ,2 )
207
+ require .Len (t ,snapshot .WorkspaceApps ,2 )
208
+ require .Len (t ,snapshot .WorkspaceAgents ,2 )
209
+ require .Len (t ,snapshot .WorkspaceBuilds ,2 )
210
+ require .Len (t ,snapshot .WorkspaceResources ,2 )
164
211
require .Len (t ,snapshot .WorkspaceAgentStats ,1 )
165
212
require .Len (t ,snapshot .WorkspaceProxies ,1 )
166
213
require .Len (t ,snapshot .WorkspaceModules ,1 )
@@ -169,11 +216,24 @@ func TestTelemetry(t *testing.T) {
169
216
require .Len (t ,snapshot .TelemetryItems ,2 )
170
217
require .Len (t ,snapshot .WorkspaceAgentMemoryResourceMonitors ,1 )
171
218
require .Len (t ,snapshot .WorkspaceAgentVolumeResourceMonitors ,1 )
172
- wsa := snapshot .WorkspaceAgents [0 ]
219
+ wsa := snapshot .WorkspaceAgents [1 ]
173
220
require .Len (t ,wsa .Subsystems ,2 )
174
221
require .Equal (t ,string (database .WorkspaceAgentSubsystemEnvbox ),wsa .Subsystems [0 ])
175
222
require .Equal (t ,string (database .WorkspaceAgentSubsystemExectrace ),wsa .Subsystems [1 ])
176
223
224
+ require .True (t ,slices .ContainsFunc (snapshot .TemplateVersions ,func (ttv telemetry.TemplateVersion )bool {
225
+ if ttv .ID != taskTV .ID {
226
+ return false
227
+ }
228
+ return assert .NotNil (t ,ttv .HasAITask )&& assert .True (t ,* ttv .HasAITask )
229
+ }))
230
+ require .True (t ,slices .ContainsFunc (snapshot .WorkspaceBuilds ,func (twb telemetry.WorkspaceBuild )bool {
231
+ if twb .ID != taskWB .ID {
232
+ return false
233
+ }
234
+ return assert .NotNil (t ,twb .HasAITask )&& assert .True (t ,* twb .HasAITask )
235
+ }))
236
+
177
237
tvs := snapshot .TemplateVersions
178
238
sort .Slice (tvs ,func (i ,j int )bool {
179
239
// Sort by SourceExampleID presence (non-nil comes before nil)