(t *testing.T)
| 23 | ) |
| 24 | |
| 25 | func TestProvisionerDaemonReport(t *testing.T) { |
| 26 | t.Parallel() |
| 27 | |
| 28 | var ( |
| 29 | now = dbtime.Now() |
| 30 | oneHourAgo = now.Add(-time.Hour) |
| 31 | staleThreshold = now.Add(-provisionerdserver.StaleInterval).Add(-time.Second) |
| 32 | ) |
| 33 | |
| 34 | for _, tt := range []struct { |
| 35 | name string |
| 36 | currentVersion string |
| 37 | currentAPIMajorVersion int |
| 38 | provisionerDaemons []database.ProvisionerDaemon |
| 39 | provisionerDaemonsErr error |
| 40 | expectedSeverity health.Severity |
| 41 | expectedWarningCode health.Code |
| 42 | expectedError string |
| 43 | expectedItems []healthsdk.ProvisionerDaemonsReportItem |
| 44 | }{ |
| 45 | { |
| 46 | name: "current version empty", |
| 47 | currentVersion: "", |
| 48 | expectedSeverity: health.SeverityError, |
| 49 | expectedError: "Developer error: CurrentVersion is empty", |
| 50 | expectedItems: []healthsdk.ProvisionerDaemonsReportItem{}, |
| 51 | }, |
| 52 | { |
| 53 | name: "no daemons", |
| 54 | currentVersion: "v1.2.3", |
| 55 | currentAPIMajorVersion: proto.CurrentMajor, |
| 56 | expectedSeverity: health.SeverityError, |
| 57 | expectedItems: []healthsdk.ProvisionerDaemonsReportItem{}, |
| 58 | expectedWarningCode: health.CodeProvisionerDaemonsNoProvisionerDaemons, |
| 59 | }, |
| 60 | { |
| 61 | name: "error fetching daemons", |
| 62 | currentVersion: "v1.2.3", |
| 63 | currentAPIMajorVersion: proto.CurrentMajor, |
| 64 | provisionerDaemonsErr: assert.AnError, |
| 65 | expectedSeverity: health.SeverityError, |
| 66 | expectedError: assert.AnError.Error(), |
| 67 | expectedItems: []healthsdk.ProvisionerDaemonsReportItem{}, |
| 68 | }, |
| 69 | { |
| 70 | name: "one daemon up to date", |
| 71 | currentVersion: "v1.2.3", |
| 72 | currentAPIMajorVersion: proto.CurrentMajor, |
| 73 | expectedSeverity: health.SeverityOK, |
| 74 | provisionerDaemons: []database.ProvisionerDaemon{ |
| 75 | fakeProvisionerDaemon(t, withName("pd-ok"), withVersion("v1.2.3"), withAPIVersion("1.0"), withCreatedAt(now), withLastSeenAt(now)), |
| 76 | }, |
| 77 | expectedItems: []healthsdk.ProvisionerDaemonsReportItem{ |
| 78 | { |
| 79 | ProvisionerDaemon: codersdk.ProvisionerDaemon{ |
| 80 | ID: uuid.Nil, |
| 81 | Name: "pd-ok", |
| 82 | CreatedAt: now, |
nothing calls this directly
no test coverage detected