fix: dispose races, tunnel guards, retry on stale
This commit is contained in:
@@ -6,6 +6,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { createRegistry } from '../../../src/config/registry.js'
|
||||
import { writeStore } from '../../../src/config/store.js'
|
||||
import type { ConnectionConfig } from '../../../src/config/types.js'
|
||||
import { DriverDisposedError } from '../../../src/db/driver.js'
|
||||
import { registerConnectionTools } from '../../../src/tools/connections.js'
|
||||
import { callTool, connectClient, type FakeManager, fakeManager } from '../helpers.js'
|
||||
|
||||
@@ -147,6 +148,24 @@ describe('connection tools', () => {
|
||||
expect(typeof payload.latencyMs).toBe('number')
|
||||
})
|
||||
|
||||
it('test_connection retries once when the driver was disposed under it', async () => {
|
||||
const serverVersion = vi
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new DriverDisposedError())
|
||||
.mockResolvedValueOnce('17.2')
|
||||
manager.get.mockResolvedValue({
|
||||
driver: { serverVersion },
|
||||
config: conn('existing'),
|
||||
source: 'store'
|
||||
})
|
||||
const response = await callTool(client, 'test_connection', { name: 'existing' })
|
||||
expect(response.isError).toBe(false)
|
||||
const payload = response.json() as Record<string, unknown>
|
||||
expect(payload.ok).toBe(true)
|
||||
expect(payload.version).toBe('17.2')
|
||||
expect(manager.get).toHaveBeenCalledTimes(2)
|
||||
})
|
||||
|
||||
it('test_connection formats driver failures', async () => {
|
||||
manager.get.mockResolvedValue({
|
||||
driver: {
|
||||
|
||||
Reference in New Issue
Block a user