Skip to content

Commit 7c86640

Browse files
committed
Address review comments
1 parent cb78aba commit 7c86640

File tree

9 files changed

+52
-21
lines changed

9 files changed

+52
-21
lines changed

integration-tests/helpers/fake-agent.js

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ const bodyParser = require('body-parser')
88
const msgpack = require('@msgpack/msgpack')
99
const upload = require('multer')()
1010

11+
const noop = () => {}
12+
1113
module.exports = class FakeAgent extends EventEmitter {
1214
constructor (port = 0) {
1315
// Redirect rejections to the error event
@@ -161,8 +163,32 @@ module.exports = class FakeAgent extends EventEmitter {
161163
return resultPromise
162164
}
163165

164-
assertTelemetryReceived (fn, timeout, requestType, expectedMessageCount = 1) {
165-
timeout = timeout || 30000
166+
/**
167+
* Assert that a telemetry message is received.
168+
*
169+
* @overload
170+
* @param {string} requestType - The request type to assert.
171+
* @param {number} [timeout=30_000] - The timeout in milliseconds.
172+
* @param {number} [expectedMessageCount=1] - The number of messages to expect.
173+
* @returns {Promise<void>} A promise that resolves when the telemetry message of type `requestType` is received.
174+
*
175+
* @overload
176+
* @param {Function} fn - The function to call with the telemetry message of type `requestType`.
177+
* @param {string} requestType - The request type to assert.
178+
* @param {number} [timeout=30_000] - The timeout in milliseconds.
179+
* @param {number} [expectedMessageCount=1] - The number of messages to expect.
180+
* @returns {Promise<void>} A promise that resolves when the telemetry message of type `requestType` is received and
181+
* the function `fn` has finished running. If `fn` throws an error, the promise will be rejected once `timeout`
182+
* is reached.
183+
*/
184+
assertTelemetryReceived (fn, requestType, timeout = 30_000, expectedMessageCount = 1) {
185+
if (typeof fn !== 'function') {
186+
expectedMessageCount = timeout
187+
timeout = requestType
188+
requestType = fn
189+
fn = noop
190+
}
191+
166192
let resultResolve
167193
let resultReject
168194
let msgCount = 0
@@ -188,7 +214,7 @@ module.exports = class FakeAgent extends EventEmitter {
188214
if (msg.payload.request_type !== requestType) return
189215
msgCount += 1
190216
try {
191-
fn?.(msg)
217+
fn(msg)
192218
if (msgCount === expectedMessageCount) {
193219
resultResolve()
194220
}

integration-tests/helpers/index.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -387,19 +387,24 @@ function setShouldKill (value) {
387387
const assertObjectContains = assert.partialDeepStrictEqual || function assertObjectContains (actual, expected) {
388388
if (Array.isArray(expected)) {
389389
assert.ok(Array.isArray(actual), `Expected array but got ${typeof actual}`)
390+
let startIndex = 0
390391
for (const expectedItem of expected) {
391-
const found = actual.some(actualItem => {
392+
let found = false
393+
for (let i = startIndex; i < actual.length; i++) {
394+
const actualItem = actual[i]
392395
try {
393396
if (expectedItem !== null && typeof expectedItem === 'object') {
394397
assertObjectContains(actualItem, expectedItem)
395398
} else {
396399
assert.strictEqual(actualItem, expectedItem)
397400
}
398-
return true
401+
startIndex = i + 1
402+
found = true
403+
break
399404
} catch {
400-
return false
405+
continue
401406
}
402-
})
407+
}
403408
assert.ok(found, `Expected array to contain ${JSON.stringify(expectedItem)}`)
404409
}
405410
return

integration-tests/opentelemetry.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const axios = require('axios')
88

99
async function check (agent, proc, timeout, onMessage = () => { }, isMetrics) {
1010
const messageReceiver = isMetrics
11-
? agent.assertTelemetryReceived(onMessage, timeout, 'generate-metrics')
11+
? agent.assertTelemetryReceived(onMessage, 'generate-metrics', timeout)
1212
: agent.assertMessageReceived(onMessage, timeout)
1313

1414
const [res] = await Promise.all([

integration-tests/profiler/profiler.spec.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ describe('profiler', () => {
547547
DD_PROFILING_ENABLED: 1
548548
}
549549
})
550-
const checkTelemetry = agent.assertTelemetryReceived(null, 1000, 'generate-metrics')
550+
const checkTelemetry = agent.assertTelemetryReceived('generate-metrics', 1000)
551551
// SSI telemetry is not supposed to have been emitted when DD_INJECTION_ENABLED is absent,
552552
// so expect telemetry callback to time out
553553
await Promise.all([checkProfiles(agent, proc, timeout), expectTimeout(checkTelemetry)])
@@ -588,7 +588,7 @@ describe('profiler', () => {
588588
assert.equal(series[1].type, 'count')
589589
checkTags(series[1].tags)
590590
assert.equal(series[1].points[0][1], 1)
591-
}, timeout, 'generate-metrics')
591+
}, 'generate-metrics', timeout)
592592

593593
await Promise.all([checkProfiles(agent, proc, timeout), checkTelemetry])
594594
})
@@ -740,7 +740,7 @@ describe('profiler', () => {
740740

741741
// Same number of requests and responses
742742
assert.equal(series[1].points[0][1], requestCount)
743-
}, timeout, 'generate-metrics')
743+
}, 'generate-metrics', timeout)
744744

745745
const checkDistributions = agent.assertTelemetryReceived(({ _, payload }) => {
746746
const pp = payload.payload
@@ -753,7 +753,7 @@ describe('profiler', () => {
753753
// Same number of points
754754
pointsCount = series[0].points.length
755755
assert.equal(pointsCount, series[1].points.length)
756-
}, timeout, 'distributions')
756+
}, 'distributions', timeout)
757757

758758
await Promise.all([checkProfiles(agent, proc, timeout), checkMetrics, checkDistributions])
759759

integration-tests/telemetry.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ describe('telemetry', () => {
5656
})
5757
}
5858
}
59-
}, 5_000, 'app-dependencies-loaded', 1)
59+
}, 'app-dependencies-loaded', 5_000, 1)
6060

6161
expect(ddTraceFound).to.be.true
6262
expect(importInTheMiddleFound).to.be.true
@@ -70,7 +70,7 @@ describe('telemetry', () => {
7070
{ name: 'DD_LOG_INJECTION', value: true, origin: 'env_var' },
7171
{ name: 'DD_LOG_INJECTION', value: false, origin: 'code' }
7272
])
73-
}, 5_000, 'app-started', 1)
73+
}, 'app-started', 5_000, 1)
7474
})
7575
})
7676
})

packages/dd-trace/test/appsec/iast/code_injection.integration.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ describe('IAST - code_injection - integration', () => {
5151
})
5252
assert.isNotNull(instrumentedSink)
5353
}
54-
}, 30_000, 'generate-metrics', 2)
54+
}, 'generate-metrics', 30_000, 2)
5555

5656
const checkMessages = agent.assertMessageReceived(({ headers, payload }) => {
5757
assert.strictEqual(payload[0][0].metrics['_dd.iast.enabled'], 1)

packages/dd-trace/test/appsec/rasp/command_injection.integration.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ describe('RASP - command_injection - integration', () => {
8484
assert.include(matchSerie.tags, `rule_variant:${variant}`)
8585
assert.strictEqual(matchSerie.type, 'count')
8686
}
87-
}, 30_000, 'generate-metrics', 2)
87+
}, 'generate-metrics', 30_000, 2)
8888

8989
await Promise.all([checkMessages, checkTelemetry])
9090

packages/dd-trace/test/appsec/rasp/rasp-metrics.integration.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ describe('RASP metrics', () => {
7373
assert.include(errorSerie.tags, 'waf_error:-127')
7474
assert.strictEqual(errorSerie.type, 'count')
7575
}
76-
}, 30_000, 'generate-metrics', 2)
76+
}, 'generate-metrics', 30_000, 2)
7777

7878
assert.equal(appsecTelemetryMetricsReceived, true)
7979
})
@@ -124,7 +124,7 @@ describe('RASP metrics', () => {
124124
assert.include(timeoutSerie.tags, 'rule_variant:shell')
125125
assert.strictEqual(timeoutSerie.type, 'count')
126126
}
127-
}, 30_000, 'generate-metrics', 2)
127+
}, 'generate-metrics', 30_000, 2)
128128

129129
await Promise.all([checkMessages, checkTelemetry])
130130

packages/dd-trace/test/appsec/waf-metrics.integration.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ describe('WAF Metrics', () => {
8080
assert.strictEqual(wafError.type, 'count')
8181
assert.include(wafError.tags, 'waf_error:-127')
8282
}
83-
}, 30_000, 'generate-metrics', 2)
83+
}, 'generate-metrics', 30_000, 2)
8484

8585
await Promise.all([checkMessages, checkTelemetryMetrics])
8686

@@ -133,7 +133,7 @@ describe('WAF Metrics', () => {
133133
assert.strictEqual(wafRequests.type, 'count')
134134
assert.include(wafRequests.tags, 'waf_timeout:true')
135135
}
136-
}, 30_000, 'generate-metrics', 2)
136+
}, 'generate-metrics', 30_000, 2)
137137

138138
await Promise.all([checkMessages, checkTelemetryMetrics])
139139

@@ -191,7 +191,7 @@ describe('WAF Metrics', () => {
191191
assert.exists(wafRequests, 'waf requests serie should exist')
192192
assert.include(wafRequests.tags, 'input_truncated:true')
193193
}
194-
}, 30_000, 'generate-metrics', 2)
194+
}, 'generate-metrics', 30_000, 2)
195195

196196
await Promise.all([checkMessages, checkTelemetryMetrics])
197197

0 commit comments

Comments
 (0)