Bonsai-Chat-WebGPU / src /engine /errors.test.ts
WaveCut's picture
Use manifest context limits and handle memory exhaustion safely
fa59dd6 verified
Raw
History Blame Contribute Delete
1.12 kB
import { describe, expect, it } from 'vitest';
import { classifyResourceFailure } from './errors';
describe('resource failure classification', () => {
it('recognizes a full KV cache without treating it as device memory loss', () => {
expect(classifyResourceFailure(new Error('kv_cache_full'))).toBe('context-capacity');
expect(classifyResourceFailure(
new Error('native completion failed'),
['stopped due to running out of context capacity'],
)).toBe('context-capacity');
});
it('recognizes WebGPU and WASM allocation failures', () => {
expect(classifyResourceFailure(new Error('GPUOutOfMemoryError'))).toBe('memory-pressure');
expect(classifyResourceFailure(
new Error('Failed to load model'),
['ggml_webgpu: failed to allocate WebGPU KV buffer'],
)).toBe('memory-pressure');
expect(classifyResourceFailure(new Error('memory access out of bounds'))).toBe('memory-pressure');
});
it('does not relabel unrelated runtime failures as memory pressure', () => {
expect(classifyResourceFailure(new Error('Invalid chat template'))).toBeNull();
});
});