mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
52 lines
1.0 KiB
JavaScript
Generated
52 lines
1.0 KiB
JavaScript
Generated
import { expect } from "bun:test";
|
|
import { closeSync, openSync } from "node:fs";
|
|
|
|
const server = Bun.listen({
|
|
port: 0,
|
|
hostname: "localhost",
|
|
socket: {
|
|
open(socket) {
|
|
socket.end();
|
|
},
|
|
data(socket, data) {},
|
|
},
|
|
});
|
|
|
|
let connected = 0;
|
|
async function callback() {
|
|
const { promise, resolve } = Promise.withResolvers();
|
|
await Bun.connect({
|
|
port: server.port,
|
|
hostname: server.hostname,
|
|
socket: {
|
|
open(socket) {
|
|
connected += 1;
|
|
},
|
|
data(socket, data) {},
|
|
close() {
|
|
connected -= 1;
|
|
resolve();
|
|
},
|
|
},
|
|
});
|
|
return promise;
|
|
}
|
|
|
|
// warmup
|
|
await Promise.all(new Array(10).fill(0).map(callback));
|
|
|
|
const fd_before = openSync("/dev/null", "w");
|
|
closeSync(fd_before);
|
|
|
|
// start 100 connections
|
|
await Promise.all(new Array(100).fill(0).map(callback));
|
|
|
|
expect(connected).toBe(0);
|
|
|
|
const fd = openSync("/dev/null", "w");
|
|
closeSync(fd);
|
|
|
|
// ensure that we don't leak sockets when we initiate multiple connections
|
|
expect(fd - fd_before).toBeLessThan(5);
|
|
server.stop(true);
|