-
Notifications
You must be signed in to change notification settings - Fork 230
/
Copy pathhttp-esm.test.js
125 lines (116 loc) · 4.3 KB
/
http-esm.test.js
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
* Copyright Elasticsearch B.V. and other contributors where applicable.
* Licensed under the BSD 2-Clause License; you may not use this file except in
* compliance with the BSD 2-Clause License.
*/
'use strict'
const test = require('tape')
const { runTestFixtures } = require('../../../_utils')
const { NODE_VER_RANGE_IITM } = require('../../../testconsts')
const testFixtures = [
{
name: 'http.get ESM',
script: './fixtures/use-http-get.mjs',
cwd: __dirname,
env: {
NODE_OPTIONS: '--experimental-loader=../../../../loader.mjs --require=../../../../start.js',
NODE_NO_WARNINGS: '1' // skip warnings about --experimental-loader
},
versionRanges: {
node: NODE_VER_RANGE_IITM
},
verbose: false,
checkApmServer: (t, apmServer) => {
t.equal(apmServer.events.length, 3, 'expected number of APM server events')
t.ok(apmServer.events[0].metadata, 'metadata')
const trans = apmServer.events[1].transaction
t.equal(trans.name, 'manual', 'transaction.name')
const span = apmServer.events[2].span
t.equal(span.name, 'GET www.google.com', 'span.name')
t.equal(span.parent_id, trans.id, 'span.parent_id')
}
},
{
name: 'https.get ESM',
script: './fixtures/use-https-get.mjs',
cwd: __dirname,
env: {
NODE_OPTIONS: '--experimental-loader=../../../../loader.mjs --require=../../../../start.js',
NODE_NO_WARNINGS: '1' // skip warnings about --experimental-loader
},
versionRanges: {
node: NODE_VER_RANGE_IITM
},
verbose: false,
checkApmServer: (t, apmServer) => {
t.equal(apmServer.events.length, 3, 'expected number of APM server events')
t.ok(apmServer.events[0].metadata, 'metadata')
const trans = apmServer.events[1].transaction
t.equal(trans.name, 'manual', 'transaction.name')
const span = apmServer.events[2].span
t.equal(span.name, 'GET www.google.com', 'span.name')
t.equal(span.parent_id, trans.id, 'span.parent_id')
}
},
{
name: 'http.createServer ESM',
script: './fixtures/use-http-server.mjs',
cwd: __dirname,
env: {
NODE_OPTIONS: '--experimental-loader=../../../../loader.mjs --require=../../../../start.js',
NODE_NO_WARNINGS: '1', // skip warnings about --experimental-loader
ELASTIC_APM_USE_PATH_AS_TRANSACTION_NAME: 'true'
},
versionRanges: {
node: NODE_VER_RANGE_IITM
},
verbose: false,
checkApmServer: (t, apmServer) => {
t.equal(apmServer.events.length, 2, 'expected number of APM server events')
t.ok(apmServer.events[0].metadata, 'metadata')
const trans = apmServer.events[1].transaction
t.equal(trans.name, 'GET /', 'transaction.name')
t.equal(trans.type, 'request', 'transaction.type')
t.equal(trans.outcome, 'success', 'transaction.outcome')
}
},
{
name: 'http.createServer ESM import()',
script: './fixtures/use-dynamic-import.mjs',
cwd: __dirname,
env: {
NODE_OPTIONS: '--experimental-loader=../../../../loader.mjs --require=../../../../start.js',
NODE_NO_WARNINGS: '1', // skip warnings about --experimental-loader
ELASTIC_APM_USE_PATH_AS_TRANSACTION_NAME: 'true'
},
versionRanges: {
node: '^14.13.1 || ^16.0.0 || >=18.1.0' // NODE_VER_RANGE_IITM minus node v12 because top-level `await` is used
},
verbose: false,
checkApmServer: (t, apmServer) => {
t.equal(apmServer.events.length, 2, 'expected number of APM server events')
t.ok(apmServer.events[0].metadata, 'metadata')
const trans = apmServer.events[1].transaction
t.equal(trans.name, 'GET /', 'transaction.name')
t.equal(trans.type, 'request', 'transaction.type')
t.equal(trans.outcome, 'success', 'transaction.outcome')
}
},
{
name: 'loading http from CJS and ESM works',
script: './fixtures/load-http-twice.mjs',
cwd: __dirname,
env: {
NODE_OPTIONS: '--experimental-loader=../../../../loader.mjs --require=../../../../start.js',
NODE_NO_WARNINGS: '1' // skip warnings about --experimental-loader
},
versionRanges: {
node: '^14.13.1 || ^16.0.0 || >=18.1.0' // NODE_VER_RANGE_IITM minus node v12 because top-level `await` is used
},
verbose: true
}
]
test('http/https ESM fixtures', suite => {
runTestFixtures(suite, testFixtures)
suite.end()
})