From 546443a798278a07c9bff3d849e872e4263456b6 Mon Sep 17 00:00:00 2001 From: Cian Johnston <cian@coder.com> Date: Mon, 11 Mar 2024 12:37:11 +0000 Subject: [PATCH 1/2] chore(coderd/database/dbpurge): fix failing test --- coderd/database/dbpurge/dbpurge_test.go | 28 ++++++++++++++++--------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/coderd/database/dbpurge/dbpurge_test.go b/coderd/database/dbpurge/dbpurge_test.go index da718527866c0..3f40eba4c1d57 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.Add(-14 * 24 * time.Hour), + // 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, @@ -230,7 +231,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { 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)}, + 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,7 +259,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { provisionersdk.TagScope: provisionersdk.ScopeUser, provisionersdk.TagOwner: uuid.NewString(), }, - CreatedAt: now.Add(-6 * 24 * time.Hour), + CreatedAt: now.AddDate(0, 0, -6), LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-6 * 24 * time.Hour)}, Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), @@ -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 { From 90bdb96faf947e1ab38c76838b62c3d2fa2cd057 Mon Sep 17 00:00:00 2001 From: Cian Johnston <cian@coder.com> Date: Mon, 11 Mar 2024 12:42:54 +0000 Subject: [PATCH 2/2] fixup! chore(coderd/database/dbpurge): fix failing test --- coderd/database/dbpurge/dbpurge_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/coderd/database/dbpurge/dbpurge_test.go b/coderd/database/dbpurge/dbpurge_test.go index 3f40eba4c1d57..9e949f270d2ca 100644 --- a/coderd/database/dbpurge/dbpurge_test.go +++ b/coderd/database/dbpurge/dbpurge_test.go @@ -217,7 +217,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { Name: "external-0", Provisioners: []database.ProvisionerType{"echo"}, Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization}, - CreatedAt: now.Add(-14 * 24 * time.Hour), + 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", @@ -230,7 +230,7 @@ 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), + 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(), @@ -260,7 +260,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { provisionersdk.TagOwner: uuid.NewString(), }, CreatedAt: now.AddDate(0, 0, -6), - LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-6 * 24 * time.Hour)}, + LastSeenAt: sql.NullTime{Valid: true, Time: now.AddDate(0, 0, -6)}, Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), OrganizationID: defaultOrg.ID,