Skip to content

Instantly share code, notes, and snippets.

@Ethan-Arrowood
Created April 25, 2021 14:03
Show Gist options
  • Save Ethan-Arrowood/30341384a724f944a334b2cae7e4f739 to your computer and use it in GitHub Desktop.
Save Ethan-Arrowood/30341384a724f944a334b2cae7e4f739 to your computer and use it in GitHub Desktop.
Worker based unref test (currently failing). Place both files in a directory and run `node unref-when-idle.js`
node test/unref-when-idle/unref-when-idle.js
TAP version 13
# Subtest: test unref
1..0
ok 1 - test unref # time=6.285ms
TAP version 13
# Subtest: test unref worker
ok 1 - should be equal
1..1
ok 1 - test unref worker # time=9.245ms
null
/Users/ethanarrowood/Documents/Programming/github/nodejs/undici/test/unref-when-idle/unref-when-idle.js:30
throw new Error(`Worker stopped with exit code ${code}`)
^
Error: Worker stopped with exit code 1
at Worker.<anonymous> (/Users/ethanarrowood/Documents/Programming/github/nodejs/undici/test/unref-when-idle/unref-when-idle.js:30:15)
at Worker.emit (node:events:369:20)
at Worker.[kOnExit] (node:internal/worker:286:10)
at Worker.<computed>.onexit (node:internal/worker:208:20)
1..1
# time=160.447ms
'use strict'
const { test } = require('tap')
const { createServer } = require('http')
const path = require('path')
const { Worker } = require('worker_threads')
test('test unref', async t => {
const server = createServer((req, res) => {
res.end()
})
server.listen(0, () => {
const url = `http://localhost:${server.address().port}`
const worker = new Worker(path.join(__dirname, 'worker.js'), {
workerData: { url }
})
worker.on('message', message => {
console.log(message)
})
worker.on('error', error => {
console.error(error)
})
worker.on('exit', code => {
if (code !== 0) {
throw Error(`Worker stopped with exit code ${code}`)
}
server.close()
t.end()
})
})
})
'use strict'
const { test } = require('tap')
const { workerData, parentPort } = require('worker_threads')
const { Client } = require('../..')
const { url } = workerData
test('test unref worker', async t => {
t.equal(typeof url, 'string')
const client = new Client(workerData.url)
client.request({ method: 'GET', path: '/' }, (error, { body }) => {
console.log(error)
t.error(error)
body.resume().on('end', () => {
t.end()
process.exit(0)
})
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment