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

Method createBuild

coderd/telemetry/telemetry_test.go:710–753  ·  view source on GitHub ↗

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,
)

Source from the content-addressed store, hash-verified

708// createBuild creates a workspace build with the given parameters,
709// handling provisioner job creation automatically.
710func (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.
756func TestTasksTelemetry(t *testing.T) {

Callers 1

TestTasksTelemetryFunction · 0.95

Calls 5

ProvisionerJobFunction · 0.92
WorkspaceBuildFunction · 0.92
WorkspaceAppFunction · 0.92
NotEmptyMethod · 0.80

Tested by

no test coverage detected