mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
chore: test metricscache on postgres (#16711)
metricscache_test has been running tests against dbmem only, instead of against postgres. Unfortunately the implementations of GetTemplateAverageBuildTime have diverged between dbmem and postgres. This change gets the tests working on Postgres and test for the behaviour postgres provides.
This commit is contained in:
@ -15,6 +15,7 @@ import (
|
||||
"github.com/coder/coder/v2/coderd/database/dbauthz"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
"github.com/coder/quartz"
|
||||
"github.com/coder/retry"
|
||||
)
|
||||
|
||||
@ -26,6 +27,7 @@ import (
|
||||
type Cache struct {
|
||||
database database.Store
|
||||
log slog.Logger
|
||||
clock quartz.Clock
|
||||
intervals Intervals
|
||||
|
||||
templateWorkspaceOwners atomic.Pointer[map[uuid.UUID]int]
|
||||
@ -45,7 +47,7 @@ type Intervals struct {
|
||||
DeploymentStats time.Duration
|
||||
}
|
||||
|
||||
func New(db database.Store, log slog.Logger, intervals Intervals, usage bool) *Cache {
|
||||
func New(db database.Store, log slog.Logger, clock quartz.Clock, intervals Intervals, usage bool) *Cache {
|
||||
if intervals.TemplateBuildTimes <= 0 {
|
||||
intervals.TemplateBuildTimes = time.Hour
|
||||
}
|
||||
@ -55,6 +57,7 @@ func New(db database.Store, log slog.Logger, intervals Intervals, usage bool) *C
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
c := &Cache{
|
||||
clock: clock,
|
||||
database: db,
|
||||
intervals: intervals,
|
||||
log: log,
|
||||
@ -104,7 +107,7 @@ func (c *Cache) refreshTemplateBuildTimes(ctx context.Context) error {
|
||||
Valid: true,
|
||||
},
|
||||
StartTime: sql.NullTime{
|
||||
Time: dbtime.Time(time.Now().AddDate(0, 0, -30)),
|
||||
Time: dbtime.Time(c.clock.Now().AddDate(0, 0, -30)),
|
||||
Valid: true,
|
||||
},
|
||||
})
|
||||
@ -131,7 +134,7 @@ func (c *Cache) refreshTemplateBuildTimes(ctx context.Context) error {
|
||||
|
||||
func (c *Cache) refreshDeploymentStats(ctx context.Context) error {
|
||||
var (
|
||||
from = dbtime.Now().Add(-15 * time.Minute)
|
||||
from = c.clock.Now().Add(-15 * time.Minute)
|
||||
agentStats database.GetDeploymentWorkspaceAgentStatsRow
|
||||
err error
|
||||
)
|
||||
@ -155,8 +158,8 @@ func (c *Cache) refreshDeploymentStats(ctx context.Context) error {
|
||||
}
|
||||
c.deploymentStatsResponse.Store(&codersdk.DeploymentStats{
|
||||
AggregatedFrom: from,
|
||||
CollectedAt: dbtime.Now(),
|
||||
NextUpdateAt: dbtime.Now().Add(c.intervals.DeploymentStats),
|
||||
CollectedAt: dbtime.Time(c.clock.Now()),
|
||||
NextUpdateAt: dbtime.Time(c.clock.Now().Add(c.intervals.DeploymentStats)),
|
||||
Workspaces: codersdk.WorkspaceDeploymentStats{
|
||||
Pending: workspaceStats.PendingWorkspaces,
|
||||
Building: workspaceStats.BuildingWorkspaces,
|
||||
|
Reference in New Issue
Block a user