task-9: 进度类请求默认 10s 超时(progressTimeoutMs 可配置覆盖,postTaskProgressBatch 接入)
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { test } from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import {
|
||||
TASK_PROGRESS_TIMEOUT_MS,
|
||||
getTaskProgressTimeoutMs,
|
||||
configureTaskPolling,
|
||||
resetTaskPollingConfig,
|
||||
} from '../src/shared/task-progress-config.ts'
|
||||
|
||||
test('test_progress_timeout_default', () => {
|
||||
resetTaskPollingConfig()
|
||||
assert.equal(getTaskProgressTimeoutMs(), 10000, '进度请求默认 10s')
|
||||
})
|
||||
|
||||
test('test_progress_timeout_override', () => {
|
||||
resetTaskPollingConfig()
|
||||
configureTaskPolling({ progressTimeoutMs: 15000 })
|
||||
assert.equal(getTaskProgressTimeoutMs(), 15000)
|
||||
resetTaskPollingConfig()
|
||||
})
|
||||
|
||||
test('test_non_progress_timeout_30s', () => {
|
||||
assert.equal(TASK_PROGRESS_TIMEOUT_MS, 10000, '进度超时常量应为 10s')
|
||||
// 非进度请求默认超时由 http.ts 的 30000 保持,此处断言常量存在
|
||||
assert.ok(TASK_PROGRESS_TIMEOUT_MS < 30000)
|
||||
})
|
||||
|
||||
test('test_timeout_config_name', () => {
|
||||
resetTaskPollingConfig()
|
||||
configureTaskPolling({ progressTimeoutMs: 8000 })
|
||||
assert.equal(getTaskProgressTimeoutMs(), 8000, '配置键 progressTimeoutMs 生效')
|
||||
resetTaskPollingConfig()
|
||||
})
|
||||
|
||||
test('test_progress_timeout_minimum', () => {
|
||||
resetTaskPollingConfig()
|
||||
assert.throws(
|
||||
() => configureTaskPolling({ progressTimeoutMs: -1 }),
|
||||
/超时.*正数|不能为负|progressTimeoutMs/,
|
||||
'非法配置应抛错并保持原值',
|
||||
)
|
||||
assert.equal(getTaskProgressTimeoutMs(), 10000, '非法配置后保持默认值')
|
||||
resetTaskPollingConfig()
|
||||
})
|
||||
|
||||
test('test_override_via_options', () => {
|
||||
resetTaskPollingConfig()
|
||||
configureTaskPolling({ progressTimeoutMs: 20000 })
|
||||
assert.equal(getTaskProgressTimeoutMs(), 20000, '函数级配置覆盖生效')
|
||||
resetTaskPollingConfig()
|
||||
})
|
||||
|
||||
test('test_timeout_zero', () => {
|
||||
resetTaskPollingConfig()
|
||||
assert.throws(() => configureTaskPolling({ progressTimeoutMs: 0 }), /正数|不能为负|progressTimeoutMs/)
|
||||
assert.equal(getTaskProgressTimeoutMs(), 10000, '0 应被拒并保持默认')
|
||||
resetTaskPollingConfig()
|
||||
})
|
||||
|
||||
test('test_default_config_freeze', () => {
|
||||
resetTaskPollingConfig()
|
||||
const snapshots = [getTaskProgressTimeoutMs(), getTaskProgressTimeoutMs()]
|
||||
assert.deepEqual(snapshots, [10000, 10000], '默认值快照稳定')
|
||||
})
|
||||
Reference in New Issue
Block a user