nolint:paralleltest // It uses LockIDDBPurge.
(t *testing.T)
| 866 | |
| 867 | //nolint:paralleltest // It uses LockIDDBPurge. |
| 868 | func TestDeleteOldProvisionerDaemons(t *testing.T) { |
| 869 | // TODO: must refactor DeleteOldProvisionerDaemons to allow passing in cutoff |
| 870 | // before using quartz.NewMock |
| 871 | clk := quartz.NewReal() |
| 872 | db, _ := dbtestutil.NewDB(t, dbtestutil.WithDumpOnFailure()) |
| 873 | defaultOrg := dbgen.Organization(t, db, database.Organization{}) |
| 874 | logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}) |
| 875 | |
| 876 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort) |
| 877 | defer cancel() |
| 878 | |
| 879 | now := dbtime.Now() |
| 880 | |
| 881 | // given |
| 882 | _, err := db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{ |
| 883 | // Provisioner daemon created 14 days ago, and checked in just before 7 days deadline. |
| 884 | Name: "external-0", |
| 885 | Provisioners: []database.ProvisionerType{"echo"}, |
| 886 | Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization}, |
| 887 | CreatedAt: now.AddDate(0, 0, -14), |
| 888 | // Note: adding an hour and a minute to account for DST variations |
| 889 | LastSeenAt: sql.NullTime{Valid: true, Time: now.AddDate(0, 0, -7).Add(61 * time.Minute)}, |
| 890 | Version: "1.0.0", |
| 891 | APIVersion: proto.CurrentVersion.String(), |
| 892 | OrganizationID: defaultOrg.ID, |
| 893 | KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, |
| 894 | }) |
| 895 | require.NoError(t, err) |
| 896 | _, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{ |
| 897 | // Provisioner daemon created 8 days ago, and checked in last time an hour after creation. |
| 898 | Name: "external-1", |
| 899 | Provisioners: []database.ProvisionerType{"echo"}, |
| 900 | Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization}, |
| 901 | CreatedAt: now.AddDate(0, 0, -8), |
| 902 | LastSeenAt: sql.NullTime{Valid: true, Time: now.AddDate(0, 0, -8).Add(time.Hour)}, |
| 903 | Version: "1.0.0", |
| 904 | APIVersion: proto.CurrentVersion.String(), |
| 905 | OrganizationID: defaultOrg.ID, |
| 906 | KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, |
| 907 | }) |
| 908 | require.NoError(t, err) |
| 909 | _, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{ |
| 910 | // Provisioner daemon created 9 days ago, and never checked in. |
| 911 | Name: "alice-provisioner", |
| 912 | Provisioners: []database.ProvisionerType{"echo"}, |
| 913 | Tags: database.StringMap{ |
| 914 | provisionersdk.TagScope: provisionersdk.ScopeUser, |
| 915 | provisionersdk.TagOwner: uuid.NewString(), |
| 916 | }, |
| 917 | CreatedAt: now.AddDate(0, 0, -9), |
| 918 | Version: "1.0.0", |
| 919 | APIVersion: proto.CurrentVersion.String(), |
| 920 | OrganizationID: defaultOrg.ID, |
| 921 | KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, |
| 922 | }) |
| 923 | require.NoError(t, err) |
| 924 | _, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{ |
| 925 | // Provisioner daemon created 6 days ago, and never checked in. |
nothing calls this directly
no test coverage detected