Skip to content

Commit 7bf4501

Browse files
dont parallize calls maybe?
1 parent 1e55b9b commit 7bf4501

File tree

1 file changed

+47
-44
lines changed

1 file changed

+47
-44
lines changed

tests/e2e/code-interpreter-workflow.test.ts

Lines changed: 47 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -365,52 +365,55 @@ for i in range(3):
365365
/NameError|not defined/i
366366
);
367367

368-
// Cleanup basic isolation contexts
369-
console.log('[isolation] Cleaning up ctx1 and ctx2');
370-
await Promise.all([deleteContext(ctx1.id), deleteContext(ctx2.id)]);
368+
// Cleanup basic isolation contexts - SEQUENTIAL to avoid hanging
369+
console.log('[isolation] Deleting ctx1');
370+
await deleteContext(ctx1.id);
371+
console.log('[isolation] Deleting ctx2');
372+
await deleteContext(ctx2.id);
371373
console.log('[isolation] Cleanup done');
372374

373-
// Test isolation across many contexts (6) - create in parallel
374-
console.log('[isolation] Creating 6 JS contexts in parallel');
375-
const manyContexts = await Promise.all(
376-
Array.from({ length: 6 }, () => createContext('javascript'))
377-
);
378-
console.log(
379-
'[isolation] Created 6 contexts:',
380-
manyContexts.map((c) => c.id)
381-
);
375+
// Test isolation across 3 contexts - create sequentially
376+
console.log('[isolation] Creating 3 JS contexts');
377+
const manyContexts: CodeContext[] = [];
378+
for (let i = 0; i < 3; i++) {
379+
console.log(`[isolation] Creating context ${i}`);
380+
const ctx = await createContext('javascript');
381+
console.log(`[isolation] Created context ${i}:`, ctx.id);
382+
manyContexts.push(ctx);
383+
}
382384

383-
// Set unique values in each context in parallel
384-
console.log('[isolation] Setting values in 6 contexts');
385-
await Promise.all(
386-
manyContexts.map((context, i) =>
387-
executeCode(context, `const contextValue = ${i}; contextValue;`).then(
388-
(exec) => {
389-
console.log(`[isolation] Context ${i} set complete`);
390-
expect(exec.error, `Context ${i} set error`).toBeUndefined();
391-
expect(exec.results![0].text).toContain(String(i));
392-
}
393-
)
394-
)
395-
);
385+
// Set unique values in each context sequentially
386+
console.log('[isolation] Setting values in 3 contexts');
387+
for (let i = 0; i < manyContexts.length; i++) {
388+
console.log(`[isolation] Setting value in context ${i}`);
389+
const exec = await executeCode(
390+
manyContexts[i],
391+
`const contextValue = ${i}; contextValue;`
392+
);
393+
console.log(`[isolation] Context ${i} set complete`);
394+
expect(exec.error, `Context ${i} set error`).toBeUndefined();
395+
expect(exec.results![0].text).toContain(String(i));
396+
}
396397
console.log('[isolation] All values set');
397398

398-
// Verify isolated state in parallel
399+
// Verify isolated state sequentially
399400
console.log('[isolation] Verifying isolated state');
400-
await Promise.all(
401-
manyContexts.map((context, i) =>
402-
executeCode(context, 'contextValue;').then((exec) => {
403-
console.log(`[isolation] Context ${i} read complete`);
404-
expect(exec.error, `Context ${i} read error`).toBeUndefined();
405-
expect(exec.results![0].text).toContain(String(i));
406-
})
407-
)
408-
);
401+
for (let i = 0; i < manyContexts.length; i++) {
402+
console.log(`[isolation] Reading context ${i}`);
403+
const exec = await executeCode(manyContexts[i], 'contextValue;');
404+
console.log(`[isolation] Context ${i} read complete`);
405+
expect(exec.error, `Context ${i} read error`).toBeUndefined();
406+
expect(exec.results![0].text).toContain(String(i));
407+
}
409408
console.log('[isolation] Verification done');
410409

411-
// Cleanup many contexts in parallel
412-
console.log('[isolation] Cleaning up 6 contexts');
413-
await Promise.all(manyContexts.map((c) => deleteContext(c.id)));
410+
// Cleanup many contexts
411+
console.log('[isolation] Cleaning up 3 contexts');
412+
for (let i = 0; i < manyContexts.length; i++) {
413+
console.log(`[isolation] Deleting context ${i}:`, manyContexts[i].id);
414+
await deleteContext(manyContexts[i].id);
415+
console.log(`[isolation] Deleted context ${i}`);
416+
}
414417
console.log('[isolation] Cleanup done');
415418

416419
// Test concurrent execution on same context (mutex test)
@@ -422,9 +425,9 @@ for i in range(3):
422425
await executeCode(mutexCtx, 'let counter = 0;');
423426
console.log('[isolation] Counter initialized');
424427

425-
// Launch 10 concurrent increments
426-
console.log('[isolation] Launching 10 concurrent increments');
427-
const concurrentRequests = 10;
428+
// Launch 5 concurrent increments
429+
console.log('[isolation] Launching 5 concurrent increments');
430+
const concurrentRequests = 5;
428431
const results = await Promise.allSettled(
429432
Array.from({ length: concurrentRequests }, () =>
430433
executeCode(mutexCtx, 'counter++; counter;')
@@ -444,10 +447,10 @@ for i in range(3):
444447
}
445448
console.log('[isolation] Counter values:', counterValues);
446449

447-
// All 10 should succeed with values 1-10 (serial execution via mutex)
450+
// All 5 should succeed with values 1-5 (serial execution via mutex)
448451
expect(counterValues.length).toBe(concurrentRequests);
449452
counterValues.sort((a, b) => a - b);
450-
expect(counterValues).toEqual(Array.from({ length: 10 }, (_, i) => i + 1));
453+
expect(counterValues).toEqual(Array.from({ length: 5 }, (_, i) => i + 1));
451454

452455
// Verify final counter state
453456
console.log('[isolation] Verifying final counter');
@@ -457,7 +460,7 @@ for i in range(3):
457460
10
458461
);
459462
console.log('[isolation] Final counter value:', finalValue);
460-
expect(finalValue).toBe(10);
463+
expect(finalValue).toBe(5);
461464

462465
console.log('[isolation] Cleaning up mutex context');
463466
await deleteContext(mutexCtx.id);

0 commit comments

Comments
 (0)