createBuild creates a workspace build with the given parameters, handling provisioner job creation automatically.
( resp dbfake.WorkspaceResponse, buildNumber int32, createdAt time.Time, transition database.WorkspaceTransition, reason database.BuildReason, )
| 708 | // createBuild creates a workspace build with the given parameters, |
| 709 | // handling provisioner job creation automatically. |
| 710 | func (h *taskTelemetryHelper) createBuild( |
| 711 | resp dbfake.WorkspaceResponse, |
| 712 | buildNumber int32, |
| 713 | createdAt time.Time, |
| 714 | transition database.WorkspaceTransition, |
| 715 | reason database.BuildReason, |
| 716 | ) (database.WorkspaceBuild, *database.WorkspaceApp) { |
| 717 | job := dbgen.ProvisionerJob(h.t, h.db, nil, database.ProvisionerJob{ |
| 718 | Provisioner: database.ProvisionerTypeTerraform, |
| 719 | StorageMethod: database.ProvisionerStorageMethodFile, |
| 720 | Type: database.ProvisionerJobTypeWorkspaceBuild, |
| 721 | OrganizationID: h.org.ID, |
| 722 | }) |
| 723 | bld := dbgen.WorkspaceBuild(h.t, h.db, database.WorkspaceBuild{ |
| 724 | WorkspaceID: resp.Workspace.ID, |
| 725 | TemplateVersionID: resp.TemplateVersion.ID, |
| 726 | JobID: job.ID, |
| 727 | Transition: transition, |
| 728 | Reason: reason, |
| 729 | BuildNumber: buildNumber, |
| 730 | CreatedAt: createdAt, |
| 731 | HasAITask: sql.NullBool{ |
| 732 | Bool: true, |
| 733 | Valid: true, |
| 734 | }, |
| 735 | }) |
| 736 | if transition == database.WorkspaceTransitionStart { |
| 737 | require.NotEmpty(h.t, resp.Agents, "need at least one agent") |
| 738 | agt := resp.Agents[0] |
| 739 | // App IDs are regenerated by provisionerd each build. |
| 740 | app := dbgen.WorkspaceApp(h.t, h.db, database.WorkspaceApp{ |
| 741 | AgentID: agt.ID, |
| 742 | }) |
| 743 | _, err := h.db.UpsertTaskWorkspaceApp(h.ctx, database.UpsertTaskWorkspaceAppParams{ |
| 744 | TaskID: resp.Task.ID, |
| 745 | WorkspaceBuildNumber: buildNumber, |
| 746 | WorkspaceAgentID: uuid.NullUUID{UUID: agt.ID, Valid: true}, |
| 747 | WorkspaceAppID: uuid.NullUUID{UUID: app.ID, Valid: true}, |
| 748 | }) |
| 749 | require.NoError(h.t, err, "failed to upsert task app") |
| 750 | return bld, &app |
| 751 | } |
| 752 | return bld, nil |
| 753 | } |
| 754 | |
| 755 | // nolint: dupl // Test code is better WET than DRY. |
| 756 | func TestTasksTelemetry(t *testing.T) { |
no test coverage detected