feat(ollama): LocalOllamaProvider — abort() + AbortController instance field (v0.2.3.1)
- abortController 가 method-local 에서 private instance field 로 이동 - public abort() 메서드 — 외부에서 in-flight generate 강제 중단 - ProviderHolder.replace() 시 호출되어 endpoint 변경 즉시 반영 - 단위 +2 cases (abort cancellation, model 파라미터) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -89,4 +89,24 @@ describe('LocalOllamaProvider', () => {
|
||||
expect(h.ok).toBe(false);
|
||||
expect(h.reason).toMatch(/connect|refused|unreachable/i);
|
||||
});
|
||||
|
||||
it('abort() cancels in-flight generate (rejects with AbortError)', async () => {
|
||||
mock.get('http://localhost:11434').intercept({
|
||||
path: '/api/generate', method: 'POST'
|
||||
}).reply((async () => {
|
||||
await new Promise<void>((r) => setTimeout(r, 5000)); // long-running
|
||||
return { statusCode: 200, data: '{}' };
|
||||
}) as never);
|
||||
const provider = new LocalOllamaProvider({ timeoutMs: 30_000 });
|
||||
const generatePromise = provider.generate({
|
||||
text: 'x', todayKst: '2026-05-04', dueDateCandidates: []
|
||||
});
|
||||
setTimeout(() => provider.abort(), 50);
|
||||
await expect(generatePromise).rejects.toThrow();
|
||||
});
|
||||
|
||||
it('constructor uses provided model param (not just default)', () => {
|
||||
const provider = new LocalOllamaProvider({ model: 'gemma4:26b' });
|
||||
expect(provider.name).toBe('local-ollama/gemma4:26b');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user