MCPcopy Create free account
hub / github.com/EvoMap/evolver / withServer

Function withServer

test/proxyVertexE2E.test.js:37–84  ·  view source on GitHub ↗
(run)

Source from the content-addressed store, hash-verified

35}
36
37async function withServer(run) {
38 const traceFile = path.join(os.tmpdir(), `e2e-vertex-${process.pid}-${(process.hrtime.bigint() % 1000000n).toString()}.jsonl`);
39 const saved = { m: process.env.EVOMAP_PROXY_TRACE, f: process.env.EVOMAP_PROXY_TRACE_FILE, e: process.env.EVOMAP_PROXY_TRACE_ENCRYPTION };
40 process.env.EVOMAP_PROXY_TRACE = 'full';
41 process.env.EVOMAP_PROXY_TRACE_FILE = traceFile;
42 process.env.EVOMAP_PROXY_TRACE_ENCRYPTION = '0';
43 try { fs.unlinkSync(traceFile); } catch { /* fresh */ }
44 captured = null;
45
46 const silent = { log() {}, warn() {}, error() {} };
47 const routes = { 'POST /v1/projects/:project/locations/:location/publishers/google/models/:modelAction': buildVertexHandler({ vertexProxy: mockVertex, logger: silent }) };
48 const srv = new ProxyHttpServer(routes, { port: 0, logger: silent });
49 srv.token = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
50 srv.server = http.createServer((req, res) => srv._handleRequest(req, res));
51 const port = await new Promise((resolve) => srv.server.listen(0, '127.0.0.1', () => resolve(srv.server.address().port)));
52 srv.actualPort = port;
53
54 const call = ({ reqPath, body }) => new Promise((resolve, reject) => {
55 const req = http.request({ host: '127.0.0.1', port, path: reqPath, method: 'POST',
56 headers: { 'content-type': 'application/json', authorization: 'Bearer aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'user-agent': 'google-genai-sdk/1.0' } }, (res) => {
57 const chunks = [];
58 res.on('data', (d) => chunks.push(d));
59 res.on('end', () => resolve({ status: res.statusCode, bytes: Buffer.concat(chunks) }));
60 });
61 req.on('error', reject);
62 req.end(JSON.stringify(body));
63 });
64
65 const readRows = async (expected = 1) => {
66 let lines = [];
67 for (let i = 0; i < 150; i++) {
68 if (fs.existsSync(traceFile)) {
69 lines = fs.readFileSync(traceFile, 'utf8').trim().split('\n').filter(Boolean);
70 if (lines.length >= expected) break;
71 }
72 await sleep(20);
73 }
74 return lines.map((l) => JSON.parse(l));
75 };
76
77 try {
78 await run({ call, readRows });
79 } finally {
80 await new Promise((r) => srv.server.close(r));
81 try { fs.unlinkSync(traceFile); } catch { /* ignore */ }
82 process.env.EVOMAP_PROXY_TRACE = saved.m; process.env.EVOMAP_PROXY_TRACE_FILE = saved.f; process.env.EVOMAP_PROXY_TRACE_ENCRYPTION = saved.e;
83 }
84}
85
86const VPATH = '/v1/projects/my-proj/locations/us-central1/publishers/google/models/gemini-2.0-flash';
87const body = { contents: [{ role: 'user', parts: [{ text: 'hi' }] }] };

Callers 1

Calls 4

_handleRequestMethod · 0.95
buildVertexHandlerFunction · 0.85
closeMethod · 0.80
runFunction · 0.50

Tested by

no test coverage detected