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

Function TestReconciliationStats

enterprise/coderd/prebuilds/reconcile_test.go:2955–3007  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2953}
2954
2955func TestReconciliationStats(t *testing.T) {
2956 t.Parallel()
2957
2958 // Setup
2959 clock := quartz.NewReal()
2960 db, ps := dbtestutil.NewDB(t)
2961 client, _, _ := coderdtest.NewWithAPI(t, &coderdtest.Options{
2962 Database: db,
2963 Pubsub: ps,
2964 Clock: clock,
2965 })
2966 fakeEnqueuer := newFakeEnqueuer()
2967 registry := prometheus.NewRegistry()
2968 cache := files.New(registry, &coderdtest.FakeAuthorizer{})
2969 logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
2970 reconciler := prebuilds.NewStoreReconciler(
2971 db, ps, cache, codersdk.PrebuildsConfig{}, logger,
2972 clock,
2973 registry,
2974 fakeEnqueuer,
2975 newNoopUsageCheckerPtr(),
2976 noop.NewTracerProvider(),
2977 10,
2978 nil,
2979 )
2980 owner := coderdtest.CreateFirstUser(t, client)
2981
2982 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
2983 defer cancel()
2984
2985 // Create a template version with a preset
2986 dbfake.TemplateVersion(t, db).Seed(database.TemplateVersion{
2987 OrganizationID: owner.OrganizationID,
2988 CreatedBy: owner.UserID,
2989 }).Preset(database.TemplateVersionPreset{
2990 DesiredInstances: sql.NullInt32{
2991 Int32: 1,
2992 Valid: true,
2993 },
2994 }).Do()
2995
2996 // Verify that ReconcileAll tracks and returns elapsed time
2997 start := time.Now()
2998 stats, err := reconciler.ReconcileAll(ctx)
2999 actualElapsed := time.Since(start)
3000 require.NoError(t, err)
3001 require.Greater(t, stats.Elapsed, time.Duration(0))
3002
3003 // Verify stats.Elapsed matches actual execution time
3004 require.InDelta(t, actualElapsed.Milliseconds(), stats.Elapsed.Milliseconds(), 100)
3005 // Verify reconciliation loop is not unexpectedly slow
3006 require.Less(t, stats.Elapsed, 5*time.Second)
3007}
3008
3009func newNoopEnqueuer() *notifications.NoopEnqueuer {
3010 return notifications.NewNoopEnqueuer()

Callers

nothing calls this directly

Calls 14

ReconcileAllMethod · 0.95
NewDBFunction · 0.92
NewWithAPIFunction · 0.92
NewFunction · 0.92
NewStoreReconcilerFunction · 0.92
CreateFirstUserFunction · 0.92
TemplateVersionFunction · 0.92
newFakeEnqueuerFunction · 0.85
newNoopUsageCheckerPtrFunction · 0.85
PresetMethod · 0.80
DurationMethod · 0.80
LessMethod · 0.80

Tested by

no test coverage detected