Skip to content

Commit 2d6b30a

Browse files
authored
fix: replace otlp exporter with local implementation (#531)
* fix: replace otlp exporter with local implementation * test: simple test case for serializeSpans
1 parent b32b3e6 commit 2d6b30a

File tree

4 files changed

+238
-178
lines changed

4 files changed

+238
-178
lines changed

package-lock.json

Lines changed: 2 additions & 173 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/otel/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@
120120
"@opentelemetry/api": "1.9.0",
121121
"@opentelemetry/core": "1.30.1",
122122
"@opentelemetry/instrumentation": "^0.203.0",
123-
"@opentelemetry/otlp-transformer": "0.57.2",
124123
"@opentelemetry/resources": "1.30.1",
125124
"@opentelemetry/sdk-trace-node": "1.30.1"
126125
}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
import { serializeSpans } from './netlify.ts'
2+
import { SpanKind, SpanStatusCode, TraceFlags } from '@opentelemetry/api'
3+
import { TraceState } from '@opentelemetry/core'
4+
import { Resource } from '@opentelemetry/resources'
5+
import { ReadableSpan } from '@opentelemetry/sdk-trace-node'
6+
import { describe, test, expect } from 'vitest'
7+
8+
function createSpan(): ReadableSpan {
9+
return {
10+
name: 'span-name',
11+
kind: SpanKind.INTERNAL,
12+
spanContext: () => ({
13+
spanId: '0000000000000002',
14+
traceFlags: TraceFlags.SAMPLED,
15+
traceId: '00000000000000000000000000000001',
16+
isRemote: false,
17+
traceState: new TraceState('span=bar'),
18+
}),
19+
startTime: [1640715557, 342725388],
20+
endTime: [1640715558, 642725388],
21+
status: {
22+
code: SpanStatusCode.OK,
23+
},
24+
attributes: { 'string-attribute': 'some attribute value' },
25+
links: [
26+
{
27+
context: {
28+
spanId: '0000000000000003',
29+
traceId: '00000000000000000000000000000002',
30+
traceFlags: TraceFlags.SAMPLED,
31+
isRemote: false,
32+
traceState: new TraceState('link=foo'),
33+
},
34+
attributes: {
35+
'link-attribute': 'string value',
36+
},
37+
},
38+
],
39+
events: [
40+
{
41+
name: 'event',
42+
time: [1640715558, 542725388],
43+
attributes: {
44+
'event-attribute': 'string value',
45+
},
46+
},
47+
],
48+
duration: [1, 300000000],
49+
ended: true,
50+
resource: new Resource({
51+
'service.name': 'serviceName',
52+
'service.version': 'serviceVersion',
53+
'process.runtime.name': 'nodejs',
54+
'process.runtime.version': 'runtimeVersion',
55+
'deployment.environment': 'deploymentEnvironment',
56+
'http.url': 'siteUrl',
57+
'netlify.site.id': 'siteId',
58+
'netlify.site.name': 'siteName',
59+
}),
60+
instrumentationLibrary: {
61+
name: '@netlify/otel',
62+
version: '1.0.0',
63+
},
64+
droppedAttributesCount: 0,
65+
droppedEventsCount: 0,
66+
droppedLinksCount: 0,
67+
}
68+
}
69+
70+
describe('`serializeSpans`', () => {
71+
test('Returns expected results', () => {
72+
const sampleSpans = [createSpan()]
73+
const result = serializeSpans(sampleSpans)
74+
75+
const expectedResult = {
76+
resourceSpans: [
77+
{
78+
resource: {
79+
attributes: [
80+
{ key: 'service.name', value: { stringValue: 'serviceName' } },
81+
{ key: 'service.version', value: { stringValue: 'serviceVersion' } },
82+
{ key: 'process.runtime.name', value: { stringValue: 'nodejs' } },
83+
{ key: 'process.runtime.version', value: { stringValue: 'runtimeVersion' } },
84+
{ key: 'deployment.environment', value: { stringValue: 'deploymentEnvironment' } },
85+
{ key: 'http.url', value: { stringValue: 'siteUrl' } },
86+
{ key: 'netlify.site.id', value: { stringValue: 'siteId' } },
87+
{ key: 'netlify.site.name', value: { stringValue: 'siteName' } },
88+
],
89+
droppedAttributesCount: 0,
90+
},
91+
scopeSpans: [
92+
{
93+
scope: { name: '@netlify/otel', version: '1.0.0' },
94+
spans: [
95+
{
96+
traceId: '00000000000000000000000000000001',
97+
spanId: '0000000000000002',
98+
name: 'span-name',
99+
kind: 1,
100+
startTimeUnixNano: '1640715557342725388',
101+
endTimeUnixNano: '1640715558642725388',
102+
attributes: [{ key: 'string-attribute', value: { stringValue: 'some attribute value' } }],
103+
droppedAttributesCount: 0,
104+
events: [
105+
{
106+
name: 'event',
107+
timeUnixNano: '1640715558542725388',
108+
attributes: [{ key: 'event-attribute', value: { stringValue: 'string value' } }],
109+
droppedAttributesCount: 0,
110+
},
111+
],
112+
droppedEventsCount: 0,
113+
status: { code: 1 },
114+
links: [
115+
{
116+
spanId: '0000000000000003',
117+
traceId: '00000000000000000000000000000002',
118+
attributes: [{ key: 'link-attribute', value: { stringValue: 'string value' } }],
119+
droppedAttributesCount: 0,
120+
},
121+
],
122+
droppedLinksCount: 0,
123+
},
124+
],
125+
},
126+
],
127+
},
128+
],
129+
}
130+
131+
expect(result).toEqual(expectedResult)
132+
})
133+
})

0 commit comments

Comments
 (0)