34 lines
1.1 KiB
JavaScript
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;
|
|
});
|