Files
go_bt/tests/aistudio_mutation_concurrency.test.js

34 lines
1.1 KiB
JavaScript

'use strict';
const assert = require('assert');
const { _private } = require('../src/services/aistudio_api_key_service');
(async () => {
let active = 0;
let maxActive = 0;
const logs = [];
const results = await Promise.all([0, 1, 2, 3, 4].map(index => (
_private.withAistudioMutationSlot(async () => {
active++;
maxActive = Math.max(maxActive, active);
await new Promise(resolve => setTimeout(resolve, 8));
active--;
return index;
}, message => logs.push(message))
)));
assert.deepStrictEqual(results, [0, 1, 2, 3, 4]);
assert.strictEqual(_private.MAX_AISTUDIO_MUTATIONS, 2);
assert.strictEqual(maxActive, 2, 'AI Studio 项目/Key 高风险区最多允许两个账号并行');
assert(logs.some(message => message.includes('排队等待')),
'超过并发上限时应记录排队日志');
assert(logs.some(message => message.includes('排队结束')),
'获得执行槽后应记录恢复日志');
console.log('aistudio_mutation_concurrency.test.js: PASS');
})().catch(error => {
console.error(error);
process.exitCode = 1;
});