Skip to content

Commit d71ba7f

Browse files
committed
Address PR comments
1 parent 85d6fae commit d71ba7f

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

coderd/dormancy/dormantusersjob.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,18 @@ import (
1313
)
1414

1515
const (
16-
jobInterval = 5 * time.Minute
16+
jobInterval = 15 * time.Minute
1717
accountDormancyPeriod = 90 * 24 * time.Hour
1818
)
1919

20+
// CheckInactiveUsers function updates status of inactive users from active to dormant
21+
// using default parameters.
2022
func CheckInactiveUsers(ctx context.Context, logger slog.Logger, db database.Store) func() {
2123
return CheckInactiveUsersWithOptions(ctx, logger, db, jobInterval, accountDormancyPeriod)
2224
}
2325

26+
// CheckInactiveUsersWithOptions function updates status of inactive users from active to dormant
27+
// using provided parameters.
2428
func CheckInactiveUsersWithOptions(ctx context.Context, logger slog.Logger, db database.Store, checkInterval, dormancyPeriod time.Duration) func() {
2529
logger = logger.Named("dormancy")
2630

coderd/dormancy/dormantusersjob_test.go

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,17 @@ func TestCheckInactiveUsers(t *testing.T) {
3131
ctx, cancelFunc := context.WithCancel(context.Background())
3232
t.Cleanup(cancelFunc)
3333

34-
inactiveUser1 := setupUser(ctx, t, db, "dormant-user-1@coder.com", time.Now().Add(-dormancyPeriod).Add(-time.Minute))
35-
inactiveUser2 := setupUser(ctx, t, db, "dormant-user-2@coder.com", time.Now().Add(-dormancyPeriod).Add(-time.Hour))
36-
inactiveUser3 := setupUser(ctx, t, db, "dormant-user-3@coder.com", time.Now().Add(-dormancyPeriod).Add(-6*time.Hour))
34+
inactiveUser1 := setupUser(ctx, t, db, "dormant-user-1@coder.com", database.UserStatusActive, time.Now().Add(-dormancyPeriod).Add(-time.Minute))
35+
inactiveUser2 := setupUser(ctx, t, db, "dormant-user-2@coder.com", database.UserStatusActive, time.Now().Add(-dormancyPeriod).Add(-time.Hour))
36+
inactiveUser3 := setupUser(ctx, t, db, "dormant-user-3@coder.com", database.UserStatusActive, time.Now().Add(-dormancyPeriod).Add(-6*time.Hour))
3737

38-
activeUser1 := setupUser(ctx, t, db, "active-user-1@coder.com", time.Now().Add(-dormancyPeriod).Add(time.Minute))
39-
activeUser2 := setupUser(ctx, t, db, "active-user-2@coder.com", time.Now().Add(-dormancyPeriod).Add(time.Hour))
40-
activeUser3 := setupUser(ctx, t, db, "active-user-3@coder.com", time.Now().Add(-dormancyPeriod).Add(6*time.Hour))
38+
activeUser1 := setupUser(ctx, t, db, "active-user-1@coder.com", database.UserStatusActive, time.Now().Add(-dormancyPeriod).Add(time.Minute))
39+
activeUser2 := setupUser(ctx, t, db, "active-user-2@coder.com", database.UserStatusActive, time.Now().Add(-dormancyPeriod).Add(time.Hour))
40+
activeUser3 := setupUser(ctx, t, db, "active-user-3@coder.com", database.UserStatusActive, time.Now().Add(-dormancyPeriod).Add(6*time.Hour))
41+
42+
suspendedUser1 := setupUser(ctx, t, db, "suspended-user-1@coder.com", database.UserStatusSuspended, time.Now().Add(-dormancyPeriod).Add(-time.Minute))
43+
suspendedUser2 := setupUser(ctx, t, db, "suspended-user-2@coder.com", database.UserStatusSuspended, time.Now().Add(-dormancyPeriod).Add(-time.Hour))
44+
suspendedUser3 := setupUser(ctx, t, db, "suspended-user-3@coder.com", database.UserStatusSuspended, time.Now().Add(-dormancyPeriod).Add(-6*time.Hour))
4145

4246
// Run the periodic job
4347
closeFunc := dormancy.CheckInactiveUsersWithOptions(ctx, logger, db, interval, dormancyPeriod)
@@ -51,14 +55,16 @@ func TestCheckInactiveUsers(t *testing.T) {
5155
return false
5256
}
5357

54-
var c int
58+
var dormant, suspended int
5559
for _, row := range rows {
5660
if row.Status == database.UserStatusDormant {
57-
c++
61+
dormant++
62+
} else if row.Status == database.UserStatusSuspended {
63+
suspended++
5864
}
5965
}
60-
// 6 users in total, 3 dormant
61-
return len(rows) == 6 && c == 3
66+
// 6 users in total, 3 dormant, 3 suspended
67+
return len(rows) == 9 && dormant == 3 && suspended == 3
6268
}, testutil.WaitShort, testutil.IntervalMedium)
6369

6470
allUsers := database.ConvertUserRows(rows)
@@ -71,17 +77,20 @@ func TestCheckInactiveUsers(t *testing.T) {
7177
activeUser1,
7278
activeUser2,
7379
activeUser3,
80+
suspendedUser1,
81+
suspendedUser2,
82+
suspendedUser3,
7483
}
7584
require.ElementsMatch(t, allUsers, expectedUsers)
7685
}
7786

78-
func setupUser(ctx context.Context, t *testing.T, db database.Store, email string, lastSeenAt time.Time) database.User {
87+
func setupUser(ctx context.Context, t *testing.T, db database.Store, email string, status database.UserStatus, lastSeenAt time.Time) database.User {
7988
t.Helper()
8089

8190
user, err := db.InsertUser(ctx, database.InsertUserParams{ID: uuid.New(), LoginType: database.LoginTypePassword, Username: namesgenerator.GetRandomName(8), Email: email})
8291
require.NoError(t, err)
8392
// At the beginning of the test all users are marked as active
84-
user, err = db.UpdateUserStatus(ctx, database.UpdateUserStatusParams{ID: user.ID, Status: database.UserStatusActive})
93+
user, err = db.UpdateUserStatus(ctx, database.UpdateUserStatusParams{ID: user.ID, Status: status})
8594
require.NoError(t, err)
8695
user, err = db.UpdateUserLastSeenAt(ctx, database.UpdateUserLastSeenAtParams{ID: user.ID, LastSeenAt: lastSeenAt})
8796
require.NoError(t, err)

0 commit comments

Comments
 (0)