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

Function withServer

test/proxyOllamaE2E.test.js:34–83  ·  view source on GitHub ↗
(run)

Source from the content-addressed store, hash-verified

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

Callers 1

Calls 4

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

Tested by

no test coverage detected