-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Expand file tree
/
Copy pathserver.js
More file actions
70 lines (62 loc) · 1.91 KB
/
server.js
File metadata and controls
70 lines (62 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const http = require('http');
const Sentry = require('@sentry/node-core/light');
const { loggingTransport, sendPortToRunner } = require('@sentry-internal/node-core-integration-tests');
Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
release: '1.0',
transport: loggingTransport,
tracePropagationTargets: [/\/api\/v0/, 'v1'],
});
let capturedV0 = {};
let capturedV1 = {};
let capturedV2 = {};
const targetServer = http.createServer((req, res) => {
const headers = {
'sentry-trace': req.headers['sentry-trace'],
baggage: req.headers['baggage'],
};
if (req.url === '/api/v0') {
capturedV0 = headers;
} else if (req.url === '/api/v1') {
capturedV1 = headers;
} else if (req.url === '/api/v2') {
capturedV2 = headers;
}
res.writeHead(200);
res.end('ok');
});
targetServer.listen(0, () => {
const targetPort = targetServer.address().port;
const targetUrl = `http://localhost:${targetPort}`;
const server = http.createServer(async (req, res) => {
switch (req.url) {
case '/test-auto-propagation': {
capturedV0 = {};
capturedV1 = {};
capturedV2 = {};
await fetch(`${targetUrl}/api/v0`);
await fetch(`${targetUrl}/api/v1`);
await fetch(`${targetUrl}/api/v2`);
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ '/api/v0': capturedV0, '/api/v1': capturedV1, '/api/v2': capturedV2 }));
break;
}
case '/test-breadcrumbs': {
Sentry.addBreadcrumb({ message: 'manual breadcrumb' });
await fetch(`${targetUrl}/api/v0`);
await fetch(`${targetUrl}/api/v1`);
Sentry.captureException(new Error('foo'));
res.writeHead(200);
res.end('ok');
break;
}
default: {
res.writeHead(404);
res.end();
}
}
});
server.listen(0, () => {
sendPortToRunner(server.address().port);
});
});