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
+ _ = 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
+ _ = 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,18 @@ 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
+ return ttv .HasAITask
226
+ }))
227
+ require .True (t , slices .ContainsFunc (snapshot .WorkspaceBuilds , func (twb telemetry.WorkspaceBuild ) bool {
228
+ return twb .HasAITask
229
+ }))
230
+
177
231
tvs := snapshot .TemplateVersions
178
232
sort .Slice (tvs , func (i , j int ) bool {
179
233
// Sort by SourceExampleID presence (non-nil comes before nil)
0 commit comments