MCPcopy Index your code
hub / github.com/coder/coder / TestConfigCache_Singleflight

Function TestConfigCache_Singleflight

coderd/x/chatd/configcache_internal_test.go:396–437  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

394}
395
396func TestConfigCache_Singleflight(t *testing.T) {
397 t.Parallel()
398
399 ctx := testutil.Context(t, testutil.WaitMedium)
400 clock := quartz.NewMock(t)
401 providers := []database.AIProvider{testAIProvider("provider-a")}
402 fetchStarted := make(chan struct{})
403 releaseFetch := make(chan struct{})
404 var startedOnce sync.Once
405 store := &stubChatConfigStore{}
406 store.getAIProviders = func(context.Context) ([]database.AIProvider, error) {
407 startedOnce.Do(func() { close(fetchStarted) })
408 <-releaseFetch
409 return providers, nil
410 }
411 cache := newChatConfigCache(ctx, store, clock)
412
413 const callers = 8
414 results := make([][]database.AIProvider, callers)
415 errs := make([]error, callers)
416 var wg sync.WaitGroup
417 start := make(chan struct{})
418 for i := 0; i < callers; i++ {
419 wg.Add(1)
420 go func(i int) {
421 defer wg.Done()
422 <-start
423 results[i], errs[i] = cache.EnabledProviders(ctx)
424 }(i)
425 }
426
427 close(start)
428 waitForSignal(t, fetchStarted)
429 close(releaseFetch)
430 wg.Wait()
431
432 for i := 0; i < callers; i++ {
433 require.NoError(t, errs[i])
434 require.Equal(t, providers, results[i])
435 }
436 require.Equal(t, int32(1), store.enabledProvidersCalls.Load())
437}
438
439func TestConfigCache_GenerationPreventsStaleWrite(t *testing.T) {
440 t.Parallel()

Callers

nothing calls this directly

Calls 11

ContextFunction · 0.92
testAIProviderFunction · 0.85
newChatConfigCacheFunction · 0.85
waitForSignalFunction · 0.85
EnabledProvidersMethod · 0.80
DoMethod · 0.65
AddMethod · 0.65
WaitMethod · 0.65
DoneMethod · 0.45
EqualMethod · 0.45
LoadMethod · 0.45

Tested by

no test coverage detected