Share generation attempt accounting

This commit is contained in:
2026-11-05 14:27:28 +00:00
parent df208e132b
commit ada5377f32
3 changed files with 113 additions and 114 deletions

View File

@@ -144,6 +144,32 @@ func (c fixedClient) Generate(context.Context, domain.GenerateRequest) (*domain.
return c.response, c.err
}
func TestInjectedObserverRunsAfterPermitRelease(t *testing.T) {
configured := testCoordinator(t, func(*http.Request) (*http.Response, error) { t.Fatal("unexpected HTTP request"); return nil, nil })
coordinator := NewInjected(configured.manager, fixedClient{response: &domain.GenerateResponse{}})
called := false
recorder, err := observation.New(func(event domain.ExecutionEvent) {
if event.Kind != domain.ExecutionAttempt {
return
}
called = true
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
release, err := coordinator.manager.Acquire(ctx, "limited")
if err != nil {
t.Errorf("observer could not acquire permit: %v", err)
return
}
release()
})
if err != nil {
t.Fatal(err)
}
if _, err := coordinator.Generate(observation.WithRecorder(context.Background(), recorder), testRequest(0)); err != nil || !called {
t.Fatalf("generation error = %v, observer called = %v", err, called)
}
}
func TestObservedInjectedUsageAndRepairGeneration(t *testing.T) {
manager, err := capacity.NewManager(nil)
if err != nil {