Skip to content

Instantly share code, notes, and snippets.

@mike-at-redspace
Last active August 15, 2023 16:11
Show Gist options
  • Save mike-at-redspace/c532e2172a6ae298a0e97df947dc3295 to your computer and use it in GitHub Desktop.
Save mike-at-redspace/c532e2172a6ae298a0e97df947dc3295 to your computer and use it in GitHub Desktop.
Node Server Response testing
const timestamp = getCurrentTimestamp()
const startTime = new Date()
try {
const { status, headers } = await axios.get(site)
const { date, trace_id: traceId } = headers
const responseTime = new Date() - startTime
const log = `${timestamp},${date},${status},${site},${responseTime}ms,${traceId},${headers['cache-control']}\n`
await fs.appendFile(logFilePath, log)
console.log(`${timestamp}: ${site} - ${responseTime}ms`)
} catch (error) {
console.error(
`Error testing server response time for ${site}: ${error.message}`
)
}
}
const runWorker = async site => {
try {
await testServerResponse(site)
process.exit(0) // Worker exits gracefully
} catch (error) {
console.error(`Error in worker: ${error}`)
process.exit(1) // Worker exits with error
}
}
if (isMainThread) {
// Main thread
const testAllSites = async () => {
const workerPromises = sitesToTest.map(site => {
return new Promise((resolve, reject) => {
const worker = new Worker(__filename, {
workerData: site
})
worker.on('error', error => {
console.error(`Worker error: ${error}`)
reject(error)
})
worker.on('exit', code => {
if (code) {
console.error(`Worker stopped with exit code ${code}`)
reject(new Error(`Worker stopped with exit code ${code}`))
} else {
resolve()
}
})
})
})
try {
await Promise.all(workerPromises)
} catch (error) {
console.error(`Error in one or more workers: ${error}`)
}
}
testAllSites()
setInterval(testAllSites, TWO_MIN_IN_MS)
} else {
// Worker thread
runWorker(workerData)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment