MCPcopy Create free account
hub / github.com/coder/coder / TestDeleteOldProvisionerDaemons

Function TestDeleteOldProvisionerDaemons

coderd/database/dbpurge/dbpurge_test.go:868–963  ·  view source on GitHub ↗

nolint:paralleltest // It uses LockIDDBPurge.

(t *testing.T)

Source from the content-addressed store, hash-verified

866
867//nolint:paralleltest // It uses LockIDDBPurge.
868func 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.

Callers

nothing calls this directly

Calls 14

NewDBFunction · 0.92
WithDumpOnFailureFunction · 0.92
OrganizationFunction · 0.92
NowFunction · 0.92
NewFunction · 0.92
WithClockFunction · 0.92
nopAuditorPtrFunction · 0.85
AddMethod · 0.65
CloseMethod · 0.65
GetProvisionerDaemonsMethod · 0.65

Tested by

no test coverage detected