(t *testing.T)
| 4947 | } |
| 4948 | |
| 4949 | func TestWorkspaceUsageTracking(t *testing.T) { |
| 4950 | t.Parallel() |
| 4951 | t.Run("NoExperiment", func(t *testing.T) { |
| 4952 | t.Parallel() |
| 4953 | client, db := coderdtest.NewWithDatabase(t, nil) |
| 4954 | user := coderdtest.CreateFirstUser(t, client) |
| 4955 | tmpDir := t.TempDir() |
| 4956 | r := dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{ |
| 4957 | OrganizationID: user.OrganizationID, |
| 4958 | OwnerID: user.UserID, |
| 4959 | }).WithAgent(func(agents []*proto.Agent) []*proto.Agent { |
| 4960 | agents[0].Directory = tmpDir |
| 4961 | return agents |
| 4962 | }).Do() |
| 4963 | |
| 4964 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium) |
| 4965 | defer cancel() |
| 4966 | |
| 4967 | // continue legacy behavior |
| 4968 | err := client.PostWorkspaceUsage(ctx, r.Workspace.ID) |
| 4969 | require.NoError(t, err) |
| 4970 | err = client.PostWorkspaceUsageWithBody(ctx, r.Workspace.ID, codersdk.PostWorkspaceUsageRequest{}) |
| 4971 | require.NoError(t, err) |
| 4972 | }) |
| 4973 | t.Run("Experiment", func(t *testing.T) { |
| 4974 | t.Parallel() |
| 4975 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium) |
| 4976 | defer cancel() |
| 4977 | dv := coderdtest.DeploymentValues(t) |
| 4978 | dv.Experiments = []string{string(codersdk.ExperimentWorkspaceUsage)} |
| 4979 | client, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{ |
| 4980 | DeploymentValues: dv, |
| 4981 | }) |
| 4982 | user := coderdtest.CreateFirstUser(t, client) |
| 4983 | tmpDir := t.TempDir() |
| 4984 | org := dbgen.Organization(t, db, database.Organization{}) |
| 4985 | _ = dbgen.OrganizationMember(t, db, database.OrganizationMember{ |
| 4986 | UserID: user.UserID, |
| 4987 | OrganizationID: org.ID, |
| 4988 | }) |
| 4989 | templateVersion := dbgen.TemplateVersion(t, db, database.TemplateVersion{ |
| 4990 | OrganizationID: org.ID, |
| 4991 | CreatedBy: user.UserID, |
| 4992 | }) |
| 4993 | template := dbgen.Template(t, db, database.Template{ |
| 4994 | OrganizationID: org.ID, |
| 4995 | ActiveVersionID: templateVersion.ID, |
| 4996 | CreatedBy: user.UserID, |
| 4997 | DefaultTTL: int64(8 * time.Hour), |
| 4998 | }) |
| 4999 | _, err := client.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{ |
| 5000 | ActivityBumpMillis: ptr.Ref(8 * time.Hour.Milliseconds()), |
| 5001 | }) |
| 5002 | require.NoError(t, err) |
| 5003 | r := dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{ |
| 5004 | OrganizationID: user.OrganizationID, |
| 5005 | OwnerID: user.UserID, |
| 5006 | TemplateID: template.ID, |
nothing calls this directly
no test coverage detected