Repository navigation
[parity] node:perf_hooks — 61 failing node-suite tests (2026-07-22 baseline) #6766
Copy link
Copy link
Closed
Labels
parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystemCompatibility gap with Node.js, ECMAScript, or the supported ecosystem
Description
Part of the node-suite parity sweep of 2026-07-22 (full run: 3,815 tests, 3,019 pass, 79.1% — report test-parity/reports/parity_report_20260722_120605.json, oracle Node 26.5.0 per .node-version). Umbrella: #793.
node:perf_hooks has 61 failing test(s) in test-parity/node-suite/perf_hooks/.
Reproduce:
./run_parity_tests.sh --suite node-suite --module perf_hooksFailing tests
-
node-suite/perf_hooks/constants/all-gc-values— output mismatch- Node: NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE,NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY,NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED,NODE_PERFORMANCE_GC_FLAGS_FORCED,NODE_PERFORMANCE_GC_FLAGS_NO,NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE,NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING,NODE_PERFORMANCE_GC_INCREMENTAL,NODE_PERFORMANCE_GC_MAJOR,NODE_PERFORMANCE_GC_MINOR,NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP,NODE_PERFORMANCE_GC_WEAKCB
- Perry: Performance,PerformanceEntry,PerformanceMark,PerformanceMeasure,PerformanceObserver,PerformanceObserverEntryList,PerformanceResourceTiming,constants,createHistogram,eventLoopUtilization,monitorEventLoopDelay,performance,timerify
-
node-suite/perf_hooks/entries/argument-validation— output mismatch- Node: byName missing TypeError ERR_MISSING_ARGS
- Perry: byName missing no throw
-
node-suite/perf_hooks/eventlooputil/two-arg-synthetic— output mismatch- Node: idle: 0
- Perry: idle: 7
-
node-suite/perf_hooks/global/illegal-constructors— output mismatch- Node: Performance: TypeError ERR_ILLEGAL_CONSTRUCTOR
- Perry: Performance: no throw
-
node-suite/perf_hooks/histogram/add-isolation— output mismatch- Node: add return: true
- Perry: add return: true
-
node-suite/perf_hooks/histogram/add-validation— output mismatch- Node: undefined TypeError undefined
- Perry: undefined no throw
-
node-suite/perf_hooks/histogram/empty-state— output mismatch- Node: counts: 0 true
- Perry: counts: 0 false
-
node-suite/perf_hooks/histogram/illegal-constructor— output mismatch- Node: constructor: RecordableHistogram
- Perry: TypeError: Cannot read properties of undefined (reading 'name')
-
node-suite/perf_hooks/histogram/monitor-disabled-reset— output mismatch- Node: surface: function function function
- Perry: surface: function function function
-
node-suite/perf_hooks/histogram/monitor-distinct-handles— output mismatch- Node: distinct: true
- Perry: distinct: true
-
node-suite/perf_hooks/histogram/monitor-lifecycle— output mismatch- Node: enable: true false
- Perry: enable: undefined undefined
-
node-suite/perf_hooks/histogram/monitor-options-validation— output mismatch- Node: default ok
- Perry: default ok
-
node-suite/perf_hooks/histogram/options-validation— output mismatch- Node: valid ok
- Perry: valid ok
-
node-suite/perf_hooks/histogram/percentile-validation— output mismatch- Node: -1 RangeError ERR_OUT_OF_RANGE
- Perry: -1 no throw
-
node-suite/perf_hooks/histogram/percentiles— output mismatch- Node: endpoints: true true
- Perry: endpoints: false false
-
node-suite/perf_hooks/histogram/percentiles-maps— output mismatch- Node: maps: true true
- Perry: maps: false false
-
node-suite/perf_hooks/histogram/record-delta— output mismatch- Node: first return: true 0
- Perry: first return: true 0
-
node-suite/perf_hooks/histogram/record-number-bigint— output mismatch- Node: count pair: 2 true
- Perry: count pair: 0 false
-
node-suite/perf_hooks/histogram/record-validation— output mismatch- Node: zero RangeError ERR_OUT_OF_RANGE
- Perry: zero no throw
-
node-suite/perf_hooks/histogram/reset— output mismatch- Node: reset return: true
- Perry: reset return: true
-
node-suite/perf_hooks/histogram/to-json— output mismatch- Node: keys: count,exceeds,max,mean,min,percentiles,stddev
- Perry: TypeError: Cannot convert undefined or null to object
-
node-suite/perf_hooks/imports/function-aliases— compile error -
node-suite/perf_hooks/imports/namespace-keys— output mismatch- Node: Performance,PerformanceEntry,PerformanceMark,PerformanceMeasure,PerformanceObserver,PerformanceObserverEntryList,PerformanceResourceTiming,constants,createHistogram,default,eventLoopUtilization,monitorEventLoopDelay,performance,timerify
- Perry: Performance,PerformanceEntry,PerformanceMark,PerformanceMeasure,PerformanceObserver,PerformanceObserverEntryList,PerformanceResourceTiming,constants,createHistogram,eventLoopUtilization,monitorEventLoopDelay,performance,timerify
-
node-suite/perf_hooks/mark/detail-circular— output mismatch- Node: distinct clone: true
- Perry: distinct clone: true
-
node-suite/perf_hooks/mark/direct-constructor— output mismatch- Node: shape: direct mark 7 0
- Perry: shape: undefined undefined undefined undefined
-
node-suite/perf_hooks/mark/repeated-name-latest— output mismatch- Node: entries: 1,5
- Perry: entries: 1,5
-
node-suite/perf_hooks/mark/reserved-node-milestone— output mismatch- Node: mark: TypeError ERR_INVALID_ARG_VALUE
- Perry: mark no throw
-
node-suite/perf_hooks/measure/detail-clone-failures— output mismatch- Node: cycle: true true
- Perry: cycle: true false
-
node-suite/perf_hooks/node-timing/shape-invariants— output mismatch- Node: identity: true
- Perry: identity: false
-
node-suite/perf_hooks/node-timing/to-json— output mismatch- Node: keys: bootstrapComplete,duration,entryType,environment,idleTime,loopExit,loopStart,name,nodeStart,startTime,v8Start
- Perry: TypeError: toJSON is not a function
-
node-suite/perf_hooks/observer/buffered— output mismatch- Node: buffered names: pre1,pre2
- Perry: buffered names: not delivered
-
node-suite/perf_hooks/observer/callback-this— output mismatch- Node: this is observer: true
- Perry: this is observer: false
-
node-suite/perf_hooks/observer/entry-list-snapshot— output mismatch- Node: fresh: true
- Perry: callback: false
-
node-suite/perf_hooks/observer/entry-list-validation— output mismatch- Node: name missing TypeError ERR_MISSING_ARGS
- Perry: name missing no throw
-
node-suite/perf_hooks/observer/list-methods— output mismatch- Node: getEntries: 1
- Perry: Warning: Detected unsettled top-level await
-
node-suite/perf_hooks/observer/mode-switch-validation— output mismatch- Node: multi to single InvalidModificationError
- Perry: multi to single no throw
-
node-suite/perf_hooks/observer/multiple-entry-types— output mismatch- Node: marks: 2
- Perry: Warning: Detected unsettled top-level await
-
node-suite/perf_hooks/observer/observe-marks— output mismatch- Node: observed: a,b
- Perry: Warning: Detected unsettled top-level await
-
node-suite/perf_hooks/observer/observe-measures— output mismatch- Node: observed: xy
- Perry: Warning: Detected unsettled top-level await
-
node-suite/perf_hooks/observer/observe-single-type— output mismatch- Node: observed: a,b
- Perry: Warning: Detected unsettled top-level await
-
node-suite/perf_hooks/observer/single-type-accumulates— output mismatch- Node: mark,measure
- Perry: measure
-
node-suite/perf_hooks/observer/supported-entry-types-exact— output mismatch- Node: dns,function,gc,http,http2,mark,measure,net,quic,resource
- Perry: function,mark,measure,resource
-
node-suite/perf_hooks/observer/take-records-suppresses-callback— output mismatch- Node: taken: 1
- Perry: taken: 1
-
node-suite/perf_hooks/resource-timing/cache-mode-validation— output mismatch- Node: ok
- Perry: ok
-
node-suite/perf_hooks/resource-timing/cache-transfer-size— output mismatch- Node: network: 450
- Perry: network: undefined
-
node-suite/perf_hooks/resource-timing/controlled-fields— output mismatch- Node: instance: true true
- Perry: instance: false false
-
node-suite/perf_hooks/resource-timing/illegal-constructor-tag— output mismatch- Node: tag: PerformanceResourceTiming
- Perry: tag: undefined
-
node-suite/perf_hooks/resource-timing/mark-resource-entry— output mismatch- Node: returned object: object
- Perry: returned object: object
-
node-suite/perf_hooks/resource-timing/observer-delivery— output mismatch- Node: observed: synthetic-resource
- Perry: observed: not delivered
-
node-suite/perf_hooks/resource-timing/to-json-controlled— output mismatch- Node: keys: connectEnd,connectStart,decodedBodySize,deliveryType,domainLookupEnd,domainLookupStart,duration,encodedBodySize,entryType,fetchStart,initiatorType,name,nextHopProtocol,redirectEnd,redirectStart,requestStart,responseEnd,responseStart,responseStatus,secureConnectionStart,startTime,transferSize,workerStart
- Perry: TypeError: toJSON is not a function
-
node-suite/perf_hooks/shapes/prototype-tags— output mismatch- Node: performance [object Performance]
- Perry: performance [object Performance]
-
node-suite/perf_hooks/shapes/public-descriptors— output mismatch- Node: now function true true true
- Perry: TypeError: Cannot read properties of undefined (reading 'value')
-
node-suite/perf_hooks/timerify/async-fulfill— output mismatch- Node: pending records: 0
- Perry: pending records: 1
-
node-suite/perf_hooks/timerify/constructor— output mismatch- Node: instance: true 1
- Perry: instance: false undefined
-
node-suite/perf_hooks/timerify/entry-arguments— output mismatch- Node: arguments: 2:1:true:1:true
- Perry: arguments: not delivered
-
node-suite/perf_hooks/timerify/function-entry— output mismatch- Node: same fn: false
- Perry: same fn: false
-
node-suite/perf_hooks/timerify/histogram-async— output mismatch- Node: pending: 0
- Perry: pending: 0
-
node-suite/perf_hooks/timerify/histogram-sync— output mismatch- Node: before: 0
- Perry: before: 0
-
node-suite/perf_hooks/timerify/invalid-histogram— output mismatch- Node: object TypeError ERR_INVALID_ARG_TYPE
- Perry: object no throw
-
node-suite/perf_hooks/timerify/name-length-descriptors— output mismatch- Node: name timerified sample false true false
- Perry: name timerified sample false false true
-
node-suite/perf_hooks/to-json/fresh-snapshots— output mismatch- Node: fresh root: true
- Perry: fresh root: true
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystemCompatibility gap with Node.js, ECMAScript, or the supported ecosystem
Activity
proggeramlug commentedon Aug 16, 2026
Working this in #8229 — the module's node-suite goes from 86/148 to 132/148 (46 tests, zero regressions, no compile failures), measured against the pinned Node 26.5.1 oracle.
Two root causes did most of it. The histograms were a stub (every stat read
0, every mutator discarded input) and are now backed by a real HDR histogram ported from the parts ofhdr_histogram.cNode's accessors reach —percentile(1) === minonly holds because both sides quantize identically. Underneath that,perf_histogram/perf_observer/perf_observer_listare namespace tags that can never appear in user source, and codegen arms a module's dispatch bucket only where it sees the module named — so every method call on those objects resolved toundefinedand silently did nothing. That is why the stub and the finished histogram behaved identically, and whylist.getEntries()returnedundefinedinside an observer callback.16 of the original failures remain and are not fixed by that PR, because each needs machinery outside
perf_hooks:global/illegal-constructors,global/class-constructors,shapes/prototype-tags,shapes/public-descriptors,resource-timing/illegal-constructor-tag,mark/direct-constructor. These want throwing native constructors,Symbol.toStringTagon prototypes, and per-property descriptor attributes.structuredClonecycle preservation (2) —mark/detail-circular,measure/detail-clone-failures.constants/all-gc-valuesneedsObject.entrieson a namespace object to consult the module surface the wayObject.keysalready does;imports/namespace-keysneedshooks.defaulton animport * asnamespace. Neither is perf_hooks-specific: both affect every native module.async-fulfill,histogram-async(record on promise settlement),constructor(newthrough the wrapper),entry-arguments(entrydetail+ indexed access),name-length-descriptors(descriptor flags).observer/entry-list-validation(1) — wants theERR_INVALID_THIScode on a wrong-receiver TypeError.Suggest keeping this issue open until those are triaged into granular follow-ups; #8229 does not close it on merge if you'd prefer that — say the word and I'll drop the
Closeskeyword.proggeramlug commentedon Aug 16, 2026
Correction on the last comment: #8229 is marked Part of this issue, not
Closes— 16 of the 62 failures remain, so the issue should stay open after it merges.proggeramlug commentedon Aug 16, 2026
The remaining 16 failures are now filed as granular issues, so this umbrella can close when #8229 merges. The residue had nothing in common except the module name — four of the six groups are fixed by someone working on a different subsystem entirely, and two aren't
perf_hooksbugs at all.Symbol.toStringTag, descriptors,ERR_INVALID_THIS)structuredCloneloses cycle identity; non-cloneable throwsTypeErrornotDataCloneErrortimerifyasync settlement, construct, entry arguments, name/length descriptorsObject.entries/valueson a native-module namespace return the internal__module__sentinelns.defaultundefined for native modules whose default is the namespace itselfPerformanceObserver.supportedEntryTypesundefined when chained into a method call16 of 16 accounted for. #8231 and #8234's descriptor arm are likely the same underlying work.
Two notes on the accounting in this issue's original list:
global/class-constructors(now [parity] PerformanceObserver.supportedEntryTypes reads as undefined when chained directly into a method call #8237) regressed in between and was never on the list. So 46 of the 61 listed here are fixed, plus that regression's 15 siblings — fix(perf_hooks): real HDR histograms, and arm the dispatch bucket the internal perf namespaces never got #8229 measures 86/148 → 132/148 against the pinned Node 26.5.1 oracle.histogram/*,observer/*andresource-timing/*were the bulk of the list, and most of them shared a single cause: the internalperf_histogram/perf_observer/perf_observer_listnamespace tags never appear in user source, so codegen never armed their dispatch bucket and every method call on those objects silently returnedundefined. Worth remembering when triaging a module whose properties read correctly but whose methods do nothing.fix(perf_hooks): real HDR histograms, and arm the dispatch bucket the…