MCPcopy Index your code
hub / github.com/coder/coder / TestProvisionerJobQueueWaitMetric

Function TestProvisionerJobQueueWaitMetric

coderd/workspaces_test.go:6413–6462  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

6411}
6412
6413func 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
6464func TestWorkspaceBuildsEnqueuedMetric(t *testing.T) {
6465 t.Parallel()

Callers

nothing calls this directly

Calls 12

RegisterMethod · 0.95
LoggerFunction · 0.92
NewMetricsFunction · 0.92
NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
MetricValueFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
EqualMethod · 0.45

Tested by

no test coverage detected