(t *testing.T)
| 114 | } |
| 115 | |
| 116 | func TestDetectorNoHungJobs(t *testing.T) { |
| 117 | t.Parallel() |
| 118 | |
| 119 | ctx := testutil.Context(t, testutil.WaitLong) |
| 120 | env := newDetectorTestEnv(ctx, t) |
| 121 | defer env.close() |
| 122 | |
| 123 | // Insert some jobs that are running and haven't been updated in a while, |
| 124 | // but not enough to be considered hung. |
| 125 | now := time.Now() |
| 126 | org := dbgen.Organization(t, env.DB, database.Organization{}) |
| 127 | user := dbgen.User(t, env.DB, database.User{}) |
| 128 | file := dbgen.File(t, env.DB, database.File{}) |
| 129 | for i := 0; i < 5; i++ { |
| 130 | dbgen.ProvisionerJob(t, env.DB, env.Pubsub, database.ProvisionerJob{ |
| 131 | CreatedAt: now.Add(-time.Minute * 5), |
| 132 | UpdatedAt: now.Add(-time.Minute * time.Duration(i)), |
| 133 | StartedAt: sql.NullTime{ |
| 134 | Time: now.Add(-time.Minute * 5), |
| 135 | Valid: true, |
| 136 | }, |
| 137 | OrganizationID: org.ID, |
| 138 | InitiatorID: user.ID, |
| 139 | Provisioner: database.ProvisionerTypeEcho, |
| 140 | StorageMethod: database.ProvisionerStorageMethodFile, |
| 141 | FileID: file.ID, |
| 142 | Type: database.ProvisionerJobTypeWorkspaceBuild, |
| 143 | Input: []byte("{}"), |
| 144 | }) |
| 145 | } |
| 146 | |
| 147 | stats := env.tick(ctx, now) |
| 148 | require.NoError(t, stats.Error) |
| 149 | require.Empty(t, stats.TerminatedJobIDs) |
| 150 | } |
| 151 | |
| 152 | func TestDetectorHungWorkspaceBuild(t *testing.T) { |
| 153 | t.Parallel() |
nothing calls this directly
no test coverage detected