diff --git a/coderd/database/dbpurge/dbpurge_test.go b/coderd/database/dbpurge/dbpurge_test.go index da718527866c0..9e949f270d2ca 100644 --- a/coderd/database/dbpurge/dbpurge_test.go +++ b/coderd/database/dbpurge/dbpurge_test.go @@ -202,7 +202,7 @@ func containsAgentLog(daemons []database.WorkspaceAgentLog, output string) bool func TestDeleteOldProvisionerDaemons(t *testing.T) { t.Parallel() - db, _ := dbtestutil.NewDB(t) + db, _ := dbtestutil.NewDB(t, dbtestutil.WithDumpOnFailure()) defaultOrg := dbgen.Organization(t, db, database.Organization{}) logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}) @@ -214,11 +214,12 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { // given _, err := db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{ // Provisioner daemon created 14 days ago, and checked in just before 7 days deadline. - Name: "external-0", - Provisioners: []database.ProvisionerType{"echo"}, - Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization}, - CreatedAt: now.Add(-14 * 24 * time.Hour), - LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-7 * 24 * time.Hour).Add(time.Minute)}, + Name: "external-0", + Provisioners: []database.ProvisionerType{"echo"}, + Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization}, + CreatedAt: now.AddDate(0, 0, -14), + // Note: adding an hour and a minute to account for DST variations + LastSeenAt: sql.NullTime{Valid: true, Time: now.AddDate(0, 0, -7).Add(61 * time.Minute)}, Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), OrganizationID: defaultOrg.ID, @@ -229,8 +230,8 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { Name: "external-1", Provisioners: []database.ProvisionerType{"echo"}, Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization}, - CreatedAt: now.Add(-8 * 24 * time.Hour), - LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-8 * 24 * time.Hour).Add(time.Hour)}, + CreatedAt: now.AddDate(0, 0, -8), + LastSeenAt: sql.NullTime{Valid: true, Time: now.AddDate(0, 0, -8).Add(time.Hour)}, Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), OrganizationID: defaultOrg.ID, @@ -244,7 +245,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { provisionersdk.TagScope: provisionersdk.ScopeUser, provisionersdk.TagOwner: uuid.NewString(), }, - CreatedAt: now.Add(-9 * 24 * time.Hour), + CreatedAt: now.AddDate(0, 0, -9), Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), OrganizationID: defaultOrg.ID, @@ -258,8 +259,8 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { provisionersdk.TagScope: provisionersdk.ScopeUser, provisionersdk.TagOwner: uuid.NewString(), }, - CreatedAt: now.Add(-6 * 24 * time.Hour), - LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-6 * 24 * time.Hour)}, + CreatedAt: now.AddDate(0, 0, -6), + LastSeenAt: sql.NullTime{Valid: true, Time: now.AddDate(0, 0, -6)}, Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), OrganizationID: defaultOrg.ID, @@ -276,11 +277,18 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { if err != nil { return false } + + daemonNames := make([]string, 0, len(daemons)) + for _, d := range daemons { + daemonNames = append(daemonNames, d.Name) + } + t.Logf("found %d daemons: %v", len(daemons), daemonNames) + return containsProvisionerDaemon(daemons, "external-0") && !containsProvisionerDaemon(daemons, "external-1") && !containsProvisionerDaemon(daemons, "alice-provisioner") && containsProvisionerDaemon(daemons, "bob-provisioner") - }, testutil.WaitShort, testutil.IntervalFast) + }, testutil.WaitShort, testutil.IntervalSlow) } func containsProvisionerDaemon(daemons []database.ProvisionerDaemon, name string) bool {