Skip to content

Commit d28fb15

Browse files
test: improve duplicate-template-names test
1 parent c062274 commit d28fb15

File tree

1 file changed

+38
-4
lines changed

1 file changed

+38
-4
lines changed

enterprise/coderd/prebuilds/metricscollector_test.go

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -371,27 +371,61 @@ func TestMetricsCollector_DuplicateTemplateNames(t *testing.T) {
371371
defaultOrg := dbgen.Organization(t, db, database.Organization{
372372
Name: defaultOrgName,
373373
})
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)
376376
templateVersionID := setupTestDBTemplateVersion(ctx, t, clock, db, pubsub, defaultOrg.ID, test.ownerID, template.ID)
377377
preset := setupTestDBPreset(t, db, templateVersionID, 1, defaultPresetName)
378378
workspace, _ := setupTestDBWorkspace(
379379
t, clock, db, pubsub,
380380
test.transition, test.jobStatus, defaultOrg.ID, preset, template.ID, templateVersionID, test.initiatorID, test.ownerID,
381381
)
382382
setupTestDBWorkspaceAgent(t, db, workspace.ID, test.eligible)
383+
return template
383384
}
384385
// Simulates creating and then deleting a template.
385386
setupTemplateWithDeps(true)
386387
// Simulates creating a template with the same org, template name, and preset name.
387-
setupTemplateWithDeps(false)
388+
newTemplate := setupTemplateWithDeps(false)
388389

389390
// Force an update to the metrics state to allow the collector to collect fresh metrics.
390391
// nolint:gocritic // Authz context needed to retrieve state.
391392
require.NoError(t, collector.UpdateState(dbauthz.AsPrebuildsOrchestrator(ctx), testutil.WaitLong))
392393

393-
_, err := registry.Gather()
394+
metricsFamilies, err := registry.Gather()
394395
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+
}
395429
}
396430

397431
func findMetric(metricsFamilies []*prometheus_client.MetricFamily, name string, labels map[string]string) *prometheus_client.Metric {

0 commit comments

Comments
 (0)