chore(integration): snapshot local main worktree
This commit is contained in:
@@ -148,6 +148,38 @@ class FakeWorker implements PiConversationWorker {
|
||||
}
|
||||
|
||||
describe('Pi worker pool', () => {
|
||||
it('does not charge logical threads as OS processes in shared-server mode', async () => {
|
||||
const processBudget = new PiProcessBudget(1);
|
||||
const workers: FakeWorker[] = [];
|
||||
const pool = new PiWorkerPool({
|
||||
processMode: 'shared',
|
||||
processBudget,
|
||||
maxIdle: 4,
|
||||
openWorker: async ({ conversation: input }) => {
|
||||
const worker = new FakeWorker(`thread-${input.conversationId}`);
|
||||
workers.push(worker);
|
||||
return {
|
||||
worker,
|
||||
session: {
|
||||
piSessionId: `session-${input.conversationId}`,
|
||||
sessionKey: `key-${input.conversationId}`,
|
||||
},
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
await Promise.all([
|
||||
pool.prepare(conversation('conversation-a')),
|
||||
pool.prepare(conversation('conversation-b')),
|
||||
pool.prepare(conversation('conversation-c')),
|
||||
]);
|
||||
|
||||
expect(processBudget.activeCount).toBe(0);
|
||||
expect(workers).toHaveLength(3);
|
||||
await pool.shutdown();
|
||||
expect(workers.every((worker) => worker.stopped)).toBe(true);
|
||||
});
|
||||
|
||||
it('retains top-level ownership after a mutation confirmation timeout', async () => {
|
||||
const workers = new Map<string, FakeWorker>();
|
||||
const pool = new PiWorkerPool({
|
||||
|
||||
Reference in New Issue
Block a user