-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathtest-fast-api-string-latin1.js
More file actions
89 lines (74 loc) · 2.91 KB
/
test-fast-api-string-latin1.js
File metadata and controls
89 lines (74 loc) · 2.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Flags: --expose-internals --no-warnings --allow-natives-syntax
'use strict';
const common = require('../../common');
const assert = require('assert');
const { internalBinding } = require('internal/test/binding');
const { checkTracesOnExit } = require('../../common/nsolid-traces');
const { setupNSolid } = require('./utils');
const { fixturesDir } = require('../../common/fixtures');
const addonBindingPath = require.resolve(`./build/${common.buildType}/binding`);
const addonBinding = require(addonBindingPath);
const nsolidBinding = internalBinding('nsolid_api');
const { nsolid_consts } = nsolidBinding;
const nsolid = require('nsolid');
const api = require(require.resolve('@opentelemetry/api',
{ paths: [fixturesDir] }));
const expectedTraces = [
{
attributes: {
'http.url': 'http://localhost/ma\u00f1ana',
},
end_reason: addonBinding.kSpanEndOk,
name: 'Espa\u00f1a',
parentId: '0000000000000000',
thread_id: 0,
kind: addonBinding.kClient,
type: addonBinding.kSpanCustom,
status: {
code: api.SpanStatusCode.OK,
},
},
];
checkTracesOnExit(addonBinding, expectedTraces);
setupNSolid({ lookup: false }, common.mustCall(() => {
if (!nsolid.otel.register(api)) {
throw new Error('Error registering api');
}
const tracer = api.trace.getTracer('test');
const span = tracer.startSpan('initial_name', { kind: api.SpanKind.CLIENT });
function pushSpanName() {
nsolidBinding.pushSpanDataString(span.internalId,
nsolid_consts.kSpanName,
'Espa\u00f1a');
}
function pushSpanUrl() {
nsolidBinding.pushSpanDataString3(span.internalId,
nsolid_consts.kSpanHttpReqUrl,
'http:',
'localhost',
'/ma\u00f1ana');
}
if (common.isDebug) {
const { getV8FastApiCallCount } = internalBinding('debug');
assert.strictEqual(getV8FastApiCallCount('nsolid.pushSpanDataString'), 0);
assert.strictEqual(getV8FastApiCallCount('nsolid.pushSpanDataString3'), 0);
eval('%PrepareFunctionForOptimization(pushSpanName)');
pushSpanName();
eval('%PrepareFunctionForOptimization(pushSpanUrl)');
pushSpanUrl();
assert.strictEqual(getV8FastApiCallCount('nsolid.pushSpanDataString'), 0);
assert.strictEqual(getV8FastApiCallCount('nsolid.pushSpanDataString3'), 0);
eval('%OptimizeFunctionOnNextCall(pushSpanName)');
pushSpanName();
eval('%OptimizeFunctionOnNextCall(pushSpanUrl)');
pushSpanUrl();
assert.strictEqual(getV8FastApiCallCount('nsolid.pushSpanDataString'), 1);
assert.strictEqual(getV8FastApiCallCount('nsolid.pushSpanDataString3'), 1);
} else {
pushSpanName();
pushSpanUrl();
}
span.setStatus({ code: api.SpanStatusCode.OK });
span.end();
setTimeout(() => {}, 100);
}));