mirror of
https://github.com/stablyai/orca.git
synced 2026-09-21 16:02:20 +00:00
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
const assert = require('node:assert/strict')
|
|
const fs = require('node:fs')
|
|
const path = require('node:path')
|
|
const { collect, sha } = require('./queue-source.cjs')
|
|
|
|
async function postResult(keepers) {
|
|
let ref
|
|
await new Promise((resolve) => {
|
|
const payload = new Uint8Array(1024 * 1024)
|
|
payload[0] = 19
|
|
ref = new WeakRef(payload)
|
|
keepers.push(resolve)
|
|
resolve({ payload })
|
|
})
|
|
assert(ref)
|
|
return ref
|
|
}
|
|
async function main() {
|
|
const keepers = []
|
|
const refs = []
|
|
for (let index = 0; index < 8; index++) {
|
|
refs.push(await postResult(keepers))
|
|
}
|
|
await collect()
|
|
const retainedWithResolveFunctions = refs.filter((ref) => ref.deref() !== undefined).length
|
|
keepers.length = 0
|
|
await collect()
|
|
const retainedAfterResolveFunctionsReleased = refs.filter(
|
|
(ref) => ref.deref() !== undefined
|
|
).length
|
|
assert.equal(retainedAfterResolveFunctionsReleased, 0)
|
|
const report = {
|
|
node: process.version,
|
|
electron: process.versions.electron ?? null,
|
|
v8: process.versions.v8,
|
|
proofSha256: sha(fs.readFileSync(__filename)),
|
|
payloads: 8,
|
|
bytesPerPayload: 1024 * 1024,
|
|
retainedWithResolveFunctions,
|
|
retainedAfterResolveFunctionsReleased
|
|
}
|
|
const resultName = process.versions.electron
|
|
? 'electron-resolver-results.json'
|
|
: 'resolver-results.json'
|
|
fs.writeFileSync(path.join(__dirname, resultName), `${JSON.stringify(report, null, 2)}\n`)
|
|
console.log(JSON.stringify(report, null, 2))
|
|
}
|
|
main().catch((error) => {
|
|
console.error(error)
|
|
process.exitCode = 1
|
|
})
|
|
setTimeout(() => {
|
|
console.error('fixture timeout')
|
|
process.exit(2)
|
|
}, 10000).unref()
|