@@ -371,27 +371,61 @@ func TestMetricsCollector_DuplicateTemplateNames(t *testing.T) {
371
371
defaultOrg := dbgen .Organization (t , db , database.Organization {
372
372
Name : defaultOrgName ,
373
373
})
374
- setupTemplateWithDeps := func (templateDeleted bool ) {
375
- template := setupTestDBTemplateWithinOrg (t , db , test .ownerID , true , defaultTemplateName , defaultOrg )
374
+ setupTemplateWithDeps := func (templateDeleted bool ) database. Template {
375
+ template := setupTestDBTemplateWithinOrg (t , db , test .ownerID , templateDeleted , defaultTemplateName , defaultOrg )
376
376
templateVersionID := setupTestDBTemplateVersion (ctx , t , clock , db , pubsub , defaultOrg .ID , test .ownerID , template .ID )
377
377
preset := setupTestDBPreset (t , db , templateVersionID , 1 , defaultPresetName )
378
378
workspace , _ := setupTestDBWorkspace (
379
379
t , clock , db , pubsub ,
380
380
test .transition , test .jobStatus , defaultOrg .ID , preset , template .ID , templateVersionID , test .initiatorID , test .ownerID ,
381
381
)
382
382
setupTestDBWorkspaceAgent (t , db , workspace .ID , test .eligible )
383
+ return template
383
384
}
384
385
// Simulates creating and then deleting a template.
385
386
setupTemplateWithDeps (true )
386
387
// Simulates creating a template with the same org, template name, and preset name.
387
- setupTemplateWithDeps (false )
388
+ newTemplate := setupTemplateWithDeps (false )
388
389
389
390
// Force an update to the metrics state to allow the collector to collect fresh metrics.
390
391
// nolint:gocritic // Authz context needed to retrieve state.
391
392
require .NoError (t , collector .UpdateState (dbauthz .AsPrebuildsOrchestrator (ctx ), testutil .WaitLong ))
392
393
393
- _ , err := registry .Gather ()
394
+ metricsFamilies , err := registry .Gather ()
394
395
require .NoError (t , err )
396
+
397
+ templateVersions , err := db .GetTemplateVersionsByTemplateID (ctx , database.GetTemplateVersionsByTemplateIDParams {
398
+ TemplateID : newTemplate .ID ,
399
+ })
400
+ require .NoError (t , err )
401
+ require .Equal (t , 1 , len (templateVersions ))
402
+
403
+ presets , err := db .GetPresetsByTemplateVersionID (ctx , templateVersions [0 ].ID )
404
+ require .NoError (t , err )
405
+ require .Equal (t , 1 , len (presets ))
406
+
407
+ for _ , preset := range presets {
408
+ labels := map [string ]string {
409
+ "template_name" : newTemplate .Name ,
410
+ "preset_name" : preset .Name ,
411
+ "organization_name" : defaultOrg .Name ,
412
+ }
413
+
414
+ for _ , check := range test .metrics {
415
+ metric := findMetric (metricsFamilies , check .name , labels )
416
+ if check .value == nil {
417
+ continue
418
+ }
419
+
420
+ require .NotNil (t , metric , "metric %s should exist" , check .name )
421
+
422
+ if check .isCounter {
423
+ require .Equal (t , * check .value , metric .GetCounter ().GetValue (), "counter %s value mismatch" , check .name )
424
+ } else {
425
+ require .Equal (t , * check .value , metric .GetGauge ().GetValue (), "gauge %s value mismatch" , check .name )
426
+ }
427
+ }
428
+ }
395
429
}
396
430
397
431
func findMetric (metricsFamilies []* prometheus_client.MetricFamily , name string , labels map [string ]string ) * prometheus_client.Metric {
0 commit comments