(t *testing.T)
| 6411 | } |
| 6412 | |
| 6413 | func TestProvisionerJobQueueWaitMetric(t *testing.T) { |
| 6414 | t.Parallel() |
| 6415 | |
| 6416 | logger := testutil.Logger(t) |
| 6417 | reg := prometheus.NewRegistry() |
| 6418 | metrics := provisionerdserver.NewMetrics(logger) |
| 6419 | err := metrics.Register(reg) |
| 6420 | require.NoError(t, err) |
| 6421 | |
| 6422 | client := coderdtest.New(t, &coderdtest.Options{ |
| 6423 | IncludeProvisionerDaemon: true, |
| 6424 | ProvisionerdServerMetrics: metrics, |
| 6425 | }) |
| 6426 | user := coderdtest.CreateFirstUser(t, client) |
| 6427 | |
| 6428 | // Create a template version - this triggers a template_version_import job. |
| 6429 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil) |
| 6430 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 6431 | |
| 6432 | // Check that the queue wait metric was recorded for the template_version_import job. |
| 6433 | importMetric := promhelp.MetricValue(t, reg, "coderd_provisioner_job_queue_wait_seconds", prometheus.Labels{ |
| 6434 | "provisioner_type": string(database.ProvisionerTypeEcho), |
| 6435 | "job_type": string(database.ProvisionerJobTypeTemplateVersionImport), |
| 6436 | "transition": "", |
| 6437 | "build_reason": "", |
| 6438 | }) |
| 6439 | require.NotNil(t, importMetric, "import job metric should be recorded") |
| 6440 | importHistogram := importMetric.GetHistogram() |
| 6441 | require.NotNil(t, importHistogram) |
| 6442 | require.Equal(t, uint64(1), importHistogram.GetSampleCount(), "import job should have 1 sample") |
| 6443 | require.Greater(t, importHistogram.GetSampleSum(), 0.0, "import job queue wait should be non-zero") |
| 6444 | |
| 6445 | // Create a template and workspace - this triggers a workspace_build job. |
| 6446 | template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) |
| 6447 | workspace := coderdtest.CreateWorkspace(t, client, template.ID) |
| 6448 | coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID) |
| 6449 | |
| 6450 | // Check that the queue wait metric was recorded for the workspace_build job. |
| 6451 | buildMetric := promhelp.MetricValue(t, reg, "coderd_provisioner_job_queue_wait_seconds", prometheus.Labels{ |
| 6452 | "provisioner_type": string(database.ProvisionerTypeEcho), |
| 6453 | "job_type": string(database.ProvisionerJobTypeWorkspaceBuild), |
| 6454 | "transition": string(database.WorkspaceTransitionStart), |
| 6455 | "build_reason": string(database.BuildReasonInitiator), |
| 6456 | }) |
| 6457 | require.NotNil(t, buildMetric, "workspace build job metric should be recorded") |
| 6458 | buildHistogram := buildMetric.GetHistogram() |
| 6459 | require.NotNil(t, buildHistogram) |
| 6460 | require.Equal(t, uint64(1), buildHistogram.GetSampleCount(), "workspace build job should have 1 sample") |
| 6461 | require.Greater(t, buildHistogram.GetSampleSum(), 0.0, "workspace build job queue wait should be non-zero") |
| 6462 | } |
| 6463 | |
| 6464 | func TestWorkspaceBuildsEnqueuedMetric(t *testing.T) { |
| 6465 | t.Parallel() |
nothing calls this directly
no test coverage detected