Skip to content

Commit

Permalink
tweak integration test
Browse files Browse the repository at this point in the history
  • Loading branch information
jsumners-nr committed Feb 29, 2024
1 parent 2f05822 commit 5276a1e
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions tests/integration/loop-performance.tap.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,26 @@
const tap = require('tap')

const TEST_DURATION = 30 * 1000
let performanceThreshold = 0.98
if (process.platform === 'darwin') {
// The GitHub macOS runners are slow and vary widely in their slowness
// from run to run.
performanceThreshold = 0.9
} else if (process.platform === 'win32') {
performanceThreshold = 0.97
}

tap.test('loop performance test', { timeout: 2 * TEST_DURATION + 1000 }, function (t) {
// The purpose of this test is to measure how much tracking metrics
// impacts the processing overhead of the application loop. To do so, we:
//
// 1. Count how many times the loop fires without the native metrics
// hooks attached over a predetermined interval (TEST_DURATION).
// 2. Count how many times the loop fires with the native metrics hooks
// attached, and exercise the metrics by resetting them every 1 second
// over the test duration, again over the same predetermined interval.
// 3. Calculate the percentage overhead and assert it meets requirements.

let timeout = null
let callCount = 0
let natives = null
Expand Down Expand Up @@ -42,8 +60,8 @@ tap.test('loop performance test', { timeout: 2 * TEST_DURATION + 1000 }, functio

t.comment(noMetricsCount + ' vs ' + withMetricsCount)
t.ok(
noMetricsCount * 0.98 < withMetricsCount,
'should not impact performance by more than 2%'
noMetricsCount * performanceThreshold < withMetricsCount,
`should not impact performance by more than ${1 - performanceThreshold}%`
)
t.end()
}, TEST_DURATION)
Expand Down

0 comments on commit 5276a1e

Please sign in to comment.