MCPcopy Create free account
hub / github.com/deepclause/agentvm / test

Function test

test/network/repro_race.js:3–61  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1const { AgentVM } = require('../../src/index');
2
3async function test() {
4 console.log("=== Network Race Condition Repro ===\n");
5
6 const vm = new AgentVM({ network: true, debug: true });
7
8 try {
9 await vm.start();
10 console.log("VM Started.\n");
11
12 const ITERATIONS = 2;
13 let failures = 0;
14 let successes = 0;
15
16 console.log(`Starting ${ITERATIONS} requests...`);
17
18 for (let i = 0; i < ITERATIONS; i++) {
19 console.log(`\n--- Request ${i+1}/${ITERATIONS} ---`);
20
21 // Use curl with HTTPS for google.com
22 const cmd = `curl -sL https://www.google.com/`;
23
24 try {
25 // Timeout of 30s per request for HTTPS/TLS
26 const res = await Promise.race([
27 vm.exec(cmd),
28 new Promise((_, r) => setTimeout(() => r(new Error('Timeout')), 30000))
29 ]);
30
31 if (res.exitCode === 0 && (res.stdout.includes('<html') || res.stdout.includes('<!doctype'))) {
32 successes++;
33 } else {
34 failures++;
35 console.log(`\nFailed iter ${i}: exit=${res.exitCode} stderr=${res.stderr} stdout=${res.stdout}`);
36 }
37 } catch (err) {
38 failures++;
39 console.log(`\nFailed iter ${i}: ${err.message}`);
40 }
41
42 // Small delay to be polite to the server, but fast enough to trigger races if they are internal
43 await new Promise(r => setTimeout(r, 100));
44 }
45
46 console.log(`\n\nResults: ${successes} passed, ${failures} failed.`);
47
48 if (failures > 0) {
49 console.log("BUG REPRODUCED: Intermittent failures detected.");
50 process.exit(1);
51 } else {
52 console.log("No failures detected. Bug might be rarer or conditions not met.");
53 }
54
55 } catch (e) {
56 console.error("\nTEST FAILED (Global):", e);
57 process.exit(1);
58 } finally {
59 await vm.stop();
60 }

Callers 1

repro_race.jsFile · 0.70

Calls 3

startMethod · 0.95
execMethod · 0.95
stopMethod · 0.95

Tested by

no test coverage detected